OGS
ShapeTet10-impl.h
Go to the documentation of this file.
1 
11 namespace NumLib
12 {
13 template <class T_X, class T_N>
14 void ShapeTet10::computeShapeFunction(const T_X& r, T_N& N)
15 {
16  N[0] = 2. * (1 - r[0] - r[1] - r[2]) * (0.5 - r[0] - r[1] - r[2]);
17  N[1] = r[0] * (2. * r[0] - 1);
18  N[2] = r[1] * (2. * r[1] - 1);
19  N[3] = r[2] * (2. * r[2] - 1);
20  N[4] = 4.0 * r[0] * (1.0 - r[0] - r[1] - r[2]);
21  N[5] = 4.0 * r[0] * r[1];
22  N[6] = 4.0 * r[1] * (1.0 - r[0] - r[1] - r[2]);
23  N[7] = 4.0 * r[2] * (1.0 - r[0] - r[1] - r[2]);
24  N[8] = 4.0 * r[0] * r[2];
25  N[9] = 4.0 * r[1] * r[2];
26 }
27 
28 template <class T_X, class T_N>
29 void ShapeTet10::computeGradShapeFunction(const T_X& r, T_N& dNdr)
30 {
31  dNdr[0] = 4.0 * (r[0] + r[1] + r[2]) - 3.0;
32  dNdr[1] = 4. * r[0] - 1.;
33  dNdr[2] = 0.0;
34  dNdr[3] = 0.0;
35  dNdr[4] = 4.0 * (1.0 - 2.0 * r[0] - r[1] - r[2]);
36  dNdr[5] = 4.0 * r[1];
37  dNdr[6] = -4.0 * r[1];
38  dNdr[7] = -4.0 * r[2];
39  dNdr[8] = 4.0 * r[2];
40  dNdr[9] = 0.0;
41 
42  dNdr[10] = 4. * (r[0] + r[1] + r[2]) - 3.;
43  dNdr[11] = 0.0;
44  dNdr[12] = 4. * r[1] - 1.;
45  dNdr[13] = 0.;
46  dNdr[14] = -4.0 * r[0];
47  dNdr[15] = 4.0 * r[0];
48  dNdr[16] = 4.0 * (1.0 - r[0] - 2.0 * r[1] - r[2]);
49  dNdr[17] = -4.0 * r[2];
50  dNdr[18] = 0.0;
51  dNdr[19] = 4.0 * r[2];
52 
53  dNdr[20] = 4. * (r[0] + r[1] + r[2]) - 3.;
54  dNdr[21] = 0.;
55  dNdr[22] = 0.;
56  dNdr[23] = 4. * r[2] - 1.;
57  dNdr[24] = -4.0 * r[0];
58  dNdr[25] = 0.0;
59  dNdr[26] = -4.0 * r[1];
60  dNdr[27] = 4.0 * (1.0 - r[0] - r[1] - 2.0 * r[2]);
61  dNdr[28] = 4.0 * r[0];
62  dNdr[29] = 4.0 * r[1];
63 }
64 
65 } // namespace NumLib
static void computeShapeFunction(const T_X &r, T_N &N)
static void computeGradShapeFunction(const T_X &r, T_N &dN)
static const double r