ParMooN
 All Classes Functions Variables Friends Pages
BF_D_T_P3_2D.h
1 // ***********************************************************************
2 // P3 element, discontinous, 2D, triangle
3 // ***********************************************************************
4 
5 // base function values
6 static void D_T_P3_2D_Funct(double xi, double eta, double *values)
7 {
8  double t7, t9, t10, t11, t26, t27, t29, t32, t34, t40;
9 
10  t7 = xi*xi;
11  t9 = xi*eta;
12  t10 = 6.0*t9;
13  t11 = eta*eta;
14  t26 = 768.0*t9;
15  t27 = t7*eta;
16  t29 = xi*t11;
17  t32 = t7*xi;
18  t34 = t11*eta;
19  t40 = 1152.0*t9;
20 
21  values[0] = 1.0;
22  values[1] = -8.0+24.0*xi;
23  values[2] = -8.0+24.0*eta;
24  values[3] = 1.0-6.0*xi-2.0*eta+6.0*t7+t10+t11;
25  values[4] = 1.0-4.0*xi-4.0*eta+3.0*t7+8.0*t9+3.0*t11;
26  values[5] = 1.0-2.0*xi-6.0*eta+t7+t10+6.0*t11;
27  values[6] = -32.0+384.0*xi+96.0*eta-960.0*t7-t26+960.0*t27+384.0*t29
28  -96.0*t11+640.0*t32+32.0*t34;
29  values[7] = -32.0+288.0*xi+192.0*eta-576.0*t7-t40+1152.0*t27+864.0*t29
30  -288.0*t11+320.0*t32+128.0*t34;
31  values[8] = -32.0+192.0*xi+288.0*eta-288.0*t7-t40+864.0*t27+1152.0*t29
32  -576.0*t11+128.0*t32+320.0*t34;
33  values[9] = -32.0+96.0*xi+384.0*eta-96.0*t7-t26+384.0*t27+960.0*t29
34  -960.0*t11+32.0*t32+640.0*t34;
35 }
36 
37 // values of the derivatives in xi direction
38 static void D_T_P3_2D_DeriveXi(double xi, double eta, double *values)
39 {
40  double t2, t10, t11, t13, t15, t19;
41 
42  t2 = 6.0*eta;
43  t10 = 768.0*eta;
44  t11 = xi*eta;
45  t13 = eta*eta;
46  t15 = xi*xi;
47  t19 = 1152.0*eta;
48 
49  values[0] = 0.0;
50  values[1] = 24.0;
51  values[2] = 0.0;
52  values[3] = -6.0+12.0*xi+t2;
53  values[4] = -4.0+6.0*xi+8.0*eta;
54  values[5] = -2.0+2.0*xi+t2;
55  values[6] = 384.0-1920.0*xi-t10+1920.0*t11+384.0*t13+1920.0*t15;
56  values[7] = 288.0-1152.0*xi-t19+2304.0*t11+864.0*t13+960.0*t15;
57  values[8] = 192.0-576.0*xi-t19+1728.0*t11+1152.0*t13+384.0*t15;
58  values[9] = 96.0-192.0*xi-t10+768.0*t11+960.0*t13+96.0*t15;
59 }
60 
61 // values of the derivatives in eta direction
62 static void D_T_P3_2D_DeriveEta(double xi, double eta, double *values)
63 {
64  double t1, t9, t10, t12, t15, t18;
65 
66  t1 = 6.0*xi;
67  t9 = 768.0*xi;
68  t10 = xi*xi;
69  t12 = xi*eta;
70  t15 = eta*eta;
71  t18 = 1152.0*xi;
72 
73  values[0] = 0.0;
74  values[1] = 0.0;
75  values[2] = 24.0;
76  values[3] = -2.0+t1+2.0*eta;
77  values[4] = -4.0+8.0*xi+6.0*eta;
78  values[5] = -6.0+t1+12.0*eta;
79  values[6] = 96.0-t9+960.0*t10+768.0*t12-192.0*eta+96.0*t15;
80  values[7] = 192.0-t18+1152.0*t10+1728.0*t12-576.0*eta+384.0*t15;
81  values[8] = 288.0-t18+864.0*t10+2304.0*t12-1152.0*eta+960.0*t15;
82  values[9] = 384.0-t9+384.0*t10+1920.0*t12-1920.0*eta+1920.0*t15;
83 }
84 
85 // values of the derivatives in xi-xi direction
86 static void D_T_P3_2D_DeriveXiXi(double xi, double eta,
87  double *values)
88 {
89  values[0] = 0.0;
90  values[1] = 0.0;
91  values[2] = 0.0;
92  values[3] = 12.0;
93  values[4] = 6.0;
94  values[5] = 2.0;
95  values[6] = -1920.0+1920.0*eta+3840.0*xi;
96  values[7] = -1152.0+2304.0*eta+1920.0*xi;
97  values[8] = -576.0+1728.0*eta+768.0*xi;
98  values[9] = -192.0+768.0*eta+192.0*xi;
99 }
100 
101 // values of the derivatives in xi-eta direction
102 static void D_T_P3_2D_DeriveXiEta(double xi, double eta,
103  double *values)
104 {
105  values[0] = 0.0;
106  values[1] = 0.0;
107  values[2] = 0.0;
108  values[3] = 6.0;
109  values[4] = 8.0;
110  values[5] = 6.0;
111  values[6] = -768.0+1920.0*xi+768.0*eta;
112  values[7] = -1152.0+2304.0*xi+1728.0*eta;
113  values[8] = -1152.0+1728.0*xi+2304.0*eta;
114  values[9] = -768.0+768.0*xi+1920.0*eta;
115 }
116 
117 // values of the derivatives in eta-eta direction
118 static void D_T_P3_2D_DeriveEtaEta(double xi, double eta,
119  double *values)
120 {
121  values[0] = 0.0;
122  values[1] = 0.0;
123  values[2] = 0.0;
124  values[3] = 2.0;
125  values[4] = 6.0;
126  values[5] = 12.0;
127  values[6] = 768.0*xi-192.0+192.0*eta;
128  values[7] = 1728.0*xi-576.0+768.0*eta;
129  values[8] = 2304.0*xi-1152.0+1920.0*eta;
130  values[9] = 1920.0*xi-1920.0+3840.0*eta;
131 }
132 
133 // ***********************************************************************
134 
135 TBaseFunct2D *BF_D_T_P3_2D_Obj = new TBaseFunct2D
136  (10, BF_D_T_P3_2D, BFUnitTriangle,
137  D_T_P3_2D_Funct, D_T_P3_2D_DeriveXi,
138  D_T_P3_2D_DeriveEta, D_T_P3_2D_DeriveXiXi,
139  D_T_P3_2D_DeriveXiEta, D_T_P3_2D_DeriveEtaEta, 3, 3,
140  0, NULL);
Definition: BaseFunct2D.h:27