ParMooN
 All Classes Functions Variables Friends Pages
BF_N_H_Q1_3D.h
1 // ***********************************************************************
2 // Q1Rot element, nonconforming, 3D
3 // ***********************************************************************
4 
5 #define __POINTVALUE__
6 
7 static void N_H_Q1_3D_Funct(double xi, double eta, double zeta,
8  double *values)
9 {
10  double t1, t2, t3;
11 
12  t1 = xi*xi;
13  t2 = eta*eta;
14  t3 = zeta*zeta;
15 
16 #ifdef __POINTVALUE__
17  // point value oriented
18  values[0] = 1.0/6.0-zeta/2-t1/6-t2/6+t3/3;
19  values[1] = 1.0/6.0-eta/2-t1/6+t2/3-t3/6;
20  values[2] = 1.0/6.0+xi/2+t1/3-t2/6-t3/6;
21  values[3] = 1.0/6.0+eta/2-t1/6+t2/3-t3/6;
22  values[4] = 1.0/6.0-xi/2+t1/3-t2/6-t3/6;
23  values[5] = 1.0/6.0+zeta/2-t1/6-t2/6+t3/3;
24 #else
25  // mean value oriented
26  values[0] = 1.0/6.0-zeta/2-t1/4-t2/4+t3/2;
27  values[1] = 1.0/6.0-eta/2-t1/4+t2/2-t3/4;
28  values[2] = 1.0/6.0+xi/2+t1/2-t2/4-t3/4;
29  values[3] = 1.0/6.0+eta/2-t1/4+t2/2-t3/4;
30  values[4] = 1.0/6.0-xi/2+t1/2-t2/4-t3/4;
31  values[5] = 1.0/6.0+zeta/2-t1/4-t2/4+t3/2;
32 #endif
33 }
34 
35 static void N_H_Q1_3D_DeriveXi(double xi, double eta, double zeta,
36  double *values)
37 {
38 #ifdef __POINTVALUE__
39  // point value oriented
40  values[0] = -xi/3;
41  values[1] = -xi/3;
42  values[2] = 1.0/2.0+2.0/3.0*xi;
43  values[3] = -xi/3;
44  values[4] = -1.0/2.0+2.0/3.0*xi;
45  values[5] = -xi/3;
46 #else
47  // mean value oriented
48  values[0] = -xi/2;
49  values[1] = -xi/2;
50  values[2] = 1.0/2.0+xi;
51  values[3] = -xi/2;
52  values[4] = -1.0/2.0+xi;
53  values[5] = -xi/2;
54 #endif
55 
56 }
57 
58 static void N_H_Q1_3D_DeriveEta(double xi, double eta, double zeta,
59  double *values)
60 {
61 #ifdef __POINTVALUE__
62  // point value oriented
63  values[0] = -eta/3;
64  values[1] = -1.0/2.0+2.0/3.0*eta;
65  values[2] = -eta/3;
66  values[3] = 1.0/2.0+2.0/3.0*eta;
67  values[4] = -eta/3;
68  values[5] = -eta/3;
69 #else
70  // mean value oriented
71  values[0] = -eta/2;
72  values[1] = -1.0/2.0+eta;
73  values[2] = -eta/2;
74  values[3] = 1.0/2.0+eta;
75  values[4] = -eta/2;
76  values[5] = -eta/2;
77 #endif
78 }
79 
80 static void N_H_Q1_3D_DeriveZeta(double xi, double eta, double zeta,
81  double *values)
82 {
83 #ifdef __POINTVALUE__
84  // point value oriented
85  values[0] = -1.0/2.0+2.0/3.0*zeta;
86  values[1] = -zeta/3;
87  values[2] = -zeta/3;
88  values[3] = -zeta/3;
89  values[4] = -zeta/3;
90  values[5] = 1.0/2.0+2.0/3.0*zeta;
91 #else
92  // mean value oriented
93  values[0] = -1.0/2.0+zeta;
94  values[1] = -zeta/2;
95  values[2] = -zeta/2;
96  values[3] = -zeta/2;
97  values[4] = -zeta/2;
98  values[5] = 1.0/2.0+zeta;
99 #endif
100 }
101 
102 static void N_H_Q1_3D_DeriveXiXi(double xi, double eta, double zeta,
103  double *values)
104 {
105 #ifdef __POINTVALUE__
106  values[0] = -1.0/3.0;
107  values[1] = -1.0/3.0;
108  values[2] = 2.0/3.0;
109  values[3] = -1.0/3.0;
110  values[4] = 2.0/3.0;
111  values[5] = -1.0/3.0;
112 #else
113  values[0] = -0.5;
114  values[1] = -0.5;
115  values[2] = 1;
116  values[3] = -0.5;
117  values[4] = 1;
118  values[5] = -0.5;
119 #endif
120 }
121 
122 static void N_H_Q1_3D_DeriveXiEta(double xi, double eta, double zeta,
123  double *values)
124 {
125  values[0] = 0.0;
126  values[1] = 0.0;
127  values[2] = 0.0;
128  values[3] = 0.0;
129  values[4] = 0.0;
130  values[5] = 0.0;
131 }
132 
133 static void N_H_Q1_3D_DeriveXiZeta(double xi, double eta, double zeta,
134  double *values)
135 {
136  values[0] = 0.0;
137  values[1] = 0.0;
138  values[2] = 0.0;
139  values[3] = 0.0;
140  values[4] = 0.0;
141  values[5] = 0.0;
142 }
143 
144 static void N_H_Q1_3D_DeriveEtaEta(double xi, double eta, double zeta,
145  double *values)
146 {
147 #ifdef __POINTVALUE__
148  values[0] = -1.0/3.0;
149  values[1] = 2.0/3.0;
150  values[2] = -1.0/3.0;
151  values[3] = 2.0/3.0;
152  values[4] = -1.0/3.0;
153  values[5] = -1.0/3.0;
154 #else
155  values[0] = -0.5;
156  values[1] = 1;
157  values[2] = -0.5;
158  values[3] = 1;
159  values[4] = -0.5;
160  values[5] = -0.5;
161 #endif
162 }
163 
164 static void N_H_Q1_3D_DeriveEtaZeta(double xi, double eta, double zeta,
165  double *values)
166 {
167  values[0] = 0.0;
168  values[1] = 0.0;
169  values[2] = 0.0;
170  values[3] = 0.0;
171  values[4] = 0.0;
172  values[5] = 0.0;
173 }
174 
175 static void N_H_Q1_3D_DeriveZetaZeta(double xi, double eta, double zeta,
176  double *values)
177 {
178 #ifdef __POINTVALUE__
179  values[0] = 2.0/3.0;
180  values[1] = -1.0/3.0;
181  values[2] = -1.0/3.0;
182  values[3] = -1.0/3.0;
183  values[4] = -1.0/3.0;
184  values[5] = 2.0/3.0;
185 #else
186  values[0] = 1;
187  values[1] = -0.5;
188  values[2] = -0.5;
189  values[3] = -0.5;
190  values[4] = -0.5;
191  values[5] = 1;
192 #endif
193 }
194 
195 TBaseFunct3D *BF_N_H_Q1_3D_Obj =
196 new TBaseFunct3D(6, BF_N_H_Q1_3D, BFUnitHexahedron,
197  N_H_Q1_3D_Funct, N_H_Q1_3D_DeriveXi,
198  N_H_Q1_3D_DeriveEta, N_H_Q1_3D_DeriveZeta,
199  N_H_Q1_3D_DeriveXiXi, N_H_Q1_3D_DeriveXiEta,
200  N_H_Q1_3D_DeriveXiZeta, N_H_Q1_3D_DeriveEtaEta,
201  N_H_Q1_3D_DeriveEtaZeta, N_H_Q1_3D_DeriveZetaZeta,
202  2, 1,
203  0, NULL);
Definition: BaseFunct3D.h:27