11 #ifndef HIERARCHICAL_BASIS_H
12 #define HIERARCHICAL_BASIS_H
29 virtual void orientOneFace(
double const &u,
double const &v,
double const &w,
30 int const &flag1,
int const &flag2,
31 int const &flag3,
int const &faceNumber,
32 std::vector<double> &faceFunctions) = 0;
33 virtual void orientOneFace(
double const &u,
double const &v,
double const &w,
34 int const &flag1,
int const &flag2,
35 int const &flag3,
int const &faceNumber,
36 std::vector<std::vector<double> > &faceFunctions,
37 std::string typeFunction) = 0;
50 virtual void generateBasis(
double const &u,
double const &v,
double const &w,
51 std::vector<double> &vertexBasis,
52 std::vector<double> &edgeBasis,
53 std::vector<double> &faceBasis,
54 std::vector<double> &bubbleBasis) = 0;
57 double const &u,
double const &v,
double const &w,
58 std::vector<std::vector<double> > &vertexBasis,
59 std::vector<std::vector<double> > &edgeBasis,
60 std::vector<std::vector<double> > &faceBasis,
61 std::vector<std::vector<double> > &bubbleBasis,
62 std::string typeFunction) = 0;
66 orientEdge(
int const &flagOrientation,
int const &edgeNumber,
67 std::vector<std::vector<double> > &edgeBasis,
68 const std::vector<std::vector<double> > &eTablePositiveFlag,
69 const std::vector<std::vector<double> > &eTableNegativeFlag) = 0;
74 std::vector<std::vector<double> > &edgeFunctions) = 0;
77 double const &u,
double const &v,
double const &w,
78 const std::vector<double> &faceFunctions,
79 std::vector<double> &quadFaceFunctionsAllOrientation,
80 std::vector<double> &triFaceFunctionsAllOrientation) = 0;
83 double const &u,
double const &v,
double const &w,
84 const std::vector<std::vector<double> > &faceFunctions,
85 std::vector<std::vector<double> > &quadFaceFunctionsAllOrientation,
86 std::vector<std::vector<double> > &triFaceFunctionsAllOrientation,
87 std::string typeFunction) = 0;
90 orientFace(
int const &flag1,
int const &flag2,
int const &flag3,
91 int const &faceNumber,
92 const std::vector<double> &quadFaceFunctionsAllOrientation,
93 const std::vector<double> &triFaceFunctionsAllOrientation,
94 std::vector<double> &fTableCopy) = 0;
96 int const &flag1,
int const &flag2,
int const &flag3,
int const &faceNumber,
97 const std::vector<std::vector<double> > &quadFaceFunctionsAllOrientation,
98 const std::vector<std::vector<double> > &triFaceFunctionsAllOrientation,
99 std::vector<std::vector<double> > &fTableCopy) = 0;
101 virtual void orientEdge(
int const &flagOrientation,
int const &edgeNumber,
102 std::vector<double> &edgeFunctions,
103 const std::vector<double> &eTablePositiveFlag,
104 const std::vector<double> &eTableNegativeFlag) = 0;
108 if(flag1 == 1 && flag2 == 1 && flag3 == 1) {
return 0; }
109 else if(flag1 == -1 && flag2 == 1 && flag3 == 1) {
112 else if(flag1 == 1 && flag2 == -1 && flag3 == 1) {
115 else if(flag1 == -1 && flag2 == -1 && flag3 == 1) {
118 else if(flag1 == 1 && flag2 == 1 && flag3 == -1) {
121 else if(flag1 == -1 && flag2 == 1 && flag3 == -1) {
124 else if(flag1 == 1 && flag2 == -1 && flag3 == -1) {
133 if(flag1 == 0 && flag2 == 1) {
return 0; }
134 else if(flag1 == 1 && flag2 == 1) {
137 else if(flag1 == 2 && flag2 == 1) {
140 else if(flag1 == 0 && flag2 == -1) {
143 else if(flag1 == 1 && flag2 == -1) {
153 std::vector<int> &orderInfo) = 0;