ParMooN
 All Classes Functions Variables Friends Pages
BF_C_Q_Q3_2D.h
1 // ***********************************************************************
2 // Q3 element, conforming, 2D
3 // ***********************************************************************
4 
5 // base function values
6 static void C_Q_Q3_2D_Funct(double xi, double eta, double *values)
7 {
8  double xi0 = -0.625E-1*(3.0*xi+1.0)*(3.0*xi-1.0)*(xi-1.0);
9  double xi1 = 0.5625*(xi+1.0)*(3.0*xi-1.0)*(xi-1.0);
10  double xi2 = -0.5625*(xi+1.0)*(3.0*xi+1.0)*(xi-1.0);
11  double xi3 = 0.625E-1*(xi+1.0)*(3.0*xi+1.0)*(3.0*xi-1.0);
12  double eta0 = -0.625E-1*(3.0*eta+1.0)*(3.0*eta-1.0)*(eta-1.0);
13  double eta1 = 0.5625*(eta+1.0)*(3.0*eta-1.0)*(eta-1.0);
14  double eta2 = -0.5625*(eta+1.0)*(3.0*eta+1.0)*(eta-1.0);
15  double eta3 = 0.625E-1*(eta+1.0)*(3.0*eta+1.0)*(3.0*eta-1.0);
16 
17  values[0]=xi0*eta0;
18  values[1]=xi1*eta0;
19  values[2]=xi2*eta0;
20  values[3]=xi3*eta0;
21  values[4]=xi0*eta1;
22  values[5]=xi1*eta1;
23  values[6]=xi2*eta1;
24  values[7]=xi3*eta1;
25  values[8]=xi0*eta2;
26  values[9]=xi1*eta2;
27  values[10]=xi2*eta2;
28  values[11]=xi3*eta2;
29  values[12]=xi0*eta3;
30  values[13]=xi1*eta3;
31  values[14]=xi2*eta3;
32  values[15]=xi3*eta3;
33 }
34 
35 // values of the derivatives in xi direction
36 static void C_Q_Q3_2D_DeriveXi(double xi, double eta, double *values)
37 {
38  double t1 = xi*xi;
39  double xi0 = -0.16875E1*t1+0.1125E1*xi+0.625E-1;
40  double xi1 = 0.50625E1*t1-0.1125E1*xi-0.16875E1;
41  double xi2 = -0.50625E1*t1-0.1125E1*xi+0.16875E1;
42  double xi3 = 0.16875E1*t1-0.625E-1+0.1125E1*xi;
43  double eta0 = -0.625E-1*(3.0*eta+1.0)*(3.0*eta-1.0)*(eta-1.0);
44  double eta1 = 0.5625*(eta+1.0)*(3.0*eta-1.0)*(eta-1.0);
45  double eta2 = -0.5625*(eta+1.0)*(3.0*eta+1.0)*(eta-1.0);
46  double eta3 = 0.625E-1*(eta+1.0)*(3.0*eta+1.0)*(3.0*eta-1.0);
47 
48  values[0]=xi0*eta0;
49  values[1]=xi1*eta0;
50  values[2]=xi2*eta0;
51  values[3]=xi3*eta0;
52  values[4]=xi0*eta1;
53  values[5]=xi1*eta1;
54  values[6]=xi2*eta1;
55  values[7]=xi3*eta1;
56  values[8]=xi0*eta2;
57  values[9]=xi1*eta2;
58  values[10]=xi2*eta2;
59  values[11]=xi3*eta2;
60  values[12]=xi0*eta3;
61  values[13]=xi1*eta3;
62  values[14]=xi2*eta3;
63  values[15]=xi3*eta3;
64 }
65 
66 // values of the derivatives in eta direction
67 static void C_Q_Q3_2D_DeriveEta(double xi, double eta, double *values)
68 {
69  double t1=eta*eta;
70  double xi0 = -0.625E-1*(3.0*xi+1.0)*(3.0*xi-1.0)*(xi-1.0);
71  double xi1 = 0.5625*(xi+1.0)*(3.0*xi-1.0)*(xi-1.0);
72  double xi2 = -0.5625*(xi+1.0)*(3.0*xi+1.0)*(xi-1.0);
73  double xi3 = 0.625E-1*(xi+1.0)*(3.0*xi+1.0)*(3.0*xi-1.0);
74  double eta0 = -0.16875E1*t1+0.1125E1*eta+0.625E-1;
75  double eta1 = 0.50625E1*t1-0.1125E1*eta-0.16875E1;
76  double eta2 = -0.50625E1*t1-0.1125E1*eta+0.16875E1;
77  double eta3 = 0.16875E1*t1-0.625E-1+0.1125E1*eta;
78 
79  values[0]=xi0*eta0;
80  values[1]=xi1*eta0;
81  values[2]=xi2*eta0;
82  values[3]=xi3*eta0;
83  values[4]=xi0*eta1;
84  values[5]=xi1*eta1;
85  values[6]=xi2*eta1;
86  values[7]=xi3*eta1;
87  values[8]=xi0*eta2;
88  values[9]=xi1*eta2;
89  values[10]=xi2*eta2;
90  values[11]=xi3*eta2;
91  values[12]=xi0*eta3;
92  values[13]=xi1*eta3;
93  values[14]=xi2*eta3;
94  values[15]=xi3*eta3;
95 }
96 // values of the derivatives in xi-xi direction
97 static void C_Q_Q3_2D_DeriveXiXi(double xi, double eta, double *values)
98 {
99  double xi0 = -0.3375E1*xi+0.1125E1;
100  double xi1 = 1.0125E1*xi-0.1125E1;
101  double xi2 = -1.0125E1*xi-0.1125E1;
102  double xi3 = 0.3375E1*xi+0.1125E1;
103  double eta0 = -0.625E-1*(3.0*eta+1.0)*(3.0*eta-1.0)*(eta-1.0);
104  double eta1 = 0.5625*(eta+1.0)*(3.0*eta-1.0)*(eta-1.0);
105  double eta2 = -0.5625*(eta+1.0)*(3.0*eta+1.0)*(eta-1.0);
106  double eta3 = 0.625E-1*(eta+1.0)*(3.0*eta+1.0)*(3.0*eta-1.0);
107 
108  values[0]=xi0*eta0;
109  values[1]=xi1*eta0;
110  values[2]=xi2*eta0;
111  values[3]=xi3*eta0;
112  values[4]=xi0*eta1;
113  values[5]=xi1*eta1;
114  values[6]=xi2*eta1;
115  values[7]=xi3*eta1;
116  values[8]=xi0*eta2;
117  values[9]=xi1*eta2;
118  values[10]=xi2*eta2;
119  values[11]=xi3*eta2;
120  values[12]=xi0*eta3;
121  values[13]=xi1*eta3;
122  values[14]=xi2*eta3;
123  values[15]=xi3*eta3;
124 }
125 // values of the derivatives in xi-eta direction
126 static void C_Q_Q3_2D_DeriveXiEta(double xi, double eta, double *values)
127 {
128  double t1 = xi*xi;
129  double xi0 = -0.16875E1*t1+0.1125E1*xi+0.625E-1;
130  double xi1 = 0.50625E1*t1-0.1125E1*xi-0.16875E1;
131  double xi2 = -0.50625E1*t1-0.1125E1*xi+0.16875E1;
132  double xi3 = 0.16875E1*t1-0.625E-1+0.1125E1*xi;
133  double t2=eta*eta;
134  double eta0 = -0.16875E1*t2+0.1125E1*eta+0.625E-1;
135  double eta1 = 0.50625E1*t2-0.1125E1*eta-0.16875E1;
136  double eta2 = -0.50625E1*t2-0.1125E1*eta+0.16875E1;
137  double eta3 = 0.16875E1*t2-0.625E-1+0.1125E1*eta;
138 
139  values[0]=xi0*eta0;
140  values[1]=xi1*eta0;
141  values[2]=xi2*eta0;
142  values[3]=xi3*eta0;
143  values[4]=xi0*eta1;
144  values[5]=xi1*eta1;
145  values[6]=xi2*eta1;
146  values[7]=xi3*eta1;
147  values[8]=xi0*eta2;
148  values[9]=xi1*eta2;
149  values[10]=xi2*eta2;
150  values[11]=xi3*eta2;
151  values[12]=xi0*eta3;
152  values[13]=xi1*eta3;
153  values[14]=xi2*eta3;
154  values[15]=xi3*eta3;
155 }
156 // values of the derivatives in eta-eta direction
157 static void C_Q_Q3_2D_DeriveEtaEta(double xi, double eta, double *values)
158 {
159 
160  double xi0 = -0.625E-1*(3.0*xi+1.0)*(3.0*xi-1.0)*(xi-1.0);
161  double xi1 = 0.5625*(xi+1.0)*(3.0*xi-1.0)*(xi-1.0);
162  double xi2 = -0.5625*(xi+1.0)*(3.0*xi+1.0)*(xi-1.0);
163  double xi3 = 0.625E-1*(xi+1.0)*(3.0*xi+1.0)*(3.0*xi-1.0);
164  double eta0 = -0.3375E1*eta+0.1125E1;
165  double eta1 = 1.0125E1*eta-0.1125E1;
166  double eta2 = -1.0125E1*eta-0.1125E1;
167  double eta3 = 0.3375E1*eta+0.1125E1;
168 
169  values[0]=xi0*eta0;
170  values[1]=xi1*eta0;
171  values[2]=xi2*eta0;
172  values[3]=xi3*eta0;
173  values[4]=xi0*eta1;
174  values[5]=xi1*eta1;
175  values[6]=xi2*eta1;
176  values[7]=xi3*eta1;
177  values[8]=xi0*eta2;
178  values[9]=xi1*eta2;
179  values[10]=xi2*eta2;
180  values[11]=xi3*eta2;
181  values[12]=xi0*eta3;
182  values[13]=xi1*eta3;
183  values[14]=xi2*eta3;
184  values[15]=xi3*eta3;
185 }
186 
187 // ***********************************************************************
188 
189 TBaseFunct2D *BF_C_Q_Q3_2D_Obj = new TBaseFunct2D
190  (16, BF_C_Q_Q3_2D, BFUnitSquare,
191  C_Q_Q3_2D_Funct, C_Q_Q3_2D_DeriveXi,
192  C_Q_Q3_2D_DeriveEta, C_Q_Q3_2D_DeriveXiXi,
193  C_Q_Q3_2D_DeriveXiEta, C_Q_Q3_2D_DeriveEtaEta, 3, 3,
194  0, NULL);
Definition: BaseFunct2D.h:27