Dune Core Modules (unstable)

Provides a meta grid that is identical to its host. More...

#include <dune/grid/identitygrid.hh>

Public Types

typedef HostGrid HostGridType
 
typedef IdentityGridFamily< HostGrid::dimension, HostGrid > GridFamily
 type of the used GridFamily for this grid
 
typedef IdentityGridFamily< HostGrid::dimension, HostGrid >::Traits Traits
 the Traits
 
typedef HostGrid::ctype ctype
 The type used to store coordinates, inherited from the HostGrid.
 
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.
 
typedef GridFamily::Traits::LevelIndexSet LevelIndexSet
 A type that is a model of Dune::IndexSet which provides a consecutive, but non persistent, numbering for entities on a grid level.
 
typedef GridFamily::Traits::LeafIndexSet LeafIndexSet
 A type that is a model of Dune::IndexSet which provides a consecutive, but non persistent, numbering for entities in the leaf grid.
 
typedef GridFamily::Traits::GlobalIdSet GlobalIdSet
 A type that is a model of Dune::IdSet which provides a unique and persistent numbering for all entities in the grid. The numbering is unique over all processes over which the grid is partitioned. The numbering is not necessarily consecutive.
 
typedef GridFamily::Traits::LocalIdSet LocalIdSet
 A type that is a model of Dune::IdSet which provides a unique and persistent numbering for all entities in the grid. The numbering is only unique in a single process and it is not necessarily consecutive.
 
using Communication = typename GridFamily::Traits::Communication
 A type that is a model of Dune::Communication. It provides a portable way for communication on the set of processes used by the grid.
 

Public Member Functions

 IdentityGrid (HostGrid &hostgrid)
 Constructor. More...
 
 ~IdentityGrid ()
 Destructor.
 
int maxLevel () const
 Return maximum level defined in this grid. More...
 
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 >::LevelIterator lbegin (int level) const
 Iterator to first entity of given codim on level.
 
template<int codim, PartitionIteratorType PiType>
Traits::template Codim< codim >::template Partition< PiType >::LevelIterator lend (int level) const
 one past the end on this level
 
template<int codim>
Traits::template Codim< codim >::LeafIterator leafbegin () const
 Iterator to first leaf entity of given codim.
 
template<int codim>
Traits::template Codim< codim >::LeafIterator leafend () const
 one past the end of the sequence of leaf entities
 
template<int codim, PartitionIteratorType PiType>
Traits::template Codim< codim >::template Partition< PiType >::LeafIterator leafbegin () const
 Iterator to first leaf entity of given codim.
 
template<int codim, PartitionIteratorType PiType>
Traits::template Codim< codim >::template Partition< PiType >::LeafIterator leafend () const
 one past the end of the sequence of leaf entities
 
int size (int level, int codim) const
 Number of grid entities per level and codim.
 
size_t numBoundarySegments () const
 returns the number of boundary segments within the macro grid
 
int size (int codim) const
 number of leaf entities per codim in this process
 
int size (int level, GeometryType type) const
 number of entities per level, codim and geometry type in this process
 
int size (GeometryType type) const
 number of leaf entities per codim and geometry type in this process
 
const Traits::GlobalIdSetglobalIdSet () const
 Access to the GlobalIdSet.
 
const Traits::LocalIdSetlocalIdSet () const
 Access to the LocalIdSet.
 
const Traits::LevelIndexSetlevelIndexSet (int level) const
 Access to the LevelIndexSets.
 
const Traits::LeafIndexSetleafIndexSet () const
 Access to the LeafIndexSet.
 
