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.