ParMooN
 All Classes Functions Variables Friends Pages
BF_D_Q_Q2_2D.h
1 // ***********************************************************************
2 // Q2 element, discontinous, 2D, quadrilateral
3 // ***********************************************************************
4 
5 // base function values
6 static void D_Q_Q2_2D_Funct(double xi, double eta, double *values)
7 {
8  double t1, t6, t9, t13;
9 
10  t1 = xi*xi;
11  t6 = -1.0+3.0*t1;
12  t9 = eta*eta;
13  t13 = -1.0+3.0*t9;
14 
15  values[0] = 1.0;
16  values[1] = xi;
17  values[2] = -1.0/2.0+3.0/2.0*t1;
18  values[3] = eta;
19  values[4] = xi*eta;
20  values[5] = t6*eta/2.0;
21  values[6] = -1.0/2.0+3.0/2.0*t9;
22  values[7] = xi*t13/2.0;
23  values[8] = t6*t13/4.0;
24 }
25 
26 // values of the derivatives in xi direction
27 static void D_Q_Q2_2D_DeriveXi(double xi, double eta, double *values)
28 {
29  double t4;
30 
31  t4 = eta*eta;
32 
33  values[0] = 0.0;
34  values[1] = 1.0;
35  values[2] = 3.0*xi;
36  values[3] = 0.0;
37  values[4] = eta;
38  values[5] = 3.0*xi*eta;
39  values[6] = 0.0;
40  values[7] = -1.0/2.0+3.0/2.0*t4;
41  values[8] = 3.0/2.0*xi*(-1.0+3.0*t4);
42 }
43 
44 // values of the derivatives in eta direction
45 static void D_Q_Q2_2D_DeriveEta(double xi, double eta, double *values)
46 {
47  double t1;
48 
49  t1 = xi*xi;
50 
51  values[0] = 0.0;
52  values[1] = 0.0;
53  values[2] = 0.0;
54  values[3] = 1.0;
55  values[4] = xi;
56  values[5] = -1.0/2.0+3.0/2.0*t1;
57  values[6] = 3.0*eta;
58  values[7] = 3.0*xi*eta;
59  values[8] = 3.0/2.0*(-1.0+3.0*t1)*eta;
60 }
61 
62 // values of the derivatives in xi-xi direction
63 static void D_Q_Q2_2D_DeriveXiXi(double xi, double eta,
64  double *values)
65 {
66  double t2;
67 
68  t2 = eta*eta;
69 
70  values[0] = 0.0;
71  values[1] = 0.0;
72  values[2] = 3.0;
73  values[3] = 0.0;
74  values[4] = 0.0;
75  values[5] = 3.0*eta;
76  values[6] = 0.0;
77  values[7] = 0.0;
78  values[8] = -3.0/2.0+9.0/2.0*t2;
79 }
80 
81 // values of the derivatives in xi-eta direction
82 static void D_Q_Q2_2D_DeriveXiEta(double xi, double eta,
83  double *values)
84 {
85  values[0] = 0.0;
86  values[1] = 0.0;
87  values[2] = 0.0;
88  values[3] = 0.0;
89  values[4] = 1.0;
90  values[5] = 3.0*xi;
91  values[6] = 0.0;
92  values[7] = 3.0*eta;
93  values[8] = 9.0*xi*eta;
94 }
95 
96 // values of the derivatives in eta-eta direction
97 static void D_Q_Q2_2D_DeriveEtaEta(double xi, double eta,
98  double *values)
99 {
100  double t2;
101 
102  t2 = xi*xi;
103 
104  values[0] = 0.0;
105  values[1] = 0.0;
106  values[2] = 0.0;
107  values[3] = 0.0;
108  values[4] = 0.0;
109  values[5] = 0.0;
110  values[6] = 3.0;
111  values[7] = 3.0*xi;
112  values[8] = -3.0/2.0+9.0/2.0*t2;
113 }
114 
115 // ***********************************************************************
116 
117 TBaseFunct2D *BF_D_Q_Q2_2D_Obj = new TBaseFunct2D
118  (9, BF_D_Q_Q2_2D, BFUnitSquare,
119  D_Q_Q2_2D_Funct, D_Q_Q2_2D_DeriveXi,
120  D_Q_Q2_2D_DeriveEta, D_Q_Q2_2D_DeriveXiXi,
121  D_Q_Q2_2D_DeriveXiEta, D_Q_Q2_2D_DeriveEtaEta, 2, 2,
122  0, NULL);
Definition: BaseFunct2D.h:27