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