ParMooN
 All Classes Functions Variables Friends Pages
BF_D_Q_P5_2D.h
1 // ***********************************************************************
2 // P5 element, discontinous, 2D, quadrilateral
3 // ***********************************************************************
4 
5 // base function values
6 static void D_Q_P5_2D_Funct(double xi, double eta, double *values)
7 {
8  double t1 = xi*xi;
9  double t4 = xi*eta;
10  double t5 = eta*eta;
11  double t8 = t1*xi;
12  double t13 = -1.0+3.0*t1;
13  double t14 = t13*eta;
14  double t17 = -1.0+3.0*t5;
15  double t20 = t5*eta;
16  double t24 = t1*t1;
17  double t30 = xi*(5.0*t1-3.0);
18  double t36 = 5.0*t5-3.0;
19  double t39 = t5*t5;
20 
21  values[0] = 1.0;
22  values[1] = xi;
23  values[2] = eta;
24  values[3] = -1.0/2.0+3.0/2.0*t1;
25  values[4] = t4;
26  values[5] = -1.0/2.0+3.0/2.0*t5;
27  values[6] = 5.0/2.0*t8-3.0/2.0*xi;
28  values[7] = t14/2.0;
29  values[8] = xi*t17/2.0;
30  values[9] = 5.0/2.0*t20-3.0/2.0*eta;
31  values[10] = 3.0/8.0+35.0/8.0*t24-15.0/4.0*t1;
32  values[11] = t30*eta/2.0;
33  values[12] = t13*t17/4.0;
34  values[13] = t4*t36/2.0;
35  values[14] = 3.0/8.0+35.0/8.0*t39-15.0/4.0*t5;
36  values[15] = 63.0/8.0*t24*xi-35.0/4.0*t8+15.0/8.0*xi;
37  values[16] = (3.0+35.0*t24-30.0*t1)*eta/8.0;
38  values[17] = t30*t17/4.0;
39  values[18] = t14*t36/4.0;
40  values[19] = xi*(3.0+35.0*t39-30.0*t5)/8.0;
41  values[20] = 63.0/8.0*t39*eta-35.0/4.0*t20+15.0/8.0*eta;
42 }
43 
44 // values of the derivatives in xi direction
45 static void D_Q_P5_2D_DeriveXi(double xi, double eta, double *values)
46 {
47  double t2 = xi*xi;
48  double t5 = xi*eta;
49  double t7 = eta*eta;
50  double t23 = 5.0*t7-3.0;
51  double t26 = t2*t2;
52  double t42 = t7*t7;
53 
54  values[0] = 0.0;
55  values[1] = 1.0;
56  values[2] = 0.0;
57  values[3] = 3.0*xi;
58  values[4] = eta;
59  values[5] = 0.0;
60  values[6] = 15.0/2.0*t2-3.0/2.0;
61  values[7] = 3.0*t5;
62  values[8] = -1.0/2.0+3.0/2.0*t7;
63  values[9] = 0.0;
64  values[10] = 35.0/2.0*t2*xi-15.0/2.0*xi;
65  values[11] = 15.0/2.0*t2*eta-3.0/2.0*eta;
66  values[12] = 3.0/2.0*xi*(-1.0+3.0*t7);
67  values[13] = eta*t23/2.0;
68  values[14] = 0.0;
69  values[15] = 315.0/8.0*t26-105.0/4.0*t2+15.0/8.0;
70  values[16] = 5.0/2.0*xi*(7.0*t2-3.0)*eta;
71  values[17] = -15.0/4.0*t2+45.0/4.0*t2*t7+3.0/4.0-9.0/4.0*t7;
72  values[18] = 3.0/2.0*t5*t23;
73  values[19] = 3.0/8.0+35.0/8.0*t42-15.0/4.0*t7;
74  values[20] = 0.0;
75 }
76 
77 // values of the derivatives in eta direction
78 static void D_Q_P5_2D_DeriveEta(double xi, double eta, double *values)
79 {
80  double t2 = xi*xi;
81  double t5 = xi*eta;
82  double t7 = eta*eta;
83  double t12 = xi*(5.0*t2-3.0);
84  double t26 = t2*t2;
85  double t41 = t7*t7;
86 
87  values[0] = 0.0;
88  values[1] = 0.0;
89  values[2] = 1.0;
90  values[3] = 0.0;
91  values[4] = xi;
92  values[5] = 3.0*eta;
93  values[6] = 0.0;
94  values[7] = -1.0/2.0+3.0/2.0*t2;
95  values[8] = 3.0*t5;
96  values[9] = 15.0/2.0*t7-3.0/2.0;
97  values[10] = 0.0;
98  values[11] = t12/2.0;
99  values[12] = 3.0/2.0*(-1.0+3.0*t2)*eta;
100  values[13] = 15.0/2.0*xi*t7-3.0/2.0*xi;
101  values[14] = 35.0/2.0*t7*eta-15.0/2.0*eta;
102  values[15] = 0.0;
103  values[16] = 3.0/8.0+35.0/8.0*t26-15.0/4.0*t2;
104  values[17] = 3.0/2.0*t12*eta;
105  values[18] = -15.0/4.0*t7+3.0/4.0+45.0/4.0*t2*t7-9.0/4.0*t2;
106  values[19] = 5.0/2.0*t5*(7.0*t7-3.0);
107  values[20] = 315.0/8.0*t41-105.0/4.0*t7+15.0/8.0;
108 }
109 
110 // values of the derivatives in xi-xi direction
111 static void D_Q_P5_2D_DeriveXiXi(double xi, double eta,
112  double *values)
113 {
114  double t3 = xi*xi;
115  double t8 = eta*eta;
116 
117  values[0] = 0.0;
118  values[1] = 0.0;
119  values[2] = 0.0;
120  values[3] = 3.0;
121  values[4] = 0.0;
122  values[5] = 0.0;
123  values[6] = 15.0*xi;
124  values[7] = 3.0*eta;
125  values[8] = 0.0;
126  values[9] = 0.0;
127  values[10] = 105.0/2.0*t3-15.0/2.0;
128  values[11] = 15.0*xi*eta;
129  values[12] = -3.0/2.0+9.0/2.0*t8;
130  values[13] = 0.0;
131  values[14] = 0.0;
132  values[15] = 315.0/2.0*t3*xi-105.0/2.0*xi;
133  values[16] = 105.0/2.0*t3*eta-15.0/2.0*eta;
134  values[17] = -15.0/2.0*xi+45.0/2.0*xi*t8;
135  values[18] = 3.0/2.0*eta*(5.0*t8-3.0);
136  values[19] = 0.0;
137  values[20] = 0.0;
138 }
139 
140 // values of the derivatives in xi-eta direction
141 static void D_Q_P5_2D_DeriveXiEta(double xi, double eta,
142  double *values)
143 {
144  double t3 = xi*xi;
145  double t8 = eta*eta;
146 
147  values[0] = 0.0;
148  values[1] = 0.0;
149  values[2] = 0.0;
150  values[3] = 0.0;
151  values[4] = 1.0;
152  values[5] = 0.0;
153  values[6] = 0.0;
154  values[7] = 3.0*xi;
155  values[8] = 3.0*eta;
156  values[9] = 0.0;
157  values[10] = 0.0;
158  values[11] = 15.0/2.0*t3-3.0/2.0;
159  values[12] = 9.0*xi*eta;
160  values[13] = -3.0/2.0+15.0/2.0*t8;
161  values[14] = 0.0;
162  values[15] = 0.0;
163  values[16] = 5.0/2.0*xi*(7.0*t3-3.0);
164  values[17] = 45.0/2.0*t3*eta-9.0/2.0*eta;
165  values[18] = 45.0/2.0*xi*t8-9.0/2.0*xi;
166  values[19] = 35.0/2.0*t8*eta-15.0/2.0*eta;
167  values[20] = 0.0;
168 }
169 
170 // values of the derivatives in eta-eta direction
171 static void D_Q_P5_2D_DeriveEtaEta(double xi, double eta,
172  double *values)
173 {
174  double t3 = xi*xi;
175  double t8 = eta*eta;
176 
177  values[0] = 0.0;
178  values[1] = 0.0;
179  values[2] = 0.0;
180  values[3] = 0.0;
181  values[4] = 0.0;
182  values[5] = 3.0;
183  values[6] = 0.0;
184  values[7] = 0.0;
185  values[8] = 3.0*xi;
186  values[9] = 15.0*eta;
187  values[10] = 0.0;
188  values[11] = 0.0;
189  values[12] = 9.0/2.0*t3-3.0/2.0;
190  values[13] = 15.0*xi*eta;
191  values[14] = 105.0/2.0*t8-15.0/2.0;
192  values[15] = 0.0;
193  values[16] = 0.0;
194  values[17] = 3.0/2.0*xi*(5.0*t3-3.0);
195  values[18] = -15.0/2.0*eta+45.0/2.0*t3*eta;
196  values[19] = 105.0/2.0*xi*t8-15.0/2.0*xi;
197  values[20] = 315.0/2.0*t8*eta-105.0/2.0*eta;
198 }
199 
200 // ***********************************************************************
201 
202 TBaseFunct2D *BF_D_Q_P5_2D_Obj = new TBaseFunct2D
203  (21, BF_D_Q_P5_2D, BFUnitSquare,
204  D_Q_P5_2D_Funct, D_Q_P5_2D_DeriveXi,
205  D_Q_P5_2D_DeriveEta, D_Q_P5_2D_DeriveXiXi,
206  D_Q_P5_2D_DeriveXiEta, D_Q_P5_2D_DeriveEtaEta, 5, 5,
207  0, NULL);
Definition: BaseFunct2D.h:27