ParMooN
 All Classes Functions Variables Friends Pages
NF_D_T_P2_3D.h
1 // ***********************************************************************
2 // P2 element, discontinuous, 3D
3 //
4 // Author: Markus Wolff
5 //
6 // ***********************************************************************
7 
8 /* for all functionals */
9 static double NF_D_T_P2_3D_Xi[] = {
10  0.25,
11  0.0714285714285714285714285714286,
12  0.785714285714285714285714285714,
13  0.0714285714285714285714285714286,
14  0.0714285714285714285714285714286,
15  0.399403576166799204996102147462,
16  0.399403576166799204996102147462,
17  0.100596423833200795003897852538,
18  0.100596423833200795003897852538,
19  0.100596423833200795003897852538,
20  0.399403576166799204996102147462};
21 static double NF_D_T_P2_3D_Eta[] = {
22  0.25,
23  0.0714285714285714285714285714286,
24  0.0714285714285714285714285714286,
25  0.785714285714285714285714285714,
26  0.0714285714285714285714285714286,
27  0.399403576166799204996102147462,
28  0.100596423833200795003897852538,
29  0.399403576166799204996102147462,
30  0.100596423833200795003897852538,
31  0.399403576166799204996102147462,
32  0.100596423833200795003897852538};
33 static double NF_D_T_P2_3D_Zeta[] = {
34  0.25,
35  0.0714285714285714285714285714286,
36  0.0714285714285714285714285714286,
37  0.0714285714285714285714285714286,
38  0.785714285714285714285714285714,
39  0.100596423833200795003897852538,
40  0.399403576166799204996102147462,
41  0.399403576166799204996102147462,
42  0.399403576166799204996102147462,
43  0.100596423833200795003897852538,
44  0.100596423833200795003897852538 };
45 
46 static double NF_D_T_P2_3D_Weights[]= {
47  -0.0131555555555555555555555555556,
48  0.00762222222222222222222222222222,
49  0.00762222222222222222222222222222,
50  0.00762222222222222222222222222222,
51  0.00762222222222222222222222222222,
52  0.0248888888888888888888888888889,
53  0.0248888888888888888888888888889,
54  0.0248888888888888888888888888889,
55  0.0248888888888888888888888888889,
56  0.0248888888888888888888888888889,
57  0.0248888888888888888888888888889
58 };
59 
60 /* face 0 0 */
61 static double *NF_D_T_P2_3D_F0_Xi = NULL;
62 static double *NF_D_T_P2_3D_F0_Eta = NULL;
63 static double *NF_D_T_P2_3D_F0_Zeta = NULL;
64 
65 /* face 1 1 */
66 static double *NF_D_T_P2_3D_F1_Xi = NULL;
67 static double *NF_D_T_P2_3D_F1_Eta = NULL;
68 static double *NF_D_T_P2_3D_F1_Zeta = NULL;
69 
70 /* face 2 2 */
71 static double *NF_D_T_P2_3D_F2_Xi = NULL;
72 static double *NF_D_T_P2_3D_F2_Eta = NULL;
73 static double *NF_D_T_P2_3D_F2_Zeta = NULL;
74 
75 /* face 3 3 */
76 static double *NF_D_T_P2_3D_F3_Xi = NULL;
77 static double *NF_D_T_P2_3D_F3_Eta = NULL;
78 static double *NF_D_T_P2_3D_F3_Zeta = NULL;
79 
80 static double *NF_D_T_P2_3D_XiArray[4] = {
81  NF_D_T_P2_3D_F0_Xi,
82  NF_D_T_P2_3D_F1_Xi,
83  NF_D_T_P2_3D_F2_Xi,
84  NF_D_T_P2_3D_F3_Xi };
85 
86 static double *NF_D_T_P2_3D_EtaArray[4] = {
87  NF_D_T_P2_3D_F0_Eta,
88  NF_D_T_P2_3D_F1_Eta,
89  NF_D_T_P2_3D_F2_Eta,
90  NF_D_T_P2_3D_F3_Eta };
91 
92 static double *NF_D_T_P2_3D_ZetaArray[4] = {
93  NF_D_T_P2_3D_F0_Zeta,
94  NF_D_T_P2_3D_F1_Zeta,
95  NF_D_T_P2_3D_F2_Zeta,
96  NF_D_T_P2_3D_F3_Zeta };
97 
98 static double *NF_D_T_P2_3D_T = NULL;
99 static double *NF_D_T_P2_3D_S = NULL;
100 
101 void NF_D_T_P2_3D_EvalAll(TCollection *Coll, TBaseCell *Cell, double *PointValues, double *Functionals)
102 {
103  int i;
104  double s;
105 
106  s = 0;
107  //constant
108  for(i=0;i<11;i++)
109  s += PointValues[i] * NF_D_T_P2_3D_Weights[i];
110  Functionals[0] = s;
111 
112  s = 0;
113  //x
114  for(i=0;i<11;i++)
115  s += PointValues[i] * NF_D_T_P2_3D_Xi[i] * NF_D_T_P2_3D_Weights[i];
116  Functionals[1] = s;
117 
118  s = 0;
119  //y
120  for(i=0;i<11;i++)
121  s += PointValues[i] * NF_D_T_P2_3D_Eta[i] * NF_D_T_P2_3D_Weights[i];
122  Functionals[2] = s;
123 
124  s = 0;
125  //z
126  for(i=0;i<11;i++)
127  s += PointValues[i] * NF_D_T_P2_3D_Zeta[i] * NF_D_T_P2_3D_Weights[i];
128  Functionals[3] = s;
129 
130  s = 0;
131  //x*x
132  for(i=0;i<11;i++)
133  s += PointValues[i] * NF_D_T_P2_3D_Xi[i] * NF_D_T_P2_3D_Xi[i] * NF_D_T_P2_3D_Weights[i];
134  Functionals[4] = s;
135 
136  s = 0;
137  //x*y
138  for(i=0;i<11;i++)
139  s += PointValues[i] * NF_D_T_P2_3D_Xi[i] * NF_D_T_P2_3D_Eta[i] * NF_D_T_P2_3D_Weights[i];
140  Functionals[5] = s;
141 
142  s = 0;
143  //x*z
144  for(i=0;i<11;i++)
145  s += PointValues[i] * NF_D_T_P2_3D_Xi[i] * NF_D_T_P2_3D_Zeta[i] * NF_D_T_P2_3D_Weights[i];
146  Functionals[6] = s;
147 
148  s = 0;
149  //yy
150  for(i=0;i<11;i++)
151  s += PointValues[i] * NF_D_T_P2_3D_Eta[i] * NF_D_T_P2_3D_Eta[i] * NF_D_T_P2_3D_Weights[i];
152  Functionals[7] = s;
153 
154  s = 0;
155  //y*z
156  for(i=0;i<11;i++)
157  s += PointValues[i] * NF_D_T_P2_3D_Eta[i] * NF_D_T_P2_3D_Zeta[i] * NF_D_T_P2_3D_Weights[i];
158  Functionals[8] = s;
159 
160  s = 0;
161  //zz
162  for(i=0;i<11;i++)
163  s += PointValues[i] * NF_D_T_P2_3D_Zeta[i] * NF_D_T_P2_3D_Zeta[i] * NF_D_T_P2_3D_Weights[i];
164  Functionals[9] = s;
165 }
166 
167 void NF_D_T_P2_3D_EvalFace(TCollection *Coll, TBaseCell *Cell, int Joint,
168  double *PointValues, double *Functionals)
169 {
170 }
171 
172 static int NF_D_T_P2_3D_N_AllFunctionals = 10;
173 static int NF_D_T_P2_3D_N_PointsAll = 11;
174 static int NF_D_T_P2_3D_N_FaceFunctionals[] = { 0, 0, 0, 0 };
175 static int NF_D_T_P2_3D_N_PointsFace[] = { 0, 0, 0, 0 };
176 
177 TNodalFunctional3D *NF_D_T_P2_3D_Obj = new TNodalFunctional3D
178  (NF_D_T_P2_3D, NF_D_T_P2_3D_N_AllFunctionals,
179  NF_D_T_P2_3D_N_FaceFunctionals, NF_D_T_P2_3D_N_PointsAll,
180  NF_D_T_P2_3D_N_PointsFace,
181  NF_D_T_P2_3D_Xi, NF_D_T_P2_3D_Eta, NF_D_T_P2_3D_Zeta,
182  NF_D_T_P2_3D_XiArray, NF_D_T_P2_3D_EtaArray,
183  NF_D_T_P2_3D_ZetaArray,
184  NF_D_T_P2_3D_T, NF_D_T_P2_3D_S,
185  NF_D_T_P2_3D_EvalAll, NF_D_T_P2_3D_EvalFace);
Definition: NodalFunctional3D.h:21
store cells in an array, used by cell iterators
Definition: Collection.h:18
information for finite element data structure
Definition: BaseCell.h:25