Dune Core Modules (2.4.2)
specialization of the generic GridFactory for AlbertaGrid More...
#include <dune/grid/albertagrid/gridfactory.hh>
Public Types | |
typedef AlbertaGrid< dim, dimworld > | Grid |
type of grid this factory is for | |
typedef Grid::ctype | ctype |
type of (scalar) coordinates | |
typedef FieldVector< ctype, dimensionworld > | WorldVector |
type of vector for world coordinates | |
typedef FieldMatrix< ctype, dimensionworld, dimensionworld > | WorldMatrix |
type of matrix from world coordinates to world coordinates | |
Public Member Functions | |
GridFactory () | |
virtual void | insertVertex (const WorldVector &pos) |
insert a vertex into the macro grid More... | |
virtual void | insertElement (const GeometryType &type, const std::vector< unsigned int > &vertices) |
insert an element into the macro grid More... | |
virtual void | insertBoundary (int element, int face, int id) |
mark a face as boundary (and assign a boundary id) More... | |
virtual void | insertBoundaryProjection (const GeometryType &type, const std::vector< unsigned int > &vertices, const DuneProjection *projection) |
insert a boundary projection into the macro grid More... | |
virtual void | insertBoundaryProjection (const DuneProjection *projection) |
insert a global (boundary) projection into the macro grid More... | |
virtual void | insertBoundarySegment (const std::vector< unsigned int > &vertices) |
insert a boundary segment into the macro grid More... | |
virtual void | insertBoundarySegment (const std::vector< unsigned int > &vertices, const shared_ptr< BoundarySegment > &boundarySegment) |
insert a shaped boundary segment into the macro grid More... | |
void | insertFaceTransformation (const WorldMatrix &matrix, const WorldVector &shift) |
add a face transformation (for periodic identification) More... | |
void | markLongestEdge () |
mark the longest edge as refinemet edge More... | |
Grid * | createGrid () |
finalize grid creation and hand over the grid More... | |
template<GrapeIOFileFormatType type> | |
bool | write (const std::string &filename) |
write out the macro triangulation in native grid file format More... | |
virtual bool | write (const std::string &filename) |
write out the macro triangulation in native grid file format 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 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, const shared_ptr< VirtualFunction< FieldVector< ctype, dimension >, FieldVector< ctype, dimworld > > > &elementParametrization) |
Insert a parametrized element into the coarse grid. More... | |
virtual void | insertBoundarySegment (const std::vector< unsigned int > &vertices, const shared_ptr< BoundarySegment< dimension, dimworld > > &boundarySegment) |
insert an arbitrarily shaped boundary segment 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... | |
Static Public Member Functions | |
static void | destroyGrid (Grid *grid) |
destroy a grid previously obtain from this factory More... | |
Protected Types | |
enum | |
The grid world dimension. | |
Detailed Description
class Dune::GridFactory< AlbertaGrid< dim, dimworld > >
specialization of the generic GridFactory for AlbertaGrid
The GridFactory for AlbertaGrid adds some extensions to the standard GridFactoryInterface. It provides the following additional features:
- It allows to set boundary ids via insertBoundary. For ALBERTA 1.2, these boundary ids are ignored, though.
- For ALBERTA 3.0 and above, you can add face transformation to identify faces. This allows the construction of periodic grids.
- The grid can be written in ALBERTA's native format for macro triangulations via write (both ASCII and XDR format are supported).
- On grid creation, a name can be assigned to the grid.
- On grid creation, the grid can be reordered such that ALBERTA uses the longest edge as refinement edge during recursive bisection.
Constructor & Destructor Documentation
◆ GridFactory()
|
inline |
default constructor
Member Function Documentation
◆ createGrid()
|
inlinevirtual |
finalize grid creation and hand over the grid
This version of createGrid is original to the AlbertaGrid grid factroy, allowing to specity a grid name.
- Returns
- a pointer to the newly created grid
- Note
- The caller takes responsibility of freeing the memory allocated for the grid.
- ALBERTA's grid factory provides a static method for freeing the grid (destroyGrid).
Implements Dune::GridFactoryInterface< AlbertaGrid< dim, dimworld > >.
References Dune::GridFactoryInterface< GridType >::dimension, and DUNE_THROW.
◆ destroyGrid()
|
inlinestatic |
destroy a grid previously obtain from this factory
- Parameters
-
[in] grid pointer to the grid to destroy
◆ insertBoundary()
|
inlinevirtual |
mark a face as boundary (and assign a boundary id)
- Parameters
-
[in] element index of the element, the face belongs to [in] face local number of the face within the element [in] id boundary id to assign to the face
- Note
- ALBERTA supports only boundary id in the range 1,...,127.
References DUNE_THROW.
◆ insertBoundaryProjection() [1/2]
|
inlinevirtual |
insert a global (boundary) projection into the macro grid
- Parameters
-
[in] projection global (boundary) projection
- Note
- The grid takes control of the projection object.
References DUNE_THROW.
◆ insertBoundaryProjection() [2/2]
|
inlinevirtual |
insert a boundary projection into the macro grid
- Parameters
-
[in] type geometry type of boundary face [in] vertices vertices of the boundary face [in] projection boundary projection
- Note
- The grid takes control of the projection object.
References Dune::GeometryType::dim(), Dune::GridFactoryInterface< GridType >::dimension, DUNE_THROW, and Dune::GeometryType::isSimplex().
◆ insertBoundarySegment() [1/3]
|
inlinevirtual |
insert a boundary segment into the macro grid
Only influences the ordering of the boundary segments
- Parameters
-
[in] vertices vertex indices of boundary face
Implements Dune::GridFactoryInterface< AlbertaGrid< dim, dimworld > >.
References Dune::GridFactoryInterface< GridType >::dimension.
◆ insertBoundarySegment() [2/3]
|
inlinevirtual |
insert a shaped boundary segment into the macro grid
- Parameters
-
[in] vertices vertex indices of boundary face [in] boundarySegment geometric realization of shaped boundary
References Dune::GridFactoryInterface< GridType >::dimension, DUNE_THROW, Dune::FloatCmp::gt(), and Dune::ReferenceElements< ctype, dim >::simplex().
◆ insertBoundarySegment() [3/3]
|
inlinevirtualinherited |
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
◆ insertElement() [1/2]
|
inlinevirtual |
insert an element into the macro grid
- Parameters
-
[in] type GeometryType of the new element [in] vertices indices of the element vertices (in DUNE numbering)
Implements Dune::GridFactoryInterface< AlbertaGrid< dim, dimworld > >.
References Dune::GeometryType::dim(), Dune::GridFactoryInterface< GridType >::dimension, DUNE_THROW, and Dune::GeometryType::isSimplex().
◆ insertElement() [2/2]
|
inlinevirtualinherited |
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.
◆ insertFaceTransformation()
|
inline |
add a face transformation (for periodic identification)
A face transformation is an affine mapping T from world coordinates to world coordinates. ALBERTA periodically identifies two faces f and g if T( f ) = g or T( g ) = f.
- Parameters
-
[in] matrix matrix describing the linear part of T [in] shift vector describing T( 0 )
- Note
- ALBERTA requires the matrix to be orthogonal.
- ALBERTA automatically adds the inverse transformation.
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 from Dune::GridFactoryInterface< AlbertaGrid< dim, dimworld > >.
References Dune::GridFactoryInterface< GridType >::insertionIndex().
◆ 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 from Dune::GridFactoryInterface< AlbertaGrid< dim, dimworld > >.
References Dune::GridFactoryInterface< GridType >::insertionIndex().
◆ insertionIndex() [3/3]
|
inlinevirtualinherited |
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).
◆ insertVertex()
|
inlinevirtual |
insert a vertex into the macro grid
- Parameters
-
[in] pos position of the vertex (in world coordinates)
◆ markLongestEdge()
|
inline |
mark the longest edge as refinemet edge
Marking the longest edge avoids cycles in the recursive bisection algorithm, if the longest edge of each element is unique. It also makes sure the angles degenerate least. It can, hoowever, produce more nonlocal refinements than necessary. Therefore this feature is disabled by default.
◆ wasInserted()
|
inlinevirtualinherited |
determine whether an intersection was inserted
This method allows checking wheter 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
◆ write() [1/2]
|
inline |
write out the macro triangulation in native grid file format
- Template Parameters
-
type type of file to write (either ascii or xdr)
- Parameters
-
[in] filename name of the file to write to
- Returns
true
on success
References Dune::GridFactoryInterface< GridType >::dimension, and Dune::xdr.
◆ write() [2/2]
|
inlinevirtual |
write out the macro triangulation in native grid file format
The grid is written in human readable form (ascii).
- Parameters
-
[in] filename name of the file to write to
- Returns
true
on success
The documentation for this class was generated from the following file:
- dune/grid/albertagrid/gridfactory.hh