From: David Wells Date: Tue, 29 Dec 2020 22:19:24 +0000 (-0500) Subject: Merge pull request #11424 from peterrum/compute_orientation X-Git-Tag: v9.3.0-rc1~709 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eaf77c59967f6ef4c6cbf15b89d7560417f3be36;p=dealii.git Merge pull request #11424 from peterrum/compute_orientation Introduce ReferenceCell::compute_orientation and ::permute_according_orientation --- eaf77c59967f6ef4c6cbf15b89d7560417f3be36 diff --cc source/base/qprojector.cc index 3a33573303,62604c078a..cdcef09bcd --- a/source/base/qprojector.cc +++ b/source/base/qprojector.cc @@@ -669,31 -657,17 +657,17 @@@ QProjector<3>::project_to_all_faces const auto support_points_quad = [](const auto &face, const auto &orientation) -> std::vector> { - switch (orientation) - { - case 1: - return {{face.first[0], face.first[1], face.first[2], face.first[3]}}; - case 3: - return {{face.first[1], face.first[3], face.first[0], face.first[2]}}; - case 5: - return {{face.first[3], face.first[2], face.first[1], face.first[0]}}; - case 7: - return {{face.first[2], face.first[0], face.first[3], face.first[1]}}; - case 0: - return {{face.first[0], face.first[2], face.first[1], face.first[3]}}; - case 2: - return {{face.first[2], face.first[3], face.first[0], face.first[1]}}; - case 4: - return {{face.first[3], face.first[1], face.first[2], face.first[0]}}; - case 6: - return {{face.first[1], face.first[0], face.first[3], face.first[2]}}; - default: - Assert(false, ExcNotImplemented()); - return {{}}; - } + std::array, 4> vertices; + std::copy_n(face.first.begin(), face.first.size(), vertices.begin()); + const auto temp = + ReferenceCell::permute_according_orientation(ReferenceCell::Type::Quad, + vertices, + orientation); + return std::vector>(temp.begin(), + temp.begin() + face.first.size()); }; - const auto process = [&](const auto faces) { + const auto process = [&](const auto &faces) { // new (projected) quadrature points and weights std::vector> points; std::vector weights;