dune-grid  2.11
identitygridintersectioniterator.hh
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
2 // SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
3 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4 // vi: set et ts=4 sw=2 sts=2:
5 #ifndef DUNE_IDENTITYGRID_INTERSECTIONITERATOR_HH
6 #define DUNE_IDENTITYGRID_INTERSECTIONITERATOR_HH
7 
9 #include "identitygridentity.hh"
10 
12 
17 namespace Dune {
18 
27  template<class GridImp>
28  class IdentityGridLeafIntersectionIterator
29  {
30 
31  constexpr static int dim = GridImp::dimension;
32 
33  constexpr static int dimworld = GridImp::dimensionworld;
34 
35  // The type used to store coordinates
36  typedef typename GridImp::ctype ctype;
37 
38  typedef typename GridImp::HostGridType::LeafGridView::IntersectionIterator HostLeafIntersectionIterator;
39 
40  public:
41 
43 
45  {}
46 
47  IdentityGridLeafIntersectionIterator(const GridImp* identityGrid,
48  const HostLeafIntersectionIterator& hostIterator)
49  : identityGrid_(identityGrid)
50  , hostIterator_(hostIterator)
51  {}
52 
54  bool equals(const IdentityGridLeafIntersectionIterator& other) const {
55  return hostIterator_ == other.hostIterator_;
56  }
57 
58 
60  void increment() {
61  ++hostIterator_;
62  }
63 
66  return IdentityGridLeafIntersection<GridImp>(identityGrid_,*hostIterator_);
67  }
68 
69  private:
70  //**********************************************************
71  // private data
72  //**********************************************************
73 
74  const GridImp* identityGrid_ = nullptr;
75  HostLeafIntersectionIterator hostIterator_ = {};
76  };
77 
78 
79 
80 
82  template<class GridImp>
83  class IdentityGridLevelIntersectionIterator
84  {
85  constexpr static int dim = GridImp::dimension;
86 
87  constexpr static int dimworld = GridImp::dimensionworld;
88 
89  // The type used to store coordinates
90  typedef typename GridImp::ctype ctype;
91 
92  typedef typename GridImp::HostGridType::LevelGridView::IntersectionIterator HostLevelIntersectionIterator;
93 
94  public:
95 
97 
99  {}
100 
101  IdentityGridLevelIntersectionIterator(const GridImp* identityGrid,
102  const HostLevelIntersectionIterator& hostIterator)
103  : identityGrid_(identityGrid)
104  , hostIterator_(hostIterator)
105  {}
106 
109  return hostIterator_ == other.hostIterator_;
110  }
111 
112 
114  void increment() {
115  ++hostIterator_;
116  }
117 
120  return IdentityGridLevelIntersection<GridImp>(identityGrid_,*hostIterator_);
121  }
122 
123  private:
124 
125 
126  const GridImp* identityGrid_ = nullptr;
127  HostLevelIntersectionIterator hostIterator_ = {};
128 
129  };
130 
131 
132 } // namespace Dune
133 
134 #endif
IdentityGridLevelIntersectionIterator()
Definition: identitygridintersectioniterator.hh:98
concept IntersectionIterator
Model of an intersection iterator.
Definition: concepts/intersectioniterator.hh:21
void increment()
prefix increment
Definition: identitygridintersectioniterator.hh:60
IdentityGridLevelIntersectionIterator(const GridImp *identityGrid, const HostLevelIntersectionIterator &hostIterator)
Definition: identitygridintersectioniterator.hh:101
IdentityGridLeafIntersectionIterator()
Definition: identitygridintersectioniterator.hh:44
bool equals(const IdentityGridLeafIntersectionIterator &other) const
equality
Definition: identitygridintersectioniterator.hh:54
void increment()
prefix increment
Definition: identitygridintersectioniterator.hh:114
bool equals(const IdentityGridLevelIntersectionIterator< GridImp > &other) const
equality
Definition: identitygridintersectioniterator.hh:108
Intersection dereference() const
dereferencing
Definition: identitygridintersectioniterator.hh:119
An intersection with a leaf neighbor elementMesh entities of codimension 0 ("elements") allow to visi...
Definition: identitygridintersections.hh:32
IdentityGridLeafIntersectionIterator(const GridImp *identityGrid, const HostLeafIntersectionIterator &hostIterator)
Definition: identitygridintersectioniterator.hh:47
Dune::Intersection< const GridImp, Dune::IdentityGridLeafIntersection< GridImp > > Intersection
Definition: identitygridintersectioniterator.hh:42
Intersection dereference() const
dereferencing
Definition: identitygridintersectioniterator.hh:65
Definition: identitygridentity.hh:26
The IdentityGridEntity class.
Dune::Intersection< const GridImp, Dune::IdentityGridLevelIntersection< GridImp > > Intersection
Definition: identitygridintersectioniterator.hh:96
Include standard header files.
Definition: agrid.hh:59
Definition: identitygridintersections.hh:191
The IdentityGridLeafIntersection and IdentityGridLevelIntersection classes.
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: albertagrid/dgfparser.hh:28
Iterator over all element neighborsMesh entities of codimension 0 ("elements") allow to visit all nei...
Definition: identitygridentity.hh:29