dune-grid-dev-howto  2.3.1
identitygridhierarchiciterator.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_IDENTITYGRIDHIERITERATOR_HH
4 #define DUNE_IDENTITYGRIDHIERITERATOR_HH
5 
11 namespace Dune {
12 
13 
14  //**********************************************************************
15  //
23  template<class GridImp>
24  class IdentityGridHierarchicIterator :
25  public Dune::IdentityGridEntityPointer <0,GridImp>
26  {
27  public:
28 
29  typedef typename GridImp::template Codim<0>::Entity Entity;
30 
32 
33 
35  explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const IdentityGridElement& startEntity, int maxLevel) :
36  IdentityGridEntityPointer<0,GridImp>(identityGrid, startEntity.hostEntity_->hbegin(maxLevel)),
37  identityGrid_(identityGrid),
38  hostGridHierarchicIterator_(startEntity.hostEntity_->hbegin(maxLevel)),
39  hostGridHierarchicEndIterator_(startEntity.hostEntity_->hend(maxLevel))
40  {
41  this->virtualEntity_.setToTarget(hostGridHierarchicIterator_);
42  }
43 
44 
46  explicit IdentityGridHierarchicIterator(const GridImp* identityGrid, const IdentityGridElement& startEntity, int maxLevel, bool endDummy) :
47  IdentityGridEntityPointer<0,GridImp>(identityGrid, startEntity.hostEntity_->hend(maxLevel)),
48  identityGrid_(identityGrid),
49  hostGridHierarchicIterator_(startEntity.hostEntity_->hbegin(maxLevel)),
50  hostGridHierarchicEndIterator_(startEntity.hostEntity_->hend(maxLevel))
51  {}
52 
53 
55  void increment()
56  {
57  ++hostGridHierarchicIterator_;
58  this->virtualEntity_.setToTarget(hostGridHierarchicIterator_);
59  }
60 
61 
62  private:
63 
64  // Type of the corresponding HierarchicIterator in the host grid
65  typedef typename GridImp::HostGridType::template Codim<0>::Entity::HierarchicIterator HostGridHierarchicIterator;
66 
67  enum {dim = GridImp::HostGridType::dimension};
68 
69 
70  // The level index of the host entity that we are pointing to
72  unsigned int hostLevelIndex() const {
73  return identityGrid_->hostgrid_->levelIndexSet(hostGridHierarchicIterator_.level()).index(*hostGridHierarchicIterator_);
74  }
75 
76 
77  const GridImp* identityGrid_;
78 
79  HostGridHierarchicIterator hostGridHierarchicIterator_;
80 
81  HostGridHierarchicIterator hostGridHierarchicEndIterator_;
82  };
83 
84 
85 } // end namespace Dune
86 
87 #endif
GridImp::template Codim< 0 >::Entity Entity
Definition: identitygridhierarchiciterator.hh:29
void increment()
Definition: identitygridhierarchiciterator.hh:55
IdentityGridHierarchicIterator(const GridImp *identityGrid, const IdentityGridElement &startEntity, int maxLevel, bool endDummy)
Definition: identitygridhierarchiciterator.hh:46
IdentityGridMakeableEntity< codim, dim, GridImp > virtualEntity_
virtual entity
Definition: identitygridentitypointer.hh:85
Definition: identitygridentity.hh:21
IdentityGridHierarchicIterator(const GridImp *identityGrid, const IdentityGridElement &startEntity, int maxLevel)
the default Constructor
Definition: identitygridhierarchiciterator.hh:35
IdentityGridEntity< 0, GridImp::dimension, GridImp > IdentityGridElement
Definition: identitygridhierarchiciterator.hh:31
The IdentityGridEntityPointer class.
The implementation of entities in a IdentityGridA Grid is a container of grid entities. An entity is parametrized by the codimension. An entity of codimension c in dimension d is a d-c dimensional object.
Definition: identitygridentity.hh:18