ParMooN
 All Classes Functions Variables Friends Pages
NF_C_H_UL2_3D.h
1 /*
2  TNodalFunctional3D(NodalFunctional3D id,
3  int n_allfunctionals, int *n_facefunctionals,
4  int n_pointsall, int *n_pointsface,
5  double *xi, double *eta, double *zeta,
6  double **xiarray, double **etaarray,
7  double **zetaarray,
8  DoubleFunctVect *evalall,
9  DoubleFunctVect *evalface);
10 */
11 
12 /* for all functionals */
13 static double NF_C_H_UL2_3D_Xi[] = {-1, 0, 1, -1, 0, 1, -1, 0, 1,
14  -1, 0, 1, 1, 1, 0, -1, -1,
15  -1, 0, 1, -1, 0, 1, -1, 0, 1,
16  -0.7745966692414833770358530, 0., 0.7745966692414833770358530,
17  -0.7745966692414833770358530, 0., 0.7745966692414833770358530,
18  -0.7745966692414833770358530, 0., 0.7745966692414833770358530,
19  -0.7745966692414833770358530, 0., 0.7745966692414833770358530,
20  -0.7745966692414833770358530, 0., 0.7745966692414833770358530,
21  -0.7745966692414833770358530, 0., 0.7745966692414833770358530,
22  -0.7745966692414833770358530, 0., 0.7745966692414833770358530,
23  -0.7745966692414833770358530, 0., 0.7745966692414833770358530,
24  -0.7745966692414833770358530, 0., 0.7745966692414833770358530};
25 
26 static double NF_C_H_UL2_3D_Eta[] = {-1, -1, -1, 0, 0, 0, 1, 1, 1,
27  -1, -1, -1, 0, 1, 1, 1, 0,
28  -1, -1, -1, 0, 0, 0, 1, 1, 1,
29  -0.7745966692414833770358530, -0.7745966692414833770358530, -0.7745966692414833770358530,
30  0., 0., 0.,
31  0.7745966692414833770358530, 0.7745966692414833770358530, 0.7745966692414833770358530,
32  -0.7745966692414833770358530, -0.7745966692414833770358530, -0.7745966692414833770358530,
33  0., 0., 0.,
34  0.7745966692414833770358530, 0.7745966692414833770358530, 0.7745966692414833770358530,
35  -0.7745966692414833770358530, -0.7745966692414833770358530, -0.7745966692414833770358530,
36  0., 0., 0.,
37  0.7745966692414833770358530, 0.7745966692414833770358530, 0.7745966692414833770358530};
38 
39 static double NF_C_H_UL2_3D_Zeta[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1,
40  0, 0, 0, 0, 0, 0, 0, 0,
41  1, 1, 1, 1, 1, 1, 1, 1, 1,
42  -0.7745966692414833770358530, -0.7745966692414833770358530, -0.7745966692414833770358530,
43  -0.7745966692414833770358530, -0.7745966692414833770358530, -0.7745966692414833770358530,
44  -0.7745966692414833770358530, -0.7745966692414833770358530, -0.7745966692414833770358530,
45  0., 0., 0.,
46  0., 0., 0.,
47  0., 0., 0.,
48  0.7745966692414833770358530, 0.7745966692414833770358530, 0.7745966692414833770358530,
49  0.7745966692414833770358530, 0.7745966692414833770358530, 0.7745966692414833770358530,
50  0.7745966692414833770358530, 0.7745966692414833770358530, 0.7745966692414833770358530};
51 
52 static double NF_C_H_UL2_3D_W26[] = {0.1714677640603566529492459, 0.2743484224965706447187930, 0.1714677640603566529492459,
53  0.2743484224965706447187929, 0.4389574759945130315500680, 0.2743484224965706447187929,
54  0.1714677640603566529492459, 0.2743484224965706447187930, 0.1714677640603566529492459,
55  0.2743484224965706447187929, 0.4389574759945130315500680, 0.2743484224965706447187929,
56  0.4389574759945130315500680, 0.7023319615912208504801077, 0.4389574759945130315500680,
57  0.2743484224965706447187929, 0.4389574759945130315500680, 0.2743484224965706447187929,
58  0.1714677640603566529492459, 0.2743484224965706447187930, 0.1714677640603566529492459,
59  0.2743484224965706447187929, 0.4389574759945130315500680, 0.2743484224965706447187929,
60  0.1714677640603566529492459, 0.2743484224965706447187930, 0.1714677640603566529492459};
61 
62 static double NF_C_H_UL2_3D_W27[] = {-0.1328183589234367930445567, -0.2125093742774988688712904, -0.1328183589234367930445567,
63  -0.2125093742774988688712903, -0.3400149988439981901940640, -0.2125093742774988688712903,
64  -0.1328183589234367930445567, -0.2125093742774988688712904, -0.1328183589234367930445567,
65  0., 0., 0.,
66  0., 0., 0.,
67  0., 0., 0.,
68  0.1328183589234367930445567, 0.2125093742774988688712904, 0.1328183589234367930445567,
69  0.2125093742774988688712903, 0.3400149988439981901940640, 0.2125093742774988688712903,
70  0.1328183589234367930445567, 0.2125093742774988688712904, 0.1328183589234367930445567};
71 
72 static double NF_C_H_UL2_3D_W28[] = {-0.1328183589234367930445567, -0.2125093742774988688712904, -0.1328183589234367930445567,
73  0., 0., 0.,
74  0.1328183589234367930445567, 0.2125093742774988688712904, 0.1328183589234367930445567,
75  -0.2125093742774988688712903, -0.3400149988439981901940640, -0.2125093742774988688712903,
76  0., 0., 0.,
77  0.2125093742774988688712903, 0.3400149988439981901940640, 0.2125093742774988688712903,
78  -0.1328183589234367930445567, -0.2125093742774988688712904, -0.1328183589234367930445567,
79  0., 0., 0.,
80  0.1328183589234367930445567, 0.2125093742774988688712904, 0.1328183589234367930445567};
81 
82 static double NF_C_H_UL2_3D_W29[] = {-0.1328183589234367930445567, 0., 0.1328183589234367930445567,
83  -0.2125093742774988688712903, 0., 0.2125093742774988688712903,
84  -0.1328183589234367930445567, 0., 0.1328183589234367930445567,
85  -0.2125093742774988688712903, 0., 0.2125093742774988688712903,
86  -0.3400149988439981901940640, 0., 0.3400149988439981901940640,
87  -0.2125093742774988688712903, 0., 0.2125093742774988688712903,
88  -0.1328183589234367930445567, 0., 0.1328183589234367930445567,
89  -0.2125093742774988688712903, 0., 0.2125093742774988688712903,
90  -0.1328183589234367930445567, 0., 0.1328183589234367930445567};
91 
92 
93 /* face 0 0 1 2 3 4 5 6 7 8 */
94 static double NF_C_H_UL2_3D_F0_Xi[] = { -1, 0, 1, -1, 0, 1, -1, 0, 1 };
95 static double NF_C_H_UL2_3D_F0_Eta[] = { -1, -1, -1, 0, 0, 0, 1, 1, 1 };
96 static double NF_C_H_UL2_3D_F0_Zeta[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1 };
97 
98 /* face 1 0 9 17 1 10 18 2 11 19 */
99 static double NF_C_H_UL2_3D_F1_Xi[] = { -1, -1, -1, 0, 0, 0, 1, 1, 1 };
100 static double NF_C_H_UL2_3D_F1_Eta[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1 };
101 static double NF_C_H_UL2_3D_F1_Zeta[] = { -1, 0, 1, -1, 0, 1, -1, 0, 1 };
102 
103 /* face 2 2 11 19 5 12 22 8 13 25 */
104 static double NF_C_H_UL2_3D_F2_Xi[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
105 static double NF_C_H_UL2_3D_F2_Eta[] = { -1, -1, -1, 0, 0, 0, 1, 1, 1 };
106 static double NF_C_H_UL2_3D_F2_Zeta[] = { -1, 0, 1, -1, 0, 1, -1, 0, 1 };
107 
108 /* face 3 8 13 25 7 14 24 6 15 23 */
109 static double NF_C_H_UL2_3D_F3_Xi[] = { 1, 1, 1, 0, 0, 0, -1, -1, -1 };
110 static double NF_C_H_UL2_3D_F3_Eta[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
111 static double NF_C_H_UL2_3D_F3_Zeta[] = { -1, 0, 1, -1, 0, 1, -1, 0, 1 };
112 
113 /* face 4 0 3 6 9 16 15 17 20 23 */
114 static double NF_C_H_UL2_3D_F4_Xi[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1 };
115 static double NF_C_H_UL2_3D_F4_Eta[] = { -1, 0, 1, -1, 0, 1, -1, 0, 1 };
116 static double NF_C_H_UL2_3D_F4_Zeta[] = { -1, -1, -1, 0, 0, 0, 1, 1, 1 };
117 
118 /* face 5 17 20 23 18 21 24 19 22 25 */
119 static double NF_C_H_UL2_3D_F5_Xi[] = { -1, -1, -1, 0, 0, 0, 1, 1, 1 };
120 static double NF_C_H_UL2_3D_F5_Eta[] = { -1, 0, 1, -1, 0, 1, -1, 0, 1 };
121 static double NF_C_H_UL2_3D_F5_Zeta[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
122 
123 static double *NF_C_H_UL2_3D_XiArray[6] = {
124  NF_C_H_UL2_3D_F0_Xi,
125  NF_C_H_UL2_3D_F1_Xi,
126  NF_C_H_UL2_3D_F2_Xi,
127  NF_C_H_UL2_3D_F3_Xi,
128  NF_C_H_UL2_3D_F4_Xi,
129  NF_C_H_UL2_3D_F5_Xi };
130 
131 static double *NF_C_H_UL2_3D_EtaArray[6] = {
132  NF_C_H_UL2_3D_F0_Eta,
133  NF_C_H_UL2_3D_F1_Eta,
134  NF_C_H_UL2_3D_F2_Eta,
135  NF_C_H_UL2_3D_F3_Eta,
136  NF_C_H_UL2_3D_F4_Eta,
137  NF_C_H_UL2_3D_F5_Eta };
138 
139 static double *NF_C_H_UL2_3D_ZetaArray[6] = {
140  NF_C_H_UL2_3D_F0_Zeta,
141  NF_C_H_UL2_3D_F1_Zeta,
142  NF_C_H_UL2_3D_F2_Zeta,
143  NF_C_H_UL2_3D_F3_Zeta,
144  NF_C_H_UL2_3D_F4_Zeta,
145  NF_C_H_UL2_3D_F5_Zeta };
146 
147 static double NF_C_H_UL2_3D_T[9] = { 0, 0.5, 1, 0, 0.5, 1, 0, 0.5, 1 };
148 static double NF_C_H_UL2_3D_S[9] = { 0, 0, 0, 0.5, 0.5, 0.5, 1, 1, 1 };
149 
150 void NF_C_H_UL2_3D_EvalAll(TCollection *Coll, TBaseCell *Cell,
151  double *PointValues, double *Functionals)
152 {
153  memcpy(Functionals, PointValues, 26*SizeOfDouble);
154 
155  Functionals[26] = NF_C_H_UL2_3D_W26[0]*PointValues[ 26]
156  +NF_C_H_UL2_3D_W26[1]*PointValues[ 27]
157  +NF_C_H_UL2_3D_W26[2]*PointValues[ 28]
158  +NF_C_H_UL2_3D_W26[3]*PointValues[ 29]
159  +NF_C_H_UL2_3D_W26[4]*PointValues[ 30]
160  +NF_C_H_UL2_3D_W26[5]*PointValues[ 31]
161  +NF_C_H_UL2_3D_W26[6]*PointValues[ 32]
162  +NF_C_H_UL2_3D_W26[7]*PointValues[ 33]
163  +NF_C_H_UL2_3D_W26[8]*PointValues[ 34]
164  +NF_C_H_UL2_3D_W26[9]*PointValues[ 35]
165  +NF_C_H_UL2_3D_W26[10]*PointValues[ 36]
166  +NF_C_H_UL2_3D_W26[11]*PointValues[ 37]
167  +NF_C_H_UL2_3D_W26[12]*PointValues[ 38]
168  +NF_C_H_UL2_3D_W26[13]*PointValues[ 39]
169  +NF_C_H_UL2_3D_W26[14]*PointValues[ 40]
170  +NF_C_H_UL2_3D_W26[15]*PointValues[ 41]
171  +NF_C_H_UL2_3D_W26[16]*PointValues[ 42]
172  +NF_C_H_UL2_3D_W26[17]*PointValues[ 43]
173  +NF_C_H_UL2_3D_W26[18]*PointValues[ 44]
174  +NF_C_H_UL2_3D_W26[19]*PointValues[ 45]
175  +NF_C_H_UL2_3D_W26[20]*PointValues[ 46]
176  +NF_C_H_UL2_3D_W26[21]*PointValues[ 47]
177  +NF_C_H_UL2_3D_W26[22]*PointValues[ 48]
178  +NF_C_H_UL2_3D_W26[23]*PointValues[ 49]
179  +NF_C_H_UL2_3D_W26[24]*PointValues[ 50]
180  +NF_C_H_UL2_3D_W26[25]*PointValues[ 51]
181  +NF_C_H_UL2_3D_W26[26]*PointValues[ 52];
182  Functionals[27] = NF_C_H_UL2_3D_W27[0]*PointValues[ 26]
183  +NF_C_H_UL2_3D_W27[1]*PointValues[ 27]
184  +NF_C_H_UL2_3D_W27[2]*PointValues[ 28]
185  +NF_C_H_UL2_3D_W27[3]*PointValues[ 29]
186  +NF_C_H_UL2_3D_W27[4]*PointValues[ 30]
187  +NF_C_H_UL2_3D_W27[5]*PointValues[ 31]
188  +NF_C_H_UL2_3D_W27[6]*PointValues[ 32]
189  +NF_C_H_UL2_3D_W27[7]*PointValues[ 33]
190  +NF_C_H_UL2_3D_W27[8]*PointValues[ 34]
191  +NF_C_H_UL2_3D_W27[9]*PointValues[ 35]
192  +NF_C_H_UL2_3D_W27[10]*PointValues[ 36]
193  +NF_C_H_UL2_3D_W27[11]*PointValues[ 37]
194  +NF_C_H_UL2_3D_W27[12]*PointValues[ 38]
195  +NF_C_H_UL2_3D_W27[13]*PointValues[ 39]
196  +NF_C_H_UL2_3D_W27[14]*PointValues[ 40]
197  +NF_C_H_UL2_3D_W27[15]*PointValues[ 41]
198  +NF_C_H_UL2_3D_W27[16]*PointValues[ 42]
199  +NF_C_H_UL2_3D_W27[17]*PointValues[ 43]
200  +NF_C_H_UL2_3D_W27[18]*PointValues[ 44]
201  +NF_C_H_UL2_3D_W27[19]*PointValues[ 45]
202  +NF_C_H_UL2_3D_W27[20]*PointValues[ 46]
203  +NF_C_H_UL2_3D_W27[21]*PointValues[ 47]
204  +NF_C_H_UL2_3D_W27[22]*PointValues[ 48]
205  +NF_C_H_UL2_3D_W27[23]*PointValues[ 49]
206  +NF_C_H_UL2_3D_W27[24]*PointValues[ 50]
207  +NF_C_H_UL2_3D_W27[25]*PointValues[ 51]
208  +NF_C_H_UL2_3D_W27[26]*PointValues[ 52];
209  Functionals[28] = NF_C_H_UL2_3D_W28[0]*PointValues[ 26]
210  +NF_C_H_UL2_3D_W28[1]*PointValues[ 27]
211  +NF_C_H_UL2_3D_W28[2]*PointValues[ 28]
212  +NF_C_H_UL2_3D_W28[3]*PointValues[ 29]
213  +NF_C_H_UL2_3D_W28[4]*PointValues[ 30]
214  +NF_C_H_UL2_3D_W28[5]*PointValues[ 31]
215  +NF_C_H_UL2_3D_W28[6]*PointValues[ 32]
216  +NF_C_H_UL2_3D_W28[7]*PointValues[ 33]
217  +NF_C_H_UL2_3D_W28[8]*PointValues[ 34]
218  +NF_C_H_UL2_3D_W28[9]*PointValues[ 35]
219  +NF_C_H_UL2_3D_W28[10]*PointValues[ 36]
220  +NF_C_H_UL2_3D_W28[11]*PointValues[ 37]
221  +NF_C_H_UL2_3D_W28[12]*PointValues[ 38]
222  +NF_C_H_UL2_3D_W28[13]*PointValues[ 39]
223  +NF_C_H_UL2_3D_W28[14]*PointValues[ 40]
224  +NF_C_H_UL2_3D_W28[15]*PointValues[ 41]
225  +NF_C_H_UL2_3D_W28[16]*PointValues[ 42]
226  +NF_C_H_UL2_3D_W28[17]*PointValues[ 43]
227  +NF_C_H_UL2_3D_W28[18]*PointValues[ 44]
228  +NF_C_H_UL2_3D_W28[19]*PointValues[ 45]
229  +NF_C_H_UL2_3D_W28[20]*PointValues[ 46]
230  +NF_C_H_UL2_3D_W28[21]*PointValues[ 47]
231  +NF_C_H_UL2_3D_W28[22]*PointValues[ 48]
232  +NF_C_H_UL2_3D_W28[23]*PointValues[ 49]
233  +NF_C_H_UL2_3D_W28[24]*PointValues[ 50]
234  +NF_C_H_UL2_3D_W28[25]*PointValues[ 51]
235  +NF_C_H_UL2_3D_W28[26]*PointValues[ 52];
236  Functionals[29] = NF_C_H_UL2_3D_W29[0]*PointValues[ 26]
237  +NF_C_H_UL2_3D_W29[1]*PointValues[ 27]
238  +NF_C_H_UL2_3D_W29[2]*PointValues[ 28]
239  +NF_C_H_UL2_3D_W29[3]*PointValues[ 29]
240  +NF_C_H_UL2_3D_W29[4]*PointValues[ 30]
241  +NF_C_H_UL2_3D_W29[5]*PointValues[ 31]
242  +NF_C_H_UL2_3D_W29[6]*PointValues[ 32]
243  +NF_C_H_UL2_3D_W29[7]*PointValues[ 33]
244  +NF_C_H_UL2_3D_W29[8]*PointValues[ 34]
245  +NF_C_H_UL2_3D_W29[9]*PointValues[ 35]
246  +NF_C_H_UL2_3D_W29[10]*PointValues[ 36]
247  +NF_C_H_UL2_3D_W29[11]*PointValues[ 37]
248  +NF_C_H_UL2_3D_W29[12]*PointValues[ 38]
249  +NF_C_H_UL2_3D_W29[13]*PointValues[ 39]
250  +NF_C_H_UL2_3D_W29[14]*PointValues[ 40]
251  +NF_C_H_UL2_3D_W29[15]*PointValues[ 41]
252  +NF_C_H_UL2_3D_W29[16]*PointValues[ 42]
253  +NF_C_H_UL2_3D_W29[17]*PointValues[ 43]
254  +NF_C_H_UL2_3D_W29[18]*PointValues[ 44]
255  +NF_C_H_UL2_3D_W29[19]*PointValues[ 45]
256  +NF_C_H_UL2_3D_W29[20]*PointValues[ 46]
257  +NF_C_H_UL2_3D_W29[21]*PointValues[ 47]
258  +NF_C_H_UL2_3D_W29[22]*PointValues[ 48]
259  +NF_C_H_UL2_3D_W29[23]*PointValues[ 49]
260  +NF_C_H_UL2_3D_W29[24]*PointValues[ 50]
261  +NF_C_H_UL2_3D_W29[25]*PointValues[ 51]
262  +NF_C_H_UL2_3D_W29[26]*PointValues[ 52];
263 }
264 
265 void NF_C_H_UL2_3D_EvalFace(TCollection *Coll, TBaseCell *Cell, int Joint,
266  double *PointValues, double *Functionals)
267 {
268  memcpy(Functionals, PointValues, 9*SizeOfDouble);
269 }
270 
271 static int NF_C_H_UL2_3D_N_AllFunctionals = 30;
272 static int NF_C_H_UL2_3D_N_PointsAll = 53;
273 static int NF_C_H_UL2_3D_N_FaceFunctionals[] = { 9, 9, 9, 9, 9, 9 };
274 static int NF_C_H_UL2_3D_N_PointsFace[] = { 9, 9, 9, 9, 9, 9 };
275 
276 TNodalFunctional3D *NF_C_H_UL2_3D_Obj = new TNodalFunctional3D
277  (NF_C_H_UL2_3D, NF_C_H_UL2_3D_N_AllFunctionals,
278  NF_C_H_UL2_3D_N_FaceFunctionals, NF_C_H_UL2_3D_N_PointsAll,
279  NF_C_H_UL2_3D_N_PointsFace,
280  NF_C_H_UL2_3D_Xi, NF_C_H_UL2_3D_Eta, NF_C_H_UL2_3D_Zeta,
281  NF_C_H_UL2_3D_XiArray, NF_C_H_UL2_3D_EtaArray,
282  NF_C_H_UL2_3D_ZetaArray,
283  NF_C_H_UL2_3D_T, NF_C_H_UL2_3D_S,
284  NF_C_H_UL2_3D_EvalAll, NF_C_H_UL2_3D_EvalFace);
Definition: NodalFunctional3D.h:21
store cells in an array, used by cell iterators
Definition: Collection.h:18
information for finite element data structure
Definition: BaseCell.h:25