identitygridhierarchiciterator.hh
Go to the documentation of this file.00001 #ifndef DUNE_IDENTITYGRIDHIERITERATOR_HH
00002 #define DUNE_IDENTITYGRIDHIERITERATOR_HH
00003
00008 namespace Dune {
00009
00010
00011
00012
00020 template<class GridImp>
00021 class IdentityGridHierarchicIterator :
00022 public Dune::IdentityGridEntityPointer <0,GridImp>
00023 {
00024 public:
00025
00026 typedef typename GridImp::template Codim<0>::Entity Entity;
00027
00028 typedef IdentityGridEntity <0, GridImp::dimension, GridImp> IdentityGridElement;
00029
00030
00032 explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const IdentityGridElement& startEntity, int maxLevel) :
00033 IdentityGridEntityPointer<0,GridImp>(identityGrid, startEntity.hostEntity_->hbegin(maxLevel)),
00034 identityGrid_(identityGrid),
00035 hostGridHierarchicIterator_(startEntity.hostEntity_->hbegin(maxLevel)),
00036 hostGridHierarchicEndIterator_(startEntity.hostEntity_->hend(maxLevel))
00037 {
00038 this->virtualEntity_.setToTarget(hostGridHierarchicIterator_);
00039 }
00040
00041
00043 explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const IdentityGridElement& startEntity, int maxLevel, bool endDummy) :
00044 IdentityGridEntityPointer<0,GridImp>(identityGrid, startEntity.hostEntity_->hend(maxLevel)),
00045 identityGrid_(identityGrid),
00046 hostGridHierarchicIterator_(startEntity.hostEntity_->hbegin(maxLevel)),
00047 hostGridHierarchicEndIterator_(startEntity.hostEntity_->hend(maxLevel))
00048 {}
00049
00050
00052 void increment()
00053 {
00054 ++hostGridHierarchicIterator_;
00055 this->virtualEntity_.setToTarget(hostGridHierarchicIterator_);
00056 }
00057
00058
00059 private:
00060
00061
00062 typedef typename GridImp::HostGridType::template Codim<0>::Entity::HierarchicIterator HostGridHierarchicIterator;
00063
00064 enum {dim = GridImp::HostGridType::dimension};
00065
00066
00067
00069 unsigned int hostLevelIndex() const {
00070 return identityGrid_->hostgrid_->levelIndexSet(hostGridHierarchicIterator_.level()).index(*hostGridHierarchicIterator_);
00071 }
00072
00073
00074 const GridImp* identityGrid_;
00075
00076 HostGridHierarchicIterator hostGridHierarchicIterator_;
00077
00078 HostGridHierarchicIterator hostGridHierarchicEndIterator_;
00079 };
00080
00081
00082 }
00083
00084 #endif