dune-multidomaingrid 2.8
Loading...
Searching...
No Matches
subdomaingrid/hierarchiciterator.hh
Go to the documentation of this file.
1#ifndef DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_HIERARCHICITERATOR_HH
2#define DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_HIERARCHICITERATOR_HH
3
4#include "entity.hh"
5
6namespace Dune {
7
8namespace mdgrid {
9
10namespace subdomain {
11
12template<int,int,typename>
13class EntityWrapper;
14
15template<typename GridImp>
17{
18
19 template< int cd, class Grid, class IteratorImp >
20 friend class Dune::EntityIterator;
21
22 template<int, int, typename>
23 friend class EntityWrapper;
24
25 template<int, int, typename>
26 friend class EntityWrapper;
27
28 using MultiDomainIterator = typename GridImp::MultiDomainGrid::template Codim<0>::Entity::HierarchicIterator;
29
30public:
31
32 static const int codimension = 0;
33
35 using Entity = typename GridImp::template Codim<0>::Entity;
36
38 : _grid(nullptr)
39 {}
40
42 const GridImp* grid,
43 const MultiDomainIterator& multiDomainIterator,
44 const MultiDomainIterator& multiDomainEnd
45 )
46 : _grid(grid)
47 , _multiDomainIterator(multiDomainIterator)
48 , _multiDomainEnd(multiDomainEnd)
49 {
51 }
52
53 bool equals(const HierarchicIteratorWrapper& r) const
54 {
55 return _grid == r._grid && _multiDomainIterator == r._multiDomainIterator;
56 }
57
59 {
60 return {EntityWrapper(_grid,*_multiDomainIterator)};
61 }
62
64 while(_multiDomainIterator != _multiDomainEnd && !_grid->containsMultiDomainEntity(*_multiDomainIterator))
65 {
66 ++_multiDomainIterator;
67 }
68 }
69
70 void increment() {
71 ++_multiDomainIterator;
73 }
74
75private:
76
77 const GridImp* _grid;
78 MultiDomainIterator _multiDomainIterator;
79 MultiDomainIterator _multiDomainEnd;
80
81};
82
83} // namespace subdomain
84
85} // namespace mdgrid
86
87} // namespace Dune
88
89#endif // DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_HIERARCHICITERATOR_HH
Definition: multidomaingrid.hh:8
Definition: subdomaingrid/entity.hh:157
Definition: subdomaingrid/hierarchiciterator.hh:17
void incrementToNextValidPosition()
Definition: subdomaingrid/hierarchiciterator.hh:63
typename GridImp::template Codim< 0 >::Entity Entity
Definition: subdomaingrid/hierarchiciterator.hh:35
bool equals(const HierarchicIteratorWrapper &r) const
Definition: subdomaingrid/hierarchiciterator.hh:53
Entity dereference() const
Definition: subdomaingrid/hierarchiciterator.hh:58
HierarchicIteratorWrapper(const GridImp *grid, const MultiDomainIterator &multiDomainIterator, const MultiDomainIterator &multiDomainEnd)
Definition: subdomaingrid/hierarchiciterator.hh:41
static const int codimension
Definition: subdomaingrid/hierarchiciterator.hh:32
void increment()
Definition: subdomaingrid/hierarchiciterator.hh:70
HierarchicIteratorWrapper()
Definition: subdomaingrid/hierarchiciterator.hh:37
Dune::mdgrid::subdomain::EntityWrapper< 0, GridImp::dimension, GridImp > EntityWrapper
Definition: subdomaingrid/hierarchiciterator.hh:34