ParMooN
 All Classes Functions Variables Friends Pages
BF_C_Q_UL2S_2D.h
1 // ***********************************************************************
2 // Q2 element with bubbles, conforming, 2D
3 // ***********************************************************************
4 
5 // base function values
6 static void C_Q_UL2S_2D_Funct(double xi, double eta, double *values)
7 {
8  double t1, t3, t4, t5, t7, t8, t9, t10, t14, t18;
9 
10  t1 = xi*eta;
11  t3 = xi*xi;
12  t4 = 1.0-t3;
13  t5 = (1.0-eta)*t4;
14  t7 = eta*eta;
15  t8 = 1.0-t7;
16  t9 = (1.0-xi)*t8;
17  t10 = t4*t8;
18  t14 = (1.0+xi)*t8;
19  t18 = (1.0+eta)*t4;
20 
21  values[0] = 1.0/4.0-xi/4.0-eta/4.0+t1/4.0-t5/4.0-t9/4.0+t10/4.0;
22  values[1] = t5/2.0-t10/2.0;
23  values[2] = 1.0/4.0+xi/4.0-eta/4.0-t1/4.0-t5/4.0-t14/4.0+t10/4.0;
24  values[3] = t14/2.0-t10/2.0;
25  values[4] = 1.0/4.0+xi/4.0+eta/4.0+t1/4.0-t18/4.0-t14/4.0+t10/4.0;
26  values[5] = t18/2.0-t10/2.0;
27  values[6] = 1.0/4.0-xi/4.0+eta/4.0-t1/4.0-t18/4.0-t9/4.0+t10/4.0;
28  values[7] = t9/2.0-t10/2.0;
29  values[8] = t10;
30 }
31 
32 // values of the derivatives in xi direction
33 static void C_Q_UL2S_2D_DeriveXi(double xi, double eta, double *values)
34 {
35  double t1, t3, t4, t5, t6, t8, t9, t13, t16, t17;
36 
37  t1 = eta/4.0;
38  t3 = (1.0-eta)*xi;
39  t4 = t3/2.0;
40  t5 = eta*eta;
41  t6 = t5/4.0;
42  t8 = xi*(1.0-t5);
43  t9 = t8/2.0;
44  t13 = t5/2.0;
45  t16 = (1.0+eta)*xi;
46  t17 = t16/2.0;
47 
48  values[0] = t1+t4-t6-t9;
49  values[1] = -t3+t8;
50  values[2] = -t1+t4+t6-t9;
51  values[3] = 1.0/2.0-t13+t8;
52  values[4] = t1+t17+t6-t9;
53  values[5] = -t16+t8;
54  values[6] = -t1+t17-t6-t9;
55  values[7] = -1.0/2.0+t13+t8;
56  values[8] = -2.0*t8;
57 }
58 
59 // values of the derivatives in eta direction
60 static void C_Q_UL2S_2D_DeriveEta(double xi, double eta, double *values)
61 {
62  double t1, t2, t3, t5, t6, t8, t9, t11, t14, t15;
63 
64  t1 = xi/4.0;
65  t2 = xi*xi;
66  t3 = t2/4.0;
67  t5 = (1.0-xi)*eta;
68  t6 = t5/2.0;
69  t8 = (1.0-t2)*eta;
70  t9 = t8/2.0;
71  t11 = t2/2.0;
72  t14 = (1.0+xi)*eta;
73  t15 = t14/2.0;
74 
75  values[0] = t1-t3+t6-t9;
76  values[1] = -1.0/2.0+t11+t8;
77  values[2] = -t1-t3+t15-t9;
78  values[3] = -t14+t8;
79  values[4] = t1+t3+t15-t9;
80  values[5] = 1.0/2.0-t11+t8;
81  values[6] = -t1+t3+t6-t9;
82  values[7] = -t5+t8;
83  values[8] = -2.0*t8;
84 }
85 
86 // values of the derivatives in xi-xi direction
87 static void C_Q_UL2S_2D_DeriveXiXi(double xi, double eta, double *values)
88 {
89  double t1, t2, t3, t4;
90 
91  t1 = eta*eta;
92  t2 = -eta+t1;
93  t3 = 1.0-t1;
94  t4 = eta+t1;
95 
96  values[0] = t2/2.0;
97  values[1] = -t2;
98  values[2] = t2/2.0;
99  values[3] = t3;
100  values[4] = t4/2.0;
101  values[5] = -t4;
102  values[6] = t4/2.0;
103  values[7] = t3;
104  values[8] = -2.0*t3;
105 }
106 
107 // values of the derivatives in xi-eta direction
108 static void C_Q_UL2S_2D_DeriveXiEta(double xi, double eta, double *values)
109 {
110  double t1, t2, t3, t5;
111 
112  t1 = xi/2.0;
113  t2 = eta/2.0;
114  t3 = xi*eta;
115  t5 = 2.0*t3;
116 
117  values[0] = 1.0/4.0-t1-t2+t3;
118  values[1] = xi-t5;
119  values[2] = -1.0/4.0-t1+t2+t3;
120  values[3] = -eta-t5;
121  values[4] = 1.0/4.0+t1+t2+t3;
122  values[5] = -xi-t5;
123  values[6] = -1.0/4.0+t1-t2+t3;
124  values[7] = eta-t5;
125  values[8] = 4.0*t3;
126 }
127 
128 // values of the derivatives in eta-eta direction
129 static void C_Q_UL2S_2D_DeriveEtaEta(double xi, double eta, double *values)
130 {
131  double t1, t2, t3, t4;
132 
133  t1 = xi*xi;
134  t2 = -xi+t1;
135  t3 = 1.0-t1;
136  t4 = xi+t1;
137 
138  values[0] = t2/2.0;
139  values[1] = t3;
140  values[2] = t4/2.0;
141  values[3] = -t4;
142  values[4] = t4/2.0;
143  values[5] = t3;
144  values[6] = t2/2.0;
145  values[7] = -t2;
146  values[8] = -2.0*t3;
147 }
148 
149 // ***********************************************************************
150 
151 TBaseFunct2D *BF_C_Q_UL2S_2D_Obj = new TBaseFunct2D
152  (9, BF_C_Q_UL2S_2D, BFUnitSquare,
153  C_Q_UL2S_2D_Funct, C_Q_UL2S_2D_DeriveXi,
154  C_Q_UL2S_2D_DeriveEta, C_Q_UL2S_2D_DeriveXiXi,
155  C_Q_UL2S_2D_DeriveXiEta, C_Q_UL2S_2D_DeriveEtaEta, 2, 2,
156  0, NULL);
Definition: BaseFunct2D.h:27