ParMooN
 All Classes Functions Variables Friends Pages
BF_N_T_P1MOD_2D.h
1 // ***********************************************************************
2 // P1MOD element, nonconforming, 2D
3 // ***********************************************************************
4 
5 // base function values
6 static void N_T_P1MOD_2D_Funct(double xi, double eta, double *values)
7 {
8  double t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12;
9  double t15, t16, t20, t21, t23;
10 
11  t1 = 12.0*eta;
12  t2 = xi*xi;
13  t3 = t2*eta;
14  t4 = 20.0*t3;
15  t5 = eta*eta;
16  t6 = xi*t5;
17  t7 = 20.0*t6;
18  t8 = 30.0*t5;
19  t9 = t5*eta;
20  t10 = 20.0*t9;
21  t11 = xi*eta;
22  t12 = 20.0*t11;
23  t15 = 2.0*t11;
24  t16 = t2*xi;
25  t20 = 12.0*xi;
26  t21 = 30.0*t2;
27  t23 = 20.0*t16;
28 
29  values[0] = 1.0-t1-t4-t7+t8-t10+t12;
30  values[1] = -xi+3.0*t2+t15-2.0*t16-3.0*t3-t6;
31  values[2] = -1.0+t20+t1-t21-40.0*t11+t23+40.0*t3+40.0*t6-t8+t10;
32  values[3] = -t3+t6;
33  values[4] = 1.0-t20+t21+t12-t23-t4-t7;
34  values[5] = -3.0*t5+3.0*t6+2.0*t9+eta-t15+t3;
35 }
36 
37 // values of the derivatives in xi direction
38 static void N_T_P1MOD_2D_DeriveXi(double xi, double eta, double *values)
39 {
40  double t1, t2, t3, t4, t5, t8, t9, t13, t15, t19;
41 
42  t1 = xi*eta;
43  t2 = 40.0*t1;
44  t3 = eta*eta;
45  t4 = 20.0*t3;
46  t5 = 20.0*eta;
47  t8 = 2.0*eta;
48  t9 = xi*xi;
49  t13 = 60.0*xi;
50  t15 = 60.0*t9;
51  t19 = 2.0*t1;
52 
53  values[0] = -t2-t4+t5;
54  values[1] = -1.0+6.0*xi+t8-6.0*t9-6.0*t1-t3;
55  values[2] = 12.0-t13-40.0*eta+t15+80.0*t1+40.0*t3;
56  values[3] = -t19+t3;
57  values[4] = -12.0+t13+t5-t15-t2-t4;
58  values[5] = 3.0*t3-t8+t19;
59 }
60 
61 // values of the derivatives in eta direction
62 static void N_T_P1MOD_2D_DeriveEta(double xi, double eta, double *values)
63 {
64  double t1, t2, t3, t4, t5, t6, t7, t8, t10, t12;
65 
66  t1 = xi*xi;
67  t2 = 20.0*t1;
68  t3 = xi*eta;
69  t4 = 40.0*t3;
70  t5 = 60.0*eta;
71  t6 = eta*eta;
72  t7 = 60.0*t6;
73  t8 = 20.0*xi;
74  t10 = 2.0*xi;
75  t12 = 2.0*t3;
76 
77  values[0] = -12.0-t2-t4+t5-t7+t8;
78  values[1] = t10-3.0*t1-t12;
79  values[2] = 12.0-40.0*xi+40.0*t1+80.0*t3-t5+t7;
80  values[3] = -t1+t12;
81  values[4] = t8-t2-t4;
82  values[5] = -6.0*eta+6.0*t3+6.0*t6+1.0-t10+t1;
83 }
84 
85 // values of the derivatives in xi-xi direction
86 static void N_T_P1MOD_2D_DeriveXiXi(double xi, double eta,
87  double *values)
88 {
89  double t1, t5, t8;
90 
91  t1 = 40.0*eta;
92  t5 = 120.0*xi;
93  t8 = 2.0*eta;
94 
95  values[0] = -t1;
96  values[1] = 6.0-12.0*xi-6.0*eta;
97  values[2] = -60.0+t5+80.0*eta;
98  values[3] = -t8;
99  values[4] = 60.0-t5-t1;
100  values[5] = t8;
101 }
102 
103 // values of the derivatives in xi-eta direction
104 static void N_T_P1MOD_2D_DeriveXiEta(double xi, double eta,
105  double *values)
106 {
107  double t3;
108 
109  t3 = -40.0*xi-40.0*eta+20.0;
110 
111  values[0] = t3;
112  values[1] = 2.0-6.0*xi-2.0*eta;
113  values[2] = -40.0+80.0*xi+80.0*eta;
114  values[3] = -2.0*xi+2.0*eta;
115  values[4] = t3;
116  values[5] = 6.0*eta-2.0+2.0*xi;
117 }
118 
119 // values of the derivatives in eta-eta direction
120 static void N_T_P1MOD_2D_DeriveEtaEta(double xi, double eta,
121  double *values)
122 {
123  double t1, t2, t4;
124 
125  t1 = 40.0*xi;
126  t2 = 120.0*eta;
127  t4 = 2.0*xi;
128 
129  values[0] = -t1+60.0-t2;
130  values[1] = -t4;
131  values[2] = 80.0*xi-60.0+t2;
132  values[3] = t4;
133  values[4] = -t1;
134  values[5] = -6.0+6.0*xi+12.0*eta;
135 }
136 
137 static int N_T_P1MOD_2D_ChangeJ0[1] = { 1 };
138 static int N_T_P1MOD_2D_ChangeJ1[1] = { 3 };
139 static int N_T_P1MOD_2D_ChangeJ2[1] = { 5 };
140 
141 static int *N_T_P1MOD_2D_Change[3] = {
142  N_T_P1MOD_2D_ChangeJ0, N_T_P1MOD_2D_ChangeJ1,
143  N_T_P1MOD_2D_ChangeJ2 };
144 // ***********************************************************************
145 
146 TBaseFunct2D *BF_N_T_P1MOD_2D_Obj = new TBaseFunct2D
147  (6, BF_N_T_P1MOD_2D, BFUnitTriangle,
148  N_T_P1MOD_2D_Funct, N_T_P1MOD_2D_DeriveXi,
149  N_T_P1MOD_2D_DeriveEta, N_T_P1MOD_2D_DeriveXiXi,
150  N_T_P1MOD_2D_DeriveXiEta, N_T_P1MOD_2D_DeriveEtaEta, 3, 1,
151  1, N_T_P1MOD_2D_Change);
Definition: BaseFunct2D.h:27