identitygridhierarchiciterator.hh

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

Generated on Fri Apr 29 2011 with Doxygen (ver 1.7.1) [doxygen-log,error-log].