Dune Core Modules (unstable)
[ provides Dune::Grid ] More...
#include <dune/grid/albertagrid/agrid.hh>
Public Types | |
typedef AlbertaGridFamily< dim, dimworld > | GridFamily |
the grid family of AlbertaGrid | |
typedef Traits::LeafIndexSet | LeafIndexSet |
type of leaf index set | |
typedef Traits::LevelIndexSet | LevelIndexSet |
type of level index sets | |
typedef Traits::HierarchicIndexSet | HierarchicIndexSet |
type of hierarchic index set | |
typedef Traits::GlobalIdSet | GlobalIdSet |
type of global id set | |
typedef Traits::LocalIdSet | LocalIdSet |
type of local id set | |
typedef Traits::Communication | Communication |
type of communication | |
Exported types | |
typedef GridFamily::Traits::LeafGridView | LeafGridView |
type of view for leaf grid | |
typedef GridFamily::Traits::LevelGridView | LevelGridView |
type of view for level grid | |
typedef GridFamily::Traits::LeafIntersection | LeafIntersection |
A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimension 0 entities in the leaf view. | |
typedef GridFamily::Traits::LevelIntersection | LevelIntersection |
A type that is a model of Dune::Intersection, an intersections of two codimension 1 of two codimension 0 entities in a level view. | |
typedef GridFamily::Traits::LeafIntersectionIterator | LeafIntersectionIterator |
A type that is a model of Dune::IntersectionIterator which is an iterator that allows to examine, but not to modify, the intersections of codimension 1 of an leaf element (entity of codimension 0) with other leaf elements. | |
typedef GridFamily::Traits::LevelIntersectionIterator | LevelIntersectionIterator |
A type that is a model of Dune::IntersectionIterator which is an iterator that allows to examine, but not to modify, the intersections of codimension 1 of an element (entity of codimension 0) with other elements on the same level. | |
typedef GridFamily::Traits::HierarchicIterator | HierarchicIterator |
A type that is a model of Dune::HierarchicIterator A type of iterator that allows to examine, but not to modify, entities of codimension 0 that result from refinement of an entity of codimension 0. | |
Public Member Functions | |
AlbertaGrid () | |
create an empty grid | |
AlbertaGrid (const Alberta::MacroData< dimension > ¯oData, const std::shared_ptr< DuneBoundaryProjection< dimensionworld > > &projection=std::shared_ptr< DuneBoundaryProjection< dimensionworld > >()) | |
create a grid from an ALBERTA macro data structure More... | |
AlbertaGrid (const std::string ¯oGridFileName) | |
create a grid from an ALBERTA macro grid file More... | |
~AlbertaGrid () | |
destructor | |
int | maxLevel () const |
template<int cd, PartitionIteratorType pitype> | |
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator | lbegin (int level) const |
Iterator to first entity of given codim on level. | |
template<int cd, PartitionIteratorType pitype> | |
Traits::template Codim< cd >::template Partition< pitype >::LevelIterator | lend (int level) const |
one past the end on this level | |
template<int codim> | |
Traits::template Codim< codim >::LevelIterator | lbegin (int level) const |
Iterator to first entity of given codim on level. | |
template<int codim> | |
Traits::template Codim< codim >::LevelIterator | lend (int level) const |
one past the end on this level | |
template<int codim, PartitionIteratorType pitype> | |
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator | leafbegin () const |
return LeafIterator which points to first leaf entity | |
template<int codim, PartitionIteratorType pitype> | |
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator | leafend () const |
return LeafIterator which points behind last leaf entity | |
template<int codim> | |
Traits::template Codim< codim >::LeafIterator | leafbegin () const |
return LeafIterator which points to first leaf entity | |
template<int codim> | |
Traits::template Codim< codim >::LeafIterator | leafend () const |
return LeafIterator which points behind last leaf entity | |
int | size (int level, int codim) const |
Number of grid entities per level and codim because lbegin and lend are none const, and we need this methods counting the entities on each level, you know. | |
int | size (int level, GeometryType type) const |
number of entities per level and geometry type in this process | |
int | size (int codim) const |
number of leaf entities per codim in this process | |
int | size (GeometryType type) const |
number of leaf entities per geometry type in this process | |
std::size_t | numBoundarySegments () const |
number of boundary segments within the macro grid | |
Traits::LevelGridView | levelGridView (int level) const |
View for a grid level for All_Partition. | |
Traits::LeafGridView | leafGridView () const |
View for the leaf grid for All_Partition. | |
int | getMark (const typename Traits::template Codim< 0 >::Entity &e) const |
returns adaptation mark for given entity More... | |
bool | mark (int refCount, const typename Traits::template Codim< 0 >::Entity &e) |
Marks an entity to be refined/coarsened in a subsequent adapt. More... | |
void | globalRefine (int refCount) |
uses the interface, mark on entity and refineLocal | |
bool | adapt () |
Refine all positive marked leaf entities, coarsen all negative marked entities if possible. More... | |
template<class DataHandle > | |
bool | adapt (AdaptDataHandleInterface< This, DataHandle > &handle) |
callback adapt method with AdaptDataHandleInterface | |
bool | preAdapt () |
returns true, if a least one element is marked for coarsening | |
void | postAdapt () |
clean up some markers | |
const Communication & | comm () const |
return reference to communication, if MPI found this is specialisation for MPI | |
template<class EntitySeed > | |
Traits::template Codim< EntitySeed::codimension >::Entity | entity (const EntitySeed &seed) const |
obtain Entity from EntitySeed. | |
bool | writeGrid (const std::string &filename, ctype time) const |
write Grid to file in Xdr | |
bool | readGrid (const std::string &filename, ctype &time) |
read Grid from file filename and store time of mesh in time | |
const Traits::LevelIndexSet & | levelIndexSet (int level) const |
return level index set for given level | |
const Traits::LeafIndexSet & | leafIndexSet () const |
return leaf index set | |
const GlobalIdSet & | globalIdSet () const |
return global IdSet | |
const LocalIdSet & | localIdSet () const |
return local IdSet | |
Traits::LeafIntersectionIterator | ileafbegin (const typename Traits::template Codim< 0 >::Entity &entity) const |
obtain begin intersection iterator on the leaf level | |
Traits::LeafIntersectionIterator | ileafend (const typename Traits::template Codim< 0 >::Entity &entity) const |
obtain end intersection iterator on the leaf level | |
Traits::LevelIntersectionIterator | ilevelbegin (const typename Traits::template Codim< 0 >::Entity &entity) const |
obtain begin intersection iterator on the entity level | |
Traits::LevelIntersectionIterator | ilevelend (const typename Traits::template Codim< 0 >::Entity &entity) const |
obtain end intersection iterator on the entity level | |
bool | mark (int refCount, const typename Traits ::template Codim< 0 >::Entity &e) |
Marks an entity to be refined/coarsened in a subsequent adapt. More... | |
bool | loadBalance () |
default implementation of load balance does nothing and returns false | |
bool | loadBalance (DataHandle &data) |
default implementation of load balance does nothing and returns false | |
Adaptivity and grid refinement | |
bool | mark (int refCount, const typename Codim< 0 >::Entity &e) |
Marks an entity to be refined/coarsened in a subsequent adapt. More... | |
int | getMark (const typename Codim< 0 >::Entity &e) const |
returns adaptation mark for given entity More... | |
Protected Member Functions | |
Parallel data distribution and communication | |
GridImp & | asImp () |
Barton-Nackman trick. | |
const GridImp & | asImp () const |
Barton-Nackman trick. | |
Detailed Description
class Dune::AlbertaGrid< dim, dimworld >
[ provides Dune::Grid ]
Simplicial grid implementation from the ALBERTA finite element toolbox
AlbertaGrid provides access to the grid from the ALBERTA finite element toolbox through the Dune interface.
ALBERTA is a finite element toolbox written by Alfred Schmidt and Kunibert G. Siebert (see http://www.alberta-fem.de). It contains a simplicial mesh in 1, 2 and 3 space dimensions that can be dynamically adapted by a bisection algorithm.
Supported ALBERTA versions include 3.0 or higher. It can be downloaded from the ALBERTA website (https://gitlab.mathematik.uni-stuttgart.de/ians-nmh/alberta/alberta3).
After installing ALBERTA, just configure DUNE with the cmake option -DAlberta_ROOT=[path/to/alberta]
and provide the path to ALBERTA.
Each program linking to ALBERTA only supports a fixed dimension of world. This is obtained from the ALBERTA_DIM
preprocessor variable. This variable and all other necessary link flags and libraries are set by the cmake function add_dune_alberta_flags(WORLDDIM [N] [targets]...)
with N the world dimension.
CMake sets the compile flag HAVE_ALBERTA
that tells you whether ALBERTA was found, and ALBERTA_DIM
compile flags which tells you the dimension of world for this program.
Constructor & Destructor Documentation
◆ AlbertaGrid() [1/2]
|
inline |
create a grid from an ALBERTA macro data structure
- Parameters
-
[in] macroData macro data to create grid from [in] projection shared pointer to a global boundary projection (defaults to 0)
References DUNE_THROW.
◆ AlbertaGrid() [2/2]
|
inline |
create a grid from an ALBERTA macro grid file
- Parameters
-
[in] macroGridFileName name of the macro grid file
References DUNE_THROW.
Member Function Documentation
◆ adapt()
|
inline |
Refine all positive marked leaf entities, coarsen all negative marked entities if possible.
\return true if a least one entity was refined The complete adaptation process works as follows: - mark entities with the mark() method - call preAdapt() - if preAdapt() returned true: possibly save current solution - call adapt() - if adapt() returned true: possibly interpolate the (saved) solution - call postAdapt()
References Dune::AlbertaGrid< dim, dimworld >::preAdapt().
◆ getMark() [1/2]
|
inlineinherited |
◆ getMark() [2/2]
|
inline |
returns adaptation mark for given entity
- Parameters
-
[in] e Entity for which adaptation mark should be determined
- Returns
- int adaptation mark currently set for given Entity e
References Dune::AlbertaGrid< dim, dimworld >::getMark().
Referenced by Dune::AlbertaGrid< dim, dimworld >::getMark().
◆ mark() [1/3]
|
inlineinherited |
◆ mark() [2/3]
|
inlineinherited |
Marks an entity to be refined/coarsened in a subsequent adapt.
- Parameters
-
[in] refCount Number of subdivisions that should be applied. Negative value means coarsening. [in] e Entity to Entity that should be refined
- Returns
- true if Entity was marked, false otherwise.
- Note
- default implementation is: return false; for grids with no adaptation.
- for the grid programmer: this method is implemented as a template method, because the Entity type is not defined when the class is instantiated You won't need this trick in the implementation. In your implementation you should use it as typename Traits::template Codim<0>::Entity & e ).bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)Marks an entity to be refined/coarsened in a subsequent adapt.Definition: albertagrid.cc:385
◆ mark() [3/3]
|
inline |
◆ maxLevel()
|
inline |
Return maximum level defined in this grid. Levels are numbered 0 ... maxLevel with 0 the coarsest level.
The documentation for this class was generated from the following files:
- dune/grid/albertagrid/agrid.hh
- dune/grid/albertagrid/albertagrid.cc