ParMooN
 All Classes Functions Variables Friends Pages
BF_C_Q_EL1_2D.h
1 // ***********************************************************************
2 // Q1 element with space dependent exponential bubble, conforming, 2D
3 // *value : IN = space data, OUT = basis values
4 // Author : Sashi
5 // History: 26.05.2011
6 // ***********************************************************************
7 
8 // base function values
9 static void C_Q_EL1_2D_Funct(double xi, double eta, double *values)
10 {
11  double t1, t2, t6, t9,t12, t15, t18, t21, t41, t48, t57, t64, t65, t67, t71 ;
12  double P, Q;
13 
14  P = values[0];
15  Q = values[1];
16 
17  t1 = 1.0-xi;
18  t2 = 1.0-eta;
19  t6 = exp(-0.1577350269e1*P);
20  t9 = exp(-2.0*P);
21  t12 = exp(-0.1577350269e1*Q);
22  t15 = exp(-2.0*Q);
23  t18 = exp(-0.4226497308*P);
24  t21 = exp(-0.4226497308*Q);
25  t41 = -4.0*t6+0.4000000001e1*t9-4.0*t12+0.4000000001e1*t15
26  -4.0*t18-4.0*t21+0.4000000001e1+0.4000000001e1*t9*t15
27  -4.0*t9*t12-4.0*t6*t15+4.0*t6*t12-4.0*t18*t15+4.0*t18*t12
28  -4.0*t9*t21+4.0*t6*t21+4.0*t18*t21;
29  t48 = exp(-P*t1);
30  t57 = exp(-Q*t2);
31  t64 = 1/t41*(-1.0+t15)*(-1.0+t9)*(1.0/2.0+xi/2.0
32  -(t48-t9)/(1.0-t9))*(1.0/2.0+eta/2.0-(t57-t15)/(1.0-t15));
33  t65 = 0.4e1*t64;
34  t67 = 1.0+xi;
35  t71 = 1.0+eta;
36 
37  values[0] = t1*t2/4.0-t65;
38  values[1] = t67*t2/4.0-t65;
39  values[2] = t1*t71/4.0-t65;
40  values[3] = t67*t71/4.0-t65;
41  values[4] = 4.0*t64;
42 }
43 
44 // values of the derivatives in xi direction
45 static void C_Q_EL1_2D_DeriveXi(double xi, double eta, double *values)
46 {
47  double t1, t3, t6, t9, t12, t15, t18, t38, t45, t55, t62, t63;
48  double P, Q;
49 
50  P = values[0];
51  Q = values[1];
52 
53  t1 = eta/4.0;
54  t3 = exp(-0.1577350269e1*P);
55  t6 = exp(-2.0*P);
56  t9 = exp(-0.1577350269e1*Q);
57  t12 = exp(-2.0*Q);
58  t15 = exp(-0.4226497308*P);
59  t18 = exp(-0.4226497308*Q);
60  t38 = -4.0*t3+0.4000000001e1*t6-4.0*t9+0.4000000001e1*t12
61  -4.0*t15-4.0*t18+0.4000000001e1+0.4000000001e1*t6*t12
62  -4.0*t6*t9-4.0*t3*t12+4.0*t3*t9-4.0*t15*t12+4.0*t9*t15
63  -4.0*t6*t18+4.0*t3*t18+4.0*t18*t15;
64  t45 = exp(-P*(1.0-xi));
65  t55 = exp(-Q*(1.0-eta));
66  t62 = 1/t38*(-1.0+t12)*(-1.0+t6)*(1.0/2.0-P*t45/(1.0-t6))*(1.0/2.0+eta/2.0-(t55-t12)/(1.0-t12));
67  t63 = 0.4e1*t62;
68 
69  values[0] = -1.0/4.0+t1-t63;
70  values[1] = 1.0/4.0-t1-t63;
71  values[2] = -1.0/4.0-t1-t63;
72  values[3] = 1.0/4.0+t1-t63;
73  values[4] = 4.0*t62;
74 }
75 
76 // values of the derivatives in eta direction
77 static void C_Q_EL1_2D_DeriveEta(double xi, double eta, double *values)
78 {
79  double t1, t3, t6, t9, t12, t15, t18, t38, t46, t55, t62, t63;
80  double P, Q;
81 
82  P = values[0];
83  Q = values[1];
84 
85  t1 = xi/4.0;
86  t3 = exp(-0.1577350269e1*P);
87  t6 = exp(-2.0*P);
88  t9 = exp(-0.1577350269e1*Q);
89  t12 = exp(-2.0*Q);
90  t15 = exp(-0.4226497308*P);
91  t18 = exp(-0.4226497308*Q);
92  t38 = -4.0*t3+0.4000000001e1*t6-4.0*t9+0.4000000001e1*t12
93  -4.0*t15-4.0*t18+0.4000000001e1+0.4000000001e1*t6*t12
94  -4.0*t6*t9-4.0*t3*t12+4.0*t3*t9-4.0*t15*t12+4.0*t9*t15
95  -4.0*t6*t18+4.0*t3*t18+4.0*t18*t15;
96  t46 = exp(-P*(1.0-xi));
97  t55 = exp(-Q*(1.0-eta));
98  t62 = 1/t38*(-1.0+t12)*(-1.0+t6)*(1.0/2.0+xi/2.0-(t46-t6)/(1.0-t6))*(1.0/2.0-Q*t55/(1.0-t12));
99  t63 = 0.4e1*t62;
100 
101  values[0] = -1.0/4.0+t1-t63;
102  values[1] = -1.0/4.0-t1-t63;
103  values[2] = 1.0/4.0-t1-t63;
104  values[3] = 1.0/4.0+t1-t63;
105  values[4] = 4.0*t62;
106 }
107 
108 // values of the derivatives in xi-xi direction
109 static void C_Q_EL1_2D_DeriveXiXi(double xi, double eta, double *values)
110 {
111  double t2, t5,t8, t11, t14, t17, t37, t43, t46, t53, t61, t62;
112  double P, Q;
113 
114  P = values[0];
115  Q = values[1];
116 
117  t2 = exp(-0.1577350269e1*P);
118  t5 = exp(-2.0*P);
119  t8 = exp(-0.1577350269e1*Q);
120  t11 = exp(-2.0*Q);
121  t14 = exp(-0.4226497308*P);
122  t17 = exp(-0.4226497308*Q);
123  t37 = -4.0*t2+0.4000000001e1*t5-4.0*t8+0.4000000001e1*t11
124  -4.0*t14-4.0*t17+0.4000000001e1+0.4000000001e1*t5*t11
125  -4.0*t5*t8-4.0*t2*t11+4.0*t2*t8-4.0*t14*t11+4.0*t14*t8
126  -4.0*t5*t17+4.0*t2*t17+4.0*t14*t17;
127  t43 = P*P;
128  t46 = exp(-P*(1.0-xi));
129  t53 = exp(-Q*(1.0-eta));
130  t61 = 1/t37*(-1.0+t11)*(-1.0+t5)*t43*t46/(1.0-t5)*(1.0/2.0+eta/2.0-(t53-t11)/(1.0-t11));
131  t62 = 0.4e1*t61;
132 
133  values[0] = t62;
134  values[1] = t62;
135  values[2] = t62;
136  values[3] = t62;
137  values[4] = -4.0*t61;
138 }
139 
140 // values of the derivatives in xi-eta direction
141 static void C_Q_EL1_2D_DeriveXiEta(double xi, double eta, double *values)
142 {
143  double t2, t5, t8, t11, t14, t17, t37, t44, t53, t60, t61, t62, t63;
144  double P, Q;
145 
146  P = values[0];
147  Q = values[1];
148 
149  t2 = exp(-0.1577350269e1*P);
150  t5 = exp(-2.0*P);
151  t8 = exp(-0.1577350269e1*Q);
152  t11 = exp(-2.0*Q);
153  t14 = exp(-0.4226497308*P);
154  t17 = exp(-0.4226497308*Q);
155  t37 = -4.0*t2+0.4000000001e1*t5-4.0*t8+0.4000000001e1*t11
156  -4.0*t14-4.0*t17+0.4000000001e1+0.4000000001e1*t5*t11
157  -4.0*t5*t8-4.0*t2*t11+4.0*t2*t8-4.0*t14*t11+4.0*t14*t8
158  -4.0*t5*t17+4.0*t2*t17+4.0*t14*t17;
159  t44 = exp(-P*(1.0-xi));
160  t53 = exp(-Q*(1.0-eta));
161  t60 = 1/t37*(-1.0+t11)*(-1.0+t5)*(1.0/2.0-P*t44/(1.0-t5))*(1.0/2.0-Q*t53/(1.0-t11));
162  t61 = 0.4e1*t60;
163  t62 = 1.0/4.0-t61;
164  t63 = -1.0/4.0-t61;
165 
166  values[0] = t62;
167  values[1] = t63;
168  values[2] = t63;
169  values[3] = t62;
170  values[4] = 4.0*t60;
171 }
172 
173 // values of the derivatives in eta-eta direction
174 static void C_Q_EL1_2D_DeriveEtaEta(double xi, double eta, double *values)
175 {
176  double t2, t5, t8, t11, t14, t17, t37, t46, t52, t56, t61, t62;
177  double P, Q;
178 
179  P = values[0];
180  Q = values[1];
181 
182  t2 = exp(-0.1577350269e1*P);
183  t5 = exp(-2.0*P);
184  t8 = exp(-0.1577350269e1*Q);
185  t11 = exp(-2.0*Q);
186  t14 = exp(-0.4226497308*P);
187  t17 = exp(-0.4226497308*Q);
188  t37 = -4.0*t2+0.4000000001e1*t5-4.0*t8+0.4000000001e1*t11-4.0*t14
189  -4.0*t17+0.4000000001e1+0.4000000001e1*t5*t11-4.0*t5*t8
190  -4.0*t2*t11+4.0*t2*t8-4.0*t14*t11+4.0*t14*t8-4.0*t5*t17
191  +4.0*t2*t17+4.0*t14*t17;
192  t46 = exp(-P*(1.0-xi));
193  t52 = Q*Q;
194  t56 = exp(-Q*(1.0-eta));
195  t61 = 1/t37*(-1.0+t11)*(-1.0+t5)*(1.0/2.0+xi/2.0-(t46-t5)/(1.0-t5))*t52*t56/(1.0-t11);
196  t62 = 0.4e1*t61;
197 
198  values[0] = t62;
199  values[1] = t62;
200  values[2] = t62;
201  values[3] = t62;
202  values[4] = -4.0*t61;
203 }
204 
205 // ***********************************************************************
206 
207 TBaseFunct2D *BF_C_Q_EL1_2D_Obj = new TBaseFunct2D
208  (5, BF_C_Q_EL1_2D, BFUnitSquare,
209  C_Q_EL1_2D_Funct, C_Q_EL1_2D_DeriveXi,
210  C_Q_EL1_2D_DeriveEta, C_Q_EL1_2D_DeriveXiXi,
211  C_Q_EL1_2D_DeriveXiEta, C_Q_EL1_2D_DeriveEtaEta, 2, 1,
212  0, NULL, TRUE);
Definition: BaseFunct2D.h:27