Dune Core Modules (unstable)
Provide a generic factory class for unstructured grids. More...
#include <dune/grid/common/gridfactory.hh>
Public Member Functions | |
GridFactoryInterface () | |
Default constructor. | |
virtual | ~GridFactoryInterface () |
virtual destructor | |
virtual void | insertVertex (const FieldVector< ctype, dimworld > &pos)=0 |
Insert a vertex into the coarse grid. | |
virtual void | insertElement (const GeometryType &type, const std::vector< unsigned int > &vertices)=0 |
Insert an element into the coarse grid. More... | |
virtual void | insertElement (const GeometryType &type, const std::vector< unsigned int > &vertices, std::function< FieldVector< ctype, dimworld >(FieldVector< ctype, dimension >)> elementParametrization) |
Insert a parametrized element into the coarse grid. More... | |
virtual void | insertBoundarySegment (const std::vector< unsigned int > &vertices)=0 |
insert a boundary segment More... | |
virtual void | insertBoundarySegment (const std::vector< unsigned int > &vertices, const std::shared_ptr< BoundarySegment< dimension, dimworld > > &boundarySegment) |
insert an arbitrarily shaped boundary segment More... | |
virtual std::unique_ptr< GridType > | createGrid ()=0 |
Finalize grid creation and hand over the grid. More... | |
virtual unsigned int | insertionIndex (const typename Codim< 0 >::Entity &entity) const |
obtain an element's insertion index More... | |
virtual unsigned int | insertionIndex (const typename Codim< dimension >::Entity &entity) const |
obtain a vertex' insertion index More... | |
virtual unsigned int | insertionIndex (const typename GridType::LeafIntersection &intersection) const |
obtain a boundary's insertion index More... | |
virtual bool | wasInserted (const typename GridType::LeafIntersection &intersection) const |
determine whether an intersection was inserted More... | |
Communication | comm () const |
Return the Communication used by the grid factory. More... | |
Protected Types | |
typedef GridType::ctype | ctype |
Type used by the grid for coordinates. | |
Static Protected Attributes | |
static const int | dimension = GridType::dimension |
dimension of the grid | |
static constexpr int | dimworld = GridType::dimensionworld |
The grid world dimension. | |
Detailed Description
class Dune::GridFactoryInterface< GridType >
Provide a generic factory class for unstructured grids.
This base class declares the interface.
Example use: create a grid consisting of a cube triangulated into 6 tetrahedra:
Make sure that the inserted elements are not inverted, since not all grids support that. For instance, in the following code snippet the elements 1, 3 and 5 are inverted while elements 0, 2 and 4 are not.
Member Function Documentation
◆ comm()
|
inline |
Return the Communication used by the grid factory.
Defaults to the Communication induced by the process-local communicator.
References Dune::MPIHelper::getLocalCommunicator().
Referenced by Dune::StructuredGridFactory< GridType >::createCubeGrid(), Dune::StructuredGridFactory< AlbertaGrid< dim, dimworld > >::createSimplexGrid(), and Dune::StructuredGridFactory< GridType >::createSimplexGrid().
◆ createGrid()
|
pure virtual |
Finalize grid creation and hand over the grid.
The receiver takes responsibility of the memory allocated for the grid
Implemented in Dune::GridFactory< AlbertaGrid< dim, dimworld > >, Dune::GridFactory< GridType >, Dune::GridFactory< Grid >, Dune::GridFactory< Dune::UGGrid< dim > >, and Dune::GridFactory< UGGrid< dimworld > >.
◆ insertBoundarySegment() [1/2]
|
pure virtual |
insert a boundary segment
This method inserts a boundary segment into the coarse grid. Using this method has two advantages over not using it:
- The boundary segment gets an insertion index.
- The grid factory can verify that this is actually a boundary segment
- Note
- You are not forced to insert all boundary segments. The grid factory will find the remaining boundary segments itself.
- Parameters
-
[in] vertices the indices of the vertices of the segment
Implemented in Dune::GridFactory< AlbertaGrid< dim, dimworld > >, Dune::GridFactory< GridType >, Dune::GridFactory< Grid >, Dune::GridFactory< Dune::UGGrid< dim > >, Dune::GridFactory< UGGrid< dimworld > >, Dune::GridFactory< GridType >, Dune::GridFactory< Grid >, and Dune::GridFactory< Dune::UGGrid< dim > >.
◆ insertBoundarySegment() [2/2]
|
inlinevirtual |
insert an arbitrarily shaped boundary segment
This method inserts a boundary segment into the coarse grid.
- Parameters
-
[in] vertices the indices of the vertices of the segment [in] boundarySegment user defined implementation of the boundary segment's geometry
Reimplemented in Dune::GridFactory< GridType >, Dune::GridFactory< Grid >, and Dune::GridFactory< Dune::UGGrid< dim > >.
References DUNE_THROW.
◆ insertElement() [1/2]
|
pure virtual |
Insert an element into the coarse grid.
- Parameters
-
type The GeometryType of the new element vertices The vertices of the new element, using the DUNE numbering
Make sure the inserted element is not inverted (this holds even for simplices). There are grids that can't handle inverted elements.
Implemented in Dune::GridFactory< AlbertaGrid< dim, dimworld > >, Dune::GridFactory< GridType >, Dune::GridFactory< Grid >, Dune::GridFactory< Dune::UGGrid< dim > >, and Dune::GridFactory< UGGrid< dimworld > >.
◆ insertElement() [2/2]
|
inlinevirtual |
Insert a parametrized element into the coarse grid.
- Parameters
-
type The GeometryType of the new element vertices The vertices of the new element, using the DUNE numbering elementParametrization A function prescribing the shape of this element
Make sure the inserted element is not inverted (this holds even for simplices). There are grids that can't handle inverted elements.
References DUNE_THROW.
◆ insertionIndex() [1/3]
|
inlinevirtual |
obtain an element's insertion index
Data can be associated to the created macro grid using the insertion index of each entity that has been inserted during the grid creation process.
Between grid construction (createGrid) and the first grid modification, this method allows to obtain this insertion index from the grid factory. This way, data can be stored using the index maps provided by the grid.
- Parameters
-
[in] entity entity whose insertion index is requested
- Returns
- insertion index of the entity
Reimplemented in Dune::GridFactory< AlbertaGrid< dim, dimworld > >, and Dune::GridFactory< UGGrid< dimworld > >.
References DUNE_THROW.
Referenced by Dune::GridFactory< AlbertaGrid< dim, dimworld > >::insertionIndex(), and Dune::GridFactory< UGGrid< dimworld > >::wasInserted().
◆ insertionIndex() [2/3]
|
inlinevirtual |
obtain a vertex' insertion index
Data can be associated to the created macro grid using the insertion index of each entity that has been inserted during the grid creation process.
Between grid construction (createGrid) and the first grid modification, this method allows to obtain this insertion index from the grid factory. This way, data can be stored using the index maps provided by the grid.
- Parameters
-
[in] entity entity whose insertion index is requested
- Returns
- insertion index of the entity
Reimplemented in Dune::GridFactory< AlbertaGrid< dim, dimworld > >, and Dune::GridFactory< UGGrid< dimworld > >.
References DUNE_THROW.
◆ insertionIndex() [3/3]
|
inlinevirtual |
obtain a boundary's insertion index
Data can be associated to the created macro grid using the insertion index of each entity that has been inserted during the grid creation process.
Between grid construction (createGrid) and the first grid modification, this method allows to obtain this insertion index from the grid factory. This way, data can be stored using the index maps provided by the grid.
- Parameters
-
[in] intersection intersection whose insertion index is requested
- Returns
- insertion index of the intersection
- Note
- The insertion index can only be obtained for boundary intersections that were actually inserted (see also wasInserted).
References DUNE_THROW.
◆ wasInserted()
|
inlinevirtual |
determine whether an intersection was inserted
This method allows checking whether an intersection was actually inserted into the grid factory.
- Note
- Not all boundary segments need to be inserted into the grid factory.
- This method returns false for all interior intersections
- Parameters
-
[in] intersection intersection in question
- Returns
- true, if the intersection was inserted
References DUNE_THROW.
The documentation for this class was generated from the following file:
- dune/grid/common/gridfactory.hh