89 result.
Faces_by_edges = {{{0, 1}, {std::array<unsigned int, 2>({0, 0}),
true}},
90 {{1, 2}, {std::array<unsigned int, 2>({0, 1}),
true}},
91 {{2, 0}, {std::array<unsigned int, 2>({0, 2}),
true}},
92 {{1, 0}, {std::array<unsigned int, 2>({0, 2}),
false}},
93 {{2, 1}, {std::array<unsigned int, 2>({0, 0}),
false}},
94 {{0, 2}, {std::array<unsigned int, 2>({0, 1}),
false}},
95 {{0, 4}, {std::array<unsigned int, 2>({1, 0}),
true}},
96 {{4, 3}, {std::array<unsigned int, 2>({1, 1}),
true}},
97 {{3, 0}, {std::array<unsigned int, 2>({1, 2}),
true}},
98 {{4, 0}, {std::array<unsigned int, 2>({1, 2}),
false}},
99 {{3, 4}, {std::array<unsigned int, 2>({1, 0}),
false}},
100 {{0, 3}, {std::array<unsigned int, 2>({1, 1}),
false}},
101 {{2, 5}, {std::array<unsigned int, 2>({2, 0}),
true}},
102 {{5, 3}, {std::array<unsigned int, 2>({2, 1}),
true}},
103 {{3, 2}, {std::array<unsigned int, 2>({2, 2}),
true}},
104 {{5, 2}, {std::array<unsigned int, 2>({2, 2}),
false}},
105 {{3, 5}, {std::array<unsigned int, 2>({2, 0}),
false}},
106 {{2, 3}, {std::array<unsigned int, 2>({2, 1}),
false}},
107 {{1, 5}, {std::array<unsigned int, 2>({3, 0}),
true}},
108 {{5, 4}, {std::array<unsigned int, 2>({3, 1}),
true}},
109 {{4, 1}, {std::array<unsigned int, 2>({3, 2}),
true}},
110 {{5, 1}, {std::array<unsigned int, 2>({3, 2}),
false}},
111 {{4, 5}, {std::array<unsigned int, 2>({3, 0}),
false}},
112 {{1, 4}, {std::array<unsigned int, 2>({3, 1}),
false}}};
122 result.
DofPositions.col(0) << 1.0 / 4.0, 1.0 / 4.0, 1.0 / 4.0;
139 result.
NumDofs2D = order > 2 ? (order - 2) * (order - 1) / 2 : 0;
140 result.
NumDofs3D = order > 3 ? (order - 3) * (order - 2) * (order - 1) / 6 : 0;
150 result.
DofTypes[0] = {order, 0, 0, 0};
151 result.
DofTypes[1] = {0, order, 0, 0};
152 result.
DofTypes[2] = {0, 0, order, 0};
153 result.
DofTypes[3] = {0, 0, 0, order};
157 unsigned int dof = 4;
160 for (
unsigned int d = 0; d < result.
NumDofs1D; d++)
162 result.
DofPositions.col(dof) << (d + 1.0) / ((
double)order), 0.0, 0.0;
163 result.
DofTypes[dof] = {order - 1 - d, d + 1, 0, 0};
168 for (
unsigned int d = 0; d < result.
NumDofs1D; d++)
170 result.
DofPositions.col(dof) << (result.
NumDofs1D - d) / ((
double)order), (d + 1.0) / ((double)order), 0.0;
171 result.
DofTypes[dof] = {0, order - d - 1, d + 1, 0};
176 for (
unsigned int d = 0; d < result.
NumDofs1D; d++)
179 result.
DofTypes[dof] = {d + 1, 0, order - d - 1, 0};
184 for (
unsigned int d = 0; d < result.
NumDofs1D; d++)
186 result.
DofPositions.col(dof) << 0.0, 0.0, (d + 1.0) / ((
double)order);
187 result.
DofTypes[dof] = {order - d - 1, 0, 0, d + 1};
192 for (
unsigned int d = 0; d < result.
NumDofs1D; d++)
194 result.
DofPositions.col(dof) << (d + 1.0) / ((
double)order), 0.0, (result.
NumDofs1D - d) / ((double)order);
195 result.
DofTypes[dof] = {0, d + 1, 0, order - d - 1};
200 for (
unsigned int d = 0; d < result.
NumDofs1D; d++)
202 result.
DofPositions.col(dof) << 0.0, (d + 1.0) / ((
double)order), (result.
NumDofs1D - d) / ((double)order);
203 result.
DofTypes[dof] = {0, 0, d + 1, order - d - 1};
210 for (
unsigned int d1 = 0; d1 < result.
NumDofs1D - 1; d1++)
212 for (
unsigned int d2 = 0; d2 < result.
NumDofs1D - 1 - d1; d2++)
214 result.
DofPositions.col(dof) << (d1 + 1.0) / ((
double)order), (d2 + 1.0) / ((double)order), 0.0;
215 result.
DofTypes[dof] = {order - d1 - d2 - 2, d1 + 1, d2 + 1, 0};
221 for (
unsigned int d1 = 0; d1 < result.
NumDofs1D - 1; d1++)
223 for (
unsigned int d2 = 0; d2 < result.
NumDofs1D - 1 - d1; d2++)
225 result.
DofPositions.col(dof) << (d1 + 1.0) / ((
double)order), 0.0, (d2 + 1.0) / ((double)order);
226 result.
DofTypes[dof] = {order - d1 - d2 - 2, d1 + 1, 0, d2 + 1};
232 for (
unsigned int d1 = 0; d1 < result.
NumDofs1D - 1; d1++)
234 for (
unsigned int d2 = 0; d2 < result.
NumDofs1D - 1 - d1; d2++)
236 result.
DofPositions.col(dof) << 0.0, (d1 + 1.0) / ((
double)order), (d2 + 1.0) / ((double)order);
237 result.
DofTypes[dof] = {order - d1 - d2 - 2, 0, d1 + 1, d2 + 1};
243 for (
unsigned int d1 = 0; d1 < result.
NumDofs1D - 1; d1++)
245 for (
unsigned int d2 = 0; d2 < result.
NumDofs1D - 1 - d1; d2++)
247 result.
DofPositions.col(dof) << (d1 + 1.0) / ((
double)order), (d2 + 1.0) / ((double)order),
248 1.0 - (d1 + 1.0) / ((
double)order) - (d2 + 1.0) / ((double)order);
249 result.
DofTypes[dof] = {0, d1 + 1, d2 + 1, order - d1 - d2 - 2};
257 for (
unsigned int d3 = 0; d3 < result.
NumDofs1D - 2; d3++)
259 for (
unsigned int d1 = 0; d1 < result.
NumDofs1D - 2 - d3; d1++)
261 for (
unsigned int d2 = 0; d2 < result.
NumDofs1D - 2 - d1 - d3; d2++)
263 result.
DofPositions.col(dof) << (d1 + 1.0) / ((
double)order),
264 (d2 + 1.0) / ((double)order), (d3 + 1.0) / ((
double)order);
266 result.
DofTypes[dof] = {order - d1 - d2 - d3 - 3, d1 + 1, d2 + 1, d3 + 1};