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