- Home
- About DUNE
- Download
- Documentation
- Community
- Development
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].