ParMooN
 All Classes Functions Variables Friends Pages
BF_C_T_B2_3D.h
1 // ***********************************************************************
2 // P2 element with 4 face and 1 cell bubbles, conforming, 3D
3 //
4 // Author: Sashikumaar Ganesan
5 //
6 // ***********************************************************************
7 
8 static void C_T_B2_3D_Funct(double xi, double eta, double zeta,
9  double *values)
10 {
11  double t1, t2, t3, t4, t5,t6,t7,t8,t9,t10,t11,t12,t13;
12  double t14,t15,t18,t19,t20,t22,t23,t24,t25,t28,t31,t33,t41,t44;
13 
14  t1 = 1.0-xi-eta-zeta;
15  t2 = t1*t1;
16  t3 = zeta*t1;
17  t4 = t1*xi;
18  t5 = eta*t1;
19  t6 = eta*zeta;
20  t7 = t6*t1;
21  t8 = 3.0*t7;
22  t9 = t3*xi;
23  t10 = 3.0*t9;
24  t11 = t4*eta;
25  t12 = 3.0*t11;
26  t13 = xi*eta;
27  t14 = t13*t3;
28  t15 = 4.0*t14;
29  t18 = 12.0*t9;
30  t19 = 12.0*t11;
31  t20 = 32.0*t14;
32  t22 = xi*xi;
33  t23 = xi*zeta;
34  t24 = t13*zeta;
35  t25 = 3.0*t24;
36  t28 = 12.0*t7;
37  t31 = 12.0*t24;
38  t33 = eta*eta;
39  t41 = zeta*zeta;
40  t44 = 108.0*t14;
41 
42  values[0] = t2-t3-t4-t5+t8+t10+t12-t15;
43  values[1] = 4.0*t4-t18-t19+t20;
44  values[2] = t22-t13-t4-t23+t25+t10+t12-t15;
45  values[3] = 4.0*t5-t28-t19+t20;
46  values[4] = 4.0*t13-t31-t19+t20;
47  values[5] = t33-t13-t6-t5+t25+t8+t12-t15;
48  values[6] = 4.0*t3-t28-t18+t20;
49  values[7] = 4.0*t23-t31-t18+t20;
50  values[8] = 4.0*t6-t31-t28+t20;
51  values[9] = t41-t6-t3-t23+t25+t8+t10-t15;
52  values[10] = 27.0*t11-t44;
53  values[11] = 27.0*t9-t44;
54  values[12] = 27.0*t24-t44;
55  values[13] = 27.0*t7-t44;
56  values[14] = 256.0*t14;
57 }
58 
59 static void C_T_B2_3D_DeriveXi(double xi, double eta, double zeta,
60  double *values)
61 {
62  double t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12,t13, t14;
63  double t15, t16, t17, t18, t19, t21, t22,t23,t24,t25,t26,t29,t35,t39,t40,t45;
64 
65  t1 = 4.0*xi;
66  t2 = 4.0*eta;
67  t3 = 4.0*zeta;
68  t4 = eta*zeta;
69  t5 = 3.0*t4;
70  t6 = xi*zeta;
71  t7 = 3.0*t6;
72  t8 = 1.0-xi-eta-zeta;
73  t9 = zeta*t8;
74  t10 = 3.0*t9;
75  t11 = xi*eta;
76  t12 = 3.0*t11;
77  t13 = eta*t8;
78  t14 = 3.0*t13;
79  t15 = t4*t8;
80  t16 = 4.0*t15;
81  t17 = t11*zeta;
82  t18 = 4.0*t17;
83  t19 = -3.0+t1+t2+t3-t5-t7+t10-t12+t14-t16+t18;
84  t21 = 12.0*t6;
85  t22 = 12.0*t9;
86  t23 = 12.0*t11;
87  t24 = 12.0*t13;
88  t25 = 32.0*t15;
89  t26 = 32.0*t17;
90  t29 = 12.0*t4;
91  t35 = t15-t17;
92  t39 = 108.0*t15;
93  t40 = 108.0*t17;
94  t45 = 27.0*t4;
95 
96  values[0] = t19;
97  values[1] = -8.0*xi+4.0-t2-t3+t21-t22+t23-t24+t25-t26;
98  values[2] = t1-1.0+t5-t7+t10-t12+t14-t16+t18;
99  values[3] = -t2+t29+t23-t24+t25-t26;
100  values[4] = t2-t29+t23-t24+t25-t26;
101  values[5] = -t12+t14-t16+t18;
102  values[6] = -t3+t29+t21-t22+t25-t26;
103  values[7] = t3-t29+t21-t22+t25-t26;
104  values[8] = 32.0*t35;
105  values[9] = -t7+t10-t16+t18;
106  values[10] = -27.0*t11+27.0*t13-t39+t40;
107  values[11] = -27.0*t6+27.0*t9-t39+t40;
108  values[12] = t45-t39+t40;
109  values[13] = -t45-t39+t40;
110  values[14] = 256.0*t35;
111 }
112 
113 static void C_T_B2_3D_DeriveEta(double xi, double eta, double zeta,
114  double *values)
115 {
116 
117  double t1 = 4.0*xi;
118  double t2 = 4.0*eta;
119  double t3 = 4.0*zeta;
120  double t4 = 1.0-xi-eta-zeta;
121  double t5 = zeta*t4;
122  double t6 = 3.0*t5;
123  double t7 = eta*zeta;
124  double t8 = 3.0*t7;
125  double t9 = xi*zeta;
126  double t10 = 3.0*t9;
127  double t11 = xi*eta;
128  double t12 = 3.0*t11;
129  double t13 = t4*xi;
130  double t14 = 3.0*t13;
131  double t15 = t5*xi;
132  double t16 = 4.0*t15;
133  double t17 = t11*zeta;
134  double t18 = 4.0*t17;
135  double t19 = -3.0+t1+t2+t3+t6-t8-t10-t12+t14-t16+t18;
136  double t20 = 12.0*t9;
137  double t21 = 12.0*t11;
138  double t22 = 12.0*t13;
139  double t23 = 32.0*t15;
140  double t24 = 32.0*t17;
141  double t28 = 12.0*t5;
142  double t29 = 12.0*t7;
143  double t34 = t15-t17;
144  double t39 = 108.0*t15;
145  double t40 = 108.0*t17;
146  double t42 = 27.0*t9;
147 
148  values[0] = t19;
149  values[1] = -t1+t20+t21-t22+t23-t24;
150  values[2] = -t12+t14-t16+t18;
151  values[3] = 4.0-t1-8.0*eta-t3-t28+t29+t21-t22+t23-t24;
152  values[4] = t1-t20+t21-t22+t23-t24;
153  values[5] = t2-1.0+t10+t6-t8-t12+t14-t16+t18;
154  values[6] = -t3-t28+t29+t20+t23-t24;
155  values[7] = 32.0*t34;
156  values[8] = t3-t20-t28+t29+t23-t24;
157  values[9] = t6-t8-t16+t18;
158  values[10] = -27.0*t11+27.0*t13-t39+t40;
159  values[11] = -t42-t39+t40;
160  values[12] = t42-t39+t40;
161  values[13] = 27.0*t5-27.0*t7-t39+t40;
162  values[14] = 256.0*t34;
163 }
164 
165 static void C_T_B2_3D_DeriveZeta(double xi, double eta, double zeta,
166  double *values)
167 {
168 
169  double t1 = 4.0*xi;
170  double t2 = 4.0*eta;
171  double t3 = 4.0*zeta;
172  double t4 = 1.0-xi-eta-zeta;
173  double t5 = eta*t4;
174  double t6 = 3.0*t5;
175  double t7 = eta*zeta;
176  double t8 = 3.0*t7;
177  double t9 = t4*xi;
178  double t10 = 3.0*t9;
179  double t11 = xi*zeta;
180  double t12 = 3.0*t11;
181  double t13 = xi*eta;
182  double t14 = 3.0*t13;
183  double t15 = t9*eta;
184  double t16 = 4.0*t15;
185  double t17 = t13*zeta;
186  double t18 = 4.0*t17;
187  double t19 = -3.0+t1+t2+t3+t6-t8+t10-t12-t14-t16+t18;
188  double t20 = 12.0*t9;
189  double t21 = 12.0*t11;
190  double t22 = 12.0*t13;
191  double t23 = 32.0*t15;
192  double t24 = 32.0*t17;
193  double t27 = 12.0*t5;
194  double t28 = 12.0*t7;
195  double t30 = t15-t17;
196  double t37 = 27.0*t13;
197  double t38 = 108.0*t15;
198  double t39 = 108.0*t17;
199 
200  values[0] = t19;
201  values[1] = -t1-t20+t21+t22+t23-t24;
202  values[2] = t10-t12-t16+t18;
203  values[3] = -t2-t27+t28+t22+t23-t24;
204  values[4] = 32.0*t30;
205  values[5] = t6-t8-t16+t18;
206  values[6] = 4.0-t1-t2-8.0*zeta-t27+t28-t20+t21+t23-t24;
207  values[7] = t1-t20+t21-t22+t23-t24;
208  values[8] = t2-t22-t27+t28+t23-t24;
209  values[9] = t3-1.0+t14+t6-t8+t10-t12-t16+t18;
210  values[10] = -t37-t38+t39;
211  values[11] = 27.0*t9-27.0*t11-t38+t39;
212  values[12] = t37-t38+t39;
213  values[13] = 27.0*t5-27.0*t7-t38+t39;
214  values[14] = 256.0*t30;
215 }
216 
217 static void C_T_B2_3D_DeriveXiXi(double xi, double eta, double zeta,
218  double *values)
219 {
220 
221  double t1 = 6.0*zeta;
222  double t2 = 6.0*eta;
223  double t3 = eta*zeta;
224  double t4 = 8.0*t3;
225  double t5 = 4.0-t1-t2+t4;
226  double t6 = 24.0*zeta;
227  double t7 = 24.0*eta;
228  double t8 = 64.0*t3;
229  double t10 = t7-t8;
230  double t12 = t6-t8;
231  double t15 = 216.0*t3;
232 
233  values[0] = t5;
234  values[1] = -8.0+t6+t7-t8;
235  values[2] = t5;
236  values[3] = t10;
237  values[4] = t10;
238  values[5] = -t2+t4;
239  values[6] = t12;
240  values[7] = t12;
241  values[8] = -t8;
242  values[9] = -t1+t4;
243  values[10] = -54.0*eta+t15;
244  values[11] = t15-54.0*zeta;
245  values[12] = t15;
246  values[13] = t15;
247  values[14] = -512.0*t3;
248 
249  }
250 
251 static void C_T_B2_3D_DeriveXiEta(double xi, double eta, double zeta,
252  double *values)
253 {
254  double t2 = 6.0*xi;
255  double t3 = 6.0*eta;
256  double t5 = zeta*(1.0-xi-eta-zeta);
257  double t6 = 4.0*t5;
258  double t7 = eta*zeta;
259  double t8 = 4.0*t7;
260  double t9 = xi*zeta;
261  double t10 = 4.0*t9;
262  double t12 = 24.0*zeta;
263  double t13 = 24.0*xi;
264  double t14 = 24.0*eta;
265  double t15 = 32.0*t5;
266  double t16 = 32.0*t7;
267  double t17 = 32.0*t9;
268  double t18 = -16.0+t12+t13+t14+t15-t16-t17;
269  double t19 = 3.0*zeta;
270  double t20 = -t19-t2+3.0-t3-t6+t8+t10;
271  double t23 = t5-t7-t9;
272  double t27 = 27.0*zeta;
273  double t28 = 108.0*t5;
274  double t29 = 108.0*t7;
275  double t30 = 108.0*t9;
276  double t32 = -t27-t28+t29+t30;
277 
278  values[0] = 7.0-9.0*zeta-t2-t3-t6+t8+t10;
279  values[1] = t18;
280  values[2] = t20;
281  values[3] = t18;
282  values[4] = -8.0+t13+t14+t15-t16-t17;
283  values[5] = t20;
284  values[6] = t12+t15-t16-t17;
285  values[7] = 32.0*t23;
286  values[8] = 32.0*t23;
287  values[9] = -t19-t6+t8+t10;
288  values[10] = -54.0*xi+27.0-54.0*eta-t27-t28+t29+t30;
289  values[11] = t32;
290  values[12] = t27-t28+t29+t30;
291  values[13] = t32;
292  values[14] = 256.0*t23;
293 }
294 
295 static void C_T_B2_3D_DeriveXiZeta(double xi, double eta, double zeta,
296  double *values)
297 {
298 
299  double t2 = 6.0*xi;
300  double t3 = 6.0*zeta;
301  double t5 = eta*(1.0-xi-eta-zeta);
302  double t6 = 4.0*t5;
303  double t7 = eta*zeta;
304  double t8 = 4.0*t7;
305  double t9 = xi*eta;
306  double t10 = 4.0*t9;
307  double t12 = 24.0*xi;
308  double t13 = 24.0*eta;
309  double t14 = 24.0*zeta;
310  double t15 = 32.0*t5;
311  double t16 = 32.0*t7;
312  double t17 = 32.0*t9;
313  double t18 = -16.0+t12+t13+t14+t15-t16-t17;
314  double t19 = 3.0*eta;
315  double t20 = -t19-t2+3.0-t3-t6+t8+t10;
316  double t22 = t5-t7-t9;
317  double t25 = 27.0*eta;
318  double t26 = 108.0*t5;
319  double t27 = 108.0*t7;
320  double t28 = 108.0*t9;
321  double t29 = -t25-t26+t27+t28;
322 
323  values[0] = 7.0-9.0*eta-t2-t3-t6+t8+t10;
324  values[1] = t18;
325  values[2] = t20;
326  values[3] = t13+t15-t16-t17;
327  values[4] = 32.0*t22;
328  values[5] = -t19-t6+t8+t10;
329  values[6] = t18;
330  values[7] = -8.0+t12+t14+t15-t16-t17;
331  values[8] = 32.0*t22;
332  values[9] = t20;
333  values[10] = t29;
334  values[11] = -54.0*xi+27.0-t25-54.0*zeta-t26+t27+t28;
335  values[12] = t25-t26+t27+t28;
336  values[13] = t29;
337  values[14] = 256.0*t22;
338 
339  }
340 
341 static void C_T_B2_3D_DeriveEtaEta(double xi, double eta, double zeta,
342  double *values)
343 {
344  double t1 = 6.0*zeta;
345  double t2 = 6.0*xi;
346  double t3 = xi*zeta;
347  double t4 = 8.0*t3;
348  double t5 = 4.0-t1-t2+t4;
349  double t6 = 24.0*xi;
350  double t7 = 64.0*t3;
351  double t8 = t6-t7;
352  double t10 = 24.0*zeta;
353  double t12 = t10-t7;
354  double t15 = 216.0*t3;
355 
356  values[0] = t5;
357  values[1] = t8;
358  values[2] = -t2+t4;
359  values[3] = -8.0+t10+t6-t7;
360  values[4] = t8;
361  values[5] = t5;
362  values[6] = t12;
363  values[7] = -t7;
364  values[8] = t12;
365  values[9] = -t1+t4;
366  values[10] = -54.0*xi+t15;
367  values[11] = t15;
368  values[12] = t15;
369  values[13] = -54.0*zeta+t15;
370  values[14] = -512.0*t3;
371  }
372 
373 static void C_T_B2_3D_DeriveEtaZeta(double xi, double eta, double zeta,
374  double *values)
375 {
376 
377  double t2 = 6.0*eta;
378  double t3 = 6.0*zeta;
379  double t5 = (1.0-xi-eta-zeta)*xi;
380  double t6 = 4.0*t5;
381  double t7 = xi*zeta;
382  double t8 = 4.0*t7;
383  double t9 = xi*eta;
384  double t10 = 4.0*t9;
385  double t12 = 24.0*xi;
386  double t13 = 32.0*t5;
387  double t14 = 32.0*t7;
388  double t15 = 32.0*t9;
389  double t17 = 3.0*xi;
390  double t19 = 24.0*eta;
391  double t20 = 24.0*zeta;
392  double t21 = -16.0+t12+t19+t20+t13-t14-t15;
393  double t22 = t5-t7-t9;
394  double t23 = -t17+3.0-t2-t3-t6+t8+t10;
395  double t25 = 27.0*xi;
396  double t26 = 108.0*t5;
397  double t27 = 108.0*t7;
398  double t28 = 108.0*t9;
399  double t29 = -t25-t26+t27+t28;
400 
401  values[0] = 7.0-9.0*xi-t2-t3-t6+t8+t10;
402  values[1] = t12+t13-t14-t15;
403  values[2] = -t17-t6+t8+t10;
404  values[3] = t21;
405  values[4] = 32.0*t22;
406  values[5] = t23;
407  values[6] = t21;
408  values[7] = 32.0*t22;
409  values[8] = -8.0+t19+t20+t13-t14-t15;
410  values[9] = t23;
411  values[10] = t29;
412  values[11] = t29;
413  values[12] = t25-t26+t27+t28;
414  values[13] = 27.0-t25-54.0*eta-54.0*zeta-t26+t27+t28;
415  values[14] = 256.0*t22;
416  }
417 
418 static void C_T_B2_3D_DeriveZetaZeta(double xi, double eta, double zeta,
419  double *values)
420 {
421 
422  double t1 = 6.0*eta;
423  double t2 = 6.0*xi;
424  double t3 = xi*eta;
425  double t4 = 8.0*t3;
426  double t5 = 4.0-t1-t2+t4;
427  double t6 = 24.0*xi;
428  double t7 = 64.0*t3;
429  double t8 = t6-t7;
430  double t10 = 24.0*eta;
431  double t11 = t10-t7;
432  double t14 = 216.0*t3;
433 
434  values[0] = t5;
435  values[1] = t8;
436  values[2] = -t2+t4;
437  values[3] = t11;
438  values[4] = -t7;
439  values[5] = -t1+t4;
440  values[6] = -8.0+t10+t6-t7;
441  values[7] = t8;
442  values[8] = t11;
443  values[9] = t5;
444  values[10] = t14;
445  values[11] = -54.0*xi+t14;
446  values[12] = t14;
447  values[13] = -54.0*eta+t14;
448  values[14] = -512.0*t3;
449 
450 }
451 
452 TBaseFunct3D *BF_C_T_B2_3D_Obj =
453 new TBaseFunct3D(15, BF_C_T_B2_3D, BFUnitTetrahedron,
454  C_T_B2_3D_Funct, C_T_B2_3D_DeriveXi,
455  C_T_B2_3D_DeriveEta, C_T_B2_3D_DeriveZeta,
456  C_T_B2_3D_DeriveXiXi, C_T_B2_3D_DeriveXiEta,
457  C_T_B2_3D_DeriveXiZeta, C_T_B2_3D_DeriveEtaEta,
458  C_T_B2_3D_DeriveEtaZeta, C_T_B2_3D_DeriveZetaZeta,
459  3, 2,
460  0, NULL);
Definition: BaseFunct3D.h:27