7 #include <dune/common/version.hh>
8 #include <dune/common/parallel/mpihelper.hh>
9 #include <dune/grid/common/gridfactory.hh>
23 template <
class Gr
idType,
class DerivedType>
28 using GlobalCoordinate =
typename Grid::template Codim<0>::Entity::Geometry::GlobalCoordinate;
43 template <
class... Args,
44 std::enable_if_t<std::is_constructible<GridFactory<Grid>, Args...>::value,
int> = 0>
46 :
factory_(std::make_shared<GridFactory<
Grid>>(std::forward<Args>(args)...))
51 std::vector<std::uint64_t>
const& point_ids)
53 asDerived().insertVerticesImpl(points, point_ids);
58 std::vector<std::int64_t>
const& offsets,
59 std::vector<std::int64_t>
const& connectivity)
61 asDerived().insertElementsImpl(types, offsets, connectivity);
73 return std::unique_ptr<Grid>(
factory_->createGrid());
91 return MPIHelper::getCollectiveCommunication();
98 return static_cast<Derived&
>(*this);
103 return static_cast<const Derived&
>(*this);
109 std::vector<std::uint64_t>
const&)
115 std::vector<std::int64_t>
const&,
116 std::vector<std::int64_t>
const&)
Definition: datacollectorinterface.hh:9
Base class for grid creators in a CRTP style.
Definition: gridcreatorinterface.hh:25
const Derived & asDerived() const
Definition: gridcreatorinterface.hh:101
void insertElementsImpl(std::vector< std::uint8_t > const &, std::vector< std::int64_t > const &, std::vector< std::int64_t > const &)
Definition: gridcreatorinterface.hh:114
GridCreatorInterface(Args &&... args)
Constructor. Construct a new GridFactory from the passed arguments.
Definition: gridcreatorinterface.hh:45
typename Grid::template Codim< 0 >::Entity::Geometry::GlobalCoordinate GlobalCoordinate
Definition: gridcreatorinterface.hh:28
void insertPiecesImpl(std::vector< std::string > const &)
Definition: gridcreatorinterface.hh:121
std::unique_ptr< Grid > createGrid() const
Construct the actual grid using the GridFactory.
Definition: gridcreatorinterface.hh:71
GridCreatorInterface(std::shared_ptr< GridFactory< Grid >> factory)
Constructor. Store the shared_ptr to the GridFactory.
Definition: gridcreatorinterface.hh:38
std::shared_ptr< GridFactory< Grid > > factory_
Definition: gridcreatorinterface.hh:127
auto comm() const
Return the mpi collective communicator.
Definition: gridcreatorinterface.hh:89
void insertPieces(std::vector< std::string > const &pieces)
Insert part of a grid stored in file into factory.
Definition: gridcreatorinterface.hh:65
GridCreator::Grid Grid
Definition: gridcreatorinterface.hh:27
GridCreatorInterface(GridFactory< Grid > &factory)
Constructor. Stores a reference to the passed GridFactory.
Definition: gridcreatorinterface.hh:33
void insertVerticesImpl(std::vector< GlobalCoordinate > const &, std::vector< std::uint64_t > const &)
Definition: gridcreatorinterface.hh:108
GridFactory< Grid > const & factory() const
Return the associated (const) GridFactory.
Definition: gridcreatorinterface.hh:83
GridFactory< Grid > & factory()
Return the associated GridFactory.
Definition: gridcreatorinterface.hh:77
Derived & asDerived()
Definition: gridcreatorinterface.hh:96
void insertVertices(std::vector< GlobalCoordinate > const &points, std::vector< std::uint64_t > const &point_ids)
Insert all points as vertices into the factory.
Definition: gridcreatorinterface.hh:50
void insertElements(std::vector< std::uint8_t > const &types, std::vector< std::int64_t > const &offsets, std::vector< std::int64_t > const &connectivity)
Create elements based on type and connectivity description.
Definition: gridcreatorinterface.hh:57
Definition: parallelgridcreator.hh:21