gmsh-TingyuanDoc  0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
HierarchicalBasisH1Line.h
Go to the documentation of this file.
1 // Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle
2 //
3 // See the LICENSE.txt file in the Gmsh root directory for license information.
4 // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
5 //
6 // Contributed by Ismail Badia.
7 // Reference : "Higher-Order Finite Element Methods"; Pavel Solin, Karel
8 // Segeth ,
9 // Ivo Dolezel , Chapman and Hall/CRC; Edition : Har/Cdr (2003).
10 
11 #ifndef HIERARCHICAL_BASIS_H1_LINE_H
12 #define HIERARCHICAL_BASIS_H1_LINE_H
13 
14 #include "HierarchicalBasisH1.h"
15 /*
16  *
17  *
18  *
19  * |
20  * 0 | 1
21  * --+------+-----+---> u
22  *
23  *
24  *
25  *
26  *
27  *
28  *
29  */
31 public:
33  virtual ~HierarchicalBasisH1Line();
34  virtual unsigned int getNumberOfOrientations() const;
35  // vertexBasis=[v0,v1]
36  // edgeBasis=[phie_{2},...,phie_{pe}]
37  virtual void generateBasis(double const &u, double const &v, double const &w,
38  std::vector<double> &vertexBasis,
39  std::vector<double> &edgeBasis,
40  std::vector<double> &faceBasis,
41  std::vector<double> &bubbleBasis);
42  virtual void generateBasis(double const &u, double const &v, double const &w,
43  std::vector<std::vector<double> > &vertexBasis,
44  std::vector<std::vector<double> > &edgeBasis,
45  std::vector<std::vector<double> > &faceBasis,
46  std::vector<std::vector<double> > &bubbleBasis,
47  std::string typeFunction = "GradH1Legendre")
48  {
49  generateGradientBasis(u, v, w, vertexBasis, edgeBasis, faceBasis,
50  bubbleBasis);
51  }
52 
53  virtual void orientEdge(int const &flagOrientation, int const &edgeNumber,
54  std::vector<double> &edgeFunctions,
55  const std::vector<double> &eTablePositiveFlag,
56  const std::vector<double> &eTableNegativeFlag);
57  virtual void
58  orientEdge(int const &flagOrientation, int const &edgeNumber,
59  std::vector<std::vector<double> > &edgeBasis,
60  const std::vector<std::vector<double> > &eTablePositiveFlag,
61  const std::vector<std::vector<double> > &eTableNegativeFlag);
62 
63  virtual void
64  orientEdgeFunctionsForNegativeFlag(std::vector<double> &edgeFunctions);
66  std::vector<std::vector<double> > &edgeFunctions);
67  virtual void
68  orientFace(int const &flag1, int const &flag2, int const &flag3,
69  int const &faceNumber,
70  const std::vector<double> &quadFaceFunctionsAllOrientation,
71  const std::vector<double> &triFaceFunctionsAllOrientation,
72  std::vector<double> &fTableCopy){};
73  virtual void orientFace(
74  int const &flag1, int const &flag2, int const &flag3, int const &faceNumber,
75  const std::vector<std::vector<double> > &quadFaceFunctionsAllOrientation,
76  const std::vector<std::vector<double> > &triFaceFunctionsAllOrientation,
77  std::vector<std::vector<double> > &fTableCopy){};
78 
79  virtual void getKeysInfo(std::vector<int> &functionTypeInfo,
80  std::vector<int> &orderInfo);
81 
82 private:
83  int _pe; // edge function order in direction u
84  static double
85  _affineCoordinate(int j,
86  double u); // affine coordinate lambdaj j={1,2}
87  void generateGradientBasis(double const &u, double const &v, double const &w,
88  std::vector<std::vector<double> > &gradientVertex,
89  std::vector<std::vector<double> > &gradientEdge,
90  std::vector<std::vector<double> > &gradientFace,
91  std::vector<std::vector<double> > &gradientBubble);
92  virtual void orientOneFace(double const &u, double const &v, double const &w,
93  int const &flag1, int const &flag2,
94  int const &flag3, int const &faceNumber,
95  std::vector<double> &faceBasis){};
96  virtual void orientOneFace(double const &u, double const &v, double const &w,
97  int const &flag1, int const &flag2,
98  int const &flag3, int const &faceNumber,
99  std::vector<std::vector<double> > &faceFunctions,
100  std::string typeFunction = "GradH1Legendre"){};
101 };
102 
103 #endif
HierarchicalBasisH1Line::orientOneFace
virtual void orientOneFace(double const &u, double const &v, double const &w, int const &flag1, int const &flag2, int const &flag3, int const &faceNumber, std::vector< double > &faceBasis)
Definition: HierarchicalBasisH1Line.h:92
HierarchicalBasisH1Line::_affineCoordinate
static double _affineCoordinate(int j, double u)
Definition: HierarchicalBasisH1Line.cpp:35
HierarchicalBasisH1Line::~HierarchicalBasisH1Line
virtual ~HierarchicalBasisH1Line()
Definition: HierarchicalBasisH1Line.cpp:28
HierarchicalBasisH1Line::getNumberOfOrientations
virtual unsigned int getNumberOfOrientations() const
Definition: HierarchicalBasisH1Line.cpp:30
HierarchicalBasisH1
Definition: HierarchicalBasisH1.h:14
HierarchicalBasisH1Line::generateBasis
virtual void generateBasis(double const &u, double const &v, double const &w, std::vector< double > &vertexBasis, std::vector< double > &edgeBasis, std::vector< double > &faceBasis, std::vector< double > &bubbleBasis)
Definition: HierarchicalBasisH1Line.cpp:44
HierarchicalBasisH1Line::generateBasis
virtual void generateBasis(double const &u, double const &v, double const &w, std::vector< std::vector< double > > &vertexBasis, std::vector< std::vector< double > > &edgeBasis, std::vector< std::vector< double > > &faceBasis, std::vector< std::vector< double > > &bubbleBasis, std::string typeFunction="GradH1Legendre")
Definition: HierarchicalBasisH1Line.h:42
HierarchicalBasisH1Line::orientEdge
virtual void orientEdge(int const &flagOrientation, int const &edgeNumber, std::vector< double > &edgeFunctions, const std::vector< double > &eTablePositiveFlag, const std::vector< double > &eTableNegativeFlag)
Definition: HierarchicalBasisH1Line.cpp:82
HierarchicalBasisH1Line::orientOneFace
virtual void orientOneFace(double const &u, double const &v, double const &w, int const &flag1, int const &flag2, int const &flag3, int const &faceNumber, std::vector< std::vector< double > > &faceFunctions, std::string typeFunction="GradH1Legendre")
Definition: HierarchicalBasisH1Line.h:96
HierarchicalBasisH1Line::generateGradientBasis
void generateGradientBasis(double const &u, double const &v, double const &w, std::vector< std::vector< double > > &gradientVertex, std::vector< std::vector< double > > &gradientEdge, std::vector< std::vector< double > > &gradientFace, std::vector< std::vector< double > > &gradientBubble)
Definition: HierarchicalBasisH1Line.cpp:65
HierarchicalBasisH1Line::HierarchicalBasisH1Line
HierarchicalBasisH1Line(int pe)
Definition: HierarchicalBasisH1Line.cpp:14
HierarchicalBasisH1Line::orientEdgeFunctionsForNegativeFlag
virtual void orientEdgeFunctionsForNegativeFlag(std::vector< double > &edgeFunctions)
Definition: HierarchicalBasisH1Line.cpp:117
HierarchicalBasisH1Line::orientFace
virtual void orientFace(int const &flag1, int const &flag2, int const &flag3, int const &faceNumber, const std::vector< std::vector< double > > &quadFaceFunctionsAllOrientation, const std::vector< std::vector< double > > &triFaceFunctionsAllOrientation, std::vector< std::vector< double > > &fTableCopy)
Definition: HierarchicalBasisH1Line.h:73
HierarchicalBasisH1Line
Definition: HierarchicalBasisH1Line.h:30
HierarchicalBasisH1Line::getKeysInfo
virtual void getKeysInfo(std::vector< int > &functionTypeInfo, std::vector< int > &orderInfo)
Definition: HierarchicalBasisH1Line.cpp:133
HierarchicalBasisH1.h
HierarchicalBasisH1Line::orientFace
virtual void orientFace(int const &flag1, int const &flag2, int const &flag3, int const &faceNumber, const std::vector< double > &quadFaceFunctionsAllOrientation, const std::vector< double > &triFaceFunctionsAllOrientation, std::vector< double > &fTableCopy)
Definition: HierarchicalBasisH1Line.h:68
HierarchicalBasisH1Line::_pe
int _pe
Definition: HierarchicalBasisH1Line.h:83