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