11 #ifndef HIERARCHICAL_BASIS_HCURL_TETRA_H
12 #define HIERARCHICAL_BASIS_HCURL_TETRA_H
58 virtual void generateBasis(
double const &u,
double const &v,
double const &w,
59 std::vector<std::vector<double> > &vertexBasis,
60 std::vector<std::vector<double> > &edgeBasis,
61 std::vector<std::vector<double> > &faceBasis,
62 std::vector<std::vector<double> > &bubbleBasis,
63 std::string typeFunction)
65 if(typeFunction ==
"HcurlLegendre") {
68 else if(
"CurlHcurlLegendre" == typeFunction) {
72 throw std::runtime_error(
"unknown typeFunction");
77 orientEdge(
int const &flagOrientation,
int const &edgeNumber,
78 std::vector<std::vector<double> > &edgeBasis,
79 const std::vector<std::vector<double> > &eTablePositiveFlag,
80 const std::vector<std::vector<double> > &eTableNegativeFlag);
82 std::vector<std::vector<double> > &edgeFunctions);
84 int const &flag1,
int const &flag2,
int const &flag3,
int const &faceNumber,
85 const std::vector<std::vector<double> > &quadFaceFunctionsAllOrientation,
86 const std::vector<std::vector<double> > &triFaceFunctionsAllOrientation,
87 std::vector<std::vector<double> > &fTableCopy);
88 virtual void getKeysInfo(std::vector<int> &functionTypeInfo,
89 std::vector<int> &orderInfo);
102 std::vector<std::vector<double> > &edgeBasis,
103 std::vector<std::vector<double> > &faceBasis,
104 std::vector<std::vector<double> > &bubbleBasis);
108 std::vector<std::vector<double> > &edgeBasis,
109 std::vector<std::vector<double> > &faceBasis,
110 std::vector<std::vector<double> > &bubbleBasis);
112 static double dotProduct(
const std::vector<double> &u,
113 const std::vector<double> &v);
114 inline void gradient(
const double &lambda1,
const double &lambda2,
115 const std::vector<double> &dlambda1,
116 const std::vector<double> &dlambda2,
117 std::vector<double> &result);
118 inline void curlFunction(
const double &a,
const std::vector<double> &nD,
119 const std::vector<double> &grad,
120 std::vector<double> &result);
121 virtual void orientOneFace(
double const &u,
double const &v,
double const &w,
122 int const &flag1,
int const &flag2,
123 int const &flag3,
int const &faceNumber,
124 std::vector<std::vector<double> > &faceFunctions,
125 std::string typeFunction);