27 using VertexArray = _VertexArray;
28 using FacetArray = _FacetArray;
30 Eigen::Matrix<typename VertexArray::Scalar, 1, VertexArray::ColsAtCompileTime>;
33 using Scalar =
typename VertexArray::Scalar;
34 using Index =
typename FacetArray::Scalar;
37 MeshGeometry() =
default;
38 MeshGeometry(
const VertexArray& ,
const FacetArray& ) {}
39 virtual ~MeshGeometry() =
default;
41 virtual Index get_dim()
const = 0;
42 virtual Index get_num_vertices()
const = 0;
43 virtual Index get_num_facets()
const = 0;
44 virtual Index get_vertex_per_facet()
const = 0;
46 virtual const VertexArray& get_vertices()
const = 0;
47 virtual const FacetArray& get_facets()
const = 0;
49 virtual VertexArray& get_vertices_ref() = 0;
50 virtual FacetArray& get_facets_ref() = 0;
53 template <
typename Derived>
54 void import_vertices(Eigen::MatrixBase<Derived>& vertices)
56 auto& member_vertices = this->get_vertices_ref();
60 template <
typename Derived>
61 void import_facets(Eigen::MatrixBase<Derived>& facets)
63 auto& member_facets = this->get_facets_ref();
67 template <
typename Derived>
68 void export_vertices(Eigen::MatrixBase<Derived>& vertices)
70 auto& member_vertices = this->get_vertices_ref();
74 template <
typename Derived>
75 void export_facets(Eigen::MatrixBase<Derived>& facets)
77 auto& member_facets = this->get_facets_ref();
81 template <
typename Archive>
82 void serialize_impl(Archive& ar)
85 enum { VERTICES = 0, FACETS = 1 };
86 ar.object([&](
auto& ar) {
87 ar(
"vertices", VERTICES) & get_vertices_ref();
88 ar(
"facets", FACETS) & get_facets_ref();
90 LA_IGNORE_SHADOW_WARNING_END