template<class EntitySeed >
Traits::template Codim< EntitySeed::codimension >::Entity entity (const EntitySeed &seed) const
 Create Entity from EntitySeed.
 
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.
 
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 ([[maybe_unused]] 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...
 

Static Public Attributes

Exported constants
constexpr static int dimension = dim
 The dimension of the grid.
 
constexpr static int dimensionworld = dimworld
 The dimension of the world the grid lives in.
 

Grid Refinement Methods

HostGrid * hostgrid_
 The host grid which contains the actual grid hierarchy structure.
 
void globalRefine (int refCount)
 
bool mark (int refCount, const typename Traits::template Codim< 0 >::Entity &e)
 Mark entity for refinement. More...
 
int getMark (const typename Traits::template Codim< 0 >::Entity &e) const
 Return refinement mark for entity. More...
 
bool preAdapt ()
 returns true, if at least one entity is marked for adaption
 
bool adapt ()
 Triggers the grid refinement process.
 
void postAdapt ()
 Clean up refinement markers.
 
unsigned int overlapSize (int codim) const
 Size of the overlap on the leaf level.
 
unsigned int ghostSize (int codim) const
 Size of the ghost cell layer on the leaf level.
 
unsigned int overlapSize (int level, int codim) const
 Size of the overlap on a given level.
 
unsigned int ghostSize (int level, int codim) const
 Size of the ghost cell layer on a given level.
 
const Communication< No_Comm > & comm () const
 dummy communication
 
template<class DataHandle >
void communicate (DataHandle &handle, InterfaceType iftype, CommunicationDirection dir, int level) const
 Communicate data of level gridView.
 
template<class DataHandle >
void communicate (DataHandle &handle, InterfaceType iftype, CommunicationDirection dir) const
 Communicate data of leaf gridView.
 
HostGridTypegetHostGrid () const
 Returns the hostgrid this IdentityGrid lives in.
 
template<int codim>
const HostGrid::Traits::template Codim< codim >::EntitygetHostEntity (const typename Traits::template Codim< codim >::Entity &e) const
 Returns the hostgrid entity encapsulated in given IdentityGrid entity.
 

Parallel data distribution and communication

template<class DataHandle >
bool loadBalance (DataHandle &data)
 Re-balances the load each process has to handle for a parallel grid and moves the data. More...
 
GridImp & asImp ()
 Barton-Nackman trick.
 
const GridImp & asImp () const
 Barton-Nackman trick.
 

Detailed Description

template<class HostGrid>
class Dune::IdentityGrid< HostGrid >

Provides a meta grid that is identical to its host.

Template Parameters
HostGridThe host grid type wrapped by the IdentityGrid

Member Typedef Documentation

◆ HostGridType

template<class HostGrid >
typedef HostGrid Dune::IdentityGrid< HostGrid >::HostGridType
Todo:
Should not be public

Constructor & Destructor Documentation

◆ IdentityGrid()

template<class HostGrid >
Dune::IdentityGrid< HostGrid >::IdentityGrid ( HostGrid &  hostgrid)
inlineexplicit

Constructor.

Parameters
hostgridThe host grid wrapped by the IdentityGrid

Member Function Documentation

◆ getMark() [1/2]

template<int dim, int dimworld, class ct , class GridFamily >
int Dune::Grid< dim, dimworld, ct, GridFamily >::getMark ( const typename Codim< 0 >::Entity e) const
inlineinherited

returns adaptation mark for given entity

Parameters
[in]eEntity for which adaptation mark should be determined
Returns
int adaptation mark currently set for given Entity e

References Dune::Grid< dim, dimworld, ct, GridFamily >::asImp().

◆ getMark() [2/2]

template<class HostGrid >
int Dune::IdentityGrid< HostGrid >::getMark ( const typename Traits::template Codim< 0 >::Entity e) const
inline

Return refinement mark for entity.

Returns
refinement mark (1,0,-1)

References Dune::IdentityGrid< HostGrid >::hostgrid_.

◆ globalRefine()

template<class HostGrid >
void Dune::IdentityGrid< HostGrid >::globalRefine ( int  refCount)
inline

global refinement

Todo:
optimize implementation

References Dune::IdentityGrid< HostGrid >::hostgrid_.

◆ loadBalance()

template<int dim, int dimworld, class ct , class GridFamily >
template<class DataHandle >
bool Dune::Grid< dim, dimworld, ct, GridFamily >::loadBalance ( DataHandle &  data)
inlineinherited

Re-balances the load each process has to handle for a parallel grid and moves the data.

Parameters
dataA data handle telling the method which data should be communicated and how. Has to adhere to the interface describe by CommDataHandleIf just like the data handle for the communicate methods.
Returns
True if the grid has changed.

◆ mark() [1/3]

template<int dim, int dimworld, class ct , class GridFamily >
bool Dune::Grid< dim, dimworld, ct, GridFamily >::mark ( int  refCount,
const typename Codim< 0 >::Entity e 
)
inlineinherited

Marks an entity to be refined/coarsened in a subsequent adapt.

Parameters
[in]refCountNumber of subdivisions that should be applied. Negative value means coarsening.
[in]eEntity that should be marked
Returns
true if Entity was marked, false otherwise.

References Dune::Grid< dim, dimworld, ct, GridFamily >::asImp().

◆ mark() [2/3]

bool Dune::GridDefaultImplementation< dim, dimworld, HostGrid::ctype , IdentityGridFamily< HostGrid::dimension, HostGrid > >::mark ( int  refCount,
const typename Traits ::template Codim< 0 >::Entity e 
)
inlineinherited

Marks an entity to be refined/coarsened in a subsequent adapt.

Parameters
[in]refCountNumber of subdivisions that should be applied. Negative value means coarsening.
[in]eEntity 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
    bool mark( int refCount,
    typename Traits::template Codim<0>::Entity & e ).
    bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
    Mark entity for refinement.
    Definition: identitygrid.hh:318
    GridFamily::Traits::template Codim< cd >::Entity Entity
    A type that is a model of a Dune::Entity<cd,dim,...>.
    Definition: grid.hh:419
    This template method will vanish due to the inheritance rules.

◆ mark() [3/3]

template<class HostGrid >
bool Dune::IdentityGrid< HostGrid >::mark ( int  refCount,
const typename Traits::template Codim< 0 >::Entity e 
)
inline

Mark entity for refinement.

This only works for entities of codim 0. The parameter is currently ignored

Returns
  • true, if marking was successful
  • false, if marking was not possible

References Dune::IdentityGrid< HostGrid >::hostgrid_.

◆ maxLevel()

template<class HostGrid >
int Dune::IdentityGrid< HostGrid >::maxLevel ( ) const
inline

Return maximum level defined in this grid.

Levels are numbered 0 ... maxlevel with 0 the coarsest level.

References Dune::IdentityGrid< HostGrid >::hostgrid_.

Referenced by Dune::IdentityGrid< HostGrid >::levelIndexSet().


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.80.0 (Mar 28, 23:30, 2024)