Select Git revision
BuiltinModule.hpp
-
Stéphane Del Pino authored
Mandatory modules are load without the need to be explicitly imported in the script file. By now the only required module is 'core'.
Stéphane Del Pino authoredMandatory modules are load without the need to be explicitly imported in the script file. By now the only required module is 'core'.
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