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