ParMooN
 All Classes Functions Variables Friends Pages
BF_C_T_P4_2D.h
1 // ***********************************************************************
2 // P4 element, conforming, 2D
3 // ***********************************************************************
4 
5 // base function values
6 static void C_T_P4_2D_Funct(double xi, double eta, double *values)
7 {
8  double t3, t5, t7, t9, t11, t13, t15, t17, t18, t19, t20, t21, t22, t23;
9  double t24, t25, t26, t27, t30, t34, t35, t36, t40, t43, t48, t50, t60;
10  double t61, t68, t70, t75;
11 
12  t3 = xi*xi;
13  t5 = xi*eta;
14  t7 = eta*eta;
15  t9 = t3*xi;
16  t11 = t3*eta;
17  t13 = xi*t7;
18  t15 = t7*eta;
19  t17 = t3*t3;
20  t18 = 32.0/3.0*t17;
21  t19 = t9*eta;
22  t20 = 128.0/3.0*t19;
23  t21 = t3*t7;
24  t22 = 64.0*t21;
25  t23 = xi*t15;
26  t24 = 128.0/3.0*t23;
27  t25 = t7*t7;
28  t26 = 32.0/3.0*t25;
29  t27 = 1.0-25.0/3.0*xi-25.0/3.0*eta+70.0/3.0*t3+140.0/3.0*t5+70.0/3.0*t7-80.0/3.0*t9-80.0*t11-80.0*t13-80.0/3.0*t15+t18+t20+t22+t24+t26;
30  t30 = 208.0/3.0*t5;
31  t34 = 128.0/3.0*t17;
32  t35 = 128.0*t19;
33  t36 = 128.0*t21;
34  t40 = 28.0*t5;
35  t43 = 16.0*t13;
36  t48 = 16.0/3.0*t5;
37  t50 = 32.0*t11;
38  t60 = 128.0*t23;
39  t61 = 128.0/3.0*t25;
40  t68 = 32.0*t5;
41  t70 = 32.0*t13;
42  t75 = 16.0*t11;
43 
44  values[0] = t27;
45  values[1] = 16.0*xi-208.0/3.0*t3-t30+96.0*t9+192.0*t11+96.0*t13-t34-t35-t36-t24;
46  values[2] = -12.0*xi+76.0*t3+t40-128.0*t9-144.0*t11-t43+64.0*t17+t35+t22;
47  values[3] = 16.0/3.0*xi-112.0/3.0*t3-t48+224.0/3.0*t9+t50-t34-t20;
48  values[4] = -xi+22.0/3.0*t3-16.0*t9+t18;
49  values[5] = 16.0*eta-t30-208.0/3.0*t7+96.0*t11+192.0*t13+96.0*t15-t20-t36-t60-t61;
50  values[6] = 96.0*t5-224.0*t11-224.0*t13+t35+256.0*t21+t60;
51  values[7] = -t68+160.0*t11+t70-t35-t36;
52  values[8] = t48-t50+t20;
53  values[9] = -12.0*eta+t40+76.0*t7-t75-144.0*t13-128.0*t15+t22+t60+64.0*t25;
54  values[10] = -t68+t50+160.0*t13-t36-t60;
55  values[11] = 4.0*t5-t75-t43+t22;
56  values[12] = 16.0/3.0*eta-t48-112.0/3.0*t7+t70+224.0/3.0*t15-t24-t61;
57  values[13] = t48-t70+t24;
58  values[14] = -eta+22.0/3.0*t7-16.0*t15+t26;
59 }
60 
61 // values of the derivatives in xi direction
62 static void C_T_P4_2D_DeriveXi(double xi, double eta, double *values)
63 {
64  double t3, t5, t7, t9, t10, t11, t12, t13, t14, t15, t16, t19, t23, t24;
65  double t25, t28, t31, t35, t37, t44, t51, t53, t56, t63;
66 
67  t3 = xi*xi;
68  t5 = xi*eta;
69  t7 = eta*eta;
70  t9 = t3*xi;
71  t10 = 128.0/3.0*t9;
72  t11 = t3*eta;
73  t12 = 128.0*t11;
74  t13 = xi*t7;
75  t14 = 128.0*t13;
76  t15 = t7*eta;
77  t16 = 128.0/3.0*t15;
78  t19 = 208.0/3.0*eta;
79  t23 = 512.0/3.0*t9;
80  t24 = 384.0*t11;
81  t25 = 256.0*t13;
82  t28 = 28.0*eta;
83  t31 = 16.0*t7;
84  t35 = 16.0/3.0*eta;
85  t37 = 64.0*t5;
86  t44 = 128.0*t15;
87  t51 = 32.0*eta;
88  t53 = 32.0*t7;
89  t56 = 32.0*t5;
90  t63 = -t35+t53-t16;
91 
92  values[0] = -25.0/3.0+140.0/3.0*xi+140.0/3.0*eta-80.0*t3-160.0*t5-80.0*t7+t10+t12+t14+t16;
93  values[1] = 16.0-416.0/3.0*xi-t19+288.0*t3+384.0*t5+96.0*t7-t23-t24-t25-t16;
94  values[2] = -12.0+152.0*xi+t28-384.0*t3-288.0*t5-t31+256.0*t9+t24+t14;
95  values[3] = 16.0/3.0-224.0/3.0*xi-t35+224.0*t3+t37-t23-t12;
96  values[4] = -1.0+44.0/3.0*xi-48.0*t3+t10;
97  values[5] = -t19+192.0*t5+192.0*t7-t12-t25-t44;
98  values[6] = 96.0*eta-448.0*t5-224.0*t7+t24+512.0*t13+t44;
99  values[7] = -t51+320.0*t5+t53-t24-t25;
100  values[8] = t35-t37+t12;
101  values[9] = t28-t56-144.0*t7+t14+t44;
102  values[10] = -t51+t37+160.0*t7-t25-t44;
103  values[11] = 4.0*eta-t56-t31+t14;
104  values[12] = t63;
105  values[13] = -t63;
106  values[14] = 0.0;
107 }
108 
109 // values of the derivatives in eta direction
110 static void C_T_P4_2D_DeriveEta(double xi, double eta, double *values)
111 {
112  double t3, t5, t7, t9, t10, t11, t12, t13, t14, t15, t16, t18, t21, t22;
113  double t24, t26, t28, t29, t30, t35, t36, t43, t45, t48;
114 
115  t3 = xi*xi;
116  t5 = xi*eta;
117  t7 = eta*eta;
118  t9 = t3*xi;
119  t10 = 128.0/3.0*t9;
120  t11 = t3*eta;
121  t12 = 128.0*t11;
122  t13 = xi*t7;
123  t14 = 128.0*t13;
124  t15 = t7*eta;
125  t16 = 128.0/3.0*t15;
126  t18 = 208.0/3.0*xi;
127  t21 = 128.0*t9;
128  t22 = 256.0*t11;
129  t24 = 28.0*xi;
130  t26 = 32.0*t5;
131  t28 = 16.0/3.0*xi;
132  t29 = 32.0*t3;
133  t30 = -t28+t29-t10;
134  t35 = 384.0*t13;
135  t36 = 512.0/3.0*t15;
136  t43 = 32.0*xi;
137  t45 = 64.0*t5;
138  t48 = 16.0*t3;
139 
140  values[0] = -25.0/3.0+140.0/3.0*xi+140.0/3.0*eta-80.0*t3-160.0*t5-80.0*t7+t10+t12+t14+t16;
141  values[1] = -t18+192.0*t3+192.0*t5-t21-t22-t14;
142  values[2] = t24-144.0*t3-t26+t21+t12;
143  values[3] = t30;
144  values[4] = 0.0;
145  values[5] = 16.0-t18-416.0/3.0*eta+96.0*t3+384.0*t5+288.0*t7-t10-t22-t35-t36;
146  values[6] = 96.0*xi-224.0*t3-448.0*t5+t21+512.0*t11+t35;
147  values[7] = -t43+160.0*t3+t45-t21-t22;
148  values[8] = -t30;
149  values[9] = -12.0+t24+152.0*eta-t48-288.0*t5-384.0*t7+t12+t35+256.0*t15;
150  values[10] = -t43+t29+320.0*t5-t22-t35;
151  values[11] = 4.0*xi-t48-t26+t12;
152  values[12] = 16.0/3.0-t28-224.0/3.0*eta+t45+224.0*t7-t14-t36;
153  values[13] = t28-t45+t14;
154  values[14] = -1.0+44.0/3.0*eta-48.0*t7+t16;
155 }
156 
157 // values of the derivatives in xi-xi direction
158 static void C_T_P4_2D_DeriveXiXi(double xi, double eta, double *values)
159 {
160  double t3, t4, t5, t6, t7, t8, t12, t13, t14, t21, t34;
161 
162  t3 = xi*xi;
163  t4 = 128.0*t3;
164  t5 = xi*eta;
165  t6 = 256.0*t5;
166  t7 = eta*eta;
167  t8 = 128.0*t7;
168  t12 = 512.0*t3;
169  t13 = 768.0*t5;
170  t14 = 256.0*t7;
171  t21 = 64.0*eta;
172  t34 = -32.0*eta+t8;
173 
174  values[0] = 140.0/3.0-160.0*xi-160.0*eta+t4+t6+t8;
175  values[1] = -416.0/3.0+576.0*xi+384.0*eta-t12-t13-t14;
176  values[2] = 152.0-768.0*xi-288.0*eta+768.0*t3+t13+t8;
177  values[3] = -224.0/3.0+448.0*xi+t21-t12-t6;
178  values[4] = 44.0/3.0-96.0*xi+t4;
179  values[5] = 192.0*eta-t6-t14;
180  values[6] = -448.0*eta+t13+512.0*t7;
181  values[7] = 320.0*eta-t13-t14;
182  values[8] = -t21+t6;
183  values[9] = t34;
184  values[10] = t21-t14;
185  values[11] = t34;
186  values[12] = 0.0;
187  values[13] = 0.0;
188  values[14] = 0.0;
189 }
190 
191 // values of the derivatives in xi-eta direction
192 static void C_T_P4_2D_DeriveXiEta(double xi, double eta, double *values)
193 {
194  double t3, t4, t5, t6, t7, t8, t12, t13, t16, t18, t19, t22, t29, t31;
195  double t37;
196 
197  t3 = xi*xi;
198  t4 = 128.0*t3;
199  t5 = xi*eta;
200  t6 = 256.0*t5;
201  t7 = eta*eta;
202  t8 = 128.0*t7;
203  t12 = 384.0*t3;
204  t13 = 512.0*t5;
205  t16 = 32.0*eta;
206  t18 = 64.0*xi;
207  t19 = -16.0/3.0+t18-t4;
208  t22 = 384.0*t7;
209  t29 = 64.0*eta;
210  t31 = 32.0*xi;
211  t37 = -16.0/3.0+t29-t8;
212 
213  values[0] = 140.0/3.0-160.0*xi-160.0*eta+t4+t6+t8;
214  values[1] = -208.0/3.0+384.0*xi+192.0*eta-t12-t13-t8;
215  values[2] = 28.0-288.0*xi-t16+t12+t6;
216  values[3] = t19;
217  values[4] = 0.0;
218  values[5] = -208.0/3.0+192.0*xi+384.0*eta-t4-t13-t22;
219  values[6] = 96.0-448.0*xi-448.0*eta+t12+1024.0*t5+t22;
220  values[7] = -32.0+320.0*xi+t29-t12-t13;
221  values[8] = -t19;
222  values[9] = 28.0-t31-288.0*eta+t6+t22;
223  values[10] = -32.0+t18+320.0*eta-t13-t22;
224  values[11] = 4.0-t31-t16+t6;
225  values[12] = t37;
226  values[13] = -t37;
227  values[14] = 0.0;
228 }
229 
230 // values of the derivatives in eta-eta direction
231 static void C_T_P4_2D_DeriveEtaEta(double xi, double eta, double *values)
232 {
233  double t3, t4, t5, t6, t7, t8, t11, t14, t17, t18, t23;
234 
235  t3 = xi*xi;
236  t4 = 128.0*t3;
237  t5 = xi*eta;
238  t6 = 256.0*t5;
239  t7 = eta*eta;
240  t8 = 128.0*t7;
241  t11 = 256.0*t3;
242  t14 = -32.0*xi+t4;
243  t17 = 768.0*t5;
244  t18 = 512.0*t7;
245  t23 = 64.0*xi;
246 
247  values[0] = 140.0/3.0-160.0*xi-160.0*eta+t4+t6+t8;
248  values[1] = 192.0*xi-t11-t6;
249  values[2] = t14;
250  values[3] = 0.0;
251  values[4] = 0.0;
252  values[5] = -416.0/3.0+384.0*xi+576.0*eta-t11-t17-t18;
253  values[6] = -448.0*xi+512.0*t3+t17;
254  values[7] = t23-t11;
255  values[8] = 0.0;
256  values[9] = 152.0-288.0*xi-768.0*eta+t4+t17+768.0*t7;
257  values[10] = 320.0*xi-t11-t17;
258  values[11] = t14;
259  values[12] = -224.0/3.0+t23+448.0*eta-t6-t18;
260  values[13] = -t23+t6;
261  values[14] = 44.0/3.0-96.0*eta+t8;
262 }
263 
264 // ***********************************************************************
265 
266 TBaseFunct2D *BF_C_T_P4_2D_Obj = new TBaseFunct2D
267  (15, BF_C_T_P4_2D, BFUnitTriangle,
268  C_T_P4_2D_Funct, C_T_P4_2D_DeriveXi,
269  C_T_P4_2D_DeriveEta, C_T_P4_2D_DeriveXiXi,
270  C_T_P4_2D_DeriveXiEta, C_T_P4_2D_DeriveEtaEta, 4, 4,
271  0, NULL);
Definition: BaseFunct2D.h:27