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         // Type of the corresponding HierarchicIterator in the host grid
00062         typedef typename GridImp::HostGridType::template Codim<0>::Entity::HierarchicIterator HostGridHierarchicIterator;
00063     
00064         enum {dim = GridImp::HostGridType::dimension};
00065         
00066         
00067         // The level index of the host entity that we are pointing to
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 }  // end namespace Dune
00083 
00084 #endif

Generated on 29 Jul 2009 with Doxygen (ver 1.5.6)