Skip to content
Snippets Groups Projects
Commit 20d0fb48 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Store RefFaceList instead of face list

Simplify access to MeshFaceBoundary (simpler and safer)
parent 433431f0
No related branches found
No related tags found
1 merge request!140Change referenced item list policy
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
template <size_t Dimension> template <size_t Dimension>
MeshFaceBoundary<Dimension>::MeshFaceBoundary(const Mesh<Connectivity<Dimension>>&, const RefFaceList& ref_face_list) 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&); template MeshFaceBoundary<1>::MeshFaceBoundary(const Mesh<Connectivity<1>>&, const RefFaceList&);
......
...@@ -16,7 +16,7 @@ template <size_t Dimension> ...@@ -16,7 +16,7 @@ template <size_t Dimension>
class [[nodiscard]] MeshFaceBoundary // clazy:exclude=copyable-polymorphic class [[nodiscard]] MeshFaceBoundary // clazy:exclude=copyable-polymorphic
{ {
protected: protected:
Array<const FaceId> m_face_list; RefFaceList m_ref_face_list;
std::string m_boundary_name; std::string m_boundary_name;
std::array<TinyVector<Dimension>, Dimension*(Dimension - 1)> _getBounds(const Mesh<Connectivity<Dimension>>& mesh) std::array<TinyVector<Dimension>, Dimension*(Dimension - 1)> _getBounds(const Mesh<Connectivity<Dimension>>& mesh)
...@@ -30,9 +30,16 @@ class [[nodiscard]] MeshFaceBoundary // clazy:exclude=copyable-polymorphic ...@@ -30,9 +30,16 @@ class [[nodiscard]] MeshFaceBoundary // clazy:exclude=copyable-polymorphic
MeshFaceBoundary& operator=(const MeshFaceBoundary&) = default; MeshFaceBoundary& operator=(const MeshFaceBoundary&) = default;
MeshFaceBoundary& operator=(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 const Array<const FaceId>& faceList() const
{ {
return m_face_list; return m_ref_face_list.list();
} }
protected: protected:
......
...@@ -8,21 +8,11 @@ template <size_t Dimension> ...@@ -8,21 +8,11 @@ template <size_t Dimension>
MeshFlatFaceBoundary<Dimension> MeshFlatFaceBoundary<Dimension>
getMeshFlatFaceBoundary(const Mesh<Connectivity<Dimension>>& mesh, const IBoundaryDescriptor& boundary_descriptor) 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>(); MeshFaceBoundary<Dimension> mesh_face_boundary = getMeshFaceBoundary(mesh, boundary_descriptor);
++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); MeshFlatNodeBoundary<Dimension> mesh_flat_node_boundary = getMeshFlatNodeBoundary(mesh, boundary_descriptor);
return MeshFlatFaceBoundary<Dimension>{mesh, ref_face_list, mesh_flat_node_boundary.outgoingNormal()}; return MeshFlatFaceBoundary<Dimension>{mesh, mesh_face_boundary.refFaceList(),
} 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());
} }
template MeshFlatFaceBoundary<1> getMeshFlatFaceBoundary(const Mesh<Connectivity<1>>&, const IBoundaryDescriptor&); template MeshFlatFaceBoundary<1> getMeshFlatFaceBoundary(const Mesh<Connectivity<1>>&, const IBoundaryDescriptor&);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment