22 template <
class TPo
int,
class TArray>
27 const t_real _t0 = xi * (xi - 1);
28 const t_real _t1 = et * (et - 1);
29 const t_real _t2 = ((0.25)) * _t1;
30 const t_real _t3 = xi * (xi + 1);
31 const t_real _t4 = et * (et + 1);
32 const t_real _t5 = ((0.25)) * _t4;
33 const t_real _t6 = ((xi) * (xi)) - 1;
34 const t_real _t7 = ((0.5)) * _t6;
35 const t_real _t8 = ((et) * (et)) - 1;
36 const t_real _t9 = ((0.5)) * _t8;
48 template <
class TPo
int,
class TArray>
54 const t_real _t1 = _t0 - 1;
56 const t_real _t3 = ((0.25)) * et;
57 const t_real _t4 = _t2 * _t3;
58 const t_real _t5 = _t0 + 1;
60 const t_real _t7 = _t3 * _t6;
61 const t_real _t8 = et * xi;
62 const t_real _t9 = ((et) * (et)) - 1;
63 const t_real _t10 = ((0.5)) * _t9;
64 const t_real _t11 = xi - 1;
65 const t_real _t12 = 2 * et;
66 const t_real _t13 = _t12 - 1;
67 const t_real _t14 = ((0.25)) * xi;
68 const t_real _t15 = _t13 * _t14;
69 const t_real _t16 = xi + 1;
70 const t_real _t17 = _t12 + 1;
71 const t_real _t18 = _t14 * _t17;
72 const t_real _t19 = ((xi) * (xi)) - 1;
73 const t_real _t20 = ((0.5)) * _t19;
79 v(0, 5) = -_t10 * _t5;
81 v(0, 7) = -_t1 * _t10;
83 v(1, 0) = _t11 * _t15;
84 v(1, 1) = _t15 * _t16;
85 v(1, 2) = _t16 * _t18;
86 v(1, 3) = _t11 * _t18;
87 v(1, 4) = -_t13 * _t20;
88 v(1, 5) = -_t16 * _t8;
89 v(1, 6) = -_t17 * _t20;
90 v(1, 7) = -_t11 * _t8;
91 v(1, 8) = _t12 * _t19;
94 template <
class TPo
int,
class TArray>
100 const t_real _t1 = ((0.5)) * et;
101 const t_real _t2 = _t0 * _t1;
102 const t_real _t3 = et * (et + 1);
103 const t_real _t4 = ((0.5)) * _t3;
104 const t_real _t5 = ((et) * (et));
105 const t_real _t6 = 1 - _t5;
107 const t_real _t8 = ((0.5)) * xi;
108 const t_real _t9 = et * xi;
109 const t_real _t10 = -_t8 + _t9;
110 const t_real _t11 = _t8 + _t9;
111 const t_real _t12 = 2 * et;
112 const t_real _t13 = 2 * xi;
113 const t_real _t14 = xi - 1;
114 const t_real _t15 = _t14 * _t8;
115 const t_real _t16 = xi + 1;
116 const t_real _t17 = _t16 * _t8;
117 const t_real _t18 = ((xi) * (xi));
118 const t_real _t19 = 1 - _t18;
127 v(0, 8) = 2 * _t5 - 2;
128 v(1, 0) = _t10 + _t7 + (0.25);
129 v(1, 1) = _t1 + _t10 + (-0.25);
130 v(1, 2) = _t1 + _t11 + (0.25);
131 v(1, 3) = _t11 + _t7 + (-0.25);
132 v(1, 4) = xi * (1 - _t12);
133 v(1, 5) = et * (-_t13 - 1);
134 v(1, 6) = xi * (-_t12 - 1);
135 v(1, 7) = et * (1 - _t13);
142 v(2, 5) = -_t16 * xi;
144 v(2, 7) = -_t14 * xi;
145 v(2, 8) = 2 * _t18 - 2;
148 template <
class TPo
int,
class TArray>
153 const t_real _t0 = et + (-0.5);
154 const t_real _t1 = et + (0.5);
155 const t_real _t2 = 2 * et;
157 const t_real _t4 = xi + (-0.5);
158 const t_real _t5 = xi + (0.5);
159 const t_real _t6 = 2 * xi;
189 static constexpr int dim = 2;
191 static constexpr int numVertices = 4;
192 static constexpr int numNodes = 9;
193 static constexpr int numFaces = 4;
195 static constexpr t_real paramSpaceVol = 4.0;
198 static constexpr std::array<t_real, 3 * 9> standardCoords = {
211 static constexpr std::array<std::array<t_index, 10>, 4> faceNodes = {{{0, 1, 4},
217 static constexpr int numElevNodes = 0;
219 static constexpr int numBisect = 4;
220 static constexpr int numBisectVariants = 1;
224 static constexpr std::array<tBisectSub, 4> bisectElements = {{{0, 4, 8, 7},
229 static constexpr int vtkCellType = 23;
231 static constexpr std::array<int, 9> vtkNodeOrder = {0, 1, 2, 3, 4, 5, 6, 7, 8};
Core type aliases, constants, and metaprogramming utilities for the DNDS framework.
#define DNDS_DEVICE_CALLABLE
static constexpr ElemType GetBisectElemType(t_index)
static constexpr ElemType GetFaceType(t_index)
static DNDS_DEVICE_CALLABLE void Diff3(const TPoint &p, TArray &&v)
static DNDS_DEVICE_CALLABLE void Diff1(const TPoint &p, TArray &&v)
static DNDS_DEVICE_CALLABLE void Diff0(const TPoint &p, TArray &&v)
static DNDS_DEVICE_CALLABLE void Diff2(const TPoint &p, TArray &&v)
Eigen::Matrix< real, 5, 1 > v
const tPoint const tPoint const tPoint & p