5 #ifndef DUNE_GRID_COMMON_GRIDFACTORY_HH 6 #define DUNE_GRID_COMMON_GRIDFACTORY_HH 15 #include <dune/common/fvector.hh> 16 #include <dune/common/parallel/mpihelper.hh> 18 #include <dune/geometry/type.hh> 68 template <
class Gr
idType>
77 constexpr
static int dimworld = GridType::dimensionworld;
80 typedef typename GridType::ctype
ctype;
98 virtual void insertVertex(
const FieldVector<ctype,dimworld>& pos) = 0;
108 const std::vector<unsigned int>& vertices) = 0;
123 const std::vector<unsigned int>& ,
124 std::function<FieldVector<ctype,dimworld>
125 (FieldVector<ctype,dimension>)>
128 DUNE_THROW(
GridError,
"There is no grid factory for this grid type!");
156 DUNE_THROW(
GridError,
"This grid does not support parametrized boundary segments!");
163 virtual std::unique_ptr<GridType>
createGrid() = 0;
183 DUNE_THROW( NotImplemented,
"insertion indices have not yet been implemented." );
204 DUNE_THROW( NotImplemented,
"insertion indices have not yet been implemented." );
227 insertionIndex ( [[maybe_unused]]
const typename GridType::LeafIntersection &intersection )
const 229 DUNE_THROW( NotImplemented,
"insertion indices have not yet been implemented." );
247 wasInserted ( [[maybe_unused]]
const typename GridType::LeafIntersection &intersection )
const 249 DUNE_THROW( NotImplemented,
"insertion indices have not yet been implemented." );
252 using Communication = Dune::Communication<typename MPIHelper::MPICommunicator>;
274 template <
class Gr
idType>
280 constexpr
static int dimworld = GridType::dimensionworld;
283 typedef typename GridType::ctype
ctype;
292 DUNE_THROW(
GridError,
"There is no grid factory for this grid type!");
296 virtual void insertVertex([[maybe_unused]]
const FieldVector<ctype,dimworld>& pos) {
297 DUNE_THROW(
GridError,
"There is no grid factory for this grid type!");
308 [[maybe_unused]]
const std::vector<unsigned int>& vertices) {
309 DUNE_THROW(
GridError,
"There is no grid factory for this grid type!");
326 DUNE_THROW(
GridError,
"There is no grid factory for this grid type!");
334 DUNE_THROW(
GridError,
"There is no grid factory for this grid type!");
virtual void insertElement(const GeometryType &, const std::vector< unsigned int > &, std::function< FieldVector< ctype, dimworld >(FieldVector< ctype, dimension >)>)
Insert a parametrized element into the coarse grid.
Definition: common/gridfactory.hh:122
Base class for classes implementing geometries of boundary segments.
Definition: boundarysegment.hh:37
Base class for grid boundary segments of arbitrary geometry.
virtual void insertElement(const GeometryType &type, const std::vector< unsigned int > &vertices)=0
Insert an element into the coarse grid.
virtual bool wasInserted([[maybe_unused]] const typename GridType::LeafIntersection &intersection) const
determine whether an intersection was inserted
Definition: common/gridfactory.hh:247
Dune::Communication< typename MPIHelper::MPICommunicator > Communication
Definition: common/gridfactory.hh:252
static constexpr int dimworld
The grid world dimension.
Definition: common/gridfactory.hh:77
virtual ~GridFactoryInterface()
virtual destructor
Definition: common/gridfactory.hh:94
Different resources needed by all grid implementations.
virtual std::unique_ptr< GridType > createGrid()
Finalize grid creation and hand over the grid.
Definition: common/gridfactory.hh:333
GridFactory()
Default constructor.
Definition: common/gridfactory.hh:291
GridType::ctype ctype
Type used by the grid for coordinates.
Definition: common/gridfactory.hh:80
virtual unsigned int insertionIndex([[maybe_unused]] const typename Codim< 0 >::Entity &entity) const
obtain an element's insertion index
Definition: common/gridfactory.hh:181
Communication comm() const
Return the Communication used by the grid factory.
Definition: common/gridfactory.hh:258
Include standard header files.
Definition: agrid.hh:59
virtual void insertBoundarySegment(const std::vector< unsigned int > &vertices)=0
insert a boundary segment
Provide a generic factory class for unstructured grids.
Definition: common/gridfactory.hh:69
virtual void insertVertex(const FieldVector< ctype, dimworld > &pos)=0
Insert a vertex into the coarse grid.
virtual void insertBoundarySegment([[maybe_unused]] const std::vector< unsigned int > &vertices)
insert a boundary segment
Definition: common/gridfactory.hh:325
GridFactoryInterface()
Default constructor.
Definition: common/gridfactory.hh:90
Provide a generic factory class for unstructured grids.
Definition: common/gridfactory.hh:275
virtual unsigned int insertionIndex([[maybe_unused]] const typename Codim< dimension >::Entity &entity) const
obtain a vertex' insertion index
Definition: common/gridfactory.hh:202
GridType::template Codim< codim >::Entity Entity
Definition: common/gridfactory.hh:86
virtual std::unique_ptr< GridType > createGrid()=0
Finalize grid creation and hand over the grid.
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:132
Base class for exceptions in Dune grid modules.
Definition: exceptions.hh:18
virtual void insertElement([[maybe_unused]] const GeometryType &type, [[maybe_unused]] const std::vector< unsigned int > &vertices)
Insert an element into the coarse grid.
Definition: common/gridfactory.hh:307
Definition: common/gridfactory.hh:84
static const int dimension
dimension of the grid
Definition: common/gridfactory.hh:74
virtual unsigned int insertionIndex([[maybe_unused]] const typename GridType::LeafIntersection &intersection) const
obtain a boundary's insertion index
Definition: common/gridfactory.hh:227
virtual void insertVertex([[maybe_unused]] const FieldVector< ctype, dimworld > &pos)
Insert a vertex into the coarse grid.
Definition: common/gridfactory.hh:296