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