dune-grid-dev-howto  2.3.1
identitygridintersectioniterator.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_IDENTITYGRID_INTERSECTIONITERATOR_HH
4 #define DUNE_IDENTITYGRID_INTERSECTIONITERATOR_HH
5 
7 #include "identitygridentity.hh"
8 
9 #include <dune/grid/common/intersection.hh>
10 
15 namespace Dune {
16 
25  template<class GridImp>
26  class IdentityGridLeafIntersectionIterator
27  {
28 
29  enum {dim=GridImp::dimension};
30 
31  enum {dimworld=GridImp::dimensionworld};
32 
33  // The type used to store coordinates
34  typedef typename GridImp::ctype ctype;
35 
36  typedef typename GridImp::HostGridType::template Codim<0>::Entity::LeafIntersectionIterator HostLeafIntersectionIterator;
37 
38  public:
39 
40  typedef Dune::Intersection<const GridImp, Dune::IdentityGridLeafIntersection<GridImp> > Intersection;
41 
42  IdentityGridLeafIntersectionIterator(const GridImp* identityGrid,
43  const HostLeafIntersectionIterator& hostIterator)
44  : intersection_(IdentityGridLeafIntersection<GridImp>(identityGrid, hostIterator))
45  {}
46 
49 
52  return GridImp::getRealImplementation(intersection_).hostIterator_
53  == GridImp::getRealImplementation(other.intersection_).hostIterator_;
54  }
55 
56 
58  void increment() {
59  ++GridImp::getRealImplementation(intersection_).hostIterator_;
60  }
61 
63  const Intersection & dereference() const {
64  return intersection_;
65  }
66 
67  private:
68  //**********************************************************
69  // private data
70  //**********************************************************
71 
74  mutable MakeableInterfaceObject<Intersection> intersection_;
75  };
76 
77 
78 
79 
81  template<class GridImp>
82  class IdentityGridLevelIntersectionIterator
83  {
84  enum {dim=GridImp::dimension};
85 
86  enum {dimworld=GridImp::dimensionworld};
87 
88  // The type used to store coordinates
89  typedef typename GridImp::ctype ctype;
90 
91  typedef typename GridImp::HostGridType::template Codim<0>::Entity::LevelIntersectionIterator HostLevelIntersectionIterator;
92 
93  public:
94 
95  typedef Dune::Intersection<const GridImp, Dune::IdentityGridLevelIntersection<GridImp> > Intersection;
96 
97  IdentityGridLevelIntersectionIterator(const GridImp* identityGrid,
98  const HostLevelIntersectionIterator& hostIterator)
99  : intersection_(IdentityGridLevelIntersection<GridImp>(identityGrid,hostIterator))
100  {}
101 
104  return GridImp::getRealImplementation(intersection_).hostIterator_ == GridImp::getRealImplementation(other.intersection_).hostIterator_;
105  }
106 
107 
109  void increment() {
110  ++GridImp::getRealImplementation(intersection_).hostIterator_;
111  }
112 
114  const Intersection & dereference() const {
115  return intersection_;
116  }
117 
118  private:
119 
122  mutable MakeableInterfaceObject<Intersection> intersection_;
123 
124  };
125 
126 
127 } // namespace Dune
128 
129 #endif
const Intersection & dereference() const
dereferencing
Definition: identitygridintersectioniterator.hh:63
Dune::Intersection< const GridImp, Dune::IdentityGridLeafIntersection< GridImp > > Intersection
Definition: identitygridintersectioniterator.hh:40
bool equals(const IdentityGridLevelIntersectionIterator< GridImp > &other) const
equality
Definition: identitygridintersectioniterator.hh:103
The IdentityGridEntity class.
bool equals(const IdentityGridLeafIntersectionIterator< GridImp > &other) const
equality
Definition: identitygridintersectioniterator.hh:51
void increment()
prefix increment
Definition: identitygridintersectioniterator.hh:109
~IdentityGridLeafIntersectionIterator()
The Destructor.
Definition: identitygridintersectioniterator.hh:48
IdentityGridLevelIntersectionIterator(const GridImp *identityGrid, const HostLevelIntersectionIterator &hostIterator)
Definition: identitygridintersectioniterator.hh:97
Definition: identitygridentity.hh:27
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition: identitygridentity.hh:30
IdentityGridLeafIntersectionIterator(const GridImp *identityGrid, const HostLeafIntersectionIterator &hostIterator)
Definition: identitygridintersectioniterator.hh:42
Definition: identitygridintersections.hh:181
The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition: identitygridintersections.hh:29
void increment()
prefix increment
Definition: identitygridintersectioniterator.hh:58
const Intersection & dereference() const
dereferencing
Definition: identitygridintersectioniterator.hh:114
Dune::Intersection< const GridImp, Dune::IdentityGridLevelIntersection< GridImp > > Intersection
Definition: identitygridintersectioniterator.hh:95