9#include <kernel/geometry/conformal_mesh.hpp>
10#include <kernel/geometry/mesh_part.hpp>
11#include <kernel/geometry/intern/patch_index_mapping.hpp>
18 template<
typename Mesh_>
27 public Factory<ConformalMesh<Shape_, num_coords_, Coord_> >
35 typedef typename MeshType::VertexSetType VertexSetType;
37 typedef typename MeshType::IndexSetHolderType IndexSetHolderType;
40 const MeshType& _base_mesh;
41 const MeshPartType& _patch_part;
44 explicit PatchMeshFactory(
const MeshType& base_mesh,
const MeshPartType& patch_part) :
45 _base_mesh(base_mesh),
46 _patch_part(patch_part)
54 virtual Index get_num_entities(
int dim)
override
56 return _patch_part.get_num_entities(dim);
59 virtual void fill_vertex_set(VertexSetType& vertex_set)
override
62 const typename MeshPartType::template TargetSet<0>::Type& idx(_patch_part.template get_target_set<0>());
63 typedef typename VertexSetType::VertexType VertexType;
66 const VertexSetType& vertex_set_in(_base_mesh.get_vertex_set());
69 const Index num_verts(idx.get_num_entities());
70 for(
Index i(0); i < num_verts; ++i)
72 VertexType& vo(vertex_set[i]);
73 const VertexType& vi(vertex_set_in[idx[i]]);
74 for(
int j(0); j < num_coords_; ++j)
81 virtual void fill_index_sets(IndexSetHolderType& index_set_holder)
override
84 Index num_entities[Shape_::dimension + 1];
85 for(
int i(0); i <= Shape_::dimension; ++i)
87 num_entities[i] = _base_mesh.get_num_entities(i);
91 Intern::PatchIndexMapping<Shape_>::apply(
93 _base_mesh.get_index_set_holder(),
94 _patch_part.get_target_set_holder(),
Mesh Factory class template.
Class template for partial meshes.
std::uint64_t Index
Index data type.