3 #ifndef DUNE_GRID_IDENTITYGRID_HH 4 #define DUNE_GRID_IDENTITYGRID_HH 13 #include <dune/common/deprecated.hh> 14 #include <dune/common/parallel/collectivecommunication.hh> 31 template <
class HostGr
id>
35 template<
class Gr
id >
38 template<
int dim,
class HostGr
id>
46 HostGrid::dimensionworld,
60 typename HostGrid::Traits::GlobalIdSet::IdType,
62 typename HostGrid::Traits::LocalIdSet::IdType,
63 CollectiveCommunication<IdentityGrid<HostGrid> >,
83 template <
class HostGr
id>
86 typename HostGrid::ctype, IdentityGridFamily<HostGrid::dimension, HostGrid> >
96 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp_>
99 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp_>
103 template<
int codim_,
int dim_,
class Gr
idImp_>
124 typedef typename HostGrid::ctype
ctype;
132 hostgrid_(&hostgrid),
133 leafIndexSet_(*this),
144 for (
size_t i=0; i<levelIndexSets_.size(); i++)
145 if (levelIndexSets_[i])
146 delete (levelIndexSets_[i]);
155 return hostgrid_->maxLevel();
173 template<
int codim, PartitionIteratorType PiType>
180 template<
int codim, PartitionIteratorType PiType>
201 template<
int codim, PartitionIteratorType PiType>
208 template<
int codim, PartitionIteratorType PiType>
216 int size (
int level,
int codim)
const {
217 return hostgrid_->size(level,codim);
223 return hostgrid_->numBoundarySegments();
228 return leafIndexSet().size(codim);
234 return levelIndexSets_[level]->size(type);
241 return leafIndexSet().size(type);
260 if (level < 0 || level > maxLevel())
262 DUNE_THROW(
GridError,
"levelIndexSet of nonexisting level " << level <<
" requested!");
264 return *levelIndexSets_[level];
271 return leafIndexSet_;
276 template <
class EntitySeed >
286 return EntityImp(
this, hostgrid_->entity(this->getRealImplementation(seed).hostEntitySeed()));
299 hostgrid_->globalRefine(refCount);
314 return hostgrid_->mark(refCount, getHostEntity<0>(e));
323 return hostgrid_->getMark(getHostEntity<0>(e));
328 return hostgrid_->preAdapt();
335 return hostgrid_->adapt();
340 return hostgrid_->postAdapt();
347 return hostgrid_->leafGridView().overlapSize(codim);
353 return hostgrid_->leafGridView().ghostSize(codim);
359 return hostgrid_->levelGridView(level).overlapSize(codim);
365 return hostgrid_->levelGridView(level).ghostSize(codim);
375 void loadBalance(
int strategy,
int minlevel,
int depth,
int maxlevel,
int minelement){
376 DUNE_THROW(NotImplemented,
"IdentityGrid::loadBalance()");
403 return this->getRealImplementation(e).hostEntity_;
416 localIdSet_.update();
418 globalIdSet_.update();
423 for (
int i=levelIndexSets_.size(); i<=maxLevel(); i++) {
426 levelIndexSets_.push_back(p);
429 for (
int i=0; i<=maxLevel(); i++)
430 if (levelIndexSets_[i])
431 levelIndexSets_[i]->
update(*
this, i);
433 leafIndexSet_.update(*
this);
441 std::vector<IdentityGridLevelIndexSet<const IdentityGrid<HostGrid> >*> levelIndexSets_;
457 namespace Capabilities
462 template<
class HostGr
id,
int codim>
468 template<
class HostGr
id,
int codim>
477 template<
class HostGr
id>
486 template<
class HostGr
id>
495 #endif // DUNE_GRID_IDENTITYGRID_HH Traits::template Codim< codim >::LeafIterator leafend() const
one past the end of the sequence of leaf entities
Definition: identitygrid.hh:195
int size(int codim) const
number of leaf entities per codim in this process
Definition: identitygrid.hh:227
Specialize with 'true' if implementation guarantees conforming level grids. (default=false) ...
Definition: common/capabilities.hh:103
Traits::template Codim< codim >::template Partition< PiType >::LevelIterator lend(int level) const
one past the end on this level
Definition: identitygrid.hh:181
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition: identitygridintersections.hh:30
IdentityGridFamily< HostGrid::dimension, HostGrid > GridFamily
type of the used GridFamily for this grid
Definition: identitygrid.hh:118
const Traits::LocalIdSet & localIdSet() const
Access to the LocalIdSet.
Definition: identitygrid.hh:252
Definition: common/entityseed.hh:28
Index Set Interface base class.
Definition: common/grid.hh:346
const Traits::LeafIndexSet & leafIndexSet() const
Access to the LeafIndexSet.
Definition: identitygrid.hh:269
Iterator over the descendants of an entity.Mesh entities of codimension 0 ("elements") allow to visit...
Definition: identitygridentity.hh:30
Iterator over all entities of a given codimension and level of a grid.
Definition: identitygridentity.hh:21
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition: identitygrid.hh:160
unsigned int overlapSize(int level, int codim) const
Size of the overlap on a given level.
Definition: identitygrid.hh:358
const Traits::GlobalIdSet & globalIdSet() const
Access to the GlobalIdSet.
Definition: identitygrid.hh:246
Definition: identitygrid.hh:39
unsigned int overlapSize(int codim) const
Size of the overlap on the leaf level.
Definition: identitygrid.hh:346
specialize with 'true' for all codims that a grid provides an iterator for (default=false) ...
Definition: common/capabilities.hh:71
Traits::template Codim< codim >::template Partition< PiType >::LeafIterator leafend() const
one past the end of the sequence of leaf entities
Definition: identitygrid.hh:209
Definition: identitygridindexsets.hh:95
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:401
The IdentityGridLevelIterator class.
Base class for exceptions in Dune grid modules.
Definition: exceptions.hh:16
Definition: defaultgridview.hh:23
int size(int level, int codim) const
Number of grid entities per level and codim.
Definition: identitygrid.hh:216
The EntitySeed class provides the minimal information needed to restore an Entity using the grid...
Definition: identitygridentityseed.hh:21
IdentityGrid(HostGrid &hostgrid)
Constructor.
Definition: identitygrid.hh:131
GridFamily::Traits::CollectiveCommunication CollectiveCommunication
A type that is a model of Dune::CollectiveCommunication. It provides a portable way for collective co...
Definition: common/grid.hh:519
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition: identitygridentity.hh:27
int size(GeometryType type) const
number of leaf entities per codim and geometry type in this process
Definition: identitygrid.hh:239
The implementation of entities in a IdentityGridA Grid is a container of grid entities. An entity is parametrized by the codimension. An entity of codimension c in dimension d is a d-c dimensional object.
Definition: identitygridentity.hh:18
Iterator over all entities of a given codimension and level of a grid.
Definition: identitygridleafiterator.hh:19
Traits::template Codim< codim >::LeafIterator leafbegin() const
Iterator to first leaf entity of given codim.
Definition: identitygrid.hh:188
A traits struct that collects all associated types of one grid model.
Definition: common/grid.hh:1063
Definition: identitygridindexsets.hh:246
int maxLevel() const
Return maximum level defined in this grid.
Definition: identitygrid.hh:154
bool adapt()
Triggers the grid refinement process.
Definition: identitygrid.hh:333
Specialize with 'true' for all codims that a grid implements entities for. (default=false) ...
Definition: common/capabilities.hh:55
The IdentityGridEntity class.
Definition: identitygridindexsets.hh:18
~IdentityGrid()
Desctructor.
Definition: identitygrid.hh:141
Id Set Interface.
Definition: common/grid.hh:347
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
Create Entity from EntitySeed.
Definition: identitygrid.hh:278
Specialize with 'true' if implementation guarantees a conforming leaf grid. (default=false) ...
Definition: common/capabilities.hh:112
HostGrid HostGridType
Definition: identitygrid.hh:111
Definition: identitygridintersections.hh:189
The IdentityGridLeafIntersectionIterator and IdentityGridLevelIntersectionIterator classes...
Definition: defaultgridview.hh:206
HostGrid * hostgrid_
The host grid which contains the actual grid hierarchy structure.
Definition: identitygrid.hh:409
Definition: identitygridindexsets.hh:194
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Different resources needed by all grid implementations.
provides access to host grid objects from GeometryGrid
Definition: identitygrid.hh:36
Store a reference to an entity with a minimal memory footprint.
Definition: common/entityseed.hh:23
unsigned int ghostSize(int level, int codim) const
Size of the ghost cell layer on a given level.
Definition: identitygrid.hh:364
A set of traits classes to store static information about grid implementation.
The IdentityGridGeometry class and its specializations.
int size(int level, GeometryType type) const
number of entities per level, codim and geometry type in this process
Definition: identitygrid.hh:233
HostGrid::ctype ctype
The type used to store coordinates, inherited from the HostGrid.
Definition: identitygrid.hh:124
The IdentityGridLeafIterator class.
const Traits::LevelIndexSet & levelIndexSet(int level) const
Access to the LevelIndexSets.
Definition: identitygrid.hh:258
Definition: common/geometry.hh:24
unsigned int ghostSize(int codim) const
Size of the ghost cell layer on the leaf level.
Definition: identitygrid.hh:352
Provides a meta grid that is identical to its host.
Definition: identitygrid.hh:32
const CollectiveCommunication< IdentityGrid > & comm() const
dummy collective communication
Definition: identitygrid.hh:382
void postAdapt()
Clean up refinement markers.
Definition: identitygrid.hh:339
int getMark(const typename Traits::template Codim< 0 >::Entity &e) const
Return refinement mark for entity.
Definition: identitygrid.hh:321
The index and id sets for the IdentityGrid class.
bool preAdapt()
returns true, if at least one entity is marked for adaption
Definition: identitygrid.hh:327
void globalRefine(int refCount)
Definition: identitygrid.hh:297
The IdentityGridHierarchicIterator class.
IdentityGridFamily< HostGrid::dimension, HostGrid >::Traits Traits
the Traits
Definition: identitygrid.hh:121
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Mark entity for refinement.
Definition: identitygrid.hh:312
GridImp Grid
The type that implements the grid.
Definition: common/grid.hh:1066
Traits::template Codim< codim >::template Partition< PiType >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition: identitygrid.hh:174
Definition: identitygridentity.hh:24
Traits::template Codim< codim >::template Partition< PiType >::LeafIterator leafbegin() const
Iterator to first leaf entity of given codim.
Definition: identitygrid.hh:202
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, CollectiveCommunication< IdentityGrid< HostGrid > >, DefaultLevelGridViewTraits, DefaultLeafGridViewTraits, IdentityGridEntitySeed > Traits
Definition: identitygrid.hh:67
The IdentityGridEntitySeed class.
A Traits struct that collects all associated types of one implementation.
Definition: common/grid.hh:414
Traits::template Codim< codim >::LevelIterator lend(int level) const
one past the end on this level
Definition: identitygrid.hh:167
void update(const GridImp &grid, int level)
Set up the index set.
Definition: identitygridindexsets.hh:81
Definition: identitygridgeometry.hh:17
Include standard header files.
Definition: agrid.hh:58
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition: identitygrid.hh:222
HostGridType & getHostGrid() const
Returns the hostgrid this IdentityGrid lives in.
Definition: identitygrid.hh:393