standard_line_to_face_and_line_index(
const unsigned int line) const override
{
- static const std::array<unsigned int, 2> table[6] = {
- {{0, 0}}, {{0, 1}}, {{0, 2}}, {{1, 1}}, {{1, 2}}, {{2, 1}}};
+ static const std::array<unsigned int, 2> table[8] = {{{0, 0}},
+ {{0, 1}},
+ {{0, 2}},
+ {{0, 3}},
+ {{1, 2}},
+ {{2, 1}},
+ {{1, 1}},
+ {{2, 2}}};
return table[line];
}
}
};
- const auto process = [&](const auto faces) {
+ const auto process = [&](const auto &faces) {
// new (projected) quadrature points and weights
std::vector<Point<3>> points;
std::vector<double> weights;
else if (reference_cell_type == ReferenceCell::Type::Wedge)
{
const std::vector<std::pair<std::vector<Point<3>>, double>> faces = {
- {{{{Point<3>(0.0, 1.0, 0.0),
- Point<3>(1.0, 0.0, 0.0),
- Point<3>(0.0, 0.0, 0.0)}},
+ {{{{Point<3>(1.0, 0.0, 0.0),
+ Point<3>(0.0, 0.0, 0.0),
+ Point<3>(0.0, 1.0, 0.0)}},
0.5},
- {{{Point<3>(1.0, 0.0, 1.0),
- Point<3>(0.0, 1.0, 1.0),
- Point<3>(0.0, 0.0, 1.0)}},
+ {{{Point<3>(0.0, 0.0, 1.0),
+ Point<3>(1.0, 0.0, 1.0),
+ Point<3>(0.0, 1.0, 1.0)}},
0.5},
+ {{{Point<3>(0.0, 0.0, 0.0),
+ Point<3>(1.0, 0.0, 0.0),
+ Point<3>(0.0, 0.0, 1.0),
+ Point<3>(1.0, 0.0, 1.0)}},
+ 1.0},
{{{Point<3>(1.0, 0.0, 0.0),
Point<3>(0.0, 1.0, 0.0),
Point<3>(1.0, 0.0, 1.0),
Point<3>(0.0, 0.0, 0.0),
Point<3>(0.0, 1.0, 1.0),
Point<3>(0.0, 0.0, 1.0)}},
- 1.0},
- {{{Point<3>(0.0, 0.0, 0.0),
- Point<3>(1.0, 0.0, 0.0),
- Point<3>(0.0, 0.0, 1.0),
- Point<3>(1.0, 0.0, 1.0)}},
1.0}}};
return process(faces);
unit_tangentials[6].emplace_back(t1);
// face 2
- t1[d0] = -1 / std::sqrt(2.0);
- t1[d1] = +1 / std::sqrt(2.0);
+ t1[d0] = 1;
+ t1[d1] = 0;
t1[d2] = 0;
for (unsigned int i = 0; i < n_original_q_points; i++)
unit_tangentials[2].emplace_back(t1);
unit_tangentials[7].emplace_back(t1);
// face 3
- t1[d0] = +0;
- t1[d1] = +0;
- t1[d2] = +1;
+ t1[d0] = -1 / std::sqrt(2.0);
+ t1[d1] = +1 / std::sqrt(2.0);
+ t1[d2] = 0;
for (unsigned int i = 0; i < n_original_q_points; i++)
unit_tangentials[3].emplace_back(t1);
// face 3
- t1[d0] = +0;
- t1[d1] = +1;
- t1[d2] = +0;
+ t1[d0] = 0;
+ t1[d1] = 0;
+ t1[d2] = 1;
for (unsigned int i = 0; i < n_original_q_points; i++)
unit_tangentials[8].emplace_back(t1);
// face 4
- t1[d0] = 1;
- t1[d1] = 0;
- t1[d2] = 0;
+ t1[d0] = +0;
+ t1[d1] = +0;
+ t1[d2] = +1;
for (unsigned int i = 0; i < n_original_q_points; i++)
unit_tangentials[4].emplace_back(t1);
// face 4
- t1[d0] = 0;
- t1[d1] = 0;
- t1[d2] = 1;
+ t1[d0] = +0;
+ t1[d1] = +1;
+ t1[d2] = +0;
for (unsigned int i = 0; i < n_original_q_points; i++)
unit_tangentials[9].emplace_back(t1);
}
if (degree == 1)
{
+ this->unit_support_points.emplace_back(0.0, 0.0, 0.0);
this->unit_support_points.emplace_back(1.0, 0.0, 0.0);
this->unit_support_points.emplace_back(0.0, 1.0, 0.0);
- this->unit_support_points.emplace_back(0.0, 0.0, 0.0);
+ this->unit_support_points.emplace_back(0.0, 0.0, 1.0);
this->unit_support_points.emplace_back(1.0, 0.0, 1.0);
this->unit_support_points.emplace_back(0.0, 1.0, 1.0);
- this->unit_support_points.emplace_back(0.0, 0.0, 1.0);
}
}