ParMooN
 All Classes Functions Variables Friends Pages
NF_S_H_Q2_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 /* volumen */
14 
15 static double NF_S_H_Q2_3D_Xi[] = { -1, 0, 1, -1, 0, 1, -1, 0, 1,
16  -1, 0, 1, -1, 0, 1, -1, 0, 1,
17  -1, 0, 1, -1, 0, 1, -1, 0, 1 };
18 static double NF_S_H_Q2_3D_Eta[] = { -1, -1, -1, 0, 0, 0, 1, 1, 1,
19  -1, -1, -1, 0, 0, 0, 1, 1, 1,
20  -1, -1, -1, 0, 0, 0, 1, 1, 1 };
21 static double NF_S_H_Q2_3D_Zeta[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1,
22  0, 0, 0, 0, 0, 0, 0, 0, 0,
23  1, 1, 1, 1, 1, 1, 1, 1, 1 };
24 
25 
26 /* face 0 */
27 static double NF_S_H_Q2_3D_F0_Xi[] = {-0.77459666924148337703585307995647992, 0,
28  0.77459666924148337703585307995647992,
29 
30  1, 1, 1,
31 
32  0.77459666924148337703585307995647992, 0,
33  -0.77459666924148337703585307995647992,
34 
35  -1, -1, -1,
36 
37  -0.77459666924148337703585307995647992, 0,
38  0.77459666924148337703585307995647992,
39 
40  -0.77459666924148337703585307995647992, 0,
41  0.77459666924148337703585307995647992,
42 
43  -0.77459666924148337703585307995647992, 0,
44  0.77459666924148337703585307995647992,
45 
46  -1,1,1,-1 };
47 
48 static double NF_S_H_Q2_3D_F0_Eta[] = {-1, -1, -1,
49 
50  -0.77459666924148337703585307995647992, 0,
51  0.77459666924148337703585307995647992,
52 
53  1, 1, 1,
54 
55  0.77459666924148337703585307995647992, 0,
56  -0.77459666924148337703585307995647992,
57 
58  -0.77459666924148337703585307995647992,
59  -0.77459666924148337703585307995647992,
60  -0.77459666924148337703585307995647992,
61 
62  0,0,0,
63 
64  0.77459666924148337703585307995647992,
65  0.77459666924148337703585307995647992,
66  0.77459666924148337703585307995647992,
67 
68  -1,-1,1,1};
69 
70 static double NF_S_H_Q2_3D_F0_Zeta[] = { -1, -1, -1, -1, -1,
71  -1, -1, -1, -1, -1,
72  -1, -1, -1, -1, -1,
73  -1, -1, -1, -1, -1,
74  -1, -1, -1, -1, -1};
75 
76 
77 /* face 1 */
78 static double NF_S_H_Q2_3D_F1_Xi[] = { -1, -1, -1,
79 
80  -0.77459666924148337703585307995647992, 0,
81  0.77459666924148337703585307995647992,
82 
83  1, 1, 1,
84 
85  0.77459666924148337703585307995647992, 0,
86  -0.77459666924148337703585307995647992,
87 
88  -0.77459666924148337703585307995647992,
89  -0.77459666924148337703585307995647992,
90  -0.77459666924148337703585307995647992,
91 
92  0,0,0,
93 
94  0.77459666924148337703585307995647992,
95  0.77459666924148337703585307995647992,
96  0.77459666924148337703585307995647992,
97 
98  -1,-1,1,1 };
99 
100 static double NF_S_H_Q2_3D_F1_Eta[] = { -1, -1, -1, -1, -1,
101  -1, -1, -1, -1, -1,
102  -1, -1, -1, -1, -1,
103  -1, -1, -1, -1, -1,
104  -1, -1, -1, -1, -1 };
105 
106 static double NF_S_H_Q2_3D_F1_Zeta[] = {
107  -0.77459666924148337703585307995647992, 0,
108  0.77459666924148337703585307995647992,
109 
110  1, 1, 1,
111 
112  0.77459666924148337703585307995647992, 0,
113  -0.77459666924148337703585307995647992,
114 
115  -1, -1, -1,
116 
117  -0.77459666924148337703585307995647992, 0,
118  0.77459666924148337703585307995647992,
119 
120  -0.77459666924148337703585307995647992, 0,
121  0.77459666924148337703585307995647992,
122 
123  -0.77459666924148337703585307995647992, 0,
124  0.77459666924148337703585307995647992,
125 
126  -1,1,1,-1 };
127 
128 
129 /* face 2 */
130 static double NF_S_H_Q2_3D_F2_Xi[] = { 1, 1, 1, 1, 1,
131  1, 1, 1, 1, 1,
132  1, 1, 1, 1, 1,
133  1, 1, 1, 1, 1,
134  1, 1, 1, 1, 1 };
135 
136 static double NF_S_H_Q2_3D_F2_Eta[] = { -1, -1, -1,
137 
138  -0.77459666924148337703585307995647992, 0,
139  0.77459666924148337703585307995647992,
140 
141  1, 1, 1,
142 
143  0.77459666924148337703585307995647992, 0,
144  -0.77459666924148337703585307995647992,
145 
146  -0.77459666924148337703585307995647992,
147  -0.77459666924148337703585307995647992,
148  -0.77459666924148337703585307995647992,
149 
150  0,0,0,
151 
152  0.77459666924148337703585307995647992,
153  0.77459666924148337703585307995647992,
154  0.77459666924148337703585307995647992,
155 
156  -1,-1,1,1};
157 
158 static double NF_S_H_Q2_3D_F2_Zeta[] = { -0.77459666924148337703585307995647992, 0,
159  0.77459666924148337703585307995647992,
160 
161  1, 1, 1,
162 
163  0.77459666924148337703585307995647992, 0,
164  -0.77459666924148337703585307995647992,
165 
166  -1, -1, -1,
167 
168  -0.77459666924148337703585307995647992, 0,
169  0.77459666924148337703585307995647992,
170 
171  -0.77459666924148337703585307995647992, 0,
172  0.77459666924148337703585307995647992,
173 
174  -0.77459666924148337703585307995647992, 0,
175  0.77459666924148337703585307995647992,
176 
177  -1,1,1,-1 };
178 
179 
180 /* face 3 */
181 static double NF_S_H_Q2_3D_F3_Xi[] = { 1, 1, 1,
182 
183  0.77459666924148337703585307995647992, 0,
184  -0.77459666924148337703585307995647992,
185 
186  -1, -1, -1,
187 
188  -0.77459666924148337703585307995647992, 0,
189  0.77459666924148337703585307995647992,
190 
191  0.77459666924148337703585307995647992,
192  0.77459666924148337703585307995647992,
193  0.77459666924148337703585307995647992,
194 
195  0,0,0,
196 
197  -0.77459666924148337703585307995647992,
198  -0.77459666924148337703585307995647992,
199  -0.77459666924148337703585307995647992,
200 
201  1,1,-1,-1 };
202 
203 static double NF_S_H_Q2_3D_F3_Eta[] = { 1, 1, 1, 1, 1,
204  1, 1, 1, 1, 1,
205  1, 1, 1, 1, 1,
206  1, 1, 1, 1, 1,
207  1, 1, 1, 1, 1 };
208 
209 static double NF_S_H_Q2_3D_F3_Zeta[] = { -0.77459666924148337703585307995647992, 0,
210  0.77459666924148337703585307995647992,
211 
212  1, 1, 1,
213 
214  0.77459666924148337703585307995647992, 0,
215  -0.77459666924148337703585307995647992,
216 
217  -1, -1, -1,
218 
219  -0.77459666924148337703585307995647992, 0,
220  0.77459666924148337703585307995647992,
221 
222  -0.77459666924148337703585307995647992, 0,
223  0.77459666924148337703585307995647992,
224 
225  -0.77459666924148337703585307995647992, 0,
226  0.77459666924148337703585307995647992,
227 
228  -1,1,1,-1 };
229 
230 
231 
232 /* face 4 */
233 
234 static double NF_S_H_Q2_3D_F4_Xi[] = { -1, -1, -1, -1, -1,
235  -1, -1, -1, -1, -1,
236  -1, -1, -1, -1, -1,
237  -1, -1, -1, -1, -1,
238  -1, -1, -1, -1, -1 };
239 
240 static double NF_S_H_Q2_3D_F4_Eta[] = { -0.77459666924148337703585307995647992, 0,
241  0.77459666924148337703585307995647992,
242 
243  1, 1, 1,
244 
245  0.77459666924148337703585307995647992, 0,
246  -0.77459666924148337703585307995647992,
247 
248  -1, -1, -1,
249 
250  -0.77459666924148337703585307995647992, 0,
251  0.77459666924148337703585307995647992,
252 
253  -0.77459666924148337703585307995647992, 0,
254  0.77459666924148337703585307995647992,
255 
256  -0.77459666924148337703585307995647992, 0,
257  0.77459666924148337703585307995647992,
258 
259  -1,1,1,-1 };
260 
261 static double NF_S_H_Q2_3D_F4_Zeta[] = { -1, -1, -1,
262 
263  -0.77459666924148337703585307995647992, 0,
264  0.77459666924148337703585307995647992,
265 
266  1, 1, 1,
267 
268  0.77459666924148337703585307995647992, 0,
269  -0.77459666924148337703585307995647992,
270 
271  -0.77459666924148337703585307995647992,
272  -0.77459666924148337703585307995647992,
273  -0.77459666924148337703585307995647992,
274 
275  0,0,0,
276 
277  0.77459666924148337703585307995647992,
278  0.77459666924148337703585307995647992,
279  0.77459666924148337703585307995647992,
280 
281  -1,-1,1,1};
282 
283 
284 /* face 5 */
285 
286 static double NF_S_H_Q2_3D_F5_Xi[] = { -1, -1, -1,
287 
288  -0.77459666924148337703585307995647992, 0,
289  0.77459666924148337703585307995647992,
290 
291  1, 1, 1,
292 
293  0.77459666924148337703585307995647992, 0,
294  -0.77459666924148337703585307995647992,
295 
296  -0.77459666924148337703585307995647992,
297  -0.77459666924148337703585307995647992,
298  -0.77459666924148337703585307995647992,
299 
300  0,0,0,
301 
302  0.77459666924148337703585307995647992,
303  0.77459666924148337703585307995647992,
304  0.77459666924148337703585307995647992,
305 
306  -1,-1,1,1 };
307 
308 static double NF_S_H_Q2_3D_F5_Eta[] = { -0.77459666924148337703585307995647992, 0,
309  0.77459666924148337703585307995647992,
310 
311  1, 1, 1,
312 
313  0.77459666924148337703585307995647992, 0,
314  -0.77459666924148337703585307995647992,
315 
316  -1, -1, -1,
317 
318  -0.77459666924148337703585307995647992, 0,
319  0.77459666924148337703585307995647992,
320 
321  -0.77459666924148337703585307995647992, 0,
322  0.77459666924148337703585307995647992,
323 
324  -0.77459666924148337703585307995647992, 0,
325  0.77459666924148337703585307995647992,
326 
327  -1,1,1,-1 };
328 
329 static double NF_S_H_Q2_3D_F5_Zeta[] = { 1, 1, 1, 1, 1,
330  1, 1, 1, 1, 1,
331  1, 1, 1, 1, 1,
332  1, 1, 1, 1, 1,
333  1, 1, 1, 1, 1 };
334 
335 static double *NF_S_H_Q2_3D_XiArray[6] = {
336  NF_S_H_Q2_3D_F0_Xi,
337  NF_S_H_Q2_3D_F1_Xi,
338  NF_S_H_Q2_3D_F2_Xi,
339  NF_S_H_Q2_3D_F3_Xi,
340  NF_S_H_Q2_3D_F4_Xi,
341  NF_S_H_Q2_3D_F5_Xi };
342 
343 static double *NF_S_H_Q2_3D_EtaArray[6] = {
344  NF_S_H_Q2_3D_F0_Eta,
345  NF_S_H_Q2_3D_F1_Eta,
346  NF_S_H_Q2_3D_F2_Eta,
347  NF_S_H_Q2_3D_F3_Eta,
348  NF_S_H_Q2_3D_F4_Eta,
349  NF_S_H_Q2_3D_F5_Eta };
350 
351 static double *NF_S_H_Q2_3D_ZetaArray[6] = {
352  NF_S_H_Q2_3D_F0_Zeta,
353  NF_S_H_Q2_3D_F1_Zeta,
354  NF_S_H_Q2_3D_F2_Zeta,
355  NF_S_H_Q2_3D_F3_Zeta,
356  NF_S_H_Q2_3D_F4_Zeta,
357  NF_S_H_Q2_3D_F5_Zeta };
358 
359 static double NF_S_H_Q2_3D_T[25] = { 0.11270166537925831148207346002176004,
360  0.5, 0.88729833462074168851792653997823996, 1.0,
361  1.0, 1.0, 0.88729833462074168851792653997823996,
362  0.5, 0.11270166537925831148207346002176004,
363  0, 0, 0,
364  0.11270166537925831148207346002176004, 0.5, 0.88729833462074168851792653997823996,
365  0.11270166537925831148207346002176004, 0.5, 0.88729833462074168851792653997823996,
366  0.11270166537925831148207346002176004, 0.5, 0.88729833462074168851792653997823996,
367  0, 1.0, 1.0, 0
368  };
369 static double NF_S_H_Q2_3D_S[25] = { 0, 0, 0,
370  0.11270166537925831148207346002176004, 0.5, 0.88729833462074168851792653997823996,
371  1.0, 1.0, 1.0,
372  0.88729833462074168851792653997823996, 0.5, 0.11270166537925831148207346002176004,
373  0.11270166537925831148207346002176004, 0.11270166537925831148207346002176004,
374  0.112701665379258311482073460021760040, 0.5, 0.5,
375  0.5, 0.88729833462074168851792653997823996, 0.88729833462074168851792653997823996,
376  0.88729833462074168851792653997823996, 0, 0,
377  1.0, 1.0 };
378 
379 void NF_S_H_Q2_3D_EvalAll(TCollection *Coll, TBaseCell *Cell,
380  double *PointValues, double *Functionals)
381 {
382  memcpy(Functionals, PointValues, 27*SizeOfDouble);
383 }
384 
385 void NF_S_H_Q2_3D_EvalFace(TCollection *Coll, TBaseCell *Cell, int Joint,
386  double *PointValues, double *Functionals)
387 {
388  double f0,f1,f2,f3,f4,f5,f6,f7,f8;
389  static double weights[3] = { 0.5555555555555555555555555555555556,
390  0.88888888888888888888888888888888889,
391  0.5555555555555555555555555555555556 };
392  /* vertex values */
393  f0 = PointValues[21];
394  f1 = PointValues[22];
395  f2 = PointValues[23];
396  f3 = PointValues[24];
397 
398  /* line integrals */
399  f4 = ( weights[0]*PointValues[0]
400  +weights[1]*PointValues[1]
401  +weights[2]*PointValues[2]) * 0.5;
402  f5 = ( weights[0]*PointValues[3]
403  +weights[1]*PointValues[4]
404  +weights[2]*PointValues[5]) * 0.5;
405  f6 = ( weights[0]*PointValues[6]
406  +weights[1]*PointValues[7]
407  +weights[2]*PointValues[8]) * 0.5;
408  f7 = ( weights[0]*PointValues[9]
409  +weights[1]*PointValues[10]
410  +weights[2]*PointValues[11]) * 0.5;
411 
412  /* cell integral */
413  f8 = ( weights[0]*weights[0]*PointValues[12]
414  +weights[1]*weights[0]*PointValues[13]
415  +weights[2]*weights[0]*PointValues[14]
416  +weights[0]*weights[1]*PointValues[15]
417  +weights[1]*weights[1]*PointValues[16]
418  +weights[2]*weights[1]*PointValues[17]
419  +weights[0]*weights[2]*PointValues[18]
420  +weights[1]*weights[2]*PointValues[19]
421  +weights[2]*weights[2]*PointValues[20])*0.25;
422 
423  /* basis transformation */
424  Functionals[0]=f0;
425  Functionals[2]=f1;
426  Functionals[8]=f2;
427  Functionals[6]=f3;
428  Functionals[1]=-0.25*(f0+f1)+1.5*f4;
429  Functionals[5]=-0.25*(f1+f2)+1.5*f5;
430  Functionals[7]=-0.25*(f2+f3)+1.5*f6;
431  Functionals[3]=-0.25*(f0+f3)+1.5*f7;
432  Functionals[4]=0.0625*(f0+f1+f2+f3)-0.375*(f4+f5+f6+f7)
433  +2.25*f8;
434 
435 }
436 
437 static int NF_S_H_Q2_3D_N_AllFunctionals = 27;
438 static int NF_S_H_Q2_3D_N_PointsAll = 27;
439 static int NF_S_H_Q2_3D_N_FaceFunctionals[] = { 9, 9, 9, 9, 9, 9 };
440 static int NF_S_H_Q2_3D_N_PointsFace[] = { 25, 25, 25, 25, 25, 25 };
441 
442 TNodalFunctional3D *NF_S_H_Q2_3D_Obj = new TNodalFunctional3D
443  (NF_S_H_Q2_3D, NF_S_H_Q2_3D_N_AllFunctionals,
444  NF_S_H_Q2_3D_N_FaceFunctionals, NF_S_H_Q2_3D_N_PointsAll,
445  NF_S_H_Q2_3D_N_PointsFace,
446  NF_S_H_Q2_3D_Xi, NF_S_H_Q2_3D_Eta, NF_S_H_Q2_3D_Zeta,
447  NF_S_H_Q2_3D_XiArray, NF_S_H_Q2_3D_EtaArray,
448  NF_S_H_Q2_3D_ZetaArray,
449  NF_S_H_Q2_3D_T, NF_S_H_Q2_3D_S,
450  NF_S_H_Q2_3D_EvalAll, NF_S_H_Q2_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