ParMooN
 All Classes Functions Variables Friends Pages
BF_C_T_P3_3D.h
1 // ***********************************************************************
2 // P3 element, conforming, 3D
3 // ***********************************************************************
4 
5 static void C_T_P3_3D_Funct(double xi, double eta, double zeta,
6  double *values)
7 {
8  double t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12;
9  double t13, t14, t15, t16, t17;
10 
11  t1 = zeta*zeta;
12  t2 = t1*zeta;
13  t3 = eta*zeta;
14  t4 = eta*t1;
15  t5 = eta*eta;
16  t6 = t5*zeta;
17  t7 = t5*eta;
18  t8 = xi*zeta;
19  t9 = xi*t1;
20  t10 = xi*eta;
21  t11 = t10*zeta;
22  t12 = xi*t5;
23  t13 = xi*xi;
24  t14 = t13*zeta;
25  t15 = t13*eta;
26  t16 = t13*xi;
27  t17 = 1.0-11.0/2.0*zeta+9.0*t1-9.0/2.0*t2-11.0/2.0*eta+18.0*t3
28  -27.0/2.0*t4+9.0*t5-27.0/2.0*t6-9.0/2.0*t7-11.0/2.0*xi+18.0*t8
29  -27.0/2.0*t9+18.0*t10-27.0*t11-27.0/2.0*t12+9.0*t13
30  -27.0/2.0*t14-27.0/2.0*t15-9.0/2.0*t16;
31 
32  values[0] = t17;
33  values[1] = 9.0*xi-45.0/2.0*t8+27.0/2.0*t9-45.0/2.0*t10+27.0*t11
34  +27.0/2.0*t12-45.0/2.0*t13+27.0*t14+27.0*t15+27.0/2.0*t16;
35  values[2] = -9.0/2.0*xi+9.0/2.0*t8+9.0/2.0*t10+18.0*t13-27.0/2.0*t14
36  -27.0/2.0*t15-27.0/2.0*t16;
37  values[3] = xi-9.0/2.0*t13+9.0/2.0*t16;
38  values[4] = 9.0*eta-45.0/2.0*t3+27.0/2.0*t4-45.0/2.0*t5+27.0*t6
39  +27.0/2.0*t7-45.0/2.0*t10+27.0*t11+27.0*t12+27.0/2.0*t15;
40  values[5] = 27.0*t10-27.0*t11-27.0*t12-27.0*t15;
41  values[6] = -9.0/2.0*t10+27.0/2.0*t15;
42  values[7] = -9.0/2.0*eta+9.0/2.0*t3+18.0*t5-27.0/2.0*t6-27.0/2.0*t7
43  +9.0/2.0*t10-27.0/2.0*t12;
44  values[8] = -9.0/2.0*t10+27.0/2.0*t12;
45  values[9] = eta-9.0/2.0*t5+9.0/2.0*t7;
46  values[10] = 9.0*zeta-45.0/2.0*t1+27.0/2.0*t2-45.0/2.0*t3+27.0*t4
47  +27.0/2.0*t6-45.0/2.0*t8+27.0*t9+27.0*t11+27.0/2.0*t14;
48  values[11] = 27.0*t8-27.0*t9-27.0*t11-27.0*t14;
49  values[12] = -9.0/2.0*t8+27.0/2.0*t14;
50  values[13] = 27.0*t3-27.0*t4-27.0*t6-27.0*t11;
51  values[14] = 27.0*t11;
52  values[15] = -9.0/2.0*t3+27.0/2.0*t6;
53  values[16] = -9.0/2.0*zeta+18.0*t1-27.0/2.0*t2+9.0/2.0*t3-27.0/2.0*t4
54  +9.0/2.0*t8-27.0/2.0*t9;
55  values[17] = -9.0/2.0*t8+27.0/2.0*t9;
56  values[18] = -9.0/2.0*t3+27.0/2.0*t4;
57  values[19] = zeta-9.0/2.0*t1+9.0/2.0*t2;
58 }
59 
60 static void C_T_P3_3D_DeriveXi(double xi, double eta, double zeta,
61  double *values)
62 {
63  double t1, t2, t3, t4, t5, t6;
64 
65  t1 = zeta*zeta;
66  t2 = eta*zeta;
67  t3 = eta*eta;
68  t4 = xi*zeta;
69  t5 = xi*eta;
70  t6 = xi*xi;
71 
72  values[0] = -11.0/2.0+18.0*zeta-27.0/2.0*t1+18.0*eta-27.0*t2
73  -27.0/2.0*t3+18.0*xi-27.0*t4-27.0*t5-27.0/2.0*t6;
74  values[1] = 9.0-45.0/2.0*zeta+27.0/2.0*t1-45.0/2.0*eta+27.0*t2
75  +27.0/2.0*t3-45.0*xi+54.0*t4+54.0*t5+81.0/2.0*t6;
76  values[2] = -9.0/2.0+9.0/2.0*zeta+9.0/2.0*eta+36.0*xi-27.0*t4
77  -27.0*t5-81.0/2.0*t6;
78  values[3] = 1.0-9.0*xi+27.0/2.0*t6;
79  values[4] = -45.0/2.0*eta+27.0*t2+27.0*t3+27.0*t5;
80  values[5] = 27.0*eta-27.0*t2-27.0*t3-54.0*t5;
81  values[6] = -9.0/2.0*eta+27.0*t5;
82  values[7] = 9.0/2.0*eta-27.0/2.0*t3;
83  values[8] = -9.0/2.0*eta+27.0/2.0*t3;
84  values[9] = 0.0;
85  values[10] = -45.0/2.0*zeta+27.0*t1+27.0*t2+27.0*t4;
86  values[11] = 27.0*zeta-27.0*t1-27.0*t2-54.0*t4;
87  values[12] = -9.0/2.0*zeta+27.0*t4;
88  values[13] = -27.0*t2;
89  values[14] = 27.0*t2;
90  values[15] = 0.0;
91  values[16] = 9.0/2.0*zeta-27.0/2.0*t1;
92  values[17] = -9.0/2.0*zeta+27.0/2.0*t1;
93  values[18] = 0.0;
94  values[19] = 0.0;
95 }
96 
97 static void C_T_P3_3D_DeriveEta(double xi, double eta, double zeta,
98  double *values)
99 {
100  double t1, t2, t3, t4, t5, t6;
101 
102  t1 = zeta*zeta;
103  t2 = eta*zeta;
104  t3 = eta*eta;
105  t4 = xi*zeta;
106  t5 = xi*eta;
107  t6 = xi*xi;
108 
109  values[0] = -11.0/2.0+18.0*zeta-27.0/2.0*t1+18.0*eta-27.0*t2
110  -27.0/2.0*t3+18.0*xi-27.0*t4-27.0*t5-27.0/2.0*t6;
111  values[1] = -45.0/2.0*xi+27.0*t4+27.0*t5+27.0*t6;
112  values[2] = 9.0/2.0*xi-27.0/2.0*t6;
113  values[3] = 0.0;
114  values[4] = 9.0-45.0/2.0*zeta+27.0/2.0*t1-45.0*eta+54.0*t2+81.0/2.0*t3
115  -45.0/2.0*xi+27.0*t4+54.0*t5+27.0/2.0*t6;
116  values[5] = 27.0*xi-27.0*t4-54.0*t5-27.0*t6;
117  values[6] = -9.0/2.0*xi+27.0/2.0*t6;
118  values[7] = -9.0/2.0+9.0/2.0*zeta+36.0*eta-27.0*t2-81.0/2.0*t3
119  +9.0/2.0*xi-27.0*t5;
120  values[8] = -9.0/2.0*xi+27.0*t5;
121  values[9] = 1.0-9.0*eta+27.0/2.0*t3;
122  values[10] = -45.0/2.0*zeta+27.0*t1+27.0*t2+27.0*t4;
123  values[11] = -27.0*t4;
124  values[12] = 0.0;
125  values[13] = 27.0*zeta-27.0*t1-54.0*t2-27.0*t4;
126  values[14] = 27.0*t4;
127  values[15] = -9.0/2.0*zeta+27.0*t2;
128  values[16] = 9.0/2.0*zeta-27.0/2.0*t1;
129  values[17] = 0.0;
130  values[18] = -9.0/2.0*zeta+27.0/2.0*t1;
131  values[19] = 0.0;
132 }
133 
134 static void C_T_P3_3D_DeriveZeta(double xi, double eta, double zeta,
135  double *values)
136 {
137  double t1, t2, t3, t4, t5, t6;
138 
139  t1 = zeta*zeta;
140  t2 = eta*zeta;
141  t3 = eta*eta;
142  t4 = xi*zeta;
143  t5 = xi*eta;
144  t6 = xi*xi;
145 
146  values[0] = -11.0/2.0+18.0*zeta-27.0/2.0*t1+18.0*eta-27.0*t2
147  -27.0/2.0*t3+18.0*xi-27.0*t4-27.0*t5-27.0/2.0*t6;
148  values[1] = -45.0/2.0*xi+27.0*t4+27.0*t5+27.0*t6;
149  values[2] = 9.0/2.0*xi-27.0/2.0*t6;
150  values[3] = 0.0;
151  values[4] = -45.0/2.0*eta+27.0*t2+27.0*t3+27.0*t5;
152  values[5] = -27.0*t5;
153  values[6] = 0.0;
154  values[7] = 9.0/2.0*eta-27.0/2.0*t3;
155  values[8] = 0.0;
156  values[9] = 0.0;
157  values[10] = 9.0-45.0*zeta+81.0/2.0*t1-45.0/2.0*eta+54.0*t2
158  +27.0/2.0*t3-45.0/2.0*xi+54.0*t4+27.0*t5+27.0/2.0*t6;
159  values[11] = 27.0*xi-54.0*t4-27.0*t5-27.0*t6;
160  values[12] = -9.0/2.0*xi+27.0/2.0*t6;
161  values[13] = 27.0*eta-54.0*t2-27.0*t3-27.0*t5;
162  values[14] = 27.0*t5;
163  values[15] = -9.0/2.0*eta+27.0/2.0*t3;
164  values[16] = -9.0/2.0+36.0*zeta-81.0/2.0*t1+9.0/2.0*eta-27.0*t2
165  +9.0/2.0*xi-27.0*t4;
166  values[17] = -9.0/2.0*xi+27.0*t4;
167  values[18] = -9.0/2.0*eta+27.0*t2;
168  values[19] = 1.0-9.0*zeta+27.0/2.0*t1;
169 }
170 
171 static void C_T_P3_3D_DeriveXiXi(double xi, double eta, double zeta,
172  double *values)
173 {
174  values[0] = 18.0-27.0*zeta-27.0*eta-27.0*xi;
175  values[1] = -45.0+54.0*zeta+54.0*eta+81.0*xi;
176  values[2] = 36.0-27.0*zeta-27.0*eta-81.0*xi;
177  values[3] = -9.0+27.0*xi;
178  values[4] = 27.0*eta;
179  values[5] = -54.0*eta;
180  values[6] = 27.0*eta;
181  values[7] = 0.0;
182  values[8] = 0.0;
183  values[9] = 0.0;
184  values[10] = 27.0*zeta;
185  values[11] = -54.0*zeta;
186  values[12] = 27.0*zeta;
187  values[13] = 0.0;
188  values[14] = 0.0;
189  values[15] = 0.0;
190  values[16] = 0.0;
191  values[17] = 0.0;
192  values[18] = 0.0;
193  values[19] = 0.0;
194 }
195 
196 static void C_T_P3_3D_DeriveXiEta(double xi, double eta, double zeta,
197  double *values)
198 {
199  values[0] = 18.0-27.0*zeta-27.0*eta-27.0*xi;
200  values[1] = -45.0/2.0+27.0*zeta+27.0*eta+54.0*xi;
201  values[2] = 9.0/2.0-27.0*xi;
202  values[3] = 0.0;
203  values[4] = -45.0/2.0+27.0*zeta+54.0*eta+27.0*xi;
204  values[5] = 27.0-27.0*zeta-54.0*eta-54.0*xi;
205  values[6] = -9.0/2.0+27.0*xi;
206  values[7] = 9.0/2.0-27.0*eta;
207  values[8] = -9.0/2.0+27.0*eta;
208  values[9] = 0.0;
209  values[10] = 27.0*zeta;
210  values[11] = -27.0*zeta;
211  values[12] = 0.0;
212  values[13] = -27.0*zeta;
213  values[14] = 27.0*zeta;
214  values[15] = 0.0;
215  values[16] = 0.0;
216  values[17] = 0.0;
217  values[18] = 0.0;
218  values[19] = 0.0;
219 }
220 
221 static void C_T_P3_3D_DeriveXiZeta(double xi, double eta, double zeta,
222  double *values)
223 {
224  values[0] = 18.0-27.0*zeta-27.0*eta-27.0*xi;
225  values[1] = -45.0/2.0+27.0*zeta+27.0*eta+54.0*xi;
226  values[2] = 9.0/2.0-27.0*xi;
227  values[3] = 0.0;
228  values[4] = 27.0*eta;
229  values[5] = -27.0*eta;
230  values[6] = 0.0;
231  values[7] = 0.0;
232  values[8] = 0.0;
233  values[9] = 0.0;
234  values[10] = -45.0/2.0+54.0*zeta+27.0*eta+27.0*xi;
235  values[11] = 27.0-54.0*zeta-27.0*eta-54.0*xi;
236  values[12] = -9.0/2.0+27.0*xi;
237  values[13] = -27.0*eta;
238  values[14] = 27.0*eta;
239  values[15] = 0.0;
240  values[16] = 9.0/2.0-27.0*zeta;
241  values[17] = -9.0/2.0+27.0*zeta;
242  values[18] = 0.0;
243  values[19] = 0.0;
244 }
245 
246 static void C_T_P3_3D_DeriveEtaEta(double xi, double eta, double zeta,
247  double *values)
248 {
249  values[0] = 18.0-27.0*zeta-27.0*eta-27.0*xi;
250  values[1] = 27.0*xi;
251  values[2] = 0.0;
252  values[3] = 0.0;
253  values[4] = -45.0+54.0*zeta+81.0*eta+54.0*xi;
254  values[5] = -54.0*xi;
255  values[6] = 0.0;
256  values[7] = 36.0-27.0*zeta-81.0*eta-27.0*xi;
257  values[8] = 27.0*xi;
258  values[9] = -9.0+27.0*eta;
259  values[10] = 27.0*zeta;
260  values[11] = 0.0;
261  values[12] = 0.0;
262  values[13] = -54.0*zeta;
263  values[14] = 0.0;
264  values[15] = 27.0*zeta;
265  values[16] = 0.0;
266  values[17] = 0.0;
267  values[18] = 0.0;
268  values[19] = 0.0;
269 }
270 
271 static void C_T_P3_3D_DeriveEtaZeta(double xi, double eta, double zeta,
272  double *values)
273 {
274  values[0] = 18.0-27.0*zeta-27.0*eta-27.0*xi;
275  values[1] = 27.0*xi;
276  values[2] = 0.0;
277  values[3] = 0.0;
278  values[4] = -45.0/2.0+27.0*zeta+54.0*eta+27.0*xi;
279  values[5] = -27.0*xi;
280  values[6] = 0.0;
281  values[7] = 9.0/2.0-27.0*eta;
282  values[8] = 0.0;
283  values[9] = 0.0;
284  values[10] = -45.0/2.0+54.0*zeta+27.0*eta+27.0*xi;
285  values[11] = -27.0*xi;
286  values[12] = 0.0;
287  values[13] = 27.0-54.0*zeta-54.0*eta-27.0*xi;
288  values[14] = 27.0*xi;
289  values[15] = -9.0/2.0+27.0*eta;
290  values[16] = 9.0/2.0-27.0*zeta;
291  values[17] = 0.0;
292  values[18] = -9.0/2.0+27.0*zeta;
293  values[19] = 0.0;
294 }
295 
296 static void C_T_P3_3D_DeriveZetaZeta(double xi, double eta, double zeta,
297  double *values)
298 {
299  values[0] = 18.0-27.0*zeta-27.0*eta-27.0*xi;
300  values[1] = 27.0*xi;
301  values[2] = 0.0;
302  values[3] = 0.0;
303  values[4] = 27.0*eta;
304  values[5] = 0.0;
305  values[6] = 0.0;
306  values[7] = 0.0;
307  values[8] = 0.0;
308  values[9] = 0.0;
309  values[10] = -45.0+81.0*zeta+54.0*eta+54.0*xi;
310  values[11] = -54.0*xi;
311  values[12] = 0.0;
312  values[13] = -54.0*eta;
313  values[14] = 0.0;
314  values[15] = 0.0;
315  values[16] = 36.0-81.0*zeta-27.0*eta-27.0*xi;
316  values[17] = 27.0*xi;
317  values[18] = 27.0*eta;
318  values[19] = -9.0+27.0*zeta;
319 }
320 
321 TBaseFunct3D *BF_C_T_P3_3D_Obj =
322 new TBaseFunct3D(20, BF_C_T_P3_3D, BFUnitTetrahedron,
323  C_T_P3_3D_Funct, C_T_P3_3D_DeriveXi,
324  C_T_P3_3D_DeriveEta, C_T_P3_3D_DeriveZeta,
325  C_T_P3_3D_DeriveXiXi, C_T_P3_3D_DeriveXiEta,
326  C_T_P3_3D_DeriveXiZeta, C_T_P3_3D_DeriveEtaEta,
327  C_T_P3_3D_DeriveEtaZeta, C_T_P3_3D_DeriveZetaZeta,
328  3, 3,
329  0, NULL);
Definition: BaseFunct3D.h:27