6 static double RT1T_tp = 0.166666666666667;
9 static double NF_N_T_RT1_3D_Xi[] = {RT1T_tp, 0.5+RT1T_tp, RT1T_tp,
10 RT1T_tp, RT1T_tp, 0.5+RT1T_tp,
11 RT1T_tp, 1-2*RT1T_tp, RT1T_tp,
14 0.138196601125010515179541316563,
15 0.138196601125010515179541316563,
16 0.138196601125010515179541316563,
17 0.585410196624968454461376050311
20 static double NF_N_T_RT1_3D_Eta[] = {RT1T_tp, RT1T_tp, 0.5+RT1T_tp,
22 1-2*RT1T_tp, RT1T_tp, RT1T_tp,
23 RT1T_tp, 0.5+RT1T_tp, RT1T_tp,
25 0.138196601125010515179541316563,
26 0.138196601125010515179541316563,
27 0.585410196624968454461376050311,
28 0.138196601125010515179541316563
30 static double NF_N_T_RT1_3D_Zeta[]= {0,0,0,
31 RT1T_tp, 0.5+RT1T_tp, RT1T_tp,
32 RT1T_tp, RT1T_tp, 1-2*RT1T_tp,
33 RT1T_tp, RT1T_tp, 0.5+RT1T_tp,
35 0.138196601125010515179541316563,
36 0.585410196624968454461376050311,
37 0.138196601125010515179541316563,
38 0.138196601125010515179541316563
41 static double NF_N_T_RT1_3D_Weights[]= {
42 0.04166666666666666666666667, 0.04166666666666666666666667,
43 0.04166666666666666666666667, 0.04166666666666666666666667
47 static double NF_N_T_RT1_3D_F0_Xi[] = { RT1T_tp, 0.5+RT1T_tp, RT1T_tp };
48 static double NF_N_T_RT1_3D_F0_Eta[] = { RT1T_tp, RT1T_tp, 0.5+RT1T_tp };
49 static double NF_N_T_RT1_3D_F0_Zeta[] = { 0,0,0 };
52 static double NF_N_T_RT1_3D_F1_Xi[] = { RT1T_tp, RT1T_tp, 0.5+RT1T_tp };
53 static double NF_N_T_RT1_3D_F1_Eta[] = { 0,0,0 };
54 static double NF_N_T_RT1_3D_F1_Zeta[] = { RT1T_tp, 0.5+RT1T_tp, RT1T_tp };
57 static double NF_N_T_RT1_3D_F2_Xi[] = { RT1T_tp, 1-2*RT1T_tp, RT1T_tp };
58 static double NF_N_T_RT1_3D_F2_Eta[] = { 1-2*RT1T_tp, RT1T_tp, RT1T_tp };
59 static double NF_N_T_RT1_3D_F2_Zeta[] = { RT1T_tp, RT1T_tp, 1-2*RT1T_tp };
63 static double NF_N_T_RT1_3D_F3_Xi[] = { 0,0,0 };
64 static double NF_N_T_RT1_3D_F3_Eta[] = { RT1T_tp, 0.5+RT1T_tp, RT1T_tp };
65 static double NF_N_T_RT1_3D_F3_Zeta[] = { RT1T_tp, RT1T_tp, 0.5+RT1T_tp };
67 static double *NF_N_T_RT1_3D_XiArray[4] = {
71 NF_N_T_RT1_3D_F3_Xi };
73 static double *NF_N_T_RT1_3D_EtaArray[4] = {
77 NF_N_T_RT1_3D_F3_Eta };
79 static double *NF_N_T_RT1_3D_ZetaArray[4] = {
80 NF_N_T_RT1_3D_F0_Zeta,
81 NF_N_T_RT1_3D_F1_Zeta,
82 NF_N_T_RT1_3D_F2_Zeta,
83 NF_N_T_RT1_3D_F3_Zeta };
85 static double NF_N_T_RT1_3D_T[1] = {};
86 static double NF_N_T_RT1_3D_S[1] = {};
89 double *PointValues,
double *Functionals)
94 Functionals[0] = -PointValues[32];
95 Functionals[1] = -PointValues[33];
96 Functionals[2] = -PointValues[34];
98 Functionals[3] = -PointValues[19];
99 Functionals[4] = -PointValues[20];
100 Functionals[5] = -PointValues[21];
102 Functionals[6] = PointValues[6]+PointValues[22]+PointValues[38];
103 Functionals[7] = PointValues[7]+PointValues[23]+PointValues[39];
104 Functionals[8] = PointValues[8]+PointValues[24]+PointValues[40];
106 Functionals[9] = -PointValues[9];
107 Functionals[10] = -PointValues[10];
108 Functionals[11] = -PointValues[11];
117 s += PointValues[i+12] * NF_N_T_RT1_3D_Weights[i];
123 s += PointValues[i+28] * NF_N_T_RT1_3D_Weights[i];
129 s += PointValues[i+44] * NF_N_T_RT1_3D_Weights[i];
134 double *PointValues,
double *Functionals)
137 double x0,x1,x2,y0,y1,y2,z0,z1,z2;
140 const int *faceVertex, *length;
149 s = sqrt( POW((y1-y0)*(z2-z0) - (z1-z0)*(y2-y0),2)
150 + POW((z1-z0)*(x2-x0) - (x1-x0)*(z2-z0),2)
151 + POW((x1-x0)*(y2-y0) - (x2-x0)*(y1-y0),2) );
152 Functionals[0] = PointValues[0]*s;
153 Functionals[1] = PointValues[1]*s;
154 Functionals[2] = PointValues[2]*s;
157 static int NF_N_T_RT1_3D_N_AllFunctionals = 15;
158 static int NF_N_T_RT1_3D_N_PointsAll = 16;
159 static int NF_N_T_RT1_3D_N_FaceFunctionals[] = { 3, 3, 3, 3 };
160 static int NF_N_T_RT1_3D_N_PointsFace[] = { 3, 3, 3, 3 };
163 (NF_N_T_RT1_3D, NF_N_T_RT1_3D_N_AllFunctionals,
164 NF_N_T_RT1_3D_N_FaceFunctionals, NF_N_T_RT1_3D_N_PointsAll,
165 NF_N_T_RT1_3D_N_PointsFace,
166 NF_N_T_RT1_3D_Xi, NF_N_T_RT1_3D_Eta, NF_N_T_RT1_3D_Zeta,
167 NF_N_T_RT1_3D_XiArray, NF_N_T_RT1_3D_EtaArray,
168 NF_N_T_RT1_3D_ZetaArray,
169 NF_N_T_RT1_3D_T, NF_N_T_RT1_3D_S,
170 NF_N_T_RT1_3D_EvalAll, NF_N_T_RT1_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