dune-multidomaingrid 2.8
Loading...
Searching...
No Matches
subdomaingrid/intersectioniterator.hh
Go to the documentation of this file.
1#ifndef DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_INTERSECTIONITERATOR_HH
2#define DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_INTERSECTIONITERATOR_HH
3
4#include <dune/grid/common/intersectioniterator.hh>
5
6#include "intersection.hh"
7
8namespace Dune {
9
10namespace mdgrid {
11
12namespace subdomain {
13
14template<
15 typename GridImp,
16 typename IndexSet,
17 typename MultiDomainIntersectionIterator
18 >
20
21 template<class, class, class>
22 friend class Dune::IntersectionIterator;
23
24 template<class, class>
25 friend class Dune::Intersection;
26
27 using MultiDomainIntersection = typename MultiDomainIntersectionIterator::Intersection;
29 GridImp,
30 IndexSet,
31 MultiDomainIntersection
32 >;
33
34public:
35
36 using Intersection = Dune::Intersection<GridImp,IntersectionWrapper>;
37
39 : _indexSet(nullptr)
40 {}
41
42 IntersectionIteratorWrapper(const IndexSet* indexSet, const MultiDomainIntersectionIterator& multiDomainIterator)
43 : _indexSet(indexSet)
44 , _multiDomainIterator(multiDomainIterator)
45 {}
46
47 const auto& hostIntersectionIterator() const {
48 return GridImp::MultiDomainGrid::getRealImplementation(_multiDomainIterator).hostIntersectionIterator();
49 }
50
51 bool equals(const IntersectionIteratorWrapper& rhs) const {
52 return _indexSet == rhs._indexSet && _multiDomainIterator == rhs._multiDomainIterator;
53 }
54
55 void increment() {
56 ++_multiDomainIterator;
57 }
58
60 return {IntersectionWrapper(_indexSet,*_multiDomainIterator)};
61 }
62
63private:
64
65 const IndexSet* _indexSet;
66 MultiDomainIntersectionIterator _multiDomainIterator;
67
68};
69
70
71} // namespace subdomain
72
73} // namespace mdgrid
74
75} // namespace Dune
76
77#endif // DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_INTERSECTIONITERATOR_HH
Definition: multidomaingrid.hh:8
Definition: subdomaingrid/intersectioniterator.hh:19
const auto & hostIntersectionIterator() const
Definition: subdomaingrid/intersectioniterator.hh:47
IntersectionIteratorWrapper(const IndexSet *indexSet, const MultiDomainIntersectionIterator &multiDomainIterator)
Definition: subdomaingrid/intersectioniterator.hh:42
IntersectionIteratorWrapper()
Definition: subdomaingrid/intersectioniterator.hh:38
Dune::Intersection< GridImp, IntersectionWrapper > Intersection
Definition: subdomaingrid/intersectioniterator.hh:36
void increment()
Definition: subdomaingrid/intersectioniterator.hh:55
bool equals(const IntersectionIteratorWrapper &rhs) const
Definition: subdomaingrid/intersectioniterator.hh:51
Intersection dereference() const
Definition: subdomaingrid/intersectioniterator.hh:59
Definition: subdomaingrid/intersection.hh:19