1 #ifndef DUNE_FOAMGRID_LEAFITERATOR_HH
2 #define DUNE_FOAMGRID_LEAFITERATOR_HH
13 template<
int codim, PartitionIteratorType pitype,
class Gr
idImp>
16 enum {dimgrid = GridImp::dimension};
17 enum {dimworld = GridImp::dimensionworld};
21 using Entity =
typename GridImp::template Codim<codim>::Entity;
29 const int fullRefineLevel = 0;
31 const auto& entities = std::get<dimgrid-codim>(grid_->entityImps_[fullRefineLevel]);
32 levelIterator_ = entities.begin();
34 if (levelIterator_ != entities.end())
38 virtualEntity_.impl().setToTarget(&*entities.begin());
40 if (!virtualEntity_.impl().target_->isLeaf())
46 virtualEntity_.impl().setToTarget(
nullptr);
53 virtualEntity_.impl().setToTarget(
nullptr);
62 }
while (levelIterator_!=std::get<dimgrid-codim>(grid_->entityImps_[grid_->maxLevel()]).end()
63 && !virtualEntity_.impl().target_->isLeaf());
71 return virtualEntity_ == other.virtualEntity_;
77 void globalIncrement() {
81 const int oldLevel = virtualEntity_.level();
85 virtualEntity_.impl().setToTarget(&(*levelIterator_));
86 if (levelIterator_==std::get<dimgrid-codim>(grid_->entityImps_[oldLevel]).end())
87 virtualEntity_.impl().setToTarget(
nullptr);
90 if (levelIterator_==std::get<dimgrid-codim>(grid_->entityImps_[oldLevel]).end() && oldLevel < grid_->maxLevel()) {
92 const std::list<
FoamGridEntityImp<dimgrid-codim, dimgrid, dimworld,
typename GridImp::ctype> >& entities = std::get<dimgrid-codim>(grid_->entityImps_[oldLevel+1]);
93 levelIterator_ = entities.begin();
94 virtualEntity_.impl().setToTarget(&*entities.begin());
103 const GridImp* grid_;
112 typename std::list<FoamGridEntityImp<dimgrid-codim, dimgrid, dimworld,
typename GridImp::ctype> >::const_iterator levelIterator_;
Iterator over all entities of a given codimension and level of a grid.
Definition: foamgridleafiterator.hh:15
const Entity & dereference() const
dereferencing
Definition: foamgridleafiterator.hh:67
typename GridImp::template Codim< codim >::Entity Entity
Definition: foamgridleafiterator.hh:21
@ codimension
Definition: foamgridleafiterator.hh:22
FoamGridLeafIterator()
Default constructor.
Definition: foamgridleafiterator.hh:50
bool equals(const FoamGridLeafIterator< codim, pitype, GridImp > &other) const
equality
Definition: foamgridleafiterator.hh:70
FoamGridLeafIterator(const GridImp &grid)
Definition: foamgridleafiterator.hh:24
void increment()
prefix increment
Definition: foamgridleafiterator.hh:57
The actual entity implementation.
Definition: foamgridvertex.hh:47