Select Git revision
MeshEdgeBoundary.hpp
-
Stéphane Del Pino authored
Simplify access to MeshEdgeBoundary (simpler and safer)
Stéphane Del Pino authoredSimplify access to MeshEdgeBoundary (simpler and safer)
MeshEdgeBoundary.hpp 1.85 KiB
#ifndef MESH_EDGE_BOUNDARY_HPP
#define MESH_EDGE_BOUNDARY_HPP
#include <algebra/TinyVector.hpp>
#include <mesh/IBoundaryDescriptor.hpp>
#include <mesh/RefItemList.hpp>
#include <utils/Array.hpp>
template <size_t Dimension>
class Connectivity;
template <typename ConnectivityType>
class Mesh;
template <size_t Dimension>
class [[nodiscard]] MeshEdgeBoundary // clazy:exclude=copyable-polymorphic
{
protected:
RefEdgeList m_ref_edge_list;
std::string m_boundary_name;
std::array<TinyVector<Dimension>, Dimension*(Dimension - 1)> _getBounds(const Mesh<Connectivity<Dimension>>& mesh)
const;
public:
template <size_t MeshDimension>
friend MeshEdgeBoundary<MeshDimension> getMeshEdgeBoundary(const Mesh<Connectivity<MeshDimension>>& mesh,
const IBoundaryDescriptor& boundary_descriptor);
MeshEdgeBoundary& operator=(const MeshEdgeBoundary&) = default;
MeshEdgeBoundary& operator=(MeshEdgeBoundary&&) = default;
PUGS_INLINE
const RefEdgeList& refEdgeList() const
{
return m_ref_edge_list;
}
PUGS_INLINE
const Array<const EdgeId>& edgeList() const
{
return m_ref_edge_list.list();
}
protected:
MeshEdgeBoundary(const Mesh<Connectivity<Dimension>>& mesh, const RefEdgeList& ref_edge_list);
MeshEdgeBoundary(const Mesh<Connectivity<Dimension>>& mesh, const RefFaceList& ref_face_list);
public:
MeshEdgeBoundary(const MeshEdgeBoundary&) = default; // LCOV_EXCL_LINE
MeshEdgeBoundary(MeshEdgeBoundary &&) = default; // LCOV_EXCL_LINE
MeshEdgeBoundary() = default;
virtual ~MeshEdgeBoundary() = default;
};
template <size_t Dimension>
MeshEdgeBoundary<Dimension> getMeshEdgeBoundary(const Mesh<Connectivity<Dimension>>& mesh,
const IBoundaryDescriptor& boundary_descriptor);
#endif // MESH_EDGE_BOUNDARY_HPP