8 static double tscheb_point_3 = 0.866025403784439;
10 static double NF_N_H_RT2_3D_Xi[] = {
11 -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3,
12 -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3,
13 1, 1, 1, 1, 1, 1, 1, 1, 1,
14 tscheb_point_3, tscheb_point_3, tscheb_point_3, 0, 0, 0, -tscheb_point_3, -tscheb_point_3, -tscheb_point_3,
15 -1, -1, -1, -1, -1, -1, -1, -1, -1,
16 -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3
18 static double NF_N_H_RT2_3D_Eta[] = {
19 -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3,
20 -1, -1, -1, -1, -1, -1, -1, -1, -1,
21 -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3,
22 1, 1, 1, 1, 1, 1, 1, 1, 1,
23 -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3,
24 -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3
26 static double NF_N_H_RT2_3D_Zeta[] = {
27 -1, -1, -1, -1, -1, -1, -1, -1, -1,
28 -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3,
29 -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3,
30 -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3,
31 -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3,
32 1, 1, 1, 1, 1, 1, 1, 1, 1
36 static double NF_N_H_RT2_3D_F0_Xi[] = { -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3 };
37 static double NF_N_H_RT2_3D_F0_Eta[] = { -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3 };
38 static double NF_N_H_RT2_3D_F0_Zeta[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1};
41 static double NF_N_H_RT2_3D_F1_Xi[] = { -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3 };
42 static double NF_N_H_RT2_3D_F1_Eta[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1};
43 static double NF_N_H_RT2_3D_F1_Zeta[] = { -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3 };
46 static double NF_N_H_RT2_3D_F2_Xi[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1};
47 static double NF_N_H_RT2_3D_F2_Eta[] = { -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3 };
48 static double NF_N_H_RT2_3D_F2_Zeta[] = { -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3 };
51 static double NF_N_H_RT2_3D_F3_Xi[] = { tscheb_point_3, tscheb_point_3, tscheb_point_3, 0, 0, 0, -tscheb_point_3, -tscheb_point_3, -tscheb_point_3 };
52 static double NF_N_H_RT2_3D_F3_Eta[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1};
53 static double NF_N_H_RT2_3D_F3_Zeta[] = { -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3 };
56 static double NF_N_H_RT2_3D_F4_Xi[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1};
57 static double NF_N_H_RT2_3D_F4_Eta[] = { -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3 };
58 static double NF_N_H_RT2_3D_F4_Zeta[] = { -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3 };
61 static double NF_N_H_RT2_3D_F5_Xi[] = { -tscheb_point_3, -tscheb_point_3, -tscheb_point_3, 0, 0, 0, tscheb_point_3, tscheb_point_3, tscheb_point_3 };
62 static double NF_N_H_RT2_3D_F5_Eta[] = { -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3, -tscheb_point_3, 0, tscheb_point_3 };
63 static double NF_N_H_RT2_3D_F5_Zeta[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1};
65 static double *NF_N_H_RT2_3D_XiArray[6] = {
71 NF_N_H_RT2_3D_F5_Xi };
73 static double *NF_N_H_RT2_3D_EtaArray[6] = {
79 NF_N_H_RT2_3D_F5_Eta };
81 static double *NF_N_H_RT2_3D_ZetaArray[6] = {
82 NF_N_H_RT2_3D_F0_Zeta,
83 NF_N_H_RT2_3D_F1_Zeta,
84 NF_N_H_RT2_3D_F2_Zeta,
85 NF_N_H_RT2_3D_F3_Zeta,
86 NF_N_H_RT2_3D_F4_Zeta,
87 NF_N_H_RT2_3D_F5_Zeta };
89 static double NF_N_H_RT2_3D_T[] = {-100};
90 static double NF_N_H_RT2_3D_S[] = {-100};
95 double *PointValues,
double *Functionals)
97 cout <<
"Raviart-Thomas elements of order 2 on hexaeder: "
98 <<
"Nodal functionals are not fully implemented properly!" << endl;
99 for(
int i=0; i<108; i++)
104 double *PointValues,
double *Functionals)
107 double x0,x1,x2,y0,y1,y2,z0,z1,z2;
110 const int *faceVertex, *length;
119 s = sqrt( POW((y1-y0)*(z2-z0) - (z1-z0)*(y2-y0),2)
120 + POW((z1-z0)*(x2-x0) - (x1-x0)*(z2-z0),2)
121 + POW((x1-x0)*(y2-y0) - (x2-x0)*(y1-y0),2) );
122 Functionals[0] = PointValues[0]*s;
123 Functionals[1] = PointValues[1]*s;
124 Functionals[2] = PointValues[2]*s;
125 Functionals[3] = PointValues[3]*s;
126 Functionals[4] = PointValues[4]*s;
127 Functionals[5] = PointValues[5]*s;
128 Functionals[6] = PointValues[6]*s;
129 Functionals[7] = PointValues[7]*s;
130 Functionals[8] = PointValues[8]*s;
133 static int NF_N_H_RT2_3D_N_AllFunctionals = 108;
134 static int NF_N_H_RT2_3D_N_PointsAll = 54;
135 static int NF_N_H_RT2_3D_N_FaceFunctionals[] = { 9, 9, 9, 9, 9, 9 };
136 static int NF_N_H_RT2_3D_N_PointsFace[] = { 9, 9, 9, 9, 9, 9 };
139 (NF_N_H_RT2_3D, NF_N_H_RT2_3D_N_AllFunctionals,
140 NF_N_H_RT2_3D_N_FaceFunctionals, NF_N_H_RT2_3D_N_PointsAll,
141 NF_N_H_RT2_3D_N_PointsFace,
142 NF_N_H_RT2_3D_Xi, NF_N_H_RT2_3D_Eta, NF_N_H_RT2_3D_Zeta,
143 NF_N_H_RT2_3D_XiArray, NF_N_H_RT2_3D_EtaArray,
144 NF_N_H_RT2_3D_ZetaArray,
145 NF_N_H_RT2_3D_T, NF_N_H_RT2_3D_S,
146 NF_N_H_RT2_3D_EvalAll, NF_N_H_RT2_3D_EvalFace);
int GetFaceVertex(const int *&TmpFV, const int *&TmpLen, int &MaxLen)
Definition: ShapeDesc.h:124
TShapeDesc * GetShapeDesc() const
return shape descriptor of refinement descriptor
Definition: BaseCell.h:134
Definition: NodalFunctional3D.h:21
store cells in an array, used by cell iterators
Definition: Collection.h:18
virtual TVertex * GetVertex(int Vert_i)=0
return the pointer to vertex with number i
void GetCoords(double &x, double &y, double &z) const
Definition: Vertex.h:106
information for finite element data structure
Definition: BaseCell.h:25