ParMooN
 All Classes Functions Variables Friends Pages
BF_N_H_Q4_3D.h
1 // ***********************************************************************
2 // Q4Rot element, nonconforming, 3D
3 // ***********************************************************************
4 
5 static void N_H_Q4_3D_Funct(double xi, double eta, double zeta,
6  double *values)
7 {
8  double t1, t2, t3, t4, t5, t6, t7, t8, t10, t12, t13, t14, t15, t16, t17;
9  double t19, t20, t21, t22, t23, t24, t26, t27, t28, t29, t30, t32, t33;
10  double t34, t35, t37, t39, t40, t42, t43, t44, t46, t48, t49, t51, t52;
11  double t53, t58, t59, t61, t62, t63, t65, t66, t68, t69, t70, t75, t77;
12  double t80, t85, t87, t88, t89, t90, t91, t93, t95, t97, t98, t99, t100;
13  double t101, t102, t104, t109, t111, t112, t113, t114, t115, t116, t118;
14  double t119, t120, t122, t123, t124, t125, t126, t127, t132, t133, t134;
15  double t136, t138, t139, t141, t142, t143, t144, t145, t146, t147, t148;
16  double t150, t151, t152, t153, t154, t155, t158, t159, t160, t161, t162;
17  double t168, t169, t170, t171, t172, t173, t175, t176, t177, t178, t179;
18  double t180, t184, t185, t186, t189, t190, t191, t192, t193, t194, t195;
19  double t196, t197, t199, t200, t201, t202, t203, t205, t206, t207, t208;
20  double t209, t210, t211, t212, t214, t215, t216, t217, t218, t219, t220;
21  double t263, t264, t265, t266, t267, t268, t274, t275, t276;
22 
23  t1 = eta*eta;
24  t2 = t1*t1;
25  t3 = 35.0/8.0*t2;
26  t4 = 15.0/4.0*t1;
27  t5 = 3.0/8.0+t3-t4;
28  t6 = zeta*zeta;
29  t7 = t6*zeta;
30  t8 = 5.0/2.0*t7;
31  t10 = t8-3.0/2.0*zeta;
32  t12 = t5*t10/2.0;
33  t13 = xi*xi;
34  t14 = t13*t13;
35  t15 = 35.0/8.0*t14;
36  t16 = 15.0/4.0*t13;
37  t17 = 3.0/8.0+t15-t16;
38  t19 = t17*t10/2.0;
39  t20 = 5.0/4.0*t7;
40  t21 = t6*t6;
41  t22 = 35.0/16.0*t21;
42  t23 = 15.0/8.0*t6;
43  t24 = 3.0/4.0*zeta;
44  t26 = t1*eta;
45  t27 = 5.0/4.0*t26;
46  t28 = 15.0/8.0*t1;
47  t29 = 35.0/16.0*t2;
48  t30 = 5.0/2.0*t26;
49  t32 = t30-3.0/2.0*eta;
50  t33 = 35.0/8.0*t21;
51  t34 = 15.0/4.0*t6;
52  t35 = 3.0/8.0+t33-t34;
53  t37 = t32*t35/2.0;
54  t39 = t17*t32/2.0;
55  t40 = 3.0/4.0*eta;
56  t42 = 15.0/8.0*t13;
57  t43 = t13*xi;
58  t44 = 5.0/2.0*t43;
59  t46 = t44-3.0/2.0*xi;
60  t48 = t46*t5/2.0;
61  t49 = 5.0/4.0*t43;
62  t51 = t46*t35/2.0;
63  t52 = 35.0/16.0*t14;
64  t53 = 3.0/4.0*xi;
65  t58 = xi*t10;
66  t59 = t58/2.0;
67  t61 = -1.0/2.0+3.0/2.0*t6;
68  t62 = t46*t61;
69  t63 = t62/2.0;
70  t65 = -1.0/2.0+3.0/2.0*t1;
71  t66 = xi*t65;
72  t68 = t66*t35/4.0;
73  t69 = t46*t10;
74  t70 = t69/4.0;
75  t75 = 63.0/8.0*t21*zeta-35.0/4.0*t7+15.0/8.0*zeta;
76  t77 = t46*t75/4.0;
77  t80 = xi*t5*t61/4.0;
78  t85 = 63.0/8.0*t14*xi-35.0/4.0*t43+15.0/8.0*xi;
79  t87 = t85*t10/4.0;
80  t88 = t66*t61;
81  t89 = t88/4.0;
82  t90 = xi*t61;
83  t91 = t90/2.0;
84  t93 = t17*t65;
85  t95 = t93*zeta/4.0;
86  t97 = -1.0/2.0+3.0/2.0*t13;
87  t98 = t97*t65;
88  t99 = t98*zeta;
89  t100 = t99/4.0;
90  t101 = t65*t10;
91  t102 = t101/2.0;
92  t104 = t32*t75/4.0;
93  t109 = 63.0/8.0*t2*eta-35.0/4.0*t26+15.0/8.0*eta;
94  t111 = t109*t10/4.0;
95  t112 = t65*zeta;
96  t113 = t112/2.0;
97  t114 = t32*t10;
98  t115 = t114/4.0;
99  t116 = t97*t5;
100  t118 = t116*zeta/4.0;
101  t119 = t32*zeta;
102  t120 = t119/2.0;
103  t122 = t97*zeta;
104  t123 = t122/2.0;
105  t124 = t97*t10;
106  t125 = t124/2.0;
107  t126 = t46*zeta;
108  t127 = t126/2.0;
109  t132 = t17*eta*t61/4.0;
110  t133 = t97*t32;
111  t134 = t133/2.0;
112  t136 = t85*t32/4.0;
113  t138 = t46*t109/4.0;
114  t139 = t97*eta;
115  t141 = t139*t35/4.0;
116  t142 = t139/2.0;
117  t143 = t139*t61;
118  t144 = t143/4.0;
119  t145 = t46*t32;
120  t146 = t145/4.0;
121  t147 = t46*eta;
122  t148 = t147/2.0;
123  t150 = eta*t10;
124  t151 = t150/2.0;
125  t152 = t32*t61;
126  t153 = t152/2.0;
127  t154 = eta*t61;
128  t155 = t154/2.0;
129  t158 = t66/2.0;
130  t159 = t46*t65;
131  t160 = t159/2.0;
132  t161 = xi*t32;
133  t162 = t161/2.0;
134  t168 = t97*t61;
135  t169 = t168/4.0;
136  t170 = t97*t35;
137  t171 = t170/4.0;
138  t172 = t17*t61;
139  t173 = t172/4.0;
140  t175 = t65*t61;
141  t176 = t175/4.0;
142  t177 = t5*t61;
143  t178 = t177/4.0;
144  t179 = t65*t35;
145  t180 = t179/4.0;
146  t184 = t98/4.0;
147  t185 = t93/4.0;
148  t186 = t116/4.0;
149  t189 = t161*zeta;
150  t190 = t189/6.0;
151  t191 = t147*zeta;
152  t192 = t191/6.0;
153  t193 = xi*eta;
154  t194 = t193*t10;
155  t195 = t194/3.0;
156  t196 = t193*t61;
157  t197 = t196/2.0;
158  t199 = t193*zeta/6.0;
159  t200 = t147*t61;
160  t201 = t200/2.0;
161  t202 = t161*t61;
162  t203 = t202/2.0;
163  t205 = t66*t10;
164  t206 = t205/2.0;
165  t207 = t159*zeta;
166  t208 = t207/2.0;
167  t209 = t189/3.0;
168  t210 = t66*zeta;
169  t211 = t210/2.0;
170  t212 = t194/6.0;
171  t214 = t191/3.0;
172  t215 = t133*zeta;
173  t216 = t215/2.0;
174  t217 = t139*t10;
175  t218 = t217/2.0;
176  t219 = t139*zeta;
177  t220 = t219/2.0;
178  t263 = t98/2.0;
179  t264 = t93/2.0;
180  t265 = t168/2.0;
181  t266 = t116/2.0;
182  t267 = t170/2.0;
183  t268 = t172/2.0;
184  t274 = t175/2.0;
185  t275 = t177/2.0;
186  t276 = t179/2.0;
187 
188  values[0] = t12+t19-t20+t22-t23+t24+3.0/16.0;
189  values[1] = -t27-t28+t29+t37+t39+t40+3.0/16.0;
190  values[2] = -t42-t48+t49-t51+t52-t53+3.0/16.0;
191  values[3] = t27-t28+t29-t37-t39-t40+3.0/16.0;
192  values[4] = -t42+t48-t49+t51+t52+t53+3.0/16.0;
193  values[5] = -t12-t19+t20+t22-t23-t24+3.0/16.0;
194  values[6] = -t59+t51-t63+t68+t70-t77-t80+t87-t89+t91;
195  values[7] = t12-t95-t100-t102+t104-t111+t113+t115+t118-t120;
196  values[8] = t123+t95+t19-t100-t125-t70-t77+t87+t127-t118;
197  values[9] = t12-t95-t100-t102-t104+t111+t113-t115+t118+t120;
198  values[10] = t132-t134-t136+t138-t141+t142-t144+t39+t146-t148;
199  values[11] = -t132+t151+t141+t37+t104-t153-t144-t111+t155-t115;
200  values[12] = -t132-t151+t141+t37-t104-t153-t144+t111+t155+t115;
201  values[13] = t158+t48-t160+t136-t138-t68+t146+t80-t89-t162;
202  values[14] = t132-t134+t136-t138-t141+t142-t144+t39-t146+t148;
203  values[15] = -t158-t48+t160+t136-t138+t68+t146-t80+t89-t162;
204  values[16] = t123+t95+t19-t100-t125+t70+t77-t87-t127-t118;
205  values[17] = t59+t51-t63+t68-t70+t77-t80-t87-t89+t91;
206  values[18] = t19+t169-t125+t171-t173;
207  values[19] = t176+t37-t153+t178-t180;
208  values[20] = -t51+t63+t169-t171+t173;
209  values[21] = t176-t37+t153+t178-t180;
210  values[22] = t48-t160+t184+t185-t186;
211  values[23] = -t12+t176+t102-t178+t180;
212  values[24] = t190+t192-t195+t197-t199-t201-t203;
213  values[25] = -t206-t208-t209+t192+t211+t212-t199;
214  values[26] = -t190+t214-t212-t216+t199-t218+t220;
215  values[27] = t206+t208-t209+t192-t211+t212-t199;
216  values[28] = t190-t214+t212-t216-t199-t218+t220;
217  values[29] = -t190-t192+t195+t197+t199-t201-t203;
218  values[30] = t12+t176-t102-t178+t180;
219  values[31] = t184-t134-t185+t186+t39;
220  values[32] = -t48+t160+t184+t185-t186;
221  values[33] = t184+t134-t185+t186-t39;
222  values[34] = t51-t63+t169-t171+t173;
223  values[35] = -t19+t169+t125+t171-t173;
224  values[36] = t51-t70-t77+t87;
225  values[37] = t12+t104-t111-t115;
226  values[38] = t19+t70-t77+t87;
227  values[39] = t12-t104+t111+t115;
228  values[40] = -t136+t138+t39-t146;
229  values[41] = t37+t104-t111+t115;
230  values[42] = -t132+t141+t144-t218;
231  values[43] = -t68+t80+t89-t203;
232  values[44] = t132-t141+t144+t201;
233  values[45] = t68-t80-t89-t203;
234  values[46] = -t208+t95+t100-t118;
235  values[47] = t206+t68-t80+t89;
236  values[48] = -t206+t68-t80+t89;
237  values[49] = -t95+t100-t216+t118;
238  values[50] = t208+t95+t100-t118;
239  values[51] = -t95+t100+t216+t118;
240  values[52] = t132-t141+t144-t201;
241  values[53] = -t132+t141+t144+t218;
242  values[54] = t37-t104+t111-t115;
243  values[55] = t48+t136-t138-t146;
244  values[56] = t136-t138+t39+t146;
245  values[57] = -t48+t136-t138-t146;
246  values[58] = t19-t70+t77-t87;
247  values[59] = t51+t70+t77-t87;
248  values[60] = t16-1.0/8.0+t4-t3-t15-t33+t34;
249  values[61] = -t66-t44+t159+t62+5.0/2.0*xi+t88-t90;
250  values[62] = -t30+t133-t139+t152+t143+5.0/2.0*eta-t154;
251  values[63] = -t122+t99-t8+t101+t124+5.0/2.0*zeta-t112;
252  values[64] = 21.0/4.0*t13-t263-7.0/8.0+t264-t265-t15-t266-t267+t268;
253  values[65] = t193-t196+t145+t200-t147-t161+t202;
254  values[66] = t205+t207-t58-t210+xi*zeta+t69-t126;
255  values[67] = 21.0/4.0*t1-t263-7.0/8.0-t3-t274-t264+t266+t275-t276;
256  values[68] = -t150+eta*zeta+t215+t217-t219+t114-t119;
257  values[69] = -7.0/8.0-t274-t265-t33-t275+t276+21.0/4.0*t6+t267-t268;
258 }
259 
260 static void N_H_Q4_3D_DeriveXi(double xi, double eta, double zeta,
261  double *values)
262 {
263  double t1, t2, t3, t5, t6, t7, t8, t10, t12, t13, t14, t15, t17, t19, t20, t21;
264  double t22, t23, t26, t28, t29, t30, t33, t35, t36, t39, t40, t41, t42;
265  double t43, t44, t45, t46, t48, t49, t50, t57, t59, t60, t63, t65, t66;
266  double t67, t68, t69, t70, t72, t73, t74, t75, t76, t78, t79, t80, t81;
267  double t82, t83, t84, t85, t89, t90, t91, t93, t100, t101, t103, t104;
268  double t105, t106, t107, t108, t109, t110, t112, t113, t114, t115, t116;
269  double t117, t118, t120, t122, t123, t124, t125, t126, t127, t128, t131;
270  double t132, t133, t135, t136, t137, t138, t139, t140, t141, t142, t144;
271  double t145, t146, t147, t148, t150, t151, t152, t153, t154, t155, t156;
272  double t157, t159, t160, t161, t162, t163, t164, t165, t199, t200, t201;
273  double t202, t203, t204;
274 
275  t1 = xi*xi;
276  t2 = t1*xi;
277  t3 = 35.0/2.0*t2;
278  t5 = t3-15.0/2.0*xi;
279  t6 = zeta*zeta;
280  t7 = t6*zeta;
281  t8 = 5.0/2.0*t7;
282  t10 = t8-3.0/2.0*zeta;
283  t12 = t5*t10/2.0;
284  t13 = eta*eta;
285  t14 = t13*eta;
286  t15 = 5.0/2.0*t14;
287  t17 = t15-3.0/2.0*eta;
288  t19 = t5*t17/2.0;
289  t20 = 15.0/4.0*xi;
290  t21 = 15.0/2.0*t1;
291  t22 = t21-3.0/2.0;
292  t23 = t13*t13;
293  t26 = 3.0/8.0+35.0/8.0*t23-15.0/4.0*t13;
294  t28 = t22*t26/2.0;
295  t29 = 15.0/4.0*t1;
296  t30 = t6*t6;
297  t33 = 3.0/8.0+35.0/8.0*t30-15.0/4.0*t6;
298  t35 = t22*t33/2.0;
299  t36 = 35.0/4.0*t2;
300  t39 = 5.0/4.0*t7;
301  t40 = 3.0/4.0*zeta;
302  t41 = 3.0/2.0*t6;
303  t42 = -1.0/2.0+t41;
304  t43 = t22*t42;
305  t44 = t43/2.0;
306  t45 = 3.0/2.0*t13;
307  t46 = -1.0/2.0+t45;
308  t48 = t46*t33/4.0;
309  t49 = t22*t10;
310  t50 = t49/4.0;
311  t57 = t22*(63.0/8.0*t30*zeta-35.0/4.0*t7+15.0/8.0*zeta)/4.0;
312  t59 = t26*t42/4.0;
313  t60 = t1*t1;
314  t63 = 315.0/8.0*t60-105.0/4.0*t1+15.0/8.0;
315  t65 = t63*t10/4.0;
316  t66 = t46*t42;
317  t67 = t66/4.0;
318  t68 = 3.0/4.0*t6;
319  t69 = -t39+t40+t35-t44+t48+t50-t57-t59+t65-t67-1.0/4.0+t68;
320  t70 = t46*t5;
321  t72 = t70*zeta/4.0;
322  t73 = xi*t46;
323  t74 = t73*zeta;
324  t75 = 3.0/4.0*t74;
325  t76 = xi*t26;
326  t78 = 3.0/4.0*t76*zeta;
327  t79 = -t72-t75+t78;
328  t80 = xi*zeta;
329  t81 = 3.0/2.0*t80;
330  t82 = xi*t10;
331  t83 = 3.0/2.0*t82;
332  t84 = t22*zeta;
333  t85 = t84/2.0;
334  t89 = t5*eta*t42/4.0;
335  t90 = xi*t17;
336  t91 = 3.0/2.0*t90;
337  t93 = t63*t17/4.0;
338  t100 = t22*(63.0/8.0*t23*eta-35.0/4.0*t14+15.0/8.0*eta)/4.0;
339  t101 = xi*eta;
340  t103 = 3.0/4.0*t101*t33;
341  t104 = 3.0/2.0*t101;
342  t105 = t101*t42;
343  t106 = 3.0/4.0*t105;
344  t107 = t22*t17;
345  t108 = t107/4.0;
346  t109 = t22*eta;
347  t110 = t109/2.0;
348  t112 = -t89+t103-t106;
349  t113 = 3.0/4.0*t13;
350  t114 = t22*t46;
351  t115 = t114/2.0;
352  t116 = 5.0/4.0*t14;
353  t117 = 3.0/4.0*eta;
354  t118 = -1.0/4.0+t113+t28-t115+t93-t100-t48+t108+t59-t67-t116+t117;
355  t120 = 1.0/4.0-t113-t28+t115+t93-t100+t48+t108-t59+t67-t116+t117;
356  t122 = t39-t40+t35-t44+t48-t50+t57-t59-t65-t67-1.0/4.0+t68;
357  t123 = xi*t42;
358  t124 = 3.0/4.0*t123;
359  t125 = xi*t33;
360  t126 = 3.0/4.0*t125;
361  t127 = t5*t42;
362  t128 = t127/4.0;
363  t131 = 3.0/4.0*t73;
364  t132 = t70/4.0;
365  t133 = 3.0/4.0*t76;
366  t135 = t17*zeta;
367  t136 = t135/6.0;
368  t137 = t109*zeta;
369  t138 = t137/6.0;
370  t139 = eta*t10;
371  t140 = t139/3.0;
372  t141 = eta*t42;
373  t142 = t141/2.0;
374  t144 = eta*zeta/6.0;
375  t145 = t109*t42;
376  t146 = t145/2.0;
377  t147 = t17*t42;
378  t148 = t147/2.0;
379  t150 = t46*t10;
380  t151 = t150/2.0;
381  t152 = t114*zeta;
382  t153 = t152/2.0;
383  t154 = t135/3.0;
384  t155 = t46*zeta;
385  t156 = t155/2.0;
386  t157 = t139/6.0;
387  t159 = t137/3.0;
388  t160 = t90*zeta;
389  t161 = 3.0/2.0*t160;
390  t162 = t101*t10;
391  t163 = 3.0/2.0*t162;
392  t164 = t101*zeta;
393  t165 = 3.0/2.0*t164;
394  t199 = 3.0/2.0*t73;
395  t200 = t70/2.0;
396  t201 = 3.0/2.0*t123;
397  t202 = 3.0/2.0*t76;
398  t203 = 3.0/2.0*t125;
399  t204 = t127/2.0;
400 
401  values[0] = t12;
402  values[1] = t19;
403  values[2] = -t20-t28+t29-t35+t36-3.0/4.0;
404  values[3] = -t19;
405  values[4] = -t20+t28-t29+t35+t36+3.0/4.0;
406  values[5] = -t12;
407  values[6] = t69;
408  values[7] = t79;
409  values[8] = t81+t72+t12-t75-t83-t50-t57+t65+t85-t78;
410  values[9] = t79;
411  values[10] = t89-t91-t93+t100-t103+t104-t106+t19+t108-t110;
412  values[11] = t112;
413  values[12] = t112;
414  values[13] = t118;
415  values[14] = t89-t91+t93-t100-t103+t104-t106+t19-t108+t110;
416  values[15] = t120;
417  values[16] = t81+t72+t12-t75-t83+t50+t57-t65-t85-t78;
418  values[17] = t122;
419  values[18] = t12+t124-t83+t126-t128;
420  values[19] = 0.0;
421  values[20] = -t35+t44+t124-t126+t128;
422  values[21] = 0.0;
423  values[22] = t28-t115+t131+t132-t133;
424  values[23] = 0.0;
425  values[24] = t136+t138-t140+t142-t144-t146-t148;
426  values[25] = -t151-t153-t154+t138+t156+t157-t144;
427  values[26] = -t136+t159-t157-t161+t144-t163+t165;
428  values[27] = t151+t153-t154+t138-t156+t157-t144;
429  values[28] = t136-t159+t157-t161-t144-t163+t165;
430  values[29] = -t136-t138+t140+t142+t144-t146-t148;
431  values[30] = 0.0;
432  values[31] = t131-t91-t132+t133+t19;
433  values[32] = -t28+t115+t131+t132-t133;
434  values[33] = t131+t91-t132+t133-t19;
435  values[34] = t35-t44+t124-t126+t128;
436  values[35] = -t12+t124+t83+t126-t128;
437  values[36] = t35-t50-t57+t65;
438  values[37] = 0.0;
439  values[38] = t12+t50-t57+t65;
440  values[39] = 0.0;
441  values[40] = -t93+t100+t19-t108;
442  values[41] = 0.0;
443  values[42] = -t89+t103+t106-t163;
444  values[43] = -t48+t59+t67-t148;
445  values[44] = t89-t103+t106+t146;
446  values[45] = t48-t59-t67-t148;
447  values[46] = -t153+t72+t75-t78;
448  values[47] = t151+t48-t59+t67;
449  values[48] = -t151+t48-t59+t67;
450  values[49] = -t72+t75-t161+t78;
451  values[50] = t153+t72+t75-t78;
452  values[51] = -t72+t75+t161+t78;
453  values[52] = t89-t103+t106-t146;
454  values[53] = -t89+t103+t106+t163;
455  values[54] = 0.0;
456  values[55] = t28+t93-t100-t108;
457  values[56] = t93-t100+t19+t108;
458  values[57] = -t28+t93-t100-t108;
459  values[58] = t12-t50+t57-t65;
460  values[59] = t35+t50+t57-t65;
461  values[60] = -t5;
462  values[61] = 7.0/2.0-t45-t21+t114+t43+t66-t41;
463  values[62] = 3.0*t90-3.0*t101+3.0*t105;
464  values[63] = -3.0*t80+3.0*t74+3.0*t82;
465  values[64] = 21.0/2.0*xi-t199+t200-t201-t3-t202-t203+t204;
466  values[65] = 5.0/2.0*eta-t141+t107+t145-t109-t15+t147;
467  values[66] = t150+t152-t8+5.0/2.0*zeta-t155+t49-t84;
468  values[67] = -t199-t200+t202;
469  values[68] = 3.0*t160+3.0*t162-3.0*t164;
470  values[69] = -t201+t203-t204;
471 }
472 
473 static void N_H_Q4_3D_DeriveEta(double xi, double eta, double zeta,
474  double *values)
475 {
476  double t1, t2, t3, t5, t6, t7, t8, t10, t12, t13, t14, t15, t16, t17, t18, t21;
477  double t23, t24, t25, t28, t30, t32, t33, t35, t37, t39, t41, t43, t44;
478  double t46, t47, t48, t49, t50, t52, t53, t54, t55, t56, t57, t58, t59;
479  double t66, t67, t70, t72, t73, t74, t75, t76, t77, t79, t80, t81, t83;
480  double t86, t87, t88, t95, t97, t99, t100, t101, t102, t103, t104, t105;
481  double t106, t107, t108, t109, t110, t111, t112, t113, t114, t115, t116;
482  double t117, t118, t119, t121, t123, t124, t125, t126, t127, t128, t131;
483  double t132, t133, t136, t137, t138, t139, t140, t141, t142, t143, t145;
484  double t146, t147, t148, t149, t151, t152, t153, t154, t155, t156, t157;
485  double t158, t160, t161, t162, t163, t164, t165, t166, t198, t199, t200;
486  double t206, t207, t208;
487 
488  t1 = eta*eta;
489  t2 = t1*eta;
490  t3 = 35.0/2.0*t2;
491  t5 = t3-15.0/2.0*eta;
492  t6 = zeta*zeta;
493  t7 = t6*zeta;
494  t8 = 5.0/2.0*t7;
495  t10 = t8-3.0/2.0*zeta;
496  t12 = t5*t10/2.0;
497  t13 = 15.0/4.0*t1;
498  t14 = 15.0/4.0*eta;
499  t15 = 35.0/4.0*t2;
500  t16 = 15.0/2.0*t1;
501  t17 = t16-3.0/2.0;
502  t18 = t6*t6;
503  t21 = 3.0/8.0+35.0/8.0*t18-15.0/4.0*t6;
504  t23 = t17*t21/2.0;
505  t24 = xi*xi;
506  t25 = t24*t24;
507  t28 = 3.0/8.0+35.0/8.0*t25-15.0/4.0*t24;
508  t30 = t28*t17/2.0;
509  t32 = t24*xi;
510  t33 = 5.0/2.0*t32;
511  t35 = t33-3.0/2.0*xi;
512  t37 = t35*t5/2.0;
513  t39 = xi*eta;
514  t41 = 3.0/4.0*t39*t21;
515  t43 = 3.0/2.0*t6;
516  t44 = -1.0/2.0+t43;
517  t46 = xi*t5*t44/4.0;
518  t47 = t39*t44;
519  t48 = 3.0/4.0*t47;
520  t49 = t41-t46-t48;
521  t50 = t28*eta;
522  t52 = 3.0/4.0*t50*zeta;
523  t53 = 3.0/2.0*t24;
524  t54 = -1.0/2.0+t53;
525  t55 = t54*eta;
526  t56 = t55*zeta;
527  t57 = 3.0/4.0*t56;
528  t58 = eta*t10;
529  t59 = 3.0/2.0*t58;
530  t66 = t17*(63.0/8.0*t18*zeta-35.0/4.0*t7+15.0/8.0*zeta)/4.0;
531  t67 = t1*t1;
532  t70 = 315.0/8.0*t67-105.0/4.0*t1+15.0/8.0;
533  t72 = t70*t10/4.0;
534  t73 = eta*zeta;
535  t74 = 3.0/2.0*t73;
536  t75 = t17*t10;
537  t76 = t75/4.0;
538  t77 = t54*t5;
539  t79 = t77*zeta/4.0;
540  t80 = t17*zeta;
541  t81 = t80/2.0;
542  t83 = t52-t57-t79;
543  t86 = t28*t44/4.0;
544  t87 = t54*t17;
545  t88 = t87/2.0;
546  t95 = (63.0/8.0*t25*xi-35.0/4.0*t32+15.0/8.0*xi)*t17/4.0;
547  t97 = t35*t70/4.0;
548  t99 = t54*t21/4.0;
549  t100 = 3.0/4.0*t24;
550  t101 = t54*t44;
551  t102 = t101/4.0;
552  t103 = t35*t17;
553  t104 = t103/4.0;
554  t105 = 5.0/4.0*t32;
555  t106 = 3.0/4.0*xi;
556  t107 = t86-t88-t95+t97-t99-1.0/4.0+t100-t102+t30+t104-t105+t106;
557  t108 = 5.0/4.0*t7;
558  t109 = 3.0/4.0*zeta;
559  t110 = t17*t44;
560  t111 = t110/2.0;
561  t112 = 3.0/4.0*t6;
562  t113 = -t86+t108-t109+t99+t23+t66-t111-t102-t72-1.0/4.0+t112-t76;
563  t114 = -t86-t108+t109+t99+t23-t66-t111-t102+t72-1.0/4.0+t112+t76;
564  t115 = 3.0/2.0*t39;
565  t116 = t35*eta;
566  t117 = 3.0/2.0*t116;
567  t118 = xi*t17;
568  t119 = t118/2.0;
569  t121 = t86-t88+t95-t97-t99-1.0/4.0+t100-t102+t30-t104+t105-t106;
570  t123 = eta*t44;
571  t124 = 3.0/4.0*t123;
572  t125 = t5*t44;
573  t126 = t125/4.0;
574  t127 = eta*t21;
575  t128 = 3.0/4.0*t127;
576  t131 = 3.0/4.0*t55;
577  t132 = 3.0/4.0*t50;
578  t133 = t77/4.0;
579  t136 = t118*zeta;
580  t137 = t136/6.0;
581  t138 = t35*zeta;
582  t139 = t138/6.0;
583  t140 = xi*t10;
584  t141 = t140/3.0;
585  t142 = xi*t44;
586  t143 = t142/2.0;
587  t145 = xi*zeta/6.0;
588  t146 = t35*t44;
589  t147 = t146/2.0;
590  t148 = t118*t44;
591  t149 = t148/2.0;
592  t151 = t39*t10;
593  t152 = 3.0/2.0*t151;
594  t153 = t116*zeta;
595  t154 = 3.0/2.0*t153;
596  t155 = t136/3.0;
597  t156 = t39*zeta;
598  t157 = 3.0/2.0*t156;
599  t158 = t140/6.0;
600  t160 = t138/3.0;
601  t161 = t87*zeta;
602  t162 = t161/2.0;
603  t163 = t54*t10;
604  t164 = t163/2.0;
605  t165 = t54*zeta;
606  t166 = t165/2.0;
607  t198 = 3.0/2.0*t55;
608  t199 = 3.0/2.0*t50;
609  t200 = t77/2.0;
610  t206 = 3.0/2.0*t123;
611  t207 = t125/2.0;
612  t208 = 3.0/2.0*t127;
613 
614  values[0] = t12;
615  values[1] = -t13-t14+t15+t23+t30+3.0/4.0;
616  values[2] = -t37;
617  values[3] = t13-t14+t15-t23-t30-3.0/4.0;
618  values[4] = t37;
619  values[5] = -t12;
620  values[6] = t49;
621  values[7] = t12-t52-t57-t59+t66-t72+t74+t76+t79-t81;
622  values[8] = t83;
623  values[9] = t12-t52-t57-t59-t66+t72+t74-t76+t79+t81;
624  values[10] = t107;
625  values[11] = t113;
626  values[12] = t114;
627  values[13] = t115+t37-t117+t95-t97-t41+t104+t46-t48-t119;
628  values[14] = t121;
629  values[15] = -t115-t37+t117+t95-t97+t41+t104-t46+t48-t119;
630  values[16] = t83;
631  values[17] = t49;
632  values[18] = 0.0;
633  values[19] = t124+t23-t111+t126-t128;
634  values[20] = 0.0;
635  values[21] = t124-t23+t111+t126-t128;
636  values[22] = t37-t117+t131+t132-t133;
637  values[23] = -t12+t124+t59-t126+t128;
638  values[24] = t137+t139-t141+t143-t145-t147-t149;
639  values[25] = -t152-t154-t155+t139+t157+t158-t145;
640  values[26] = -t137+t160-t158-t162+t145-t164+t166;
641  values[27] = t152+t154-t155+t139-t157+t158-t145;
642  values[28] = t137-t160+t158-t162-t145-t164+t166;
643  values[29] = -t137-t139+t141+t143+t145-t147-t149;
644  values[30] = t12+t124-t59-t126+t128;
645  values[31] = t131-t88-t132+t133+t30;
646  values[32] = -t37+t117+t131+t132-t133;
647  values[33] = t131+t88-t132+t133-t30;
648  values[34] = 0.0;
649  values[35] = 0.0;
650  values[36] = 0.0;
651  values[37] = t12+t66-t72-t76;
652  values[38] = 0.0;
653  values[39] = t12-t66+t72+t76;
654  values[40] = -t95+t97+t30-t104;
655  values[41] = t23+t66-t72+t76;
656  values[42] = -t86+t99+t102-t164;
657  values[43] = -t41+t46+t48-t149;
658  values[44] = t86-t99+t102+t147;
659  values[45] = t41-t46-t48-t149;
660  values[46] = -t154+t52+t57-t79;
661  values[47] = t152+t41-t46+t48;
662  values[48] = -t152+t41-t46+t48;
663  values[49] = -t52+t57-t162+t79;
664  values[50] = t154+t52+t57-t79;
665  values[51] = -t52+t57+t162+t79;
666  values[52] = t86-t99+t102-t147;
667  values[53] = -t86+t99+t102+t164;
668  values[54] = t23-t66+t72-t76;
669  values[55] = t37+t95-t97-t104;
670  values[56] = t95-t97+t30+t104;
671  values[57] = -t37+t95-t97-t104;
672  values[58] = 0.0;
673  values[59] = 0.0;
674  values[60] = -t5;
675  values[61] = -3.0*t39+3.0*t116+3.0*t47;
676  values[62] = -t16+t87+7.0/2.0-t53+t110+t101-t43;
677  values[63] = 3.0*t56+3.0*t58-3.0*t73;
678  values[64] = -t198+t199-t200;
679  values[65] = 5.0/2.0*xi-t142+t103+t146-t33-t118+t148;
680  values[66] = 3.0*t151+3.0*t153-3.0*t156;
681  values[67] = 21.0/2.0*eta-t198-t3-t206-t199+t200+t207-t208;
682  values[68] = -t8+5.0/2.0*zeta+t161+t163-t165+t75-t80;
683  values[69] = -t206-t207+t208;
684 }
685 
686 static void N_H_Q4_3D_DeriveZeta(double xi, double eta, double zeta,
687  double *values)
688 {
689  double t1, t2, t5, t6, t7, t8, t10, t11, t12, t15, t17, t18, t19, t20, t21, t23;
690  double t24, t26, t27, t29, t31, t32, t33, t35, t37, t39, t40, t41, t42;
691  double t43, t44, t45, t47, t48, t49, t50, t53, t55, t58, t65, t66, t67;
692  double t68, t69, t72, t73, t74, t75, t76, t77, t78, t80, t87, t88, t89;
693  double t90, t92, t93, t94, t95, t96, t97, t98, t99, t100, t101, t102, t105;
694  double t106, t108, t109, t110, t111, t112, t113, t114, t115, t116, t117;
695  double t120, t121, t123, t124, t125, t126, t127, t128, t130, t131, t132;
696  double t133, t134, t135, t140, t141, t142, t143, t144, t145, t146, t147;
697  double t148, t149, t150, t151, t152, t153, t155, t156, t157, t158, t159;
698  double t160, t161, t163, t164, t165, t166, t167, t168, t199, t200, t201;
699  double t206, t207, t208;
700 
701  t1 = eta*eta;
702  t2 = t1*t1;
703  t5 = 3.0/8.0+35.0/8.0*t2-15.0/4.0*t1;
704  t6 = zeta*zeta;
705  t7 = 15.0/2.0*t6;
706  t8 = t7-3.0/2.0;
707  t10 = t5*t8/2.0;
708  t11 = xi*xi;
709  t12 = t11*t11;
710  t15 = 3.0/8.0+35.0/8.0*t12-15.0/4.0*t11;
711  t17 = t15*t8/2.0;
712  t18 = 15.0/4.0*t6;
713  t19 = t6*zeta;
714  t20 = 35.0/4.0*t19;
715  t21 = 15.0/4.0*zeta;
716  t23 = t1*eta;
717  t24 = 5.0/2.0*t23;
718  t26 = t24-3.0/2.0*eta;
719  t27 = 35.0/2.0*t19;
720  t29 = t27-15.0/2.0*zeta;
721  t31 = t26*t29/2.0;
722  t32 = t11*xi;
723  t33 = 5.0/2.0*t32;
724  t35 = t33-3.0/2.0*xi;
725  t37 = t35*t29/2.0;
726  t39 = xi*t8;
727  t40 = t39/2.0;
728  t41 = t35*zeta;
729  t42 = 3.0/2.0*t41;
730  t43 = 3.0/2.0*t1;
731  t44 = -1.0/2.0+t43;
732  t45 = xi*t44;
733  t47 = t45*t29/4.0;
734  t48 = t35*t8;
735  t49 = t48/4.0;
736  t50 = t6*t6;
737  t53 = 315.0/8.0*t50-105.0/4.0*t6+15.0/8.0;
738  t55 = t35*t53/4.0;
739  t58 = 3.0/4.0*xi*t5*zeta;
740  t65 = (63.0/8.0*t12*xi-35.0/4.0*t32+15.0/8.0*xi)*t8/4.0;
741  t66 = t45*zeta;
742  t67 = 3.0/4.0*t66;
743  t68 = xi*zeta;
744  t69 = 3.0/2.0*t68;
745  t72 = t15*t44/4.0;
746  t73 = 3.0/2.0*t11;
747  t74 = -1.0/2.0+t73;
748  t75 = t74*t44;
749  t76 = t75/4.0;
750  t77 = t44*t8;
751  t78 = t77/2.0;
752  t80 = t26*t53/4.0;
753  t87 = (63.0/8.0*t2*eta-35.0/4.0*t23+15.0/8.0*eta)*t8/4.0;
754  t88 = 3.0/4.0*t1;
755  t89 = t26*t8;
756  t90 = t89/4.0;
757  t92 = t74*t5/4.0;
758  t93 = 5.0/4.0*t23;
759  t94 = 3.0/4.0*eta;
760  t95 = t10-t72-t76-t78+t80-t87-1.0/4.0+t88+t90+t92-t93+t94;
761  t96 = 3.0/4.0*t11;
762  t97 = t74*t8;
763  t98 = t97/2.0;
764  t99 = 5.0/4.0*t32;
765  t100 = 3.0/4.0*xi;
766  t101 = -1.0/4.0+t96+t72+t17-t76-t98-t49-t55+t65+t99-t100-t92;
767  t102 = t10-t72-t76-t78-t80+t87-1.0/4.0+t88-t90+t92+t93-t94;
768  t105 = 3.0/4.0*t15*eta*zeta;
769  t106 = t74*eta;
770  t108 = t106*t29/4.0;
771  t109 = t106*zeta;
772  t110 = 3.0/4.0*t109;
773  t111 = t105-t108-t110;
774  t112 = eta*t8;
775  t113 = t112/2.0;
776  t114 = t26*zeta;
777  t115 = 3.0/2.0*t114;
778  t116 = eta*zeta;
779  t117 = 3.0/2.0*t116;
780  t120 = -t47+t58-t67;
781  t121 = -1.0/4.0+t96+t72+t17-t76-t98+t49+t55-t65-t99+t100-t92;
782  t123 = t74*zeta;
783  t124 = 3.0/4.0*t123;
784  t125 = t74*t29;
785  t126 = t125/4.0;
786  t127 = t15*zeta;
787  t128 = 3.0/4.0*t127;
788  t130 = t44*zeta;
789  t131 = 3.0/4.0*t130;
790  t132 = t5*zeta;
791  t133 = 3.0/4.0*t132;
792  t134 = t44*t29;
793  t135 = t134/4.0;
794  t140 = xi*t26;
795  t141 = t140/6.0;
796  t142 = t35*eta;
797  t143 = t142/6.0;
798  t144 = xi*eta;
799  t145 = t144*t8;
800  t146 = t145/3.0;
801  t147 = t144*zeta;
802  t148 = 3.0/2.0*t147;
803  t149 = t144/6.0;
804  t150 = t142*zeta;
805  t151 = 3.0/2.0*t150;
806  t152 = t140*zeta;
807  t153 = 3.0/2.0*t152;
808  t155 = t45*t8;
809  t156 = t155/2.0;
810  t157 = t35*t44;
811  t158 = t157/2.0;
812  t159 = t140/3.0;
813  t160 = t45/2.0;
814  t161 = t145/6.0;
815  t163 = t142/3.0;
816  t164 = t74*t26;
817  t165 = t164/2.0;
818  t166 = t106*t8;
819  t167 = t166/2.0;
820  t168 = t106/2.0;
821  t199 = 3.0/2.0*t123;
822  t200 = t125/2.0;
823  t201 = 3.0/2.0*t127;
824  t206 = 3.0/2.0*t130;
825  t207 = 3.0/2.0*t132;
826  t208 = t134/2.0;
827 
828  values[0] = t10+t17-t18+t20-t21+3.0/4.0;
829  values[1] = t31;
830  values[2] = -t37;
831  values[3] = -t31;
832  values[4] = t37;
833  values[5] = -t10-t17+t18+t20-t21-3.0/4.0;
834  values[6] = -t40+t37-t42+t47+t49-t55-t58+t65-t67+t69;
835  values[7] = t95;
836  values[8] = t101;
837  values[9] = t102;
838  values[10] = t111;
839  values[11] = -t105+t113+t108+t31+t80-t115-t110-t87+t117-t90;
840  values[12] = -t105-t113+t108+t31-t80-t115-t110+t87+t117+t90;
841  values[13] = t120;
842  values[14] = t111;
843  values[15] = -t120;
844  values[16] = t121;
845  values[17] = t40+t37-t42+t47-t49+t55-t58-t65-t67+t69;
846  values[18] = t17+t124-t98+t126-t128;
847  values[19] = t131+t31-t115+t133-t135;
848  values[20] = -t37+t42+t124-t126+t128;
849  values[21] = t131-t31+t115+t133-t135;
850  values[22] = 0.0;
851  values[23] = -t10+t131+t78-t133+t135;
852  values[24] = t141+t143-t146+t148-t149-t151-t153;
853  values[25] = -t156-t158-t159+t143+t160+t161-t149;
854  values[26] = -t141+t163-t161-t165+t149-t167+t168;
855  values[27] = t156+t158-t159+t143-t160+t161-t149;
856  values[28] = t141-t163+t161-t165-t149-t167+t168;
857  values[29] = -t141-t143+t146+t148+t149-t151-t153;
858  values[30] = t10+t131-t78-t133+t135;
859  values[31] = 0.0;
860  values[32] = 0.0;
861  values[33] = 0.0;
862  values[34] = t37-t42+t124-t126+t128;
863  values[35] = -t17+t124+t98+t126-t128;
864  values[36] = t37-t49-t55+t65;
865  values[37] = t10+t80-t87-t90;
866  values[38] = t17+t49-t55+t65;
867  values[39] = t10-t80+t87+t90;
868  values[40] = 0.0;
869  values[41] = t31+t80-t87+t90;
870  values[42] = -t105+t108+t110-t167;
871  values[43] = -t47+t58+t67-t153;
872  values[44] = t105-t108+t110+t151;
873  values[45] = t47-t58-t67-t153;
874  values[46] = -t158+t72+t76-t92;
875  values[47] = t156+t47-t58+t67;
876  values[48] = -t156+t47-t58+t67;
877  values[49] = -t72+t76-t165+t92;
878  values[50] = t158+t72+t76-t92;
879  values[51] = -t72+t76+t165+t92;
880  values[52] = t105-t108+t110-t151;
881  values[53] = -t105+t108+t110+t167;
882  values[54] = t31-t80+t87-t90;
883  values[55] = 0.0;
884  values[56] = 0.0;
885  values[57] = 0.0;
886  values[58] = t17-t49+t55-t65;
887  values[59] = t37+t49+t55-t65;
888  values[60] = -t29;
889  values[61] = 3.0*t41+3.0*t66-3.0*t68;
890  values[62] = 3.0*t114+3.0*t109-3.0*t116;
891  values[63] = 7.0/2.0-t73+t75-t7+t77+t97-t43;
892  values[64] = -t199-t200+t201;
893  values[65] = -3.0*t147+3.0*t150+3.0*t152;
894  values[66] = t155+t157-t39-t45+5.0/2.0*xi+t48-t33;
895  values[67] = -t206+t207-t208;
896  values[68] = -t112+5.0/2.0*eta+t164+t166-t106+t89-t24;
897  values[69] = -t206-t199-t27-t207+t208+21.0/2.0*zeta+t200-t201;
898 }
899 
900 static void N_H_Q4_3D_DeriveXiXi(double xi, double eta, double zeta,
901  double *values)
902 {
903  double t1, t2, t3, t4, t5, t8, t10, t11, t12, t15, t17, t18, t21, t23, t24, t25;
904  double t28, t30, t31, t35, t36, t37, t38, t39, t46, t50, t52, t55, t56;
905  double t58, t59, t60, t62, t63, t64, t65, t66, t67, t71, t72, t73, t75;
906  double t82, t84, t85, t86, t87, t88, t89, t90, t92, t93, t94, t100, t101;
907  double t102, t103, t104, t106, t108, t109, t110, t112, t113, t114, t115;
908  double t117, t118, t120, t121, t122, t123, t124, t125, t126, t131, t132;
909  double t164, t166, t167, t168;
910 
911  t1 = xi*xi;
912  t2 = 105.0/2.0*t1;
913  t3 = t2-15.0/2.0;
914  t4 = zeta*zeta;
915  t5 = t4*zeta;
916  t8 = 5.0/2.0*t5-3.0/2.0*zeta;
917  t10 = t3*t8/2.0;
918  t11 = eta*eta;
919  t12 = t11*eta;
920  t15 = 5.0/2.0*t12-3.0/2.0*eta;
921  t17 = t3*t15/2.0;
922  t18 = t11*t11;
923  t21 = 3.0/8.0+35.0/8.0*t18-15.0/4.0*t11;
924  t23 = 15.0/2.0*xi*t21;
925  t24 = 15.0/2.0*xi;
926  t25 = t4*t4;
927  t28 = 3.0/8.0+35.0/8.0*t25-15.0/4.0*t4;
928  t30 = 15.0/2.0*xi*t28;
929  t31 = 105.0/4.0*t1;
930  t35 = -1.0/2.0+3.0/2.0*t4;
931  t36 = xi*t35;
932  t37 = 15.0/2.0*t36;
933  t38 = xi*t8;
934  t39 = 15.0/4.0*t38;
935  t46 = 15.0/4.0*xi*(63.0/8.0*t25*zeta-35.0/4.0*t5+15.0/8.0*zeta);
936  t50 = 315.0/2.0*t1*xi-105.0/2.0*xi;
937  t52 = t50*t8/4.0;
938  t55 = -1.0/2.0+3.0/2.0*t11;
939  t56 = t3*t55;
940  t58 = t56*zeta/4.0;
941  t59 = t55*zeta;
942  t60 = 3.0/4.0*t59;
943  t62 = 3.0/4.0*t21*zeta;
944  t63 = -t58-t60+t62;
945  t64 = 15.0/4.0*zeta;
946  t65 = 15.0/4.0*t5;
947  t66 = xi*zeta;
948  t67 = 15.0/2.0*t66;
949  t71 = t3*eta*t35/4.0;
950  t72 = 15.0/4.0*t12;
951  t73 = 15.0/4.0*eta;
952  t75 = t50*t15/4.0;
953  t82 = 15.0/4.0*xi*(63.0/8.0*t18*eta-35.0/4.0*t12+15.0/8.0*eta);
954  t84 = 3.0/4.0*eta*t28;
955  t85 = eta*t35;
956  t86 = 3.0/4.0*t85;
957  t87 = xi*t15;
958  t88 = 15.0/4.0*t87;
959  t89 = xi*eta;
960  t90 = 15.0/2.0*t89;
961  t92 = -t71+t84-t86;
962  t93 = xi*t55;
963  t94 = 15.0/2.0*t93;
964  t100 = 27.0/16.0*t4;
965  t101 = 9.0/4.0*zeta;
966  t102 = 105.0/32.0*t25;
967  t103 = t3*t35;
968  t104 = t103/4.0;
969  t106 = 63.0/16.0*t4;
970  t108 = 63.0/16.0*t11;
971  t109 = t56/4.0;
972  t110 = 105.0/32.0*t18;
973  t112 = t89*zeta;
974  t113 = 5.0/2.0*t112;
975  t114 = t89*t35;
976  t115 = 15.0/2.0*t114;
977  t117 = t93*zeta;
978  t118 = 15.0/2.0*t117;
979  t120 = 5.0*t112;
980  t121 = t15*zeta;
981  t122 = 3.0/2.0*t121;
982  t123 = eta*t8;
983  t124 = 3.0/2.0*t123;
984  t125 = eta*zeta;
985  t126 = 3.0/2.0*t125;
986  t131 = 27.0/16.0*t11;
987  t132 = 9.0/4.0*eta;
988  t164 = t56/2.0;
989  t166 = 105.0/16.0*t18;
990  t167 = 105.0/16.0*t25;
991  t168 = t103/2.0;
992 
993  values[0] = t10;
994  values[1] = t17;
995  values[2] = -15.0/4.0-t23+t24-t30+t31;
996  values[3] = -t17;
997  values[4] = -15.0/4.0+t23-t24+t30+t31;
998  values[5] = -t10;
999  values[6] = t30-t37+t39-t46+t52;
1000  values[7] = t63;
1001  values[8] = t64+t58+t10-t60-t65-t39-t46+t52+t67-t62;
1002  values[9] = t63;
1003  values[10] = t71-t72+t73-t75+t82-t84-t86+t17+t88-t90;
1004  values[11] = t92;
1005  values[12] = t92;
1006  values[13] = t23-t94+t75-t82+t88;
1007  values[14] = t71-t72+t73+t75-t82-t84-t86+t17-t88+t90;
1008  values[15] = -t23+t94+t75-t82+t88;
1009  values[16] = t64+t58+t10-t60-t65+t39+t46-t52-t67-t62;
1010  values[17] = t30-t37-t39+t46-t52;
1011  values[18] = t10-3.0/32.0-t100-t65+t101+t102-t104;
1012  values[19] = 0.0;
1013  values[20] = -t30+t37-21.0/32.0+t106-t102+t104;
1014  values[21] = 0.0;
1015  values[22] = t23-t94-21.0/32.0+t108+t109-t110;
1016  values[23] = 0.0;
1017  values[24] = t113-t115;
1018  values[25] = -t118+t113;
1019  values[26] = t120-t122-t124+t126;
1020  values[27] = t118+t113;
1021  values[28] = -t120-t122-t124+t126;
1022  values[29] = -t113-t115;
1023  values[30] = 0.0;
1024  values[31] = -3.0/32.0-t131-t72+t132-t109+t110+t17;
1025  values[32] = -t23+t94-21.0/32.0+t108+t109-t110;
1026  values[33] = -3.0/32.0-t131+t72-t132-t109+t110-t17;
1027  values[34] = t30-t37-21.0/32.0+t106-t102+t104;
1028  values[35] = -t10-3.0/32.0-t100+t65-t101+t102-t104;
1029  values[36] = t30-t39-t46+t52;
1030  values[37] = 0.0;
1031  values[38] = t10+t39-t46+t52;
1032  values[39] = 0.0;
1033  values[40] = -t75+t82+t17-t88;
1034  values[41] = 0.0;
1035  values[42] = -t71+t84+t86-t124;
1036  values[43] = 0.0;
1037  values[44] = t71-t84+t86+t115;
1038  values[45] = 0.0;
1039  values[46] = -t118+t58+t60-t62;
1040  values[47] = 0.0;
1041  values[48] = 0.0;
1042  values[49] = -t58+t60-t122+t62;
1043  values[50] = t118+t58+t60-t62;
1044  values[51] = -t58+t60+t122+t62;
1045  values[52] = t71-t84+t86-t115;
1046  values[53] = -t71+t84+t86+t124;
1047  values[54] = 0.0;
1048  values[55] = t23+t75-t82-t88;
1049  values[56] = t75-t82+t17+t88;
1050  values[57] = -t23+t75-t82-t88;
1051  values[58] = t10-t39+t46-t52;
1052  values[59] = t30+t39+t46-t52;
1053  values[60] = -t3;
1054  values[61] = -15.0*xi+15.0*t93+15.0*t36;
1055  values[62] = 15.0/2.0*t12-15.0/2.0*eta+3.0*t85;
1056  values[63] = -15.0/2.0*zeta+3.0*t59+15.0/2.0*t5;
1057  values[64] = 87.0/8.0+27.0/8.0*t11+t164+27.0/8.0*t4-t2-t166-t167+t168;
1058  values[65] = 15.0*t87+15.0*t114-15.0*t89;
1059  values[66] = 15.0*t117+15.0*t38-15.0*t66;
1060  values[67] = 21.0/16.0-63.0/8.0*t11-t164+t166;
1061  values[68] = 3.0*t121+3.0*t123-3.0*t125;
1062  values[69] = 21.0/16.0-63.0/8.0*t4+t167-t168;
1063 }
1064 
1065 static void N_H_Q4_3D_DeriveXiEta(double xi, double eta, double zeta,
1066  double *values)
1067 {
1068  double t1, t5, t6, t7, t8, t10, t11, t12, t16, t18, t19, t20, t23, t25;
1069  double t26, t27, t29, t30, t31, t32, t33, t35, t36, t37, t38, t39, t41;
1070  double t42, t43, t45, t46, t47, t48, t53, t54, t59, t61, t62, t63, t64;
1071  double t65, t66, t67, t68, t69, t70, t71, t72, t73, t74, t75, t76, t77;
1072  double t78, t79, t81, t82, t83, t84, t85, t86, t87, t88, t89, t90, t91;
1073  double t92, t96, t97, t98, t99, t100, t101, t102, t103, t104, t105, t107;
1074  double t108, t109, t110, t111, t112, t113, t140, t141, t142;
1075 
1076  t1 = xi*xi;
1077  t5 = 35.0/2.0*t1*xi-15.0/2.0*xi;
1078  t6 = eta*eta;
1079  t7 = 15.0/2.0*t6;
1080  t8 = t7-3.0/2.0;
1081  t10 = t5*t8/2.0;
1082  t11 = 15.0/2.0*t1;
1083  t12 = t11-3.0/2.0;
1084  t16 = 35.0/2.0*t6*eta-15.0/2.0*eta;
1085  t18 = t12*t16/2.0;
1086  t19 = zeta*zeta;
1087  t20 = t19*t19;
1088  t23 = 3.0/8.0+35.0/8.0*t20-15.0/4.0*t19;
1089  t25 = 3.0/4.0*eta*t23;
1090  t26 = 3.0/2.0*t19;
1091  t27 = -1.0/2.0+t26;
1092  t29 = t16*t27/4.0;
1093  t30 = eta*t27;
1094  t31 = 3.0/4.0*t30;
1095  t32 = t25-t29-t31;
1096  t33 = t5*eta;
1097  t35 = 3.0/4.0*t33*zeta;
1098  t36 = xi*eta;
1099  t37 = t36*zeta;
1100  t38 = 9.0/4.0*t37;
1101  t39 = xi*t16;
1102  t41 = 3.0/4.0*t39*zeta;
1103  t42 = -t35-t38+t41;
1104  t43 = t35-t38-t41;
1105  t45 = t5*t27/4.0;
1106  t46 = xi*t8;
1107  t47 = 3.0/2.0*t46;
1108  t48 = t1*t1;
1109  t53 = (315.0/8.0*t48-105.0/4.0*t1+15.0/8.0)*t8/4.0;
1110  t54 = t6*t6;
1111  t59 = t12*(315.0/8.0*t54-105.0/4.0*t6+15.0/8.0)/4.0;
1112  t61 = 3.0/4.0*xi*t23;
1113  t62 = 3.0/2.0*xi;
1114  t63 = xi*t27;
1115  t64 = 3.0/4.0*t63;
1116  t65 = t12*t8;
1117  t66 = t65/4.0;
1118  t67 = 15.0/4.0*t1;
1119  t68 = t45-t47-t53+t59-t61+t62-t64+t10+t66-t67+3.0/4.0;
1120  t69 = -t45+t61-t64;
1121  t70 = 3.0/2.0*eta;
1122  t71 = t12*eta;
1123  t72 = 3.0/2.0*t71;
1124  t73 = 15.0/4.0*t6;
1125  t74 = t70+t18-t72+t53-t59-t25+t66+t29-t31-t73+3.0/4.0;
1126  t75 = t45-t47+t53-t59-t61+t62-t64+t10-t66+t67-3.0/4.0;
1127  t76 = -t70-t18+t72+t53-t59+t25+t66-t29+t31-t73+3.0/4.0;
1128  t77 = 9.0/4.0*t36;
1129  t78 = 3.0/4.0*t33;
1130  t79 = 3.0/4.0*t39;
1131  t81 = t8*zeta;
1132  t82 = t81/6.0;
1133  t83 = t12*zeta;
1134  t84 = t83/6.0;
1135  t85 = t19*zeta;
1136  t86 = 5.0/6.0*t85;
1137  t87 = zeta/3.0;
1138  t88 = 3.0/4.0*t19;
1139  t89 = t12*t27;
1140  t90 = t89/2.0;
1141  t91 = t8*t27;
1142  t92 = t91/2.0;
1143  t96 = 5.0/2.0*t85-3.0/2.0*zeta;
1144  t97 = eta*t96;
1145  t98 = 3.0/2.0*t97;
1146  t99 = t71*zeta;
1147  t100 = 3.0/2.0*t99;
1148  t101 = t81/3.0;
1149  t102 = eta*zeta;
1150  t103 = 3.0/2.0*t102;
1151  t104 = 5.0/12.0*t85;
1152  t105 = 5.0/12.0*zeta;
1153  t107 = t83/3.0;
1154  t108 = t46*zeta;
1155  t109 = 3.0/2.0*t108;
1156  t110 = xi*t96;
1157  t111 = 3.0/2.0*t110;
1158  t112 = xi*zeta;
1159  t113 = 3.0/2.0*t112;
1160  t140 = 9.0/2.0*t36;
1161  t141 = 3.0/2.0*t33;
1162  t142 = 3.0/2.0*t39;
1163 
1164  values[0] = 0.0;
1165  values[1] = t10;
1166  values[2] = -t18;
1167  values[3] = -t10;
1168  values[4] = t18;
1169  values[5] = 0.0;
1170  values[6] = t32;
1171  values[7] = t42;
1172  values[8] = t43;
1173  values[9] = t42;
1174  values[10] = t68;
1175  values[11] = t69;
1176  values[12] = t69;
1177  values[13] = t74;
1178  values[14] = t75;
1179  values[15] = t76;
1180  values[16] = t43;
1181  values[17] = t32;
1182  values[18] = 0.0;
1183  values[19] = 0.0;
1184  values[20] = 0.0;
1185  values[21] = 0.0;
1186  values[22] = t18-t72+t77+t78-t79;
1187  values[23] = 0.0;
1188  values[24] = t82+t84-t86+t87-1.0/4.0+t88-t90-t92;
1189  values[25] = -t98-t100-t101+t84+t103+t104-t105;
1190  values[26] = -t82+t107-t104+t105-t109-t111+t113;
1191  values[27] = t98+t100-t101+t84-t103+t104-t105;
1192  values[28] = t82-t107+t104-t105-t109-t111+t113;
1193  values[29] = -t82-t84+t86-t87-1.0/4.0+t88-t90-t92;
1194  values[30] = 0.0;
1195  values[31] = t77-t47-t78+t79+t10;
1196  values[32] = -t18+t72+t77+t78-t79;
1197  values[33] = t77+t47-t78+t79-t10;
1198  values[34] = 0.0;
1199  values[35] = 0.0;
1200  values[36] = 0.0;
1201  values[37] = 0.0;
1202  values[38] = 0.0;
1203  values[39] = 0.0;
1204  values[40] = -t53+t59+t10-t66;
1205  values[41] = 0.0;
1206  values[42] = -t45+t61+t64-t111;
1207  values[43] = -t25+t29+t31-t92;
1208  values[44] = t45-t61+t64+t90;
1209  values[45] = t25-t29-t31-t92;
1210  values[46] = -t100+t35+t38-t41;
1211  values[47] = t98+t25-t29+t31;
1212  values[48] = -t98+t25-t29+t31;
1213  values[49] = -t35+t38-t109+t41;
1214  values[50] = t100+t35+t38-t41;
1215  values[51] = -t35+t38+t109+t41;
1216  values[52] = t45-t61+t64-t90;
1217  values[53] = -t45+t61+t64+t111;
1218  values[54] = 0.0;
1219  values[55] = t18+t53-t59-t66;
1220  values[56] = t53-t59+t10+t66;
1221  values[57] = -t18+t53-t59-t66;
1222  values[58] = 0.0;
1223  values[59] = 0.0;
1224  values[60] = 0.0;
1225  values[61] = -3.0*eta+3.0*t71+3.0*t30;
1226  values[62] = 3.0*t46-3.0*xi+3.0*t63;
1227  values[63] = 9.0*t37;
1228  values[64] = -t140+t141-t142;
1229  values[65] = 9.0/2.0-t26+t65+t89-t11-t7+t91;
1230  values[66] = 3.0*t97+3.0*t99-3.0*t102;
1231  values[67] = -t140-t141+t142;
1232  values[68] = 3.0*t108+3.0*t110-3.0*t112;
1233  values[69] = 0.0;
1234 }
1235 
1236 static void N_H_Q4_3D_DeriveXiZeta(double xi, double eta, double zeta,
1237  double *values)
1238 {
1239  double t1, t5, t6, t7, t8, t10, t11, t12, t16, t18, t19, t20, t21, t22;
1240  double t23, t24, t26, t27, t28, t29, t34, t35, t38, t40, t41, t46, t47;
1241  double t48, t49, t50, t52, t53, t54, t56, t57, t58, t59, t60, t61, t62;
1242  double t65, t66, t68, t69, t70, t71, t72, t73, t74, t75, t76, t77, t78;
1243  double t79, t80, t81, t84, t85, t86, t87, t88, t89, t90, t91, t92, t93;
1244  double t94, t97, t98, t99, t101, t102, t103, t104, t105, t106, t107, t108;
1245  double t110, t111, t112, t113, t114, t115, t141, t142, t143;
1246 
1247  t1 = xi*xi;
1248  t5 = 35.0/2.0*t1*xi-15.0/2.0*xi;
1249  t6 = zeta*zeta;
1250  t7 = 15.0/2.0*t6;
1251  t8 = t7-3.0/2.0;
1252  t10 = t5*t8/2.0;
1253  t11 = 15.0/2.0*t1;
1254  t12 = t11-3.0/2.0;
1255  t16 = 35.0/2.0*t6*zeta-15.0/2.0*zeta;
1256  t18 = t12*t16/2.0;
1257  t19 = 15.0/4.0*t6;
1258  t20 = t12*zeta;
1259  t21 = 3.0/2.0*t20;
1260  t22 = eta*eta;
1261  t23 = 3.0/2.0*t22;
1262  t24 = -1.0/2.0+t23;
1263  t26 = t24*t16/4.0;
1264  t27 = t12*t8;
1265  t28 = t27/4.0;
1266  t29 = t6*t6;
1267  t34 = t12*(315.0/8.0*t29-105.0/4.0*t6+15.0/8.0)/4.0;
1268  t35 = t22*t22;
1269  t38 = 3.0/8.0+35.0/8.0*t35-15.0/4.0*t22;
1270  t40 = 3.0/4.0*t38*zeta;
1271  t41 = t1*t1;
1272  t46 = (315.0/8.0*t41-105.0/4.0*t1+15.0/8.0)*t8/4.0;
1273  t47 = t24*zeta;
1274  t48 = 3.0/4.0*t47;
1275  t49 = 3.0/2.0*zeta;
1276  t50 = -t19+3.0/4.0+t18-t21+t26+t28-t34-t40+t46-t48+t49;
1277  t52 = t5*t24/4.0;
1278  t53 = xi*t24;
1279  t54 = 3.0/4.0*t53;
1280  t56 = 3.0/4.0*xi*t38;
1281  t57 = -t52-t54+t56;
1282  t58 = 3.0/2.0*xi;
1283  t59 = xi*t8;
1284  t60 = 3.0/2.0*t59;
1285  t61 = 15.0/4.0*t1;
1286  t62 = t58+t52+t10-t54-t60-t28-t34+t46+t61-3.0/4.0-t56;
1287  t65 = 3.0/4.0*t5*eta*zeta;
1288  t66 = xi*eta;
1289  t68 = 3.0/4.0*t66*t16;
1290  t69 = t66*zeta;
1291  t70 = 9.0/4.0*t69;
1292  t71 = t65-t68-t70;
1293  t72 = -t65+t68-t70;
1294  t73 = -t26+t40-t48;
1295  t74 = t58+t52+t10-t54-t60+t28+t34-t46-t61+3.0/4.0-t56;
1296  t75 = t19-3.0/4.0+t18-t21+t26-t28+t34-t40-t46-t48+t49;
1297  t76 = xi*zeta;
1298  t77 = 9.0/4.0*t76;
1299  t78 = xi*t16;
1300  t79 = 3.0/4.0*t78;
1301  t80 = t5*zeta;
1302  t81 = 3.0/4.0*t80;
1303  t84 = t22*eta;
1304  t85 = 5.0/12.0*t84;
1305  t86 = 5.0/12.0*eta;
1306  t87 = t12*eta;
1307  t88 = t87/6.0;
1308  t89 = eta*t8;
1309  t90 = t89/3.0;
1310  t91 = eta*zeta;
1311  t92 = 3.0/2.0*t91;
1312  t93 = t87*zeta;
1313  t94 = 3.0/2.0*t93;
1314  t97 = 5.0/2.0*t84-3.0/2.0*eta;
1315  t98 = t97*zeta;
1316  t99 = 3.0/2.0*t98;
1317  t101 = t24*t8;
1318  t102 = t101/2.0;
1319  t103 = t12*t24;
1320  t104 = t103/2.0;
1321  t105 = 5.0/6.0*t84;
1322  t106 = eta/3.0;
1323  t107 = 3.0/4.0*t22;
1324  t108 = t89/6.0;
1325  t110 = t87/3.0;
1326  t111 = xi*t97;
1327  t112 = 3.0/2.0*t111;
1328  t113 = t66*t8;
1329  t114 = 3.0/2.0*t113;
1330  t115 = 3.0/2.0*t66;
1331  t141 = 9.0/2.0*t76;
1332  t142 = 3.0/2.0*t78;
1333  t143 = 3.0/2.0*t80;
1334 
1335  values[0] = t10;
1336  values[1] = 0.0;
1337  values[2] = -t18;
1338  values[3] = 0.0;
1339  values[4] = t18;
1340  values[5] = -t10;
1341  values[6] = t50;
1342  values[7] = t57;
1343  values[8] = t62;
1344  values[9] = t57;
1345  values[10] = t71;
1346  values[11] = t72;
1347  values[12] = t72;
1348  values[13] = t73;
1349  values[14] = t71;
1350  values[15] = -t73;
1351  values[16] = t74;
1352  values[17] = t75;
1353  values[18] = t10+t77-t60+t79-t81;
1354  values[19] = 0.0;
1355  values[20] = -t18+t21+t77-t79+t81;
1356  values[21] = 0.0;
1357  values[22] = 0.0;
1358  values[23] = 0.0;
1359  values[24] = t85-t86+t88-t90+t92-t94-t99;
1360  values[25] = -t102-t104-t105+t106+t88-1.0/4.0+t107+t108;
1361  values[26] = -t85+t86+t110-t108-t112-t114+t115;
1362  values[27] = t102+t104-t105+t106+t88+1.0/4.0-t107+t108;
1363  values[28] = t85-t86-t110+t108-t112-t114+t115;
1364  values[29] = -t85+t86-t88+t90+t92-t94-t99;
1365  values[30] = 0.0;
1366  values[31] = 0.0;
1367  values[32] = 0.0;
1368  values[33] = 0.0;
1369  values[34] = t18-t21+t77-t79+t81;
1370  values[35] = -t10+t77+t60+t79-t81;
1371  values[36] = t18-t28-t34+t46;
1372  values[37] = 0.0;
1373  values[38] = t10+t28-t34+t46;
1374  values[39] = 0.0;
1375  values[40] = 0.0;
1376  values[41] = 0.0;
1377  values[42] = -t65+t68+t70-t114;
1378  values[43] = -t26+t40+t48-t99;
1379  values[44] = t65-t68+t70+t94;
1380  values[45] = t26-t40-t48-t99;
1381  values[46] = -t104+t52+t54-t56;
1382  values[47] = t102+t26-t40+t48;
1383  values[48] = -t102+t26-t40+t48;
1384  values[49] = -t52+t54-t112+t56;
1385  values[50] = t104+t52+t54-t56;
1386  values[51] = -t52+t54+t112+t56;
1387  values[52] = t65-t68+t70-t94;
1388  values[53] = -t65+t68+t70+t114;
1389  values[54] = 0.0;
1390  values[55] = 0.0;
1391  values[56] = 0.0;
1392  values[57] = 0.0;
1393  values[58] = t10-t28+t34-t46;
1394  values[59] = t18+t28+t34-t46;
1395  values[60] = 0.0;
1396  values[61] = 3.0*t20+3.0*t47-3.0*zeta;
1397  values[62] = 9.0*t69;
1398  values[63] = -3.0*xi+3.0*t53+3.0*t59;
1399  values[64] = -t141-t142+t143;
1400  values[65] = -3.0*t91+3.0*t93+3.0*t98;
1401  values[66] = t101+t103-t7+9.0/2.0-t23+t27-t11;
1402  values[67] = 0.0;
1403  values[68] = 3.0*t111+3.0*t113-3.0*t66;
1404  values[69] = -t141+t142-t143;
1405 }
1406 
1407 static void N_H_Q4_3D_DeriveEtaEta(double xi, double eta, double zeta,
1408  double *values)
1409 {
1410  double t1, t2, t3, t4, t5, t8, t10, t11, t12, t13, t16, t18, t19, t20;
1411  double t23, t25, t27, t30, t32, t35, t38, t40, t41, t42, t43, t45, t47;
1412  double t48, t49, t50, t51, t58, t62, t64, t65, t66, t67, t69, t70, t71;
1413  double t73, t75, t76, t83, t85, t86, t87, t89, t90, t93, t94, t95, t96;
1414  double t100, t101, t102, t103, t106, t107, t108, t109, t111, t112, t114;
1415  double t115, t116, t117, t119, t120, t121, t122, t123, t124, t125, t127;
1416  double t128, t134, t164, t165, t171, t172;
1417 
1418  t1 = eta*eta;
1419  t2 = 105.0/2.0*t1;
1420  t3 = t2-15.0/2.0;
1421  t4 = zeta*zeta;
1422  t5 = t4*zeta;
1423  t8 = 5.0/2.0*t5-3.0/2.0*zeta;
1424  t10 = t3*t8/2.0;
1425  t11 = 15.0/2.0*eta;
1426  t12 = 105.0/4.0*t1;
1427  t13 = t4*t4;
1428  t16 = 3.0/8.0+35.0/8.0*t13-15.0/4.0*t4;
1429  t18 = 15.0/2.0*eta*t16;
1430  t19 = xi*xi;
1431  t20 = t19*t19;
1432  t23 = 3.0/8.0+35.0/8.0*t20-15.0/4.0*t19;
1433  t25 = 15.0/2.0*eta*t23;
1434  t27 = t19*xi;
1435  t30 = 5.0/2.0*t27-3.0/2.0*xi;
1436  t32 = t30*t3/2.0;
1437  t35 = 3.0/4.0*xi*t16;
1438  t38 = -1.0/2.0+3.0/2.0*t4;
1439  t40 = xi*t3*t38/4.0;
1440  t41 = xi*t38;
1441  t42 = 3.0/4.0*t41;
1442  t43 = t35-t40-t42;
1443  t45 = 3.0/4.0*t23*zeta;
1444  t47 = -1.0/2.0+3.0/2.0*t19;
1445  t48 = t47*zeta;
1446  t49 = 3.0/4.0*t48;
1447  t50 = 15.0/4.0*t5;
1448  t51 = 15.0/4.0*zeta;
1449  t58 = 15.0/4.0*eta*(63.0/8.0*t13*zeta-35.0/4.0*t5+15.0/8.0*zeta);
1450  t62 = 315.0/2.0*t1*eta-105.0/2.0*eta;
1451  t64 = t62*t8/4.0;
1452  t65 = eta*t8;
1453  t66 = 15.0/4.0*t65;
1454  t67 = t47*t3;
1455  t69 = t67*zeta/4.0;
1456  t70 = eta*zeta;
1457  t71 = 15.0/2.0*t70;
1458  t73 = t45-t49-t69;
1459  t75 = t47*eta;
1460  t76 = 15.0/2.0*t75;
1461  t83 = 15.0/4.0*(63.0/8.0*t20*xi-35.0/4.0*t27+15.0/8.0*xi)*eta;
1462  t85 = t30*t62/4.0;
1463  t86 = t30*eta;
1464  t87 = 15.0/4.0*t86;
1465  t89 = eta*t38;
1466  t90 = 15.0/2.0*t89;
1467  t93 = 15.0/4.0*xi;
1468  t94 = 15.0/4.0*t27;
1469  t95 = xi*eta;
1470  t96 = 15.0/2.0*t95;
1471  t100 = 63.0/16.0*t4;
1472  t101 = t3*t38;
1473  t102 = t101/4.0;
1474  t103 = 105.0/32.0*t13;
1475  t106 = 9.0/4.0*xi;
1476  t107 = 27.0/16.0*t19;
1477  t108 = 105.0/32.0*t20;
1478  t109 = t67/4.0;
1479  t111 = 27.0/16.0*t4;
1480  t112 = 9.0/4.0*zeta;
1481  t114 = t95*zeta;
1482  t115 = 5.0/2.0*t114;
1483  t116 = t95*t38;
1484  t117 = 15.0/2.0*t116;
1485  t119 = xi*t8;
1486  t120 = 3.0/2.0*t119;
1487  t121 = t30*zeta;
1488  t122 = 3.0/2.0*t121;
1489  t123 = 5.0*t114;
1490  t124 = xi*zeta;
1491  t125 = 3.0/2.0*t124;
1492  t127 = t75*zeta;
1493  t128 = 15.0/2.0*t127;
1494  t134 = 63.0/16.0*t19;
1495  t164 = 105.0/16.0*t20;
1496  t165 = t67/2.0;
1497  t171 = t101/2.0;
1498  t172 = 105.0/16.0*t13;
1499 
1500  values[0] = t10;
1501  values[1] = -t11-15.0/4.0+t12+t18+t25;
1502  values[2] = -t32;
1503  values[3] = t11-15.0/4.0+t12-t18-t25;
1504  values[4] = t32;
1505  values[5] = -t10;
1506  values[6] = t43;
1507  values[7] = t10-t45-t49-t50+t51+t58-t64+t66+t69-t71;
1508  values[8] = t73;
1509  values[9] = t10-t45-t49-t50+t51-t58+t64-t66+t69+t71;
1510  values[10] = -t76-t83+t85+t25+t87;
1511  values[11] = t18+t58-t90-t64-t66;
1512  values[12] = t18-t58-t90+t64+t66;
1513  values[13] = t93+t32-t94+t83-t85-t35+t87+t40-t42-t96;
1514  values[14] = -t76+t83-t85+t25-t87;
1515  values[15] = -t93-t32+t94+t83-t85+t35+t87-t40+t42-t96;
1516  values[16] = t73;
1517  values[17] = t43;
1518  values[18] = 0.0;
1519  values[19] = -21.0/32.0+t100+t18-t90+t102-t103;
1520  values[20] = 0.0;
1521  values[21] = -21.0/32.0+t100-t18+t90+t102-t103;
1522  values[22] = t32-t94+t106-3.0/32.0-t107+t108-t109;
1523  values[23] = -t10-3.0/32.0-t111+t50-t112-t102+t103;
1524  values[24] = t115-t117;
1525  values[25] = -t120-t122-t123+t125;
1526  values[26] = -t115-t128;
1527  values[27] = t120+t122-t123-t125;
1528  values[28] = t115-t128;
1529  values[29] = -t115-t117;
1530  values[30] = t10-3.0/32.0-t111-t50+t112-t102+t103;
1531  values[31] = -21.0/32.0+t134-t76-t108+t109+t25;
1532  values[32] = -t32+t94-t106-3.0/32.0-t107+t108-t109;
1533  values[33] = -21.0/32.0+t134+t76-t108+t109-t25;
1534  values[34] = 0.0;
1535  values[35] = 0.0;
1536  values[36] = 0.0;
1537  values[37] = t10+t58-t64-t66;
1538  values[38] = 0.0;
1539  values[39] = t10-t58+t64+t66;
1540  values[40] = -t83+t85+t25-t87;
1541  values[41] = t18+t58-t64+t66;
1542  values[42] = 0.0;
1543  values[43] = -t35+t40+t42-t117;
1544  values[44] = 0.0;
1545  values[45] = t35-t40-t42-t117;
1546  values[46] = -t122+t45+t49-t69;
1547  values[47] = t120+t35-t40+t42;
1548  values[48] = -t120+t35-t40+t42;
1549  values[49] = -t45+t49-t128+t69;
1550  values[50] = t122+t45+t49-t69;
1551  values[51] = -t45+t49+t128+t69;
1552  values[52] = 0.0;
1553  values[53] = 0.0;
1554  values[54] = t18-t58+t64-t66;
1555  values[55] = t32+t83-t85-t87;
1556  values[56] = t83-t85+t25+t87;
1557  values[57] = -t32+t83-t85-t87;
1558  values[58] = 0.0;
1559  values[59] = 0.0;
1560  values[60] = -t3;
1561  values[61] = -15.0/2.0*xi+15.0/2.0*t27+3.0*t41;
1562  values[62] = -15.0*eta+15.0*t75+15.0*t89;
1563  values[63] = 3.0*t48+15.0/2.0*t5-15.0/2.0*zeta;
1564  values[64] = 21.0/16.0-63.0/8.0*t19+t164-t165;
1565  values[65] = 15.0*t86-15.0*t95+15.0*t116;
1566  values[66] = 3.0*t119+3.0*t121-3.0*t124;
1567  values[67] = 87.0/8.0+27.0/8.0*t19-t2+27.0/8.0*t4-t164+t165+t171-t172;
1568  values[68] = 15.0*t127+15.0*t65-15.0*t70;
1569  values[69] = 21.0/16.0-63.0/8.0*t4-t171+t172;
1570 }
1571 
1572 static void N_H_Q4_3D_DeriveEtaZeta(double xi, double eta, double zeta,
1573  double *values)
1574 {
1575  double t1, t5, t6, t7, t8, t10, t11, t12, t16, t18, t19, t21, t24, t25;
1576  double t26, t27, t28, t29, t32, t34, t35, t36, t37, t38, t39, t40, t41;
1577  double t46, t47, t52, t53, t54, t55, t57, t58, t59, t60, t61, t63, t65;
1578  double t66, t67, t68, t69, t70, t71, t72, t73, t74, t75, t76, t77, t78;
1579  double t79, t80, t81, t85, t86, t87, t88, t89, t90, t91, t92, t93, t96;
1580  double t97, t98, t99, t100, t102, t103, t104, t105, t106, t107, t108, t110;
1581  double t111, t112, t113, t114, t115, t116, t143, t144, t145;
1582 
1583  t1 = eta*eta;
1584  t5 = 35.0/2.0*t1*eta-15.0/2.0*eta;
1585  t6 = zeta*zeta;
1586  t7 = 15.0/2.0*t6;
1587  t8 = t7-3.0/2.0;
1588  t10 = t5*t8/2.0;
1589  t11 = 15.0/2.0*t1;
1590  t12 = t11-3.0/2.0;
1591  t16 = 35.0/2.0*t6*zeta-15.0/2.0*zeta;
1592  t18 = t12*t16/2.0;
1593  t19 = xi*eta;
1594  t21 = 3.0/4.0*t19*t16;
1595  t24 = 3.0/4.0*xi*t5*zeta;
1596  t25 = t19*zeta;
1597  t26 = 9.0/4.0*t25;
1598  t27 = t21-t24-t26;
1599  t28 = xi*xi;
1600  t29 = t28*t28;
1601  t32 = 3.0/8.0+35.0/8.0*t29-15.0/4.0*t28;
1602  t34 = 3.0/4.0*t32*eta;
1603  t35 = 3.0/2.0*t28;
1604  t36 = -1.0/2.0+t35;
1605  t37 = t36*eta;
1606  t38 = 3.0/4.0*t37;
1607  t39 = eta*t8;
1608  t40 = 3.0/2.0*t39;
1609  t41 = t6*t6;
1610  t46 = t12*(315.0/8.0*t41-105.0/4.0*t6+15.0/8.0)/4.0;
1611  t47 = t1*t1;
1612  t52 = (315.0/8.0*t47-105.0/4.0*t1+15.0/8.0)*t8/4.0;
1613  t53 = 3.0/2.0*eta;
1614  t54 = t12*t8;
1615  t55 = t54/4.0;
1616  t57 = t36*t5/4.0;
1617  t58 = 15.0/4.0*t1;
1618  t59 = t10-t34-t38-t40+t46-t52+t53+t55+t57-t58+3.0/4.0;
1619  t60 = t34-t38-t57;
1620  t61 = t10-t34-t38-t40-t46+t52+t53-t55+t57+t58-3.0/4.0;
1621  t63 = 3.0/4.0*t32*zeta;
1622  t65 = t36*t16/4.0;
1623  t66 = t36*zeta;
1624  t67 = 3.0/4.0*t66;
1625  t68 = t63-t65-t67;
1626  t69 = 15.0/4.0*t6;
1627  t70 = t12*zeta;
1628  t71 = 3.0/2.0*t70;
1629  t72 = 3.0/2.0*zeta;
1630  t73 = -t63+t69-3.0/4.0+t65+t18+t46-t71-t67-t52+t72-t55;
1631  t74 = -t63-t69+3.0/4.0+t65+t18-t46-t71-t67+t52+t72+t55;
1632  t75 = -t21+t24-t26;
1633  t76 = eta*zeta;
1634  t77 = 9.0/4.0*t76;
1635  t78 = t5*zeta;
1636  t79 = 3.0/4.0*t78;
1637  t80 = eta*t16;
1638  t81 = 3.0/4.0*t80;
1639  t85 = xi*t12;
1640  t86 = t85/6.0;
1641  t87 = t28*xi;
1642  t88 = 5.0/12.0*t87;
1643  t89 = 5.0/12.0*xi;
1644  t90 = xi*t8;
1645  t91 = t90/3.0;
1646  t92 = xi*zeta;
1647  t93 = 3.0/2.0*t92;
1648  t96 = 5.0/2.0*t87-3.0/2.0*xi;
1649  t97 = t96*zeta;
1650  t98 = 3.0/2.0*t97;
1651  t99 = t85*zeta;
1652  t100 = 3.0/2.0*t99;
1653  t102 = t19*t8;
1654  t103 = 3.0/2.0*t102;
1655  t104 = t96*eta;
1656  t105 = 3.0/2.0*t104;
1657  t106 = t85/3.0;
1658  t107 = 3.0/2.0*t19;
1659  t108 = t90/6.0;
1660  t110 = 5.0/6.0*t87;
1661  t111 = xi/3.0;
1662  t112 = t36*t12;
1663  t113 = t112/2.0;
1664  t114 = t36*t8;
1665  t115 = t114/2.0;
1666  t116 = 3.0/4.0*t28;
1667  t143 = 9.0/2.0*t76;
1668  t144 = 3.0/2.0*t78;
1669  t145 = 3.0/2.0*t80;
1670 
1671  values[0] = t10;
1672  values[1] = t18;
1673  values[2] = 0.0;
1674  values[3] = -t18;
1675  values[4] = 0.0;
1676  values[5] = -t10;
1677  values[6] = t27;
1678  values[7] = t59;
1679  values[8] = t60;
1680  values[9] = t61;
1681  values[10] = t68;
1682  values[11] = t73;
1683  values[12] = t74;
1684  values[13] = t75;
1685  values[14] = t68;
1686  values[15] = -t75;
1687  values[16] = t60;
1688  values[17] = t27;
1689  values[18] = 0.0;
1690  values[19] = t77+t18-t71+t79-t81;
1691  values[20] = 0.0;
1692  values[21] = t77-t18+t71+t79-t81;
1693  values[22] = 0.0;
1694  values[23] = -t10+t77+t40-t79+t81;
1695  values[24] = t86+t88-t89-t91+t93-t98-t100;
1696  values[25] = -t103-t105-t106+t88-t89+t107+t108;
1697  values[26] = -t86+t110-t111-t108-t113-t115-1.0/4.0+t116;
1698  values[27] = t103+t105-t106+t88-t89-t107+t108;
1699  values[28] = t86-t110+t111+t108-t113-t115-1.0/4.0+t116;
1700  values[29] = -t86-t88+t89+t91+t93-t98-t100;
1701  values[30] = t10+t77-t40-t79+t81;
1702  values[31] = 0.0;
1703  values[32] = 0.0;
1704  values[33] = 0.0;
1705  values[34] = 0.0;
1706  values[35] = 0.0;
1707  values[36] = 0.0;
1708  values[37] = t10+t46-t52-t55;
1709  values[38] = 0.0;
1710  values[39] = t10-t46+t52+t55;
1711  values[40] = 0.0;
1712  values[41] = t18+t46-t52+t55;
1713  values[42] = -t63+t65+t67-t115;
1714  values[43] = -t21+t24+t26-t100;
1715  values[44] = t63-t65+t67+t98;
1716  values[45] = t21-t24-t26-t100;
1717  values[46] = -t105+t34+t38-t57;
1718  values[47] = t103+t21-t24+t26;
1719  values[48] = -t103+t21-t24+t26;
1720  values[49] = -t34+t38-t113+t57;
1721  values[50] = t105+t34+t38-t57;
1722  values[51] = -t34+t38+t113+t57;
1723  values[52] = t63-t65+t67-t98;
1724  values[53] = -t63+t65+t67+t115;
1725  values[54] = t18-t46+t52-t55;
1726  values[55] = 0.0;
1727  values[56] = 0.0;
1728  values[57] = 0.0;
1729  values[58] = 0.0;
1730  values[59] = 0.0;
1731  values[60] = 0.0;
1732  values[61] = 9.0*t25;
1733  values[62] = 3.0*t70+3.0*t66-3.0*zeta;
1734  values[63] = 3.0*t37+3.0*t39-3.0*eta;
1735  values[64] = 0.0;
1736  values[65] = -3.0*t92+3.0*t97+3.0*t99;
1737  values[66] = 3.0*t102+3.0*t104-3.0*t19;
1738  values[67] = -t143+t144-t145;
1739  values[68] = -t7+9.0/2.0+t112+t114-t35+t54-t11;
1740  values[69] = -t143-t144+t145;
1741 }
1742 
1743 static void N_H_Q4_3D_DeriveZetaZeta(double xi, double eta, double zeta,
1744  double *values)
1745 {
1746  double t1, t2, t5, t7, t8, t9, t12, t14, t15, t16, t17, t19, t22, t23;
1747  double t24, t26, t27, t30, t32, t34, t35, t36, t37, t39, t40, t42, t43;
1748  double t44, t48, t50, t52, t59, t60, t62, t63, t65, t72, t73, t74, t77;
1749  double t78, t79, t83, t84, t86, t87, t88, t89, t90, t91, t92, t95, t98;
1750  double t99, t100, t101, t103, t104, t105, t106, t107, t109, t110, t113;
1751  double t115, t116, t117, t118, t119, t120, t121, t122, t124, t125, t126;
1752  double t128, t129, t163, t164, t169, t170;
1753 
1754  t1 = eta*eta;
1755  t2 = t1*t1;
1756  t5 = 3.0/8.0+35.0/8.0*t2-15.0/4.0*t1;
1757  t7 = 15.0/2.0*t5*zeta;
1758  t8 = xi*xi;
1759  t9 = t8*t8;
1760  t12 = 3.0/8.0+35.0/8.0*t9-15.0/4.0*t8;
1761  t14 = 15.0/2.0*t12*zeta;
1762  t15 = 15.0/2.0*zeta;
1763  t16 = zeta*zeta;
1764  t17 = 105.0/4.0*t16;
1765  t19 = t1*eta;
1766  t22 = 5.0/2.0*t19-3.0/2.0*eta;
1767  t23 = 105.0/2.0*t16;
1768  t24 = t23-15.0/2.0;
1769  t26 = t22*t24/2.0;
1770  t27 = xi*t8;
1771  t30 = 5.0/2.0*t27-3.0/2.0*xi;
1772  t32 = t30*t24/2.0;
1773  t34 = xi*zeta;
1774  t35 = 15.0/2.0*t34;
1775  t36 = 15.0/4.0*t27;
1776  t37 = 15.0/4.0*xi;
1777  t39 = -1.0/2.0+3.0/2.0*t1;
1778  t40 = xi*t39;
1779  t42 = t40*t24/4.0;
1780  t43 = t30*zeta;
1781  t44 = 15.0/4.0*t43;
1782  t48 = 315.0/2.0*t16*zeta-105.0/2.0*zeta;
1783  t50 = t30*t48/4.0;
1784  t52 = 3.0/4.0*xi*t5;
1785  t59 = 15.0/4.0*(63.0/8.0*t9*xi-35.0/4.0*t27+15.0/8.0*xi)*zeta;
1786  t60 = 3.0/4.0*t40;
1787  t62 = t39*zeta;
1788  t63 = 15.0/2.0*t62;
1789  t65 = t22*t48/4.0;
1790  t72 = 15.0/4.0*(63.0/8.0*t2*eta-35.0/4.0*t19+15.0/8.0*eta)*zeta;
1791  t73 = t22*zeta;
1792  t74 = 15.0/4.0*t73;
1793  t77 = -1.0/2.0+3.0/2.0*t8;
1794  t78 = t77*zeta;
1795  t79 = 15.0/2.0*t78;
1796  t83 = 3.0/4.0*t12*eta;
1797  t84 = t77*eta;
1798  t86 = t84*t24/4.0;
1799  t87 = 3.0/4.0*t84;
1800  t88 = t83-t86-t87;
1801  t89 = eta*zeta;
1802  t90 = 15.0/2.0*t89;
1803  t91 = 15.0/4.0*t19;
1804  t92 = 15.0/4.0*eta;
1805  t95 = -t42+t52-t60;
1806  t98 = 63.0/16.0*t8;
1807  t99 = t77*t24;
1808  t100 = t99/4.0;
1809  t101 = 105.0/32.0*t9;
1810  t103 = 27.0/16.0*t1;
1811  t104 = 9.0/4.0*eta;
1812  t105 = 105.0/32.0*t2;
1813  t106 = t39*t24;
1814  t107 = t106/4.0;
1815  t109 = 9.0/4.0*xi;
1816  t110 = 27.0/16.0*t8;
1817  t113 = 63.0/16.0*t1;
1818  t115 = xi*eta;
1819  t116 = t115*zeta;
1820  t117 = 5.0*t116;
1821  t118 = 3.0/2.0*t115;
1822  t119 = t30*eta;
1823  t120 = 3.0/2.0*t119;
1824  t121 = xi*t22;
1825  t122 = 3.0/2.0*t121;
1826  t124 = t40*zeta;
1827  t125 = 15.0/2.0*t124;
1828  t126 = 5.0/2.0*t116;
1829  t128 = t84*zeta;
1830  t129 = 15.0/2.0*t128;
1831  t163 = t99/2.0;
1832  t164 = 105.0/16.0*t9;
1833  t169 = 105.0/16.0*t2;
1834  t170 = t106/2.0;
1835 
1836  values[0] = t7+t14-t15+t17-15.0/4.0;
1837  values[1] = t26;
1838  values[2] = -t32;
1839  values[3] = -t26;
1840  values[4] = t32;
1841  values[5] = -t7-t14+t15+t17-15.0/4.0;
1842  values[6] = -t35+t32-t36+t37+t42+t44-t50-t52+t59-t60;
1843  values[7] = t7-t63+t65-t72+t74;
1844  values[8] = t14-t79-t44-t50+t59;
1845  values[9] = t7-t63-t65+t72-t74;
1846  values[10] = t88;
1847  values[11] = -t83+t90+t86+t26+t65-t91+t92-t87-t72-t74;
1848  values[12] = -t83-t90+t86+t26-t65-t91+t92-t87+t72+t74;
1849  values[13] = t95;
1850  values[14] = t88;
1851  values[15] = -t95;
1852  values[16] = t14-t79+t44+t50-t59;
1853  values[17] = t35+t32-t36+t37+t42-t44+t50-t52-t59-t60;
1854  values[18] = t14-21.0/32.0+t98-t79+t100-t101;
1855  values[19] = -3.0/32.0-t103+t26-t91+t104+t105-t107;
1856  values[20] = -t32+t36-t109-3.0/32.0-t110-t100+t101;
1857  values[21] = -3.0/32.0-t103-t26+t91-t104+t105-t107;
1858  values[22] = 0.0;
1859  values[23] = -t7-21.0/32.0+t113+t63-t105+t107;
1860  values[24] = -t117+t118-t120-t122;
1861  values[25] = -t125+t126;
1862  values[26] = -t126-t129;
1863  values[27] = t125+t126;
1864  values[28] = t126-t129;
1865  values[29] = t117+t118-t120-t122;
1866  values[30] = t7-21.0/32.0+t113-t63-t105+t107;
1867  values[31] = 0.0;
1868  values[32] = 0.0;
1869  values[33] = 0.0;
1870  values[34] = t32-t36+t109-3.0/32.0-t110-t100+t101;
1871  values[35] = -t14-21.0/32.0+t98+t79+t100-t101;
1872  values[36] = t32-t44-t50+t59;
1873  values[37] = t7+t65-t72-t74;
1874  values[38] = t14+t44-t50+t59;
1875  values[39] = t7-t65+t72+t74;
1876  values[40] = 0.0;
1877  values[41] = t26+t65-t72+t74;
1878  values[42] = -t83+t86+t87-t129;
1879  values[43] = -t42+t52+t60-t122;
1880  values[44] = t83-t86+t87+t120;
1881  values[45] = t42-t52-t60-t122;
1882  values[46] = 0.0;
1883  values[47] = t125+t42-t52+t60;
1884  values[48] = -t125+t42-t52+t60;
1885  values[49] = 0.0;
1886  values[50] = 0.0;
1887  values[51] = 0.0;
1888  values[52] = t83-t86+t87-t120;
1889  values[53] = -t83+t86+t87+t129;
1890  values[54] = t26-t65+t72-t74;
1891  values[55] = 0.0;
1892  values[56] = 0.0;
1893  values[57] = 0.0;
1894  values[58] = t14-t44+t50-t59;
1895  values[59] = t32+t44+t50-t59;
1896  values[60] = -t24;
1897  values[61] = 15.0/2.0*t27-15.0/2.0*xi+3.0*t40;
1898  values[62] = 15.0/2.0*t19-15.0/2.0*eta+3.0*t84;
1899  values[63] = -15.0*zeta+15.0*t62+15.0*t78;
1900  values[64] = 21.0/16.0-63.0/8.0*t8-t163+t164;
1901  values[65] = -3.0*t115+3.0*t119+3.0*t121;
1902  values[66] = 15.0*t124-15.0*t34+15.0*t43;
1903  values[67] = 21.0/16.0-63.0/8.0*t1+t169-t170;
1904  values[68] = -15.0*t89+15.0*t128+15.0*t73;
1905  values[69] = 87.0/8.0+27.0/8.0*t1+27.0/8.0*t8-t23-t169+t170+t163-t164;
1906 }
1907 
1908 static int N_H_Q4_3D_ChangeU0[4] = { 6, 24, 36, 48 };
1909 static int N_H_Q4_3D_ChangeU1[4] = { 7, 25, 37, 49 };
1910 static int N_H_Q4_3D_ChangeU2[4] = { 8, 26, 38, 50 };
1911 static int N_H_Q4_3D_ChangeU3[4] = { 9, 27, 39, 51 };
1912 static int N_H_Q4_3D_ChangeU4[4] = { 10, 28, 40, 52 };
1913 static int N_H_Q4_3D_ChangeU5[4] = { 11, 29, 41, 53 };
1914 
1915 static int N_H_Q4_3D_ChangeV0[4] = { 12, 24, 42, 54 };
1916 static int N_H_Q4_3D_ChangeV1[4] = { 13, 25, 43, 55 };
1917 static int N_H_Q4_3D_ChangeV2[4] = { 14, 26, 44, 56 };
1918 static int N_H_Q4_3D_ChangeV3[4] = { 15, 27, 45, 57 };
1919 static int N_H_Q4_3D_ChangeV4[4] = { 16, 28, 46, 58 };
1920 static int N_H_Q4_3D_ChangeV5[4] = { 17, 29, 47, 59 };
1921 
1922 static int *N_H_Q4_3D_ChangeU[6] = { N_H_Q4_3D_ChangeU0, N_H_Q4_3D_ChangeU1,
1923  N_H_Q4_3D_ChangeU2, N_H_Q4_3D_ChangeU3,
1924  N_H_Q4_3D_ChangeU4, N_H_Q4_3D_ChangeU5 };
1925 
1926 static int *N_H_Q4_3D_ChangeV[6] = { N_H_Q4_3D_ChangeV0, N_H_Q4_3D_ChangeV1,
1927  N_H_Q4_3D_ChangeV2, N_H_Q4_3D_ChangeV3,
1928  N_H_Q4_3D_ChangeV4, N_H_Q4_3D_ChangeV5 };
1929 
1930 static int **N_H_Q4_3D_Change[2] = { N_H_Q4_3D_ChangeU, N_H_Q4_3D_ChangeV };
1931 
1932 TBaseFunct3D *BF_N_H_Q4_3D_Obj =
1933 new TBaseFunct3D(70, BF_N_H_Q4_3D, BFUnitHexahedron,
1934  N_H_Q4_3D_Funct, N_H_Q4_3D_DeriveXi,
1935  N_H_Q4_3D_DeriveEta, N_H_Q4_3D_DeriveZeta,
1936  N_H_Q4_3D_DeriveXiXi, N_H_Q4_3D_DeriveXiEta,
1937  N_H_Q4_3D_DeriveXiZeta, N_H_Q4_3D_DeriveEtaEta,
1938  N_H_Q4_3D_DeriveEtaZeta, N_H_Q4_3D_DeriveZetaZeta,
1939  5, 4,
1940  4, N_H_Q4_3D_Change);
Definition: BaseFunct3D.h:27