ParMooN
 All Classes Functions Variables Friends Pages
BF_C_Q_Q2_2D.h
1 // ***********************************************************************
2 // Q2 element, conforming, 2D
3 // ***********************************************************************
4 
5 // base function values
6 static void C_Q_Q2_2D_Funct(double xi, double eta, double *values)
7 {
8  double xi0=0.5*xi*(xi-1);
9  double xi1=1-xi*xi;
10  double xi2=0.5*xi*(xi+1);
11  double eta0=0.5*eta*(eta-1);
12  double eta1=1-eta*eta;
13  double eta2=0.5*eta*(eta+1);
14 
15  values[0]=xi0*eta0;
16  values[1]=xi1*eta0;
17  values[2]=xi2*eta0;
18  values[3]=xi0*eta1;
19  values[4]=xi1*eta1;
20  values[5]=xi2*eta1;
21  values[6]=xi0*eta2;
22  values[7]=xi1*eta2;
23  values[8]=xi2*eta2;
24 }
25 
26 // values of the derivatives in xi direction
27 static void C_Q_Q2_2D_DeriveXi(double xi, double eta, double *values)
28 {
29  double xi0=xi-0.5;
30  double xi1=-2*xi;
31  double xi2=xi+0.5;
32  double eta0=0.5*eta*(eta-1);
33  double eta1=1-eta*eta;
34  double eta2=0.5*eta*(eta+1);
35 
36  values[0]=xi0*eta0;
37  values[1]=xi1*eta0;
38  values[2]=xi2*eta0;
39  values[3]=xi0*eta1;
40  values[4]=xi1*eta1;
41  values[5]=xi2*eta1;
42  values[6]=xi0*eta2;
43  values[7]=xi1*eta2;
44  values[8]=xi2*eta2;
45 }
46 
47 // values of the derivatives in eta direction
48 static void C_Q_Q2_2D_DeriveEta(double xi, double eta, double *values)
49 {
50  double xi0=0.5*xi*(xi-1);
51  double xi1=1-xi*xi;
52  double xi2=0.5*xi*(xi+1);
53  double eta0=eta-0.5;
54  double eta1=-2*eta;
55  double eta2=eta+0.5;
56 
57  values[0]=xi0*eta0;
58  values[1]=xi1*eta0;
59  values[2]=xi2*eta0;
60  values[3]=xi0*eta1;
61  values[4]=xi1*eta1;
62  values[5]=xi2*eta1;
63  values[6]=xi0*eta2;
64  values[7]=xi1*eta2;
65  values[8]=xi2*eta2;
66 }
67 // values of the derivatives in xi-xi direction
68 static void C_Q_Q2_2D_DeriveXiXi(double xi, double eta, double *values)
69 {
70  double eta0=0.5*eta*(eta-1);
71  double eta1=1-eta*eta;
72  double eta2=0.5*eta*(eta+1);
73 
74  values[0]=eta0;
75  values[1]=-2*eta0;
76  values[2]=eta0;
77  values[3]=eta1;
78  values[4]=-2*eta1;
79  values[5]=eta1;
80  values[6]=eta2;
81  values[7]=-2*eta2;
82  values[8]=eta2;
83 }
84 // values of the derivatives in xi-eta direction
85 static void C_Q_Q2_2D_DeriveXiEta(double xi, double eta, double *values)
86 {
87  double xi0=xi-0.5;
88  double xi1=-2*xi;
89  double xi2=xi+0.5;
90  double eta0=eta-0.5;
91  double eta1=-2*eta;
92  double eta2=eta+0.5;
93 
94  values[0]=xi0*eta0;
95  values[1]=xi1*eta0;
96  values[2]=xi2*eta0;
97  values[3]=xi0*eta1;
98  values[4]=xi1*eta1;
99  values[5]=xi2*eta1;
100  values[6]=xi0*eta2;
101  values[7]=xi1*eta2;
102  values[8]=xi2*eta2;
103 }
104 
105 // values of the derivatives in eta-eta direction
106 static void C_Q_Q2_2D_DeriveEtaEta(double xi, double eta, double *values)
107 {
108  double xi0=0.5*xi*(xi-1);
109  double xi1=1-xi*xi;
110  double xi2=0.5*xi*(xi+1);
111 
112  values[0]=xi0;
113  values[1]=xi1;
114  values[2]=xi2;
115  values[3]=-2*xi0;
116  values[4]=-2*xi1;
117  values[5]=-2*xi2;
118  values[6]=xi0;
119  values[7]=xi1;
120  values[8]=xi2;
121 }
122 
123 
124 // ***********************************************************************
125 
126 TBaseFunct2D *BF_C_Q_Q2_2D_Obj = new TBaseFunct2D
127  (9, BF_C_Q_Q2_2D, BFUnitSquare,
128  C_Q_Q2_2D_Funct, C_Q_Q2_2D_DeriveXi,
129  C_Q_Q2_2D_DeriveEta, C_Q_Q2_2D_DeriveXiXi,
130  C_Q_Q2_2D_DeriveXiEta, C_Q_Q2_2D_DeriveEtaEta, 2, 2,
131  0, NULL);
Definition: BaseFunct2D.h:27