diff --git a/src/mesh/MeshFaceBoundary.cpp b/src/mesh/MeshFaceBoundary.cpp index f061ed646355a76fe846546c1564efb07253123e..2aeaa4b9db806605886cf529247a9db5e4ced0d4 100644 --- a/src/mesh/MeshFaceBoundary.cpp +++ b/src/mesh/MeshFaceBoundary.cpp @@ -6,7 +6,7 @@ template <size_t Dimension> MeshFaceBoundary<Dimension>::MeshFaceBoundary(const Mesh<Connectivity<Dimension>>&, const RefFaceList& ref_face_list) - : m_face_list(ref_face_list.list()), m_boundary_name(ref_face_list.refId().tagName()) + : m_ref_face_list(ref_face_list), m_boundary_name(ref_face_list.refId().tagName()) {} template MeshFaceBoundary<1>::MeshFaceBoundary(const Mesh<Connectivity<1>>&, const RefFaceList&); diff --git a/src/mesh/MeshFaceBoundary.hpp b/src/mesh/MeshFaceBoundary.hpp index 7493e9cd46e4d434902e65116024bbd7b82f5069..6ef09579717e87511a99ef5867cda59b299a1be5 100644 --- a/src/mesh/MeshFaceBoundary.hpp +++ b/src/mesh/MeshFaceBoundary.hpp @@ -16,7 +16,7 @@ template <size_t Dimension> class [[nodiscard]] MeshFaceBoundary // clazy:exclude=copyable-polymorphic { protected: - Array<const FaceId> m_face_list; + RefFaceList m_ref_face_list; std::string m_boundary_name; std::array<TinyVector<Dimension>, Dimension*(Dimension - 1)> _getBounds(const Mesh<Connectivity<Dimension>>& mesh) @@ -30,9 +30,16 @@ class [[nodiscard]] MeshFaceBoundary // clazy:exclude=copyable-polymorphic MeshFaceBoundary& operator=(const MeshFaceBoundary&) = default; MeshFaceBoundary& operator=(MeshFaceBoundary&&) = default; + PUGS_INLINE + const RefFaceList& refFaceList() const + { + return m_ref_face_list; + } + + PUGS_INLINE const Array<const FaceId>& faceList() const { - return m_face_list; + return m_ref_face_list.list(); } protected: diff --git a/src/mesh/MeshFlatFaceBoundary.cpp b/src/mesh/MeshFlatFaceBoundary.cpp index cb7740c6736f507e5b3ff12b4baa93789349ca8a..87d353e25404c3b5996a63945a9e220e49e97e55 100644 --- a/src/mesh/MeshFlatFaceBoundary.cpp +++ b/src/mesh/MeshFlatFaceBoundary.cpp @@ -8,21 +8,11 @@ template <size_t Dimension> MeshFlatFaceBoundary<Dimension> getMeshFlatFaceBoundary(const Mesh<Connectivity<Dimension>>& mesh, const IBoundaryDescriptor& boundary_descriptor) { - for (size_t i_ref_face_list = 0; i_ref_face_list < mesh.connectivity().template numberOfRefItemList<ItemType::face>(); - ++i_ref_face_list) { - const auto& ref_face_list = mesh.connectivity().template refItemList<ItemType::face>(i_ref_face_list); - const RefId& ref = ref_face_list.refId(); - if (ref == boundary_descriptor) { - MeshFlatNodeBoundary<Dimension> mesh_flat_node_boundary = getMeshFlatNodeBoundary(mesh, boundary_descriptor); + MeshFaceBoundary<Dimension> mesh_face_boundary = getMeshFaceBoundary(mesh, boundary_descriptor); + MeshFlatNodeBoundary<Dimension> mesh_flat_node_boundary = getMeshFlatNodeBoundary(mesh, boundary_descriptor); - return MeshFlatFaceBoundary<Dimension>{mesh, ref_face_list, mesh_flat_node_boundary.outgoingNormal()}; - } - } - - std::ostringstream ost; - ost << "cannot find face list with name \"" << rang::fgB::red << boundary_descriptor << rang::style::reset << "\""; - - throw NormalError(ost.str()); + return MeshFlatFaceBoundary<Dimension>{mesh, mesh_face_boundary.refFaceList(), + mesh_flat_node_boundary.outgoingNormal()}; } template MeshFlatFaceBoundary<1> getMeshFlatFaceBoundary(const Mesh<Connectivity<1>>&, const IBoundaryDescriptor&);