ParMooN
 All Classes Functions Variables Friends Pages
BF_C_Q_UL4SE_2D.h
1 // ***********************************************************************
2 // Q4 element with bubbles, conforming, 2D
3 // ***********************************************************************
4 
5 // base function values
6 static void C_Q_UL4SE_2D_Funct(double xi, double eta, double *values)
7 {
8  double t1 = 145.0/2304.0*xi;
9  double t2 = xi*xi;
10  double t3 = 73.0/2304.0*t2;
11  double t4 = t2*xi;
12  double t5 = 37.0/768.0*t4;
13  double t6 = 145.0/2304.0*eta;
14  double t7 = xi*eta;
15  double t8 = 13.0/768.0*t7;
16  double t9 = t2*eta;
17  double t10 = 47.0/2304.0*t9;
18  double t11 = t4*eta;
19  double t12 = 77.0/768.0*t11;
20  double t13 = eta*eta;
21  double t14 = 73.0/2304.0*t13;
22  double t15 = xi*t13;
23  double t16 = 47.0/2304.0*t15;
24  double t17 = t2*t13;
25  double t18 = 253.0/768.0*t17;
26  double t19 = t4*t13;
27  double t20 = 293.0/768.0*t19;
28  double t21 = t13*eta;
29  double t22 = 37.0/768.0*t21;
30  double t23 = xi*t21;
31  double t24 = 77.0/768.0*t23;
32  double t25 = t2*t21;
33  double t26 = 293.0/768.0*t25;
34  double t27 = t4*t21;
35  double t28 = 111.0/256.0*t27;
36  double t30 = 1.0-t2;
37  double t33 = -1.0/2.0+3.0/2.0*t2;
38  double t34 = (1.0-eta)*t30*t33;
39  double t35 = 2.0/9.0*t34;
40  double t37 = 1.0-t13;
41  double t40 = -1.0/2.0+3.0/2.0*t13;
42  double t41 = (1.0-xi)*t37*t40;
43  double t42 = 2.0/9.0*t41;
44  double t43 = -329.0/2304.0+t1+t3+t5+t6+t8+t10-t12+t14+t16+t18-t20+t22-t24-t26+t28-t35-t42;
45  double t44 = xi/12.0;
46  double t45 = 5.0/18.0*t2;
47  double t46 = t4/12.0;
48  double t47 = 5.0/18.0*eta;
49  double t48 = t7/12.0;
50  double t49 = 5.0/18.0*t9;
51  double t50 = t11/12.0;
52  double t51 = t13/6.0;
53  double t52 = 3.0/4.0*t15;
54  double t53 = t17/6.0;
55  double t54 = 3.0/4.0*t19;
56  double t55 = t21/6.0;
57  double t56 = 3.0/4.0*t23;
58  double t57 = t25/6.0;
59  double t58 = 3.0/4.0*t27;
60  double t59 = 8.0/9.0*t34;
61  double t60 = 5.0/18.0+t44-t45-t46-t47-t48+t49+t50+t51-t52-t53+t54-t55+t56+t57-t58+t59;
62  double t61 = 23.0/48.0*t2;
63  double t62 = 23.0/48.0*eta;
64  double t63 = 23.0/48.0*t9;
65  double t64 = 5.0/16.0*t13;
66  double t65 = 5.0/16.0*t17;
67  double t66 = 5.0/16.0*t21;
68  double t67 = 5.0/16.0*t25;
69  double t70 = 5.0/18.0-t44-t45+t46-t47+t48+t49-t50+t51+t52-t53-t54-t55-t56+t57+t58+t59;
70  double t73 = (1.0+xi)*t37*t40;
71  double t74 = 2.0/9.0*t73;
72  double t75 = -329.0/2304.0-t1+t3-t5+t6-t8+t10+t12+t14-t16+t18+t20+t22+t24-t26-t28-t35-t74;
73  double t76 = 5.0/18.0*xi;
74  double t77 = t2/6.0;
75  double t78 = t4/6.0;
76  double t79 = eta/12.0;
77  double t80 = 3.0/4.0*t9;
78  double t81 = 3.0/4.0*t11;
79  double t82 = 5.0/18.0*t13;
80  double t83 = 5.0/18.0*t15;
81  double t84 = t19/6.0;
82  double t85 = t21/12.0;
83  double t86 = t23/12.0;
84  double t87 = 3.0/4.0*t25;
85  double t88 = 8.0/9.0*t73;
86  double t89 = 5.0/18.0+t76+t77+t78+t79+t48-t80-t81-t82-t83-t53-t84-t85-t86+t87+t58+t88;
87  double t90 = 23.0/48.0*xi;
88  double t91 = 5.0/16.0*t2;
89  double t92 = 5.0/16.0*t4;
90  double t93 = 23.0/48.0*t13;
91  double t94 = 23.0/48.0*t15;
92  double t95 = 5.0/16.0*t19;
93  double t98 = 5.0/18.0+t76+t77+t78-t79-t48+t80+t81-t82-t83-t53-t84+t85+t86-t87-t58+t88;
94  double t101 = (1.0+eta)*t30*t33;
95  double t102 = 2.0/9.0*t101;
96  double t103 = -329.0/2304.0-t1+t3-t5-t6+t8-t10-t12+t14-t16+t18+t20-t22-t24+t26+t28-t102-t74;
97  double t104 = 8.0/9.0*t101;
98  double t105 = 5.0/18.0-t44-t45+t46+t47-t48-t49+t50+t51+t52-t53-t54+t55+t56-t57-t58+t104;
99  double t108 = 5.0/18.0+t44-t45-t46+t47+t48-t49-t50+t51-t52-t53+t54+t55-t56-t57+t58+t104;
100  double t109 = -329.0/2304.0+t1+t3+t5-t6-t8-t10+t12+t14+t16+t18-t20-t22+t24+t26-t28-t102-t42;
101  double t110 = 8.0/9.0*t41;
102  double t111 = 5.0/18.0-t76+t77-t78-t79+t48+t80-t81-t82+t83-t53+t84+t85-t86-t87+t58+t110;
103  double t114 = 5.0/18.0-t76+t77-t78+t79-t48-t80+t81-t82+t83-t53+t84-t85+t86+t87-t58+t110;
104  double t115 = 243.0/256.0*xi;
105  double t116 = 81.0/256.0*t2;
106  double t117 = 243.0/256.0*t4;
107  double t118 = 243.0/256.0*eta;
108  double t119 = 729.0/256.0*t7;
109  double t120 = 243.0/256.0*t9;
110  double t121 = 729.0/256.0*t11;
111  double t122 = 81.0/256.0*t13;
112  double t123 = 243.0/256.0*t15;
113  double t124 = 81.0/256.0*t17;
114  double t125 = 243.0/256.0*t19;
115  double t126 = 243.0/256.0*t21;
116  double t127 = 729.0/256.0*t23;
117  double t128 = 243.0/256.0*t25;
118  double t129 = 729.0/256.0*t27;
119  double t130 = 81.0/256.0-t115-t116+t117-t118+t119+t120-t121-t122+t123+t124-t125+t126-t127-t128+t129;
120  double t131 = 81.0/256.0-t115-t116+t117+t118-t119-t120+t121-t122+t123+t124-t125-t126+t127+t128-t129;
121  double t132 = 81.0/256.0+t115-t116-t117-t118-t119+t120+t121-t122-t123+t124+t125+t126+t127-t128-t129;
122  double t133 = 81.0/256.0+t115-t116-t117+t118+t119-t120-t121-t122-t123+t124+t125-t126-t127+t128+t129;
123  values[0] = t43;
124  values[1] = t60;
125  values[2] = -23.0/48.0+t61+t62-t63+t64-t65-t66+t67-4.0/3.0*t34;
126  values[3] = t70;
127  values[4] = t75;
128  values[5] = t89;
129  values[6] = -23.0/48.0-t90+t91+t92+t93+t94-t65-t95-4.0/3.0*t73;
130  values[7] = t98;
131  values[8] = t103;
132  values[9] = t105;
133  values[10] = -23.0/48.0+t61-t62+t63+t64-t65+t66-t67-4.0/3.0*t101;
134  values[11] = t108;
135  values[12] = t109;
136  values[13] = t111;
137  values[14] = -23.0/48.0+t90+t91-t92+t93-t94-t65+t95-4.0/3.0*t41;
138  values[15] = t114;
139  values[16] = t130;
140  values[17] = t131;
141  values[18] = t132;
142  values[19] = t133;
143 }
144 
145 // values of the derivatives in xi direction
146 static void C_Q_UL4SE_2D_DeriveXi(double xi, double eta, double *values)
147 {
148  double t1 = 73.0/1152.0*xi;
149  double t2 = xi*xi;
150  double t3 = 37.0/256.0*t2;
151  double t4 = 13.0/768.0*eta;
152  double t5 = xi*eta;
153  double t6 = 47.0/1152.0*t5;
154  double t7 = t2*eta;
155  double t8 = 77.0/256.0*t7;
156  double t9 = eta*eta;
157  double t10 = 47.0/2304.0*t9;
158  double t11 = xi*t9;
159  double t12 = 253.0/384.0*t11;
160  double t13 = t2*t9;
161  double t14 = 293.0/256.0*t13;
162  double t15 = t9*eta;
163  double t16 = 77.0/768.0*t15;
164  double t17 = xi*t15;
165  double t18 = 293.0/384.0*t17;
166  double t19 = t2*t15;
167  double t20 = 333.0/256.0*t19;
168  double t21 = 1.0-eta;
169  double t24 = -1.0/2.0+3.0/2.0*t2;
170  double t25 = t21*xi*t24;
171  double t26 = 4.0/9.0*t25;
172  double t27 = 1.0-t2;
173  double t29 = t21*t27*xi;
174  double t30 = 2.0/3.0*t29;
175  double t34 = (1.0-t9)*(-1.0/2.0+3.0/2.0*t9);
176  double t35 = 2.0/9.0*t34;
177  double t36 = 145.0/2304.0+t1+t3+t4+t6-t8+t10+t12-t14-t16-t18+t20+t26-t30+t35;
178  double t37 = 5.0/9.0*xi;
179  double t38 = t2/4.0;
180  double t39 = eta/12.0;
181  double t40 = 5.0/9.0*t5;
182  double t41 = t7/4.0;
183  double t42 = 3.0/4.0*t9;
184  double t43 = t11/3.0;
185  double t44 = 9.0/4.0*t13;
186  double t45 = 3.0/4.0*t15;
187  double t46 = t17/3.0;
188  double t47 = 9.0/4.0*t19;
189  double t48 = 16.0/9.0*t25;
190  double t49 = 8.0/3.0*t29;
191  double t50 = 1.0/12.0-t37-t38-t39+t40+t41-t42-t43+t44+t45+t46-t47-t48+t49;
192  double t51 = 23.0/24.0*xi;
193  double t52 = 23.0/24.0*t5;
194  double t53 = 5.0/8.0*t11;
195  double t54 = 5.0/8.0*t17;
196  double t58 = -1.0/12.0-t37+t38+t39+t40-t41+t42-t43-t44-t45+t46+t47-t48+t49;
197  double t59 = -145.0/2304.0+t1-t3-t4+t6+t8-t10+t12+t14+t16-t18-t20+t26-t30-t35;
198  double t60 = xi/3.0;
199  double t61 = t2/2.0;
200  double t62 = 3.0/2.0*t5;
201  double t63 = 9.0/4.0*t7;
202  double t64 = 5.0/18.0*t9;
203  double t65 = t13/2.0;
204  double t66 = t15/12.0;
205  double t67 = 3.0/2.0*t17;
206  double t68 = 8.0/9.0*t34;
207  double t69 = 5.0/18.0+t60+t61+t39-t62-t63-t64-t43-t65-t66+t67+t47+t68;
208  double t70 = 5.0/8.0*xi;
209  double t71 = 15.0/16.0*t2;
210  double t72 = 23.0/48.0*t9;
211  double t73 = 15.0/16.0*t13;
212  double t74 = 4.0/3.0*t34;
213  double t76 = 5.0/18.0+t60+t61-t39+t62+t63-t64-t43-t65+t66-t67-t47+t68;
214  double t77 = 1.0+eta;
215  double t79 = t77*xi*t24;
216  double t80 = 4.0/9.0*t79;
217  double t82 = t77*t27*xi;
218  double t83 = 2.0/3.0*t82;
219  double t84 = -145.0/2304.0+t1-t3+t4-t6-t8-t10+t12+t14-t16+t18+t20+t80-t83-t35;
220  double t85 = 16.0/9.0*t79;
221  double t86 = 8.0/3.0*t82;
222  double t87 = -1.0/12.0-t37+t38-t39-t40+t41+t42-t43-t44+t45-t46-t47-t85+t86;
223  double t91 = 1.0/12.0-t37-t38+t39-t40-t41-t42-t43+t44-t45-t46+t47-t85+t86;
224  double t92 = 145.0/2304.0+t1+t3-t4-t6+t8+t10+t12-t14+t16+t18-t20+t80-t83+t35;
225  double t93 = -5.0/18.0+t60-t61+t39+t62-t63+t64-t43+t65-t66-t67+t47-t68;
226  double t95 = -5.0/18.0+t60-t61-t39-t62+t63+t64-t43+t65+t66+t67-t47-t68;
227  double t96 = 81.0/128.0*xi;
228  double t97 = 729.0/256.0*t2;
229  double t98 = 729.0/256.0*eta;
230  double t99 = 243.0/128.0*t5;
231  double t100 = 2187.0/256.0*t7;
232  double t101 = 243.0/256.0*t9;
233  double t102 = 81.0/128.0*t11;
234  double t103 = 729.0/256.0*t13;
235  double t104 = 729.0/256.0*t15;
236  double t105 = 243.0/128.0*t17;
237  double t106 = 2187.0/256.0*t19;
238  double t107 = -243.0/256.0-t96+t97+t98+t99-t100+t101+t102-t103-t104-t105+t106;
239  double t108 = -243.0/256.0-t96+t97-t98-t99+t100+t101+t102-t103+t104+t105-t106;
240  double t109 = 243.0/256.0-t96-t97-t98+t99+t100-t101+t102+t103+t104-t105-t106;
241  double t110 = 243.0/256.0-t96-t97+t98-t99-t100-t101+t102+t103-t104+t105+t106;
242  values[0] = t36;
243  values[1] = t50;
244  values[2] = t51-t52-t53+t54+8.0/3.0*t25-4.0*t29;
245  values[3] = t58;
246  values[4] = t59;
247  values[5] = t69;
248  values[6] = -23.0/48.0+t70+t71+t72-t53-t73-t74;
249  values[7] = t76;
250  values[8] = t84;
251  values[9] = t87;
252  values[10] = t51+t52-t53-t54+8.0/3.0*t79-4.0*t82;
253  values[11] = t91;
254  values[12] = t92;
255  values[13] = t93;
256  values[14] = 23.0/48.0+t70-t71-t72-t53+t73+t74;
257  values[15] = t95;
258  values[16] = t107;
259  values[17] = t108;
260  values[18] = t109;
261  values[19] = t110;
262 }
263 
264 // values of the derivatives in eta direction
265 static void C_Q_UL4SE_2D_DeriveEta(double xi, double eta, double *values)
266 {
267  double t1 = 13.0/768.0*xi;
268  double t2 = xi*xi;
269  double t3 = 47.0/2304.0*t2;
270  double t4 = t2*xi;
271  double t5 = 77.0/768.0*t4;
272  double t6 = 73.0/1152.0*eta;
273  double t7 = xi*eta;
274  double t8 = 47.0/1152.0*t7;
275  double t9 = t2*eta;
276  double t10 = 253.0/384.0*t9;
277  double t11 = t4*eta;
278  double t12 = 293.0/384.0*t11;
279  double t13 = eta*eta;
280  double t14 = 37.0/256.0*t13;
281  double t15 = xi*t13;
282  double t16 = 77.0/256.0*t15;
283  double t17 = t2*t13;
284  double t18 = 293.0/256.0*t17;
285  double t19 = t4*t13;
286  double t20 = 333.0/256.0*t19;
287  double t24 = (1.0-t2)*(-1.0/2.0+3.0/2.0*t2);
288  double t25 = 2.0/9.0*t24;
289  double t26 = 1.0-xi;
290  double t29 = -1.0/2.0+3.0/2.0*t13;
291  double t30 = t26*eta*t29;
292  double t31 = 4.0/9.0*t30;
293  double t32 = 1.0-t13;
294  double t34 = t26*t32*eta;
295  double t35 = 2.0/3.0*t34;
296  double t36 = 145.0/2304.0+t1+t3-t5+t6+t8+t10-t12+t14-t16-t18+t20+t25+t31-t35;
297  double t37 = xi/12.0;
298  double t38 = 5.0/18.0*t2;
299  double t39 = t4/12.0;
300  double t40 = eta/3.0;
301  double t41 = 3.0/2.0*t7;
302  double t42 = t9/3.0;
303  double t43 = 3.0/2.0*t11;
304  double t44 = t13/2.0;
305  double t45 = 9.0/4.0*t15;
306  double t46 = t17/2.0;
307  double t47 = 9.0/4.0*t19;
308  double t48 = 8.0/9.0*t24;
309  double t49 = -5.0/18.0-t37+t38+t39+t40-t41-t42+t43-t44+t45+t46-t47-t48;
310  double t50 = 23.0/48.0*t2;
311  double t51 = 5.0/8.0*eta;
312  double t52 = 5.0/8.0*t9;
313  double t53 = 15.0/16.0*t13;
314  double t54 = 15.0/16.0*t17;
315  double t55 = 4.0/3.0*t24;
316  double t57 = -5.0/18.0+t37+t38-t39+t40+t41-t42-t43-t44-t45+t46+t47-t48;
317  double t58 = 1.0+xi;
318  double t60 = t58*eta*t29;
319  double t61 = 4.0/9.0*t60;
320  double t63 = t58*t32*eta;
321  double t64 = 2.0/3.0*t63;
322  double t65 = 145.0/2304.0-t1+t3+t5+t6-t8+t10+t12+t14+t16-t18-t20+t25+t61-t64;
323  double t66 = 3.0/4.0*t2;
324  double t67 = 3.0/4.0*t4;
325  double t68 = 5.0/9.0*eta;
326  double t69 = 5.0/9.0*t7;
327  double t70 = t11/3.0;
328  double t71 = t13/4.0;
329  double t72 = t15/4.0;
330  double t73 = 9.0/4.0*t17;
331  double t74 = 16.0/9.0*t60;
332  double t75 = 8.0/3.0*t63;
333  double t76 = 1.0/12.0+t37-t66-t67-t68-t69-t42-t70-t71-t72+t73+t47-t74+t75;
334  double t77 = 23.0/24.0*eta;
335  double t78 = 23.0/24.0*t7;
336  double t79 = 5.0/8.0*t11;
337  double t83 = -1.0/12.0-t37+t66+t67-t68-t69-t42-t70+t71+t72-t73-t47-t74+t75;
338  double t84 = -145.0/2304.0+t1-t3-t5+t6-t8+t10+t12-t14-t16+t18+t20-t25+t61-t64;
339  double t85 = 5.0/18.0-t37-t38+t39+t40+t41-t42-t43+t44+t45-t46-t47+t48;
340  double t87 = 5.0/18.0+t37-t38-t39+t40-t41-t42+t43+t44-t45-t46+t47+t48;
341  double t88 = -145.0/2304.0-t1-t3+t5+t6+t8+t10-t12-t14+t16+t18-t20-t25+t31-t35;
342  double t89 = 16.0/9.0*t30;
343  double t90 = 8.0/3.0*t34;
344  double t91 = -1.0/12.0+t37+t66-t67-t68+t69-t42+t70+t71-t72-t73+t47-t89+t90;
345  double t95 = 1.0/12.0-t37-t66+t67-t68+t69-t42+t70-t71+t72+t73-t47-t89+t90;
346  double t96 = 729.0/256.0*xi;
347  double t97 = 243.0/256.0*t2;
348  double t98 = 729.0/256.0*t4;
349  double t99 = 81.0/128.0*eta;
350  double t100 = 243.0/128.0*t7;
351  double t101 = 81.0/128.0*t9;
352  double t102 = 243.0/128.0*t11;
353  double t103 = 729.0/256.0*t13;
354  double t104 = 2187.0/256.0*t15;
355  double t105 = 729.0/256.0*t17;
356  double t106 = 2187.0/256.0*t19;
357  double t107 = -243.0/256.0+t96+t97-t98-t99+t100+t101-t102+t103-t104-t105+t106;
358  double t108 = 243.0/256.0-t96-t97+t98-t99+t100+t101-t102-t103+t104+t105-t106;
359  double t109 = -243.0/256.0-t96+t97+t98-t99-t100+t101+t102+t103+t104-t105-t106;
360  double t110 = 243.0/256.0+t96-t97-t98-t99-t100+t101+t102-t103-t104+t105+t106;
361  values[0] = t36;
362  values[1] = t49;
363  values[2] = 23.0/48.0-t50+t51-t52-t53+t54+t55;
364  values[3] = t57;
365  values[4] = t65;
366  values[5] = t76;
367  values[6] = t77+t78-t52-t79+8.0/3.0*t60-4.0*t63;
368  values[7] = t83;
369  values[8] = t84;
370  values[9] = t85;
371  values[10] = -23.0/48.0+t50+t51-t52+t53-t54-t55;
372  values[11] = t87;
373  values[12] = t88;
374  values[13] = t91;
375  values[14] = t77-t78-t52+t79+8.0/3.0*t30-4.0*t34;
376  values[15] = t95;
377  values[16] = t107;
378  values[17] = t108;
379  values[18] = t109;
380  values[19] = t110;
381 }
382 
383 // values of the derivatives in xi-xi direction
384 static void C_Q_UL4SE_2D_DeriveXiXi(double xi, double eta, double *values)
385 {
386  double t1 = 37.0/128.0*xi;
387  double t2 = 47.0/1152.0*eta;
388  double t3 = xi*eta;
389  double t4 = 77.0/128.0*t3;
390  double t5 = eta*eta;
391  double t6 = 253.0/384.0*t5;
392  double t7 = xi*t5;
393  double t8 = 293.0/128.0*t7;
394  double t9 = t5*eta;
395  double t10 = 293.0/384.0*t9;
396  double t11 = xi*t9;
397  double t12 = 333.0/128.0*t11;
398  double t13 = 1.0-eta;
399  double t14 = xi*xi;
400  double t16 = -1.0/2.0+3.0/2.0*t14;
401  double t17 = t13*t16;
402  double t18 = 4.0/9.0*t17;
403  double t19 = t13*t14;
404  double t20 = 8.0/3.0*t19;
405  double t21 = 1.0-t14;
406  double t22 = t13*t21;
407  double t23 = 2.0/3.0*t22;
408  double t24 = 73.0/1152.0+t1+t2-t4+t6-t8-t10+t12+t18+t20-t23;
409  double t25 = xi/2.0;
410  double t26 = 5.0/9.0*eta;
411  double t27 = t3/2.0;
412  double t28 = t5/3.0;
413  double t29 = 9.0/2.0*t7;
414  double t30 = t9/3.0;
415  double t31 = 9.0/2.0*t11;
416  double t32 = 16.0/9.0*t17;
417  double t33 = 32.0/3.0*t19;
418  double t34 = 8.0/3.0*t22;
419  double t35 = -5.0/9.0-t25+t26+t27-t28+t29+t30-t31-t32-t33+t34;
420  double t36 = 23.0/24.0*eta;
421  double t37 = 5.0/8.0*t5;
422  double t38 = 5.0/8.0*t9;
423  double t43 = -5.0/9.0+t25+t26-t27-t28-t29+t30+t31-t32-t33+t34;
424  double t44 = 73.0/1152.0-t1+t2+t4+t6+t8-t10-t12+t18+t20-t23;
425  double t45 = 3.0/2.0*eta;
426  double t46 = 9.0/2.0*t3;
427  double t47 = 3.0/2.0*t9;
428  double t49 = 15.0/8.0*xi;
429  double t50 = 15.0/8.0*t7;
430  double t53 = 1.0+eta;
431  double t54 = t53*t16;
432  double t55 = 4.0/9.0*t54;
433  double t56 = t53*t14;
434  double t57 = 8.0/3.0*t56;
435  double t58 = t53*t21;
436  double t59 = 2.0/3.0*t58;
437  double t60 = 73.0/1152.0-t1-t2-t4+t6+t8+t10+t12+t55+t57-t59;
438  double t61 = 16.0/9.0*t54;
439  double t62 = 32.0/3.0*t56;
440  double t63 = 8.0/3.0*t58;
441  double t64 = -5.0/9.0+t25-t26+t27-t28-t29-t30-t31-t61-t62+t63;
442  double t69 = -5.0/9.0-t25-t26-t27-t28+t29-t30+t31-t61-t62+t63;
443  double t70 = 73.0/1152.0+t1-t2+t4+t6-t8+t10-t12+t55+t57-t59;
444  double t74 = 729.0/128.0*xi;
445  double t75 = 243.0/128.0*eta;
446  double t76 = 2187.0/128.0*t3;
447  double t77 = 81.0/128.0*t5;
448  double t78 = 729.0/128.0*t7;
449  double t79 = 243.0/128.0*t9;
450  double t80 = 2187.0/128.0*t11;
451  values[0] = t24;
452  values[1] = t35;
453  values[2] = 23.0/24.0-t36-t37+t38+8.0/3.0*t17+16.0*t19-4.0*t22;
454  values[3] = t43;
455  values[4] = t44;
456  values[5] = 1.0/3.0+xi-t45-t46-t28-t7+t47+t31;
457  values[6] = 5.0/8.0+t49-t37-t50;
458  values[7] = 1.0/3.0+xi+t45+t46-t28-t7-t47-t31;
459  values[8] = t60;
460  values[9] = t64;
461  values[10] = 23.0/24.0+t36-t37-t38+8.0/3.0*t54+16.0*t56-4.0*t58;
462  values[11] = t69;
463  values[12] = t70;
464  values[13] = 1.0/3.0-xi+t45-t46-t28+t7-t47+t31;
465  values[14] = 5.0/8.0-t49-t37+t50;
466  values[15] = 1.0/3.0-xi-t45+t46-t28+t7+t47-t31;
467  values[16] = -81.0/128.0+t74+t75-t76+t77-t78-t79+t80;
468  values[17] = -81.0/128.0+t74-t75+t76+t77-t78+t79-t80;
469  values[18] = -81.0/128.0-t74+t75+t76+t77+t78-t79-t80;
470  values[19] = -81.0/128.0-t74-t75-t76+t77+t78+t79+t80;
471 }
472 
473 // values of the derivatives in xi-eta direction
474 static void C_Q_UL4SE_2D_DeriveXiEta(double xi, double eta, double *values)
475 {
476  double t1 = 47.0/1152.0*xi;
477  double t2 = xi*xi;
478  double t3 = 77.0/256.0*t2;
479  double t4 = 47.0/1152.0*eta;
480  double t5 = xi*eta;
481  double t6 = 253.0/192.0*t5;
482  double t7 = t2*eta;
483  double t8 = 293.0/128.0*t7;
484  double t9 = eta*eta;
485  double t10 = 77.0/256.0*t9;
486  double t11 = xi*t9;
487  double t12 = 293.0/128.0*t11;
488  double t13 = t2*t9;
489  double t14 = 999.0/256.0*t13;
490  double t17 = xi*(-1.0/2.0+3.0/2.0*t2);
491  double t18 = 4.0/9.0*t17;
492  double t20 = (1.0-t2)*xi;
493  double t21 = 2.0/3.0*t20;
494  double t24 = eta*(-1.0/2.0+3.0/2.0*t9);
495  double t25 = 4.0/9.0*t24;
496  double t27 = (1.0-t9)*eta;
497  double t28 = 2.0/3.0*t27;
498  double t29 = 13.0/768.0+t1-t3+t4+t6-t8-t10-t12+t14-t18+t21-t25+t28;
499  double t30 = 5.0/9.0*xi;
500  double t31 = t2/4.0;
501  double t32 = 3.0/2.0*eta;
502  double t33 = 2.0/3.0*t5;
503  double t34 = 9.0/2.0*t7;
504  double t35 = 9.0/4.0*t9;
505  double t36 = 27.0/4.0*t13;
506  double t37 = 16.0/9.0*t17;
507  double t38 = 8.0/3.0*t20;
508  double t39 = -1.0/12.0+t30+t31-t32-t33+t34+t35+t11-t36+t37-t38;
509  double t40 = 23.0/24.0*xi;
510  double t41 = 5.0/4.0*t5;
511  double t42 = 15.0/8.0*t11;
512  double t43 = 8.0/3.0*t17;
513  double t44 = 4.0*t20;
514  double t46 = 1.0/12.0+t30-t31+t32-t33-t34-t35+t11+t36+t37-t38;
515  double t47 = -13.0/768.0+t1+t3-t4+t6+t8+t10-t12-t14-t18+t21+t25-t28;
516  double t48 = 3.0/2.0*xi;
517  double t49 = 9.0/4.0*t2;
518  double t50 = 5.0/9.0*eta;
519  double t51 = t9/4.0;
520  double t52 = 9.0/2.0*t11;
521  double t53 = 16.0/9.0*t24;
522  double t54 = 8.0/3.0*t27;
523  double t55 = 1.0/12.0-t48-t49-t50-t33-t7-t51+t52+t36-t53+t54;
524  double t56 = 23.0/24.0*eta;
525  double t57 = 15.0/8.0*t7;
526  double t58 = 8.0/3.0*t24;
527  double t59 = 4.0*t27;
528  double t61 = -1.0/12.0+t48+t49-t50-t33-t7+t51-t52-t36-t53+t54;
529  double t62 = 13.0/768.0-t1-t3-t4+t6+t8-t10+t12+t14+t18-t21+t25-t28;
530  double t63 = -1.0/12.0-t30+t31+t32-t33-t34+t35-t11-t36-t37+t38;
531  double t65 = 1.0/12.0-t30-t31-t32-t33+t34-t35-t11+t36-t37+t38;
532  double t66 = -13.0/768.0-t1+t3+t4+t6-t8+t10+t12-t14+t18-t21-t25+t28;
533  double t67 = 1.0/12.0+t48-t49+t50-t33+t7-t51-t52+t36+t53-t54;
534  double t69 = -1.0/12.0-t48+t49+t50-t33+t7+t51+t52-t36+t53-t54;
535  double t70 = 243.0/128.0*xi;
536  double t71 = 2187.0/256.0*t2;
537  double t72 = 243.0/128.0*eta;
538  double t73 = 81.0/64.0*t5;
539  double t74 = 729.0/128.0*t7;
540  double t75 = 2187.0/256.0*t9;
541  double t76 = 729.0/128.0*t11;
542  double t77 = 6561.0/256.0*t13;
543  values[0] = t29;
544  values[1] = t39;
545  values[2] = -t40-t41+t42-t43+t44;
546  values[3] = t46;
547  values[4] = t47;
548  values[5] = t55;
549  values[6] = t56-t41-t57+t58-t59;
550  values[7] = t61;
551  values[8] = t62;
552  values[9] = t63;
553  values[10] = t40-t41-t42+t43-t44;
554  values[11] = t65;
555  values[12] = t66;
556  values[13] = t67;
557  values[14] = -t56-t41+t57-t58+t59;
558  values[15] = t69;
559  values[16] = 729.0/256.0+t70-t71+t72+t73-t74-t75-t76+t77;
560  values[17] = -729.0/256.0-t70+t71+t72+t73-t74+t75+t76-t77;
561  values[18] = -729.0/256.0+t70+t71-t72+t73+t74+t75-t76-t77;
562  values[19] = 729.0/256.0-t70-t71-t72+t73+t74-t75+t76+t77;
563 }
564 
565 // values of the derivatives in eta-eta direction
566 static void C_Q_UL4SE_2D_DeriveEtaEta(double xi, double eta, double *values)
567 {
568  double t1 = 47.0/1152.0*xi;
569  double t2 = xi*xi;
570  double t3 = 253.0/384.0*t2;
571  double t4 = t2*xi;
572  double t5 = 293.0/384.0*t4;
573  double t6 = 37.0/128.0*eta;
574  double t7 = xi*eta;
575  double t8 = 77.0/128.0*t7;
576  double t9 = t2*eta;
577  double t10 = 293.0/128.0*t9;
578  double t11 = t4*eta;
579  double t12 = 333.0/128.0*t11;
580  double t13 = 1.0-xi;
581  double t14 = eta*eta;
582  double t16 = -1.0/2.0+3.0/2.0*t14;
583  double t17 = t13*t16;
584  double t18 = 4.0/9.0*t17;
585  double t19 = t13*t14;
586  double t20 = 8.0/3.0*t19;
587  double t21 = 1.0-t14;
588  double t22 = t13*t21;
589  double t23 = 2.0/3.0*t22;
590  double t24 = 73.0/1152.0+t1+t3-t5+t6-t8-t10+t12+t18+t20-t23;
591  double t25 = 3.0/2.0*xi;
592  double t26 = t2/3.0;
593  double t27 = 3.0/2.0*t4;
594  double t28 = 9.0/2.0*t7;
595  double t29 = 9.0/2.0*t11;
596  double t31 = 5.0/8.0*t2;
597  double t32 = 15.0/8.0*eta;
598  double t33 = 15.0/8.0*t9;
599  double t36 = 1.0+xi;
600  double t37 = t36*t16;
601  double t38 = 4.0/9.0*t37;
602  double t39 = t36*t14;
603  double t40 = 8.0/3.0*t39;
604  double t41 = t36*t21;
605  double t42 = 2.0/3.0*t41;
606  double t43 = 73.0/1152.0-t1+t3+t5+t6+t8-t10-t12+t38+t40-t42;
607  double t44 = 5.0/9.0*xi;
608  double t45 = t4/3.0;
609  double t46 = eta/2.0;
610  double t47 = t7/2.0;
611  double t48 = 9.0/2.0*t9;
612  double t49 = 16.0/9.0*t37;
613  double t50 = 32.0/3.0*t39;
614  double t51 = 8.0/3.0*t41;
615  double t52 = -5.0/9.0-t44-t26-t45-t46-t47+t48+t29-t49-t50+t51;
616  double t53 = 23.0/24.0*xi;
617  double t54 = 5.0/8.0*t4;
618  double t59 = -5.0/9.0-t44-t26-t45+t46+t47-t48-t29-t49-t50+t51;
619  double t60 = 73.0/1152.0-t1+t3+t5-t6-t8+t10+t12+t38+t40-t42;
620  double t64 = 73.0/1152.0+t1+t3-t5-t6+t8+t10-t12+t18+t20-t23;
621  double t65 = 16.0/9.0*t17;
622  double t66 = 32.0/3.0*t19;
623  double t67 = 8.0/3.0*t22;
624  double t68 = -5.0/9.0+t44-t26+t45+t46-t47-t48+t29-t65-t66+t67;
625  double t73 = -5.0/9.0+t44-t26+t45-t46+t47+t48-t29-t65-t66+t67;
626  double t74 = 243.0/128.0*xi;
627  double t75 = 81.0/128.0*t2;
628  double t76 = 243.0/128.0*t4;
629  double t77 = 729.0/128.0*eta;
630  double t78 = 2187.0/128.0*t7;
631  double t79 = 729.0/128.0*t9;
632  double t80 = 2187.0/128.0*t11;
633  values[0] = t24;
634  values[1] = 1.0/3.0-t25-t26+t27-eta+t28+t9-t29;
635  values[2] = 5.0/8.0-t31-t32+t33;
636  values[3] = 1.0/3.0+t25-t26-t27-eta-t28+t9+t29;
637  values[4] = t43;
638  values[5] = t52;
639  values[6] = 23.0/24.0+t53-t31-t54+8.0/3.0*t37+16.0*t39-4.0*t41;
640  values[7] = t59;
641  values[8] = t60;
642  values[9] = 1.0/3.0+t25-t26-t27+eta+t28-t9-t29;
643  values[10] = 5.0/8.0-t31+t32-t33;
644  values[11] = 1.0/3.0-t25-t26+t27+eta-t28-t9+t29;
645  values[12] = t64;
646  values[13] = t68;
647  values[14] = 23.0/24.0-t53-t31+t54+8.0/3.0*t17+16.0*t19-4.0*t22;
648  values[15] = t73;
649  values[16] = -81.0/128.0+t74+t75-t76+t77-t78-t79+t80;
650  values[17] = -81.0/128.0+t74+t75-t76-t77+t78+t79-t80;
651  values[18] = -81.0/128.0-t74+t75+t76+t77+t78-t79-t80;
652  values[19] = -81.0/128.0-t74+t75+t76-t77-t78+t79+t80;
653 }
654 
655 // ***********************************************************************
656 
657 TBaseFunct2D *BF_C_Q_UL4SE_2D_Obj = new TBaseFunct2D
658  (20, BF_C_Q_UL4SE_2D, BFUnitSquare,
659  C_Q_UL4SE_2D_Funct, C_Q_UL4SE_2D_DeriveXi,
660  C_Q_UL4SE_2D_DeriveEta, C_Q_UL4SE_2D_DeriveXiXi,
661  C_Q_UL4SE_2D_DeriveXiEta, C_Q_UL4SE_2D_DeriveEtaEta, 4, 4,
662  0, NULL);
Definition: BaseFunct2D.h:27