dune-grid-dev-howto  2.2.1
identitygridhierarchiciterator.hh
Go to the documentation of this file.
1 #ifndef DUNE_IDENTITYGRIDHIERITERATOR_HH
2 #define DUNE_IDENTITYGRIDHIERITERATOR_HH
3 
9 namespace Dune {
10 
11 
12 //**********************************************************************
13 //
21 template<class GridImp>
23  public Dune::IdentityGridEntityPointer <0,GridImp>
24 {
25  public:
26 
27  typedef typename GridImp::template Codim<0>::Entity Entity;
28 
30 
31 
33  explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const IdentityGridElement& startEntity, int maxLevel) :
34  IdentityGridEntityPointer<0,GridImp>(identityGrid, startEntity.hostEntity_->hbegin(maxLevel)),
35  identityGrid_(identityGrid),
36  hostGridHierarchicIterator_(startEntity.hostEntity_->hbegin(maxLevel)),
37  hostGridHierarchicEndIterator_(startEntity.hostEntity_->hend(maxLevel))
38  {
39  this->virtualEntity_.setToTarget(hostGridHierarchicIterator_);
40  }
41 
42 
44  explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const IdentityGridElement& startEntity, int maxLevel, bool endDummy) :
45  IdentityGridEntityPointer<0,GridImp>(identityGrid, startEntity.hostEntity_->hend(maxLevel)),
46  identityGrid_(identityGrid),
47  hostGridHierarchicIterator_(startEntity.hostEntity_->hbegin(maxLevel)),
48  hostGridHierarchicEndIterator_(startEntity.hostEntity_->hend(maxLevel))
49  {}
50 
51 
53  void increment()
54  {
55  ++hostGridHierarchicIterator_;
56  this->virtualEntity_.setToTarget(hostGridHierarchicIterator_);
57  }
58 
59 
60  private:
61 
62  // Type of the corresponding HierarchicIterator in the host grid
63  typedef typename GridImp::HostGridType::template Codim<0>::Entity::HierarchicIterator HostGridHierarchicIterator;
64 
65  enum {dim = GridImp::HostGridType::dimension};
66 
67 
68  // The level index of the host entity that we are pointing to
70  unsigned int hostLevelIndex() const {
71  return identityGrid_->hostgrid_->levelIndexSet(hostGridHierarchicIterator_.level()).index(*hostGridHierarchicIterator_);
72  }
73 
74 
75  const GridImp* identityGrid_;
76 
77  HostGridHierarchicIterator hostGridHierarchicIterator_;
78 
79  HostGridHierarchicIterator hostGridHierarchicEndIterator_;
80 };
81 
82 
83 } // end namespace Dune
84 
85 #endif