ParMooN
 All Classes Functions Variables Friends Pages
BF_C_T_B2_2D.h
1 // ***********************************************************************
2 // conforming P2 element with cell bubble
3 // ***********************************************************************
4 
5 // base function values
6 static void C_T_B2_2D_Funct(double xi, double eta, double *values)
7 {
8  double t1 = 1-xi-eta;
9  double t3 = xi*eta;
10  double t4 = t3*t1;
11 
12  values[0] = 2*t1*(0.5-xi-eta);
13  values[1] = 4*xi*t1-20*t4;
14  values[2] = 2*xi*(xi-0.5);
15  values[3] = 4*eta*t1-20*t4;
16  values[4] = 4*t3-20*t4;
17  values[5] = 2*eta*(eta-0.5);
18  values[6] = 20*t4;
19 }
20 
21 // values of the derivatives in xi direction
22 static void C_T_B2_2D_DeriveXi(double xi, double eta, double *values)
23 {
24  double t2 = eta*(1-xi-eta);
25  double t3 = xi*eta;
26 
27  values[0] = -3+4*xi+4*eta;
28  values[1] = 4-8*xi-4*eta-20*t2+20*t3;
29  values[2] = 4*xi-1;
30  values[3] = -4*eta-20*t2+20*t3;
31  values[4] = 4*eta-20*t2+20*t3;
32  values[5] = 0;
33  values[6] = 20*t2-20*t3;
34 }
35 
36 // values of the derivatives in eta direction
37 static void C_T_B2_2D_DeriveEta(double xi, double eta, double *values)
38 {
39  double t2 = xi*(1-xi-eta);
40  double t3 = xi*eta;
41 
42  values[0] = -3+4*xi+4*eta;
43  values[1] = -4*xi-20*t2+20*t3;
44  values[2] = 0;
45  values[3] = 4-4*xi-8*eta-20*t2+20*t3;
46  values[4] = 4*xi-20*t2+20*t3;
47  values[5] = 4*eta-1;
48  values[6] = 20*t2-20*t3;
49 }
50 
51 // values of the derivatives in xi-xi direction
52 static void C_T_B2_2D_DeriveXiXi(double xi, double eta, double *values)
53 {
54  values[0] = 4;
55  values[1] = -8+40*eta;
56  values[2] = 4;
57  values[3] = 40*eta;
58  values[4] = 40*eta;
59  values[5] = 0;
60  values[6] = -40*eta;
61 }
62 
63 // values of the derivatives in xi-eta direction
64 static void C_T_B2_2D_DeriveXiEta(double xi, double eta, double *values)
65 {
66  double t1 = -24+40*xi+40*eta;
67 
68  values[0] = 4;
69  values[1] = t1;
70  values[2] = 0;
71  values[3] = t1;
72  values[4] = -16+40*xi+40*eta;
73  values[5] = 0;
74  values[6] = 20-40*xi-40*eta;
75 }
76 
77 // values of the derivatives in eta-eta direction
78 static void C_T_B2_2D_DeriveEtaEta(double xi, double eta, double *values)
79 {
80  values[0] = 4;
81  values[1] = 40*xi;
82  values[2] = 0;
83  values[3] = -8+40*xi;
84  values[4] = 40*xi;
85  values[5] = 4;
86  values[6] = -40*xi;
87 }
88 
89 // ***********************************************************************
90 
91 TBaseFunct2D *BF_C_T_B2_2D_Obj = new TBaseFunct2D
92  (7, BF_C_T_B2_2D, BFUnitTriangle,
93  C_T_B2_2D_Funct, C_T_B2_2D_DeriveXi,
94  C_T_B2_2D_DeriveEta, C_T_B2_2D_DeriveXiXi,
95  C_T_B2_2D_DeriveXiEta, C_T_B2_2D_DeriveEtaEta, 3, 2,
96  0, NULL);
Definition: BaseFunct2D.h:27