ParMooN
 All Classes Functions Variables Friends Pages
BF_D_T_P4_2D.h
1 // ***********************************************************************
2 // P4 element, discontinous, 2D, triangle
3 // ***********************************************************************
4 
5 // base function values
6 static void D_T_P4_2D_Funct(double xi, double eta, double *values)
7 {
8  double t7, t9, t10, t11, t26, t27, t29, t32, t34, t40, t65, t67, t69;
9  double t70, t74, t80, t82, t84, t87, t91, t99, t114, t127, t140;
10 
11  t7 = xi*xi;
12  t9 = xi*eta;
13  t10 = 6.0*t9;
14  t11 = eta*eta;
15  t26 = 768.0*t9;
16  t27 = t7*eta;
17  t29 = xi*t11;
18  t32 = t7*xi;
19  t34 = t11*eta;
20  t40 = 1152.0*t9;
21  t65 = xi*t34;
22  t67 = t32*eta;
23  t69 = t7*t11;
24  t70 = 4500.0*t69;
25  t74 = 3000.0*t9;
26  t80 = t7*t7;
27  t82 = t11*t11;
28  t84 = 50.0+1000.0*t65+7000.0*t67+t70-1000.0*xi-200.0*eta+4500.0*t7
29  +t74-9000.0*t27-3000.0*t29+300.0*t11-7000.0*t32-200.0*t34
30  +3500.0*t80+50.0*t82;
31  t87 = 9000.0*t69;
32  t91 = 4800.0*t9;
33  t99 = 50.0+3200.0*t65+8000.0*t67+t87-800.0*xi-400.0*eta+3000.0*t7+t91
34  -12000.0*t27-7200.0*t29+900.0*t11-4000.0*t32-800.0*t34
35  +1750.0*t80+250.0*t82;
36  t114 = 50.0+6000.0*t65+6000.0*t67+10800.0*t69-600.0*xi-600.0*eta
37  +1800.0*t7+5400.0*t9-10800.0*t27-10800.0*t29+1800.0*t11
38  -2000.0*t32-2000.0*t34+750.0*t80+750.0*t82;
39  t127 = 50.0+8000.0*t65+3200.0*t67+t87-400.0*xi-800.0*eta+900.0*t7+t91
40  -7200.0*t27-12000.0*t29+3000.0*t11-800.0*t32-4000.0*t34
41  +250.0*t80+1750.0*t82;
42  t140 = 50.0+7000.0*t65+1000.0*t67+t70-200.0*xi-1000.0*eta+300.0*t7+t74
43  -3000.0*t27-9000.0*t29+4500.0*t11-200.0*t32-7000.0*t34
44  +50.0*t80+3500.0*t82;
45 
46  values[0] = 1.0;
47  values[1] = -8.0+24.0*xi;
48  values[2] = -8.0+24.0*eta;
49  values[3] = 1.0-6.0*xi-2.0*eta+6.0*t7+t10+t11;
50  values[4] = 1.0-4.0*xi-4.0*eta+3.0*t7+8.0*t9+3.0*t11;
51  values[5] = 1.0-2.0*xi-6.0*eta+t7+t10+6.0*t11;
52  values[6] = -32.0+384.0*xi+96.0*eta-960.0*t7-t26+960.0*t27+384.0*t29
53  -96.0*t11+640.0*t32+32.0*t34;
54  values[7] = -32.0+288.0*xi+192.0*eta-576.0*t7-t40+1152.0*t27+864.0*t29
55  -288.0*t11+320.0*t32+128.0*t34;
56  values[8] = -32.0+192.0*xi+288.0*eta-288.0*t7-t40+864.0*t27+1152.0*t29
57  -576.0*t11+128.0*t32+320.0*t34;
58  values[9] = -32.0+96.0*xi+384.0*eta-96.0*t7-t26+384.0*t27+960.0*t29
59  -960.0*t11+32.0*t32+640.0*t34;
60  values[10] = t84;
61  values[11] = t99;
62  values[12] = t114;
63  values[13] = t127;
64  values[14] = t140;
65 }
66 
67 // values of the derivatives in xi direction
68 static void D_T_P4_2D_DeriveXi(double xi, double eta, double *values)
69 {
70  double t2, t10, t11, t13, t15, t19, t34, t36, t38, t39, t41;
71  double t45, t50, t52;
72 
73  t2 = 6.0*eta;
74  t10 = 768.0*eta;
75  t11 = xi*eta;
76  t13 = eta*eta;
77  t15 = xi*xi;
78  t19 = 1152.0*eta;
79  t34 = t13*eta;
80  t36 = t15*eta;
81  t38 = xi*t13;
82  t39 = 9000.0*t38;
83  t41 = 3000.0*eta;
84  t45 = t15*xi;
85  t50 = 18000.0*t38;
86  t52 = 4800.0*eta;
87 
88  values[0] = 0.0;
89  values[1] = 24.0;
90  values[2] = 0.0;
91  values[3] = -6.0+12.0*xi+t2;
92  values[4] = -4.0+6.0*xi+8.0*eta;
93  values[5] = -2.0+2.0*xi+t2;
94  values[6] = 384.0-1920.0*xi-t10+1920.0*t11+384.0*t13+1920.0*t15;
95  values[7] = 288.0-1152.0*xi-t19+2304.0*t11+864.0*t13+960.0*t15;
96  values[8] = 192.0-576.0*xi-t19+1728.0*t11+1152.0*t13+384.0*t15;
97  values[9] = 96.0-192.0*xi-t10+768.0*t11+960.0*t13+96.0*t15;
98  values[10] = 1000.0*t34+21000.0*t36+t39-1000.0+9000.0*xi+t41-18000.0*t11-3000.0*t13-21000.0*t15+14000.0*t45;
99  values[11] = 3200.0*t34+24000.0*t36+t50-800.0+6000.0*xi+t52-24000.0*t11-7200.0*t13-12000.0*t15+7000.0*t45;
100  values[12] = 6000.0*t34+18000.0*t36+21600.0*t38-600.0+3600.0*xi+5400.0*eta-21600.0*t11-10800.0*t13-6000.0*t15+3000.0*t45;
101  values[13] = 8000.0*t34+9600.0*t36+t50-400.0+1800.0*xi+t52-14400.0*t11-12000.0*t13-2400.0*t15+1000.0*t45;
102  values[14] = 7000.0*t34+3000.0*t36+t39-200.0+600.0*xi+t41-6000.0*t11-9000.0*t13-600.0*t15+200.0*t45;
103 }
104 
105 // values of the derivatives in eta direction
106 static void D_T_P4_2D_DeriveEta(double xi, double eta, double *values)
107 {
108  double t1, t9, t10, t12, t15, t18, t34, t36, t38, t39, t40;
109  double t45, t50, t51;
110 
111  t1 = 6.0*xi;
112  t9 = 768.0*xi;
113  t10 = xi*xi;
114  t12 = xi*eta;
115  t15 = eta*eta;
116  t18 = 1152.0*xi;
117  t34 = t15*xi;
118  t36 = t10*xi;
119  t38 = t10*eta;
120  t39 = 9000.0*t38;
121  t40 = 3000.0*xi;
122  t45 = t15*eta;
123  t50 = 18000.0*t38;
124  t51 = 4800.0*xi;
125 
126  values[0] = 0.0;
127  values[1] = 0.0;
128  values[2] = 24.0;
129  values[3] = -2.0+t1+2.0*eta;
130  values[4] = -4.0+8.0*xi+6.0*eta;
131  values[5] = -6.0+t1+12.0*eta;
132  values[6] = 96.0-t9+960.0*t10+768.0*t12-192.0*eta+96.0*t15;
133  values[7] = 192.0-t18+1152.0*t10+1728.0*t12-576.0*eta+384.0*t15;
134  values[8] = 288.0-t18+864.0*t10+2304.0*t12-1152.0*eta+960.0*t15;
135  values[9] = 384.0-t9+384.0*t10+1920.0*t12-1920.0*eta+1920.0*t15;
136  values[10] = 3000.0*t34+7000.0*t36+t39-200.0+t40-9000.0*t10-6000.0*t12+600.0*eta-600.0*t15+200.0*t45;
137  values[11] = 9600.0*t34+8000.0*t36+t50-400.0+t51-12000.0*t10-14400.0*t12+1800.0*eta-2400.0*t15+1000.0*t45;
138  values[12] = 18000.0*t34+6000.0*t36+21600.0*t38-600.0+5400.0*xi-10800.0*t10-21600.0*t12+3600.0*eta-6000.0*t15+3000.0*t45;
139  values[13] = 24000.0*t34+3200.0*t36+t50-800.0+t51-7200.0*t10-24000.0*t12+6000.0*eta-12000.0*t15+7000.0*t45;
140  values[14] = 21000.0*t34+1000.0*t36+t39-1000.0+t40-3000.0*t10-18000.0*t12+9000.0*eta-21000.0*t15+14000.0*t45;
141 }
142 
143 // values of the derivatives in xi-xi direction
144 static void D_T_P4_2D_DeriveXiXi(double xi, double eta,
145  double *values)
146 {
147  double t13, t15, t16, t19, t23;
148 
149  t13 = xi*eta;
150  t15 = eta*eta;
151  t16 = 9000.0*t15;
152  t19 = xi*xi;
153  t23 = 18000.0*t15;
154 
155  values[0] = 0.0;
156  values[1] = 0.0;
157  values[2] = 0.0;
158  values[3] = 12.0;
159  values[4] = 6.0;
160  values[5] = 2.0;
161  values[6] = -1920.0+1920.0*eta+3840.0*xi;
162  values[7] = -1152.0+2304.0*eta+1920.0*xi;
163  values[8] = -576.0+1728.0*eta+768.0*xi;
164  values[9] = -192.0+768.0*eta+192.0*xi;
165  values[10] = 42000.0*t13+t16+9000.0-18000.0*eta-42000.0*xi+42000.0*t19;
166  values[11] = 48000.0*t13+t23+6000.0-24000.0*eta-24000.0*xi+21000.0*t19;
167  values[12] = 36000.0*t13+21600.0*t15+3600.0-21600.0*eta-12000.0*xi+9000.0*t19;
168  values[13] = 19200.0*t13+t23+1800.0-14400.0*eta-4800.0*xi+3000.0*t19;
169  values[14] = 6000.0*t13+t16+600.0-6000.0*eta-1200.0*xi+600.0*t19;
170 }
171 
172 // values of the derivatives in xi-eta direction
173 static void D_T_P4_2D_DeriveXiEta(double xi, double eta,
174  double *values)
175 {
176  double t13, t15, t17, t18, t24;
177 
178  t13 = eta*eta;
179  t15 = xi*xi;
180  t17 = xi*eta;
181  t18 = 18000.0*t17;
182  t24 = 36000.0*t17;
183 
184  values[0] = 0.0;
185  values[1] = 0.0;
186  values[2] = 0.0;
187  values[3] = 6.0;
188  values[4] = 8.0;
189  values[5] = 6.0;
190  values[6] = -768.0+1920.0*xi+768.0*eta;
191  values[7] = -1152.0+2304.0*xi+1728.0*eta;
192  values[8] = -1152.0+1728.0*xi+2304.0*eta;
193  values[9] = -768.0+768.0*xi+1920.0*eta;
194  values[10] = 3000.0*t13+21000.0*t15+t18+3000.0-18000.0*xi-6000.0*eta;
195  values[11] = 9600.0*t13+24000.0*t15+t24+4800.0-24000.0*xi-14400.0*eta;
196  values[12] = 18000.0*t13+18000.0*t15+43200.0*t17+5400.0-21600.0*xi-21600.0*eta;
197  values[13] = 24000.0*t13+9600.0*t15+t24+4800.0-14400.0*xi-24000.0*eta;
198  values[14] = 21000.0*t13+3000.0*t15+t18+3000.0-6000.0*xi-18000.0*eta;
199 }
200 
201 // values of the derivatives in eta-eta direction
202 static void D_T_P4_2D_DeriveEtaEta(double xi, double eta,
203  double *values)
204 {
205  double t13, t15, t16, t19, t23;
206 
207  t13 = xi*eta;
208  t15 = xi*xi;
209  t16 = 9000.0*t15;
210  t19 = eta*eta;
211  t23 = 18000.0*t15;
212 
213  values[0] = 0.0;
214  values[1] = 0.0;
215  values[2] = 0.0;
216  values[3] = 2.0;
217  values[4] = 6.0;
218  values[5] = 12.0;
219  values[6] = 768.0*xi-192.0+192.0*eta;
220  values[7] = 1728.0*xi-576.0+768.0*eta;
221  values[8] = 2304.0*xi-1152.0+1920.0*eta;
222  values[9] = 1920.0*xi-1920.0+3840.0*eta;
223  values[10] = 6000.0*t13+t16-6000.0*xi+600.0-1200.0*eta+600.0*t19;
224  values[11] = 19200.0*t13+t23-14400.0*xi+1800.0-4800.0*eta+3000.0*t19;
225  values[12] = 36000.0*t13+21600.0*t15+3600.0-21600.0*xi-12000.0*eta+9000.0*t19;
226  values[13] = 48000.0*t13+t23+6000.0-24000.0*eta-24000.0*xi+21000.0*t19;
227  values[14] = 42000.0*t13+t16-18000.0*xi+9000.0-42000.0*eta+42000.0*t19;
228 }
229 
230 // ***********************************************************************
231 
232 TBaseFunct2D *BF_D_T_P4_2D_Obj = new TBaseFunct2D
233  (15, BF_D_T_P4_2D, BFUnitTriangle,
234  D_T_P4_2D_Funct, D_T_P4_2D_DeriveXi,
235  D_T_P4_2D_DeriveEta, D_T_P4_2D_DeriveXiXi,
236  D_T_P4_2D_DeriveXiEta, D_T_P4_2D_DeriveEtaEta, 4, 4,
237  0, NULL);
Definition: BaseFunct2D.h:27