Loading [MathJax]/extensions/MathMenu.js

DUNE MultiDomainGrid (2.10)

intersectioniterator.hh
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 >
19class IntersectionIteratorWrapper {
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;
28 using IntersectionWrapper = Dune::mdgrid::subdomain::IntersectionWrapper<
29 GridImp,
30 IndexSet,
31 MultiDomainIntersection
32 >;
33
34public:
35
36 using Intersection = Dune::Intersection<GridImp,IntersectionWrapper>;
37
38 IntersectionIteratorWrapper()
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
59 Intersection dereference() const {
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
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Apr 4, 22:59, 2025)