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