22 template <
class TPo
int,
class TArray>
23 static void Diff0(
const TPoint &
p, TArray &&
v)
29 if (std::abs(1 - zt) < 1e-15)
32 const t_real _t1 = _t0 + et;
33 const t_real _t2 = _t0 + xi;
34 const t_real _t3 = (1.0 / (4 * zt - 4));
36 const t_real _t5 = _t4 + xi;
37 const t_real _t6 = ((0.25)) / _t0;
38 const t_real _t7 = _t4 + et;
39 v(0, 0) = -_t1 * _t2 * _t3;
40 v(0, 1) = _t1 * _t5 * _t6;
41 v(0, 2) = -_t3 * _t5 * _t7;
42 v(0, 3) = _t2 * _t6 * _t7;
46 template <
class TPo
int,
class TArray>
47 static void Diff1(
const TPoint &
p, TArray &&
v)
53 if (std::abs(1 - zt) < 1e-15)
56 const t_real _t1 = _t0 + et;
57 const t_real _t2 = ((0.25)) / _t0;
59 const t_real _t4 = _t3 + et;
60 const t_real _t5 = _t0 + xi;
61 const t_real _t6 = _t3 + xi;
63 const t_real _t8 = et * xi;
64 const t_real _t9 = ((zt) * (zt));
65 const t_real _t10 = -_t7 + _t9 + 1;
66 const t_real _t11 = ((0.25)) / _t10;
67 const t_real _t12 = _t11 * (_t7 + _t8 - _t9 - 1);
68 const t_real _t13 = _t11 * (-_t10 - _t8);
84 template <
class TPo
int,
class TArray>
85 static void Diff2(
const TPoint &
p, TArray &&
v)
91 if (std::abs(1 - zt) < 1e-15)
93 const t_real _t0 = ((zt) * (zt));
94 const t_real _t1 = ((zt) * (zt) * (zt));
95 const t_real _t2 = et * xi;
96 const t_real _t3 = -_t2 / (-6 * _t0 + 2 * _t1 + 6 * zt - 2);
97 const t_real _t4 = ((0.5)) * _t2 / (-3 * _t0 + _t1 + 3 * zt - 1);
98 const t_real _t5 = -1 / (4 * zt - 4);
100 const t_real _t7 = ((0.25)) / _t6;
101 const t_real _t8 = ((0.25)) / ((_t6) * (_t6));
102 const t_real _t9 = _t8 * xi;
104 const t_real _t11 = _t8 * et;
105 const t_real _t12 = -_t11;
124 template <
class TPo
int,
class TArray>
125 static void Diff3(
const TPoint &
p, TArray &&
v)
131 if (std::abs(1 - zt) < 1e-15)
133 const t_real _t0 = ((zt) * (zt) * (zt) * (zt));
134 const t_real _t1 = ((zt) * (zt));
135 const t_real _t2 = ((zt) * (zt) * (zt));
136 const t_real _t3 = et * xi;
137 const t_real _t4 = ((1.5)) * _t3 / (_t0 + 6 * _t1 - 4 * _t2 - 4 * zt + 1);
138 const t_real _t5 = -3 * _t3 / (2 * _t0 + 12 * _t1 - 8 * _t2 - 8 * zt + 2);
139 const t_real _t6 = zt - 1;
140 const t_real _t7 = ((0.5)) / ((_t6) * (_t6) * (_t6));
141 const t_real _t8 = _t7 * xi;
143 const t_real _t10 = _t7 * et;
144 const t_real _t11 = -_t10;
145 const t_real _t12 = ((0.25)) / ((_t6) * (_t6));
146 const t_real _t13 = -_t12;
173 static constexpr int dim = 3;
175 static constexpr int numVertices = 5;
176 static constexpr int numNodes = 5;
177 static constexpr int numFaces = 5;
178 static constexpr int numEdges = 8;
180 static constexpr t_real paramSpaceVol = 4.0 / 3.0;
183 static constexpr std::array<t_real, 3 * 5> standardCoords = {
197 static constexpr std::array<std::array<t_index, 10>, 5> faceNodes = {{{0, 3, 2, 1},
205 static constexpr std::array<std::array<t_index, 3>, 8> edgeNodes = {{{0, 1},
215 static constexpr int numElevNodes = 9;
217 static constexpr std::array<tElevSpan, 9> elevSpans = {{{0, 1},
227 static constexpr std::array<ElemType, 9> elevNodeSpanTypes = {
230 static constexpr int vtkCellType = 14;
232 static constexpr std::array<int, 5> vtkNodeOrder = {0, 1, 2, 3, 4};
Core type aliases, constants, and metaprogramming utilities for the DNDS framework.
constexpr real signP(real a)
"Signum, biased toward +1": treats 0 as positive.
static constexpr ElemType GetEdgeType(t_index)
static constexpr ElemType GetFaceType(t_index iFace)
static void Diff1(const TPoint &p, TArray &&v)
static void Diff2(const TPoint &p, TArray &&v)
static void Diff0(const TPoint &p, TArray &&v)
static void Diff3(const TPoint &p, TArray &&v)
Eigen::Matrix< real, 5, 1 > v
const tPoint const tPoint const tPoint & p