5#ifndef DUNE_GRID_IDENTITYGRID_HH
6#define DUNE_GRID_IDENTITYGRID_HH
15#include <dune/common/parallel/communication.hh>
32 template <
class HostGr
id>
36 template<
class Gr
id >
37 struct HostGridAccess;
39 template<
int dim,
class HostGr
id>
47 HostGrid::dimensionworld,
61 typename HostGrid::Traits::GlobalIdSet::IdType,
63 typename HostGrid::Traits::LocalIdSet::IdType,
64 Communication<No_Comm>,
69 typename HostGrid::Traits::LevelIndexSet::IndexType,
70 typename HostGrid::Traits::LevelIndexSet::Types,
71 typename HostGrid::Traits::LeafIndexSet::IndexType,
72 typename HostGrid::Traits::LeafIndexSet::Types
89 template <
class HostGr
id>
92 typename HostGrid::ctype, IdentityGridFamily<HostGrid::dimension, HostGrid> >
102 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp_>
105 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp_>
109 template<
int codim_,
int dim_,
class Gr
idImp_>
130 typedef typename HostGrid::ctype
ctype;
139 leafIndexSet_(*this),
150 for (
size_t i=0; i<levelIndexSets_.size(); i++)
151 if (levelIndexSets_[i])
152 delete (levelIndexSets_[i]);
179 template<
int codim, PartitionIteratorType PiType>
186 template<
int codim, PartitionIteratorType PiType>
207 template<
int codim, PartitionIteratorType PiType>
214 template<
int codim, PartitionIteratorType PiType>
222 int size (
int level,
int codim)
const {
239 int size (
int level, GeometryType type)
const {
240 return levelIndexSets_[level]->size(type);
245 int size (GeometryType type)
const
266 if (level < 0 || level >
maxLevel())
268 DUNE_THROW(
GridError,
"levelIndexSet of nonexisting level " << level <<
" requested!");
270 return *levelIndexSets_[level];
277 return leafIndexSet_;
282 template <
class EntitySeed >
283 typename Traits::template Codim<EntitySeed::codimension>::Entity
292 return EntityImp(
this,
hostgrid_->entity(seed.
impl().hostEntitySeed()));
353 return hostgrid_->leafGridView().overlapSize(codim);
359 return hostgrid_->leafGridView().ghostSize(codim);
365 return hostgrid_->levelGridView(level).overlapSize(codim);
371 return hostgrid_->levelGridView(level).ghostSize(codim);
381 void loadBalance(
int strategy,
int minlevel,
int depth,
int maxlevel,
int minelement){
382 DUNE_THROW(NotImplemented,
"IdentityGrid::loadBalance()");
394 template <
class DataHandle>
398 hostgrid_->levelGridView(level).communicate(handle,iftype,dir);
402 template <
class DataHandle>
406 hostgrid_->leafGridView().communicate(handle,iftype,dir);
425 return e.impl().hostEntity_;
438 localIdSet_.update();
440 globalIdSet_.update();
445 for (
int i=levelIndexSets_.size(); i<=
maxLevel(); i++) {
448 levelIndexSets_.push_back(p);
452 if (levelIndexSets_[i])
453 levelIndexSets_[i]->update(*
this, i);
455 leafIndexSet_.update(*
this);
463 std::vector<IdentityGridLevelIndexSet<const IdentityGrid<HostGrid> >*> levelIndexSets_;
479 namespace Capabilities
484 template<
class HostGr
id,
int codim>
490 template<
class HostGr
id,
int codim>
499 template<
class HostGr
id,
int codim>
508 template<
class HostGr
id>
517 template<
class HostGr
id>
The IdentityGridHierarchicIterator class.
The IdentityGridLeafIterator class.
The IdentityGridEntity class.
The IdentityGridGeometry class and its specializations.
The IdentityGridEntitySeed class.
The index and id sets for the IdentityGrid class.
The IdentityGridLeafIntersectionIterator and IdentityGridLevelIntersectionIterator classes.
The IdentityGridLevelIterator class.
CommunicationDirection
Define a type for communication direction parameter.
Definition gridenums.hh:170
InterfaceType
Parameter to be used for the communication functions.
Definition gridenums.hh:86
Include standard header files.
Definition agrid.hh:60
Specialize with 'true' for all codims that a grid implements entities for. (default=false)
Definition common/capabilities.hh:58
static const bool v
Definition common/capabilities.hh:59
specialize with 'true' for all codims that a grid provides an iterator for (default=hasEntity<codim>:...
Definition common/capabilities.hh:74
static const bool v
Definition common/capabilities.hh:75
specialize with 'true' for all codims that a grid can communicate data on (default=false)
Definition common/capabilities.hh:97
static const bool v
Definition common/capabilities.hh:98
Specialize with 'true' if implementation guarantees conforming level grids. (default=false)
Definition common/capabilities.hh:106
static const bool v
Definition common/capabilities.hh:107
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false)
Definition common/capabilities.hh:115
static const bool v
Definition common/capabilities.hh:116
Definition defaultgridview.hh:26
Definition defaultgridview.hh:211
Store a reference to an entity with a minimal memory footprint.
Definition common/grid.hh:345
Implementation & impl()
access to the underlying implementation
Definition common/entityseed.hh:59
static constexpr int codimension
codimension of underlying entity
Definition common/entityseed.hh:30
Base class for exceptions in Dune grid modules.
Definition exceptions.hh:20
Definition common/gridview.hh:23
bool loadBalance()
Definition common/grid.hh:962
Index Set Interface base class.
Definition common/indexidset.hh:78
auto size(GeometryType type) const
Return total number of entities of given geometry type in entity set .
Definition common/indexidset.hh:223
Id Set Interface.
Definition common/indexidset.hh:447
typename GridFamily::Traits::Communication Communication
A type that is a model of Dune::Communication. It provides a portable way for communication on the se...
Definition common/grid.hh:515
A Traits struct that collects all associated types of one implementation.
Definition common/grid.hh:411
A traits struct that collects all associated types of one grid model.
Definition common/grid.hh:1013
GridImp Grid
The type that implements the grid.
Definition common/grid.hh:1015
Provides a meta grid that is identical to its host.
Definition hostgridaccess.hh:22
int size(int codim) const
number of leaf entities per codim in this process
Definition identitygrid.hh:233
const Traits::LocalIdSet & localIdSet() const
Access to the LocalIdSet.
Definition identitygrid.hh:258
const Traits::GlobalIdSet & globalIdSet() const
Access to the GlobalIdSet.
Definition identitygrid.hh:252
Traits::template Codim< codim >::template Partition< PiType >::LevelIterator lend(int level) const
one past the end on this level
Definition identitygrid.hh:187
~IdentityGrid()
Destructor.
Definition identitygrid.hh:147
Traits::template Codim< codim >::LeafIterator leafbegin() const
Iterator to first leaf entity of given codim.
Definition identitygrid.hh:194
int maxLevel() const
Return maximum level defined in this grid.
Definition identitygrid.hh:160
Traits::template Codim< codim >::template Partition< PiType >::LeafIterator leafbegin() const
Iterator to first leaf entity of given codim.
Definition identitygrid.hh:208
const HostGrid::Traits::template Codim< codim >::Entity & getHostEntity(const typename Traits::template Codim< codim >::Entity &e) const
Returns the hostgrid entity encapsulated in given IdentityGrid entity.
Definition identitygrid.hh:423
Traits::template Codim< codim >::template Partition< PiType >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition identitygrid.hh:180
const Traits::LevelIndexSet & levelIndexSet(int level) const
Access to the LevelIndexSets.
Definition identitygrid.hh:264
unsigned int ghostSize(int level, int codim) const
Size of the ghost cell layer on a given level.
Definition identitygrid.hh:370
Traits::template Codim< codim >::LeafIterator leafend() const
one past the end of the sequence of leaf entities
Definition identitygrid.hh:201
unsigned int overlapSize(int level, int codim) const
Size of the overlap on a given level.
Definition identitygrid.hh:364
const Traits::LeafIndexSet & leafIndexSet() const
Access to the LeafIndexSet.
Definition identitygrid.hh:275
Traits::template Codim< codim >::LevelIterator lend(int level) const
one past the end on this level
Definition identitygrid.hh:173
void globalRefine(int refCount)
Definition identitygrid.hh:303
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Mark entity for refinement.
Definition identitygrid.hh:318
IdentityGridFamily< HostGrid::dimension, HostGrid > GridFamily
type of the used GridFamily for this grid
Definition identitygrid.hh:124
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition identitygrid.hh:166
IdentityGridFamily< HostGrid::dimension, HostGrid >::Traits Traits
the Traits
Definition identitygrid.hh:127
IdentityGrid(HostGrid &hostgrid)
Constructor.
Definition identitygrid.hh:137
HostGrid::ctype ctype
The type used to store coordinates, inherited from the HostGrid.
Definition identitygrid.hh:130
HostGrid HostGridType
Definition identitygrid.hh:117
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
Return refinement mark for entity.
Definition identitygrid.hh:327
HostGridType & getHostGrid() const
Returns the hostgrid this IdentityGrid lives in.
Definition identitygrid.hh:415
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
Create Entity from EntitySeed.
Definition identitygrid.hh:284
int size(int level, int codim) const
Number of grid entities per level and codim.
Definition identitygrid.hh:222
const Communication< No_Comm > & comm() const
dummy communication
Definition identitygrid.hh:388
unsigned int overlapSize(int codim) const
Size of the overlap on the leaf level.
Definition identitygrid.hh:352
unsigned int ghostSize(int codim) const
Size of the ghost cell layer on the leaf level.
Definition identitygrid.hh:358
int size(int level, GeometryType type) const
number of entities per level, codim and geometry type in this process
Definition identitygrid.hh:239
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition identitygrid.hh:228
Traits::template Codim< codim >::template Partition< PiType >::LeafIterator leafend() const
one past the end of the sequence of leaf entities
Definition identitygrid.hh:215
bool adapt()
Triggers the grid refinement process.
Definition identitygrid.hh:339
void postAdapt()
Clean up refinement markers.
Definition identitygrid.hh:345
bool preAdapt()
returns true, if at least one entity is marked for adaption
Definition identitygrid.hh:333
HostGrid * hostgrid_
The host grid which contains the actual grid hierarchy structure.
Definition identitygrid.hh:431
int size(GeometryType type) const
number of leaf entities per codim and geometry type in this process
Definition identitygrid.hh:245
void communicate(DataHandle &handle, InterfaceType iftype, CommunicationDirection dir, int level) const
Communicate data of level gridView.
Definition identitygrid.hh:395
void communicate(DataHandle &handle, InterfaceType iftype, CommunicationDirection dir) const
Communicate data of leaf gridView.
Definition identitygrid.hh:403
provides access to host grid objects from GeometryGrid
Definition hostgridaccess.hh:29
Definition identitygrid.hh:41
GridTraits< dim, HostGrid::dimensionworld, Dune::IdentityGrid< HostGrid >, IdentityGridGeometry, IdentityGridEntity, IdentityGridLevelIterator, IdentityGridLeafIntersection, IdentityGridLevelIntersection, IdentityGridLeafIntersectionIterator, IdentityGridLevelIntersectionIterator, IdentityGridHierarchicIterator, IdentityGridLeafIterator, IdentityGridLevelIndexSet< const IdentityGrid< HostGrid > >, IdentityGridLeafIndexSet< const IdentityGrid< HostGrid > >, IdentityGridGlobalIdSet< const IdentityGrid< HostGrid > >, typename HostGrid::Traits::GlobalIdSet::IdType, IdentityGridLocalIdSet< const IdentityGrid< HostGrid > >, typename HostGrid::Traits::LocalIdSet::IdType, Communication< No_Comm >, DefaultLevelGridViewTraits, DefaultLeafGridViewTraits, IdentityGridEntitySeed, IdentityGridGeometry, typename HostGrid::Traits::LevelIndexSet::IndexType, typename HostGrid::Traits::LevelIndexSet::Types, typename HostGrid::Traits::LeafIndexSet::IndexType, typename HostGrid::Traits::LeafIndexSet::Types > Traits
Definition identitygrid.hh:73
The implementation of entities in a IdentityGrid.
Definition identitygridentity.hh:55
Iterator over all entities of a given codimension and level of a grid.
Definition identitygridleveliterator.hh:21
Definition identitygridintersectioniterator.hh:84
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition identitygridintersectioniterator.hh:29
Iterator over the descendants of an entity.Mesh entities of codimension 0 ("elements") allow to visit...
Definition identitygridhierarchiciterator.hh:26
The EntitySeed class provides the minimal information needed to restore an Entity using the grid.
Definition identitygridentityseed.hh:24
Definition identitygridgeometry.hh:21
Definition identitygridindexsets.hh:26
Definition identitygridindexsets.hh:96
Definition identitygridindexsets.hh:185
Definition identitygridindexsets.hh:237
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition identitygridintersections.hh:33
Definition identitygridintersections.hh:192
Iterator over all entities of a given codimension and level of a grid.
Definition identitygridleafiterator.hh:22
A set of traits classes to store static information about grid implementation.
Different resources needed by all grid implementations.