3 #ifndef DUNE_IDENTITYGRID_HH
4 #define DUNE_IDENTITYGRID_HH
13 #include <dune/common/parallel/collectivecommunication.hh>
14 #include <dune/grid/common/capabilities.hh>
15 #include <dune/grid/common/grid.hh>
16 #include <dune/common/timer.hh>
32 template <
class HostGr
id>
37 template<
class Gr
id >
42 template<
int dim,
class HostGr
id>
47 HostGrid::dimensionworld,
62 typename HostGrid::Traits::GlobalIdSet::IdType,
64 typename HostGrid::Traits::LocalIdSet::IdType,
65 CollectiveCommunication<IdentityGrid<HostGrid> >,
66 DefaultLevelGridViewTraits,
67 DefaultLeafGridViewTraits,
84 template <
class HostGr
id>
86 public GridDefaultImplementation <HostGrid::dimension, HostGrid::dimensionworld, double, IdentityGridFamily<HostGrid::dimension,HostGrid> >
97 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp_>
100 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp_>
104 template<
int codim_,
int dim_,
class Gr
idImp_>
125 typedef typename HostGrid::ctype
ctype;
132 leafIndexSet_(*this),
144 for (
size_t i=0; i<levelIndexSets_.size(); i++)
145 if (levelIndexSets_[i])
146 delete (levelIndexSets_[i]);
159 typename Traits::template Codim<codim>::LevelIterator
lbegin (
int level)
const {
166 typename Traits::template Codim<codim>::LevelIterator
lend (
int level)
const {
172 template<
int codim, PartitionIteratorType PiType>
173 typename Traits::template Codim<codim>::template Partition<PiType>::LevelIterator
lbegin (
int level)
const {
179 template<
int codim, PartitionIteratorType PiType>
180 typename Traits::template Codim<codim>::template Partition<PiType>::LevelIterator
lend (
int level)
const {
187 typename Traits::template Codim<codim>::LeafIterator
leafbegin()
const {
194 typename Traits::template Codim<codim>::LeafIterator
leafend()
const {
200 template<
int codim, PartitionIteratorType PiType>
201 typename Traits::template Codim<codim>::template Partition<PiType>::LeafIterator
leafbegin()
const {
207 template<
int codim, PartitionIteratorType PiType>
208 typename Traits::template Codim<codim>::template Partition<PiType>::LeafIterator
leafend()
const {
215 int size (
int level,
int codim)
const {
232 int size (
int level, GeometryType type)
const {
233 return levelIndexSets_[level]->size(type);
238 int size (GeometryType type)
const
260 DUNE_THROW(GridError,
"levelIndexSet of nonexisting level " << level <<
" requested!");
261 return *levelIndexSets_[level];
268 return leafIndexSet_;
273 template <
class EntitySeed >
274 typename Traits::template Codim<EntitySeed::codimension>::EntityPointer
277 typedef typename Traits::template Codim<EntitySeed::codimension>::EntityPointer EntityPointer;
280 return EntityPointer(EntityPointerImp(
this,
hostgrid_->entityPointer(this->getRealImplementation(seed).hostEntitySeed())));
306 bool mark(
int refCount,
const typename Traits::template Codim<0>::EntityPointer & e)
308 return hostgrid_->mark(refCount, *getHostEntityPointer<0>(*e));
315 int getMark(
const typename Traits::template Codim<0>::EntityPointer & e)
const
317 return hostgrid_->getMark(*getHostEntityPointer<0>(*e));
353 return hostgrid_->overlapSize(level,codim);
359 return hostgrid_->ghostSize(level,codim);
369 void loadBalance(
int strategy,
int minlevel,
int depth,
int maxlevel,
int minelement){
370 DUNE_THROW(NotImplemented,
"IdentityGrid::loadBalance()");
384 template<
class T,
template<
class>
class P,
int codim>
385 void communicate (T& t, InterfaceType iftype, CommunicationDirection dir,
int level);
391 template<
class DataHandle>
392 void communicate (DataHandle& data, InterfaceType iftype, CommunicationDirection dir,
int level)
const
395 template<
class DataHandle>
396 void communicate (DataHandle& data, InterfaceType iftype, CommunicationDirection dir)
const
402 const CollectiveCommunication<IdentityGrid>&
comm ()
const
421 typename HostGrid::Traits::template Codim<codim>::EntityPointer
getHostEntityPointer(
const typename Traits::template Codim<codim>::Entity& e)
const
423 return this->getRealImplementation(e).hostEntity_;
436 localIdSet_.update();
438 globalIdSet_.update();
443 for (
int i=levelIndexSets_.size(); i<=
maxLevel(); i++) {
446 levelIndexSets_.push_back(p);
450 if (levelIndexSets_[i])
451 levelIndexSets_[i]->update(*
this, i);
453 leafIndexSet_.update(*
this);
458 CollectiveCommunication<IdentityGrid> ccobj;
461 std::vector<IdentityGridLevelIndexSet<const IdentityGrid<HostGrid> >*> levelIndexSets_;
477 namespace Capabilities
480 template<
class HostGr
id,
int codim>
483 static const bool v = hasEntity<HostGrid,codim>::v;
488 template<
class HostGr
id>
491 static const bool v = isParallel<HostGrid>::v;
497 template<
class HostGr
id>
500 static const bool v = isLevelwiseConforming<HostGrid>::v;
504 template<
class HostGr
id>
507 static const bool v = isLeafwiseConforming<HostGrid>::v;
~IdentityGrid()
Desctructor.
Definition: identitygrid.hh:141
HostGrid HostGridType
Definition: identitygrid.hh:112
Definition: identitygridindexsets.hh:172
bool adapt()
Triggers the grid refinement process.
Definition: identitygrid.hh:327
The IdentityGridEntity class.
HostGrid::Traits::template Codim< codim >::EntityPointer getHostEntityPointer(const typename Traits::template Codim< codim >::Entity &e) const
Returns the hostgrid entity encapsulated in given IdentityGrid entity.
Definition: identitygrid.hh:421
HostGrid * hostgrid_
The host grid which contains the actual grid hierarchy structure.
Definition: identitygrid.hh:429
Iterator over all entities of a given codimension and level of a grid.
Definition: identitygridleafiterator.hh:19
[ provides Dune::Grid ]
Definition: identitygrid.hh:33
Traits::template Codim< codim >::template Partition< PiType >::LevelIterator lend(int level) const
one past the end on this level
Definition: identitygrid.hh:180
unsigned int ghostSize(int codim) const
Size of the ghost cell layer on the leaf level.
Definition: identitygrid.hh:346
void globalRefine(int refCount)
Definition: identitygrid.hh:291
The IdentityGridGeometry class and its specializations.
void postAdapt()
Clean up refinement markers.
Definition: identitygrid.hh:333
The IdentityGridLeafIterator class.
const CollectiveCommunication< IdentityGrid > & comm() const
Definition: identitygrid.hh:402
bool preAdapt()
Definition: identitygrid.hh:321
const Traits::LeafIndexSet & leafIndexSet() const
Access to the LeafIndexSet.
Definition: identitygrid.hh:266
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition: identitygrid.hh:159
Traits::template Codim< codim >::template Partition< PiType >::LevelIterator lbegin(int level) const
Iterator to first entity of given codim on level.
Definition: identitygrid.hh:173
Definition: identitygridentity.hh:27
GridTraits< dim, HostGrid::dimensionworld, Dune::IdentityGrid< HostGrid >, IdentityGridGeometry, IdentityGridEntity, IdentityGridEntityPointer, 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:69
Definition: identitygridentity.hh:21
unsigned int overlapSize(int level, int codim) const
Size of the overlap on a given level.
Definition: identitygrid.hh:352
int size(int level, int codim) const
Number of grid entities per level and codim.
Definition: identitygrid.hh:215
int size(GeometryType type) const
number of leaf entities per codim and geometry type in this process
Definition: identitygrid.hh:238
Traits::template Codim< codim >::LeafIterator leafend() const
one past the end of the sequence of leaf entities
Definition: identitygrid.hh:194
IdentityGrid(HostGrid &hostgrid)
Constructor.
Definition: identitygrid.hh:130
int getMark(const typename Traits::template Codim< 0 >::EntityPointer &e) const
Return refinement mark for entity.
Definition: identitygrid.hh:315
Traits::template Codim< codim >::LevelIterator lend(int level) const
one past the end on this level
Definition: identitygrid.hh:166
Definition: identitygridgeometry.hh:17
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition: identitygridentity.hh:30
Definition: identitygridindexsets.hh:84
Traits::template Codim< codim >::template Partition< PiType >::LeafIterator leafbegin() const
Iterator to first leaf entity of given codim.
Definition: identitygrid.hh:201
Traits::template Codim< codim >::template Partition< PiType >::LeafIterator leafend() const
one past the end of the sequence of leaf entities
Definition: identitygrid.hh:208
The IdentityGridEntitySeed class.
Definition: identitygridintersections.hh:181
HostGridType & getHostGrid() const
Returns the hostgrid this IdentityGrid lives in.
Definition: identitygrid.hh:413
The index and id sets for the IdentityGrid class.
Definition: identitygridindexsets.hh:224
int size(int codim) const
number of leaf entities per codim in this process
Definition: identitygrid.hh:226
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition: identitygrid.hh:221
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition: identitygridintersections.hh:29
Iterator over the descendants of an entity.Mesh entities of codimension 0 ("elements") allow to visit...
Definition: identitygridentity.hh:33
int size(int level, GeometryType type) const
number of entities per level, codim and geometry type in this process
Definition: identitygrid.hh:232
Traits::template Codim< codim >::LeafIterator leafbegin() const
Iterator to first leaf entity of given codim.
Definition: identitygrid.hh:187
IdentityGridFamily< HostGrid::dimension, HostGrid >::Traits Traits
the Traits
Definition: identitygrid.hh:122
int maxLevel() const
Definition: identitygrid.hh:152
The IdentityGridLeafIntersectionIterator and IdentityGridLevelIntersectionIterator classes...
Definition: identitygrid.hh:43
The IdentityGridHierarchicIterator class.
IdentityGridFamily< HostGrid::dimension, HostGrid > GridFamily
type of the used GridFamily for this grid
Definition: identitygrid.hh:119
const Traits::LocalIdSet & localIdSet() const
Access to the LocalIdSet.
Definition: identitygrid.hh:251
unsigned int ghostSize(int level, int codim) const
Size of the ghost cell layer on a given level.
Definition: identitygrid.hh:358
HostGrid::ctype ctype
The type used to store coordinates, inherited from the HostGrid.
Definition: identitygrid.hh:125
The IdentityGridEntityPointer class.
unsigned int overlapSize(int codim) const
Size of the overlap on the leaf level.
Definition: identitygrid.hh:340
Definition: identitygridindexsets.hh:18
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
bool mark(int refCount, const typename Traits::template Codim< 0 >::EntityPointer &e)
Mark entity for refinement.
Definition: identitygrid.hh:306
const Traits::LevelIndexSet & levelIndexSet(int level) const
Access to the LevelIndexSets.
Definition: identitygrid.hh:257
Definition: identitygridentity.hh:38
const Traits::GlobalIdSet & globalIdSet() const
Access to the GlobalIdSet.
Definition: identitygrid.hh:245
Traits::template Codim< EntitySeed::codimension >::EntityPointer entityPointer(const EntitySeed &seed) const
Create EntityPointer from EntitySeed.
Definition: identitygrid.hh:275
Iterator over all entities of a given codimension and level of a grid.
Definition: identitygridentity.hh:24
The IdentityGridLevelIterator class and its specializations.
The EntitySeed class provides the minimal information needed to restore an Entity using the grid...
Definition: identitygridentityseed.hh:21