ParMooN
 All Classes Functions Variables Friends Pages
BF_C_T_UL2_2D.h
1 // ***********************************************************************
2 // P2 element with bubbles, conforming, 2D
3 // ***********************************************************************
4 
5 // base function values
6 static void C_T_UL2_2D_Funct(double xi, double eta, double *values)
7 {
8  double t3, t4, t5, t6, t7, t8, t9, t10, t13, t14, t16, t17, t21, t22;
9  double t24, t27, t34;
10 
11  t3 = xi*xi;
12  t4 = 2.0*t3;
13  t5 = xi*eta;
14  t6 = 4.0*t5;
15  t7 = eta*eta;
16  t8 = 2.0*t7;
17  t9 = 1.0-xi-eta;
18  t10 = t5*t9;
19  t13 = t3*eta*t9;
20  t14 = 63.0*t13;
21  t16 = xi*t7*t9;
22  t17 = 63.0*t16;
23  t21 = 48.0*t10;
24  t22 = 84.0*t16;
25  t24 = 21.0*t10;
26  t27 = 84.0*t13;
27  t34 = 105.0*t10;
28 
29  values[0] = 1.0-3.0*xi-3.0*eta+t4+t6+t8-42.0*t10+t14+t17;
30  values[1] = 4.0*xi-4.0*t3-t6-t21+t22;
31  values[2] = -xi+t4+t24-t14;
32  values[3] = t6+36.0*t10-t27-t22;
33  values[4] = -eta+t8+t24-t17;
34  values[5] = 4.0*eta-t6-4.0*t7-t21+t27;
35  values[6] = 60.0*t10;
36  values[7] = -t34+210.0*t13+105.0*t16;
37  values[8] = -t34+105.0*t13+210.0*t16;
38 }
39 
40 // values of the derivatives in xi direction
41 static void C_T_UL2_2D_DeriveXi(double xi, double eta, double *values)
42 {
43  double t1, t2, t3, t4, t6, t8, t9, t10, t11, t12, t13, t14, t15, t16;
44  double t17, t20, t21, t22, t23, t25, t26, t30, t31, t36, t37;
45 
46  t1 = 4.0*xi;
47  t2 = 4.0*eta;
48  t3 = 1.0-xi-eta;
49  t4 = eta*t3;
50  t6 = xi*eta;
51  t8 = t6*t3;
52  t9 = 126.0*t8;
53  t10 = xi*xi;
54  t11 = t10*eta;
55  t12 = 63.0*t11;
56  t13 = eta*eta;
57  t14 = t13*t3;
58  t15 = 63.0*t14;
59  t16 = xi*t13;
60  t17 = 63.0*t16;
61  t20 = 48.0*t4;
62  t21 = 48.0*t6;
63  t22 = 84.0*t14;
64  t23 = 84.0*t16;
65  t25 = 21.0*t4;
66  t26 = 21.0*t6;
67  t30 = 168.0*t8;
68  t31 = 84.0*t11;
69  t36 = 105.0*t4;
70  t37 = 105.0*t6;
71 
72  values[0] = -3.0+t1+t2-42.0*t4+42.0*t6+t9-t12+t15-t17;
73  values[1] = 4.0-8.0*xi-t2-t20+t21+t22-t23;
74  values[2] = -1.0+t1+t25-t26-t9+t12;
75  values[3] = t2+36.0*t4-36.0*t6-t30+t31-t22+t23;
76  values[4] = t25-t26-t15+t17;
77  values[5] = -t2-t20+t21+t30-t31;
78  values[6] = 60.0*t4-60.0*t6;
79  values[7] = -t36+t37+420.0*t8-210.0*t11+105.0*t14-105.0*t16;
80  values[8] = -t36+t37+210.0*t8-105.0*t11+210.0*t14-210.0*t16;
81 }
82 
83 // values of the derivatives in eta direction
84 static void C_T_UL2_2D_DeriveEta(double xi, double eta, double *values)
85 {
86  double t1, t2, t3, t4, t6, t8, t9, t10, t11, t12, t13, t14, t15, t16;
87  double t17, t19, t20, t21, t22, t24, t25, t29, t30, t36, t37;
88 
89  t1 = 4.0*xi;
90  t2 = 4.0*eta;
91  t3 = 1.0-xi-eta;
92  t4 = xi*t3;
93  t6 = xi*eta;
94  t8 = xi*xi;
95  t9 = t8*t3;
96  t10 = 63.0*t9;
97  t11 = t8*eta;
98  t12 = 63.0*t11;
99  t13 = t6*t3;
100  t14 = 126.0*t13;
101  t15 = eta*eta;
102  t16 = xi*t15;
103  t17 = 63.0*t16;
104  t19 = 48.0*t4;
105  t20 = 48.0*t6;
106  t21 = 168.0*t13;
107  t22 = 84.0*t16;
108  t24 = 21.0*t4;
109  t25 = 21.0*t6;
110  t29 = 84.0*t9;
111  t30 = 84.0*t11;
112  t36 = 105.0*t4;
113  t37 = 105.0*t6;
114 
115  values[0] = -3.0+t1+t2-42.0*t4+42.0*t6+t10-t12+t14-t17;
116  values[1] = -t1-t19+t20+t21-t22;
117  values[2] = t24-t25-t10+t12;
118  values[3] = t1+36.0*t4-36.0*t6-t29+t30-t21+t22;
119  values[4] = -1.0+t2+t24-t25-t14+t17;
120  values[5] = 4.0-t1-8.0*eta-t19+t20+t29-t30;
121  values[6] = 60.0*t4-60.0*t6;
122  values[7] = -t36+t37+210.0*t9-210.0*t11+210.0*t13-105.0*t16;
123  values[8] = -t36+t37+105.0*t9-105.0*t11+420.0*t13-210.0*t16;
124 }
125 
126 // values of the derivatives in xi-xi direction
127 static void C_T_UL2_2D_DeriveXiXi(double xi, double eta, double *values)
128 {
129  double t3, t4, t5, t6, t7, t8, t10, t11, t13, t16, t17, t22;
130 
131  t3 = eta*(1.0-xi-eta);
132  t4 = 126.0*t3;
133  t5 = xi*eta;
134  t6 = 252.0*t5;
135  t7 = eta*eta;
136  t8 = 126.0*t7;
137  t10 = 96.0*eta;
138  t11 = 168.0*t7;
139  t13 = 42.0*eta;
140  t16 = 168.0*t3;
141  t17 = 336.0*t5;
142  t22 = 210.0*eta;
143 
144  values[0] = 4.0+84.0*eta+t4-t6-t8;
145  values[1] = -8.0+t10-t11;
146  values[2] = 4.0-t13-t4+t6;
147  values[3] = -72.0*eta-t16+t17+t11;
148  values[4] = -t13+t8;
149  values[5] = t10+t16-t17;
150  values[6] = -120.0*eta;
151  values[7] = t22+420.0*t3-840.0*t5-210.0*t7;
152  values[8] = t22+210.0*t3-420.0*t5-420.0*t7;
153 }
154 
155 // values of the derivatives in xi-eta direction
156 static void C_T_UL2_2D_DeriveXiEta(double xi, double eta, double *values)
157 {
158  double t3, t4, t5, t6, t8, t9, t10, t11, t12, t13, t15, t16, t17, t18;
159  double t19, t21, t22, t23, t27, t29, t36, t37, t39;
160 
161  t3 = 1.0-xi-eta;
162  t4 = xi*t3;
163  t5 = 126.0*t4;
164  t6 = xi*eta;
165  t8 = xi*xi;
166  t9 = 63.0*t8;
167  t10 = eta*t3;
168  t11 = 126.0*t10;
169  t12 = eta*eta;
170  t13 = 63.0*t12;
171  t15 = 96.0*xi;
172  t16 = 96.0*eta;
173  t17 = 168.0*t10;
174  t18 = 84.0*t12;
175  t19 = 168.0*t6;
176  t21 = 42.0*xi;
177  t22 = 42.0*eta;
178  t23 = 126.0*t6;
179  t27 = 168.0*t4;
180  t29 = 84.0*t8;
181  t36 = 210.0*xi;
182  t37 = 210.0*eta;
183  t39 = 630.0*t6;
184 
185  values[0] = -38.0+84.0*xi+84.0*eta+t5-252.0*t6-t9+t11-t13;
186  values[1] = -52.0+t15+t16+t17-t18-t19;
187  values[2] = 21.0-t21-t22-t5+t23+t9;
188  values[3] = 40.0-72.0*xi-72.0*eta-t27+336.0*t6+t29-t17+t18;
189  values[4] = 21.0-t21-t22-t11+t13+t23;
190  values[5] = -52.0+t15+t16+t27-t19-t29;
191  values[6] = 60.0-120.0*xi-120.0*eta;
192  values[7] = -105.0+t36+t37+420.0*t4-t39-210.0*t8+210.0*t10-105.0*t12;
193  values[8] = -105.0+t36+t37+210.0*t4-t39-105.0*t8+420.0*t10-210.0*t12;
194 }
195 
196 // values of the derivatives in eta-eta direction
197 static void C_T_UL2_2D_DeriveEtaEta(double xi, double eta, double *values)
198 {
199  double t2, t3, t5, t6, t7, t8, t10, t11, t12, t14, t17, t22;
200 
201  t2 = xi*xi;
202  t3 = 126.0*t2;
203  t5 = xi*(1.0-xi-eta);
204  t6 = 126.0*t5;
205  t7 = xi*eta;
206  t8 = 252.0*t7;
207  t10 = 96.0*xi;
208  t11 = 168.0*t5;
209  t12 = 336.0*t7;
210  t14 = 42.0*xi;
211  t17 = 168.0*t2;
212  t22 = 210.0*xi;
213 
214  values[0] = 4.0+84.0*xi-t3+t6-t8;
215  values[1] = t10+t11-t12;
216  values[2] = -t14+t3;
217  values[3] = -72.0*xi+t17-t11+t12;
218  values[4] = 4.0-t14-t6+t8;
219  values[5] = -8.0+t10-t17;
220  values[6] = -120.0*xi;
221  values[7] = t22-420.0*t2+210.0*t5-420.0*t7;
222  values[8] = t22-210.0*t2+420.0*t5-840.0*t7;
223 }
224 
225 // ***********************************************************************
226 
227 TBaseFunct2D *BF_C_T_UL2_2D_Obj = new TBaseFunct2D
228  (9, BF_C_T_UL2_2D, BFUnitTriangle,
229  C_T_UL2_2D_Funct, C_T_UL2_2D_DeriveXi,
230  C_T_UL2_2D_DeriveEta, C_T_UL2_2D_DeriveXiXi,
231  C_T_UL2_2D_DeriveXiEta, C_T_UL2_2D_DeriveEtaEta, 4, 2,
232  0, NULL);
Definition: BaseFunct2D.h:27