dune-spgrid 2.7
hierarchiciterator.hh
Go to the documentation of this file.
1#ifndef DUNE_SPGRID_HITERATOR_HH
2#define DUNE_SPGRID_HITERATOR_HH
3
4#include <type_traits>
5
6#include <dune/grid/common/entityiterator.hh>
7
9
10namespace Dune
11{
12
13 // SPHierarchicIterator
14 // --------------------
15
16 template< class Grid, int codim >
18 {
20
21 public:
22 typedef typename std::remove_const< Grid >::type::Traits Traits;
23
24 static const int dimension = Traits::ReferenceCube::dimension;
25 static const int codimension = 0;
26 static const int mydimension = dimension - codimension;
27
28 typedef typename Traits::template Codim< codimension >::Entity Entity;
29
30 private:
32
33 public:
36
38
40 : entityInfo_( entityInfo ),
41 minLevel_( entityInfo.gridLevel().level() ),
42 maxLevel_( std::min( maxLevel, entityInfo.gridLevel().grid().maxLevel() ) )
43 {
44 increment();
45 }
46
47 Entity dereference () const { return EntityImpl( entityInfo() ); }
48
49 bool equals ( const This &other ) const { return entityInfo().equals( other.entityInfo() ); }
50
51 void increment ()
52 {
53 if( gridLevel().level() >= maxLevel_ )
54 {
55 while( (gridLevel().level() > minLevel_) && !entityInfo().nextChild() )
56 entityInfo().up();
57 }
58 else
59 entityInfo().down();
61 }
62
63 const EntityInfo &entityInfo () const { return entityInfo_; }
64 EntityInfo &entityInfo () { return entityInfo_; }
65
66 const GridLevel &gridLevel () const { return entityInfo().gridLevel(); }
67
68 private:
69 EntityInfo entityInfo_;
70 int minLevel_, maxLevel_;
71 };
72
73} // namespace Dune
74
75#endif // #ifndef DUNE_SPGRID_HITERATOR_HH
STL namespace.
Dune::SPMultiIndex< dim > min(const Dune::SPMultiIndex< dim > &a, const Dune::SPMultiIndex< dim > &b)
Definition: multiindex.hh:294
Definition: iostream.hh:7
Definition: entity.hh:146
Definition: hierarchiciterator.hh:18
EntityImpl::GridLevel GridLevel
Definition: hierarchiciterator.hh:35
std::remove_const< Grid >::type::Traits Traits
Definition: hierarchiciterator.hh:22
bool equals(const This &other) const
Definition: hierarchiciterator.hh:49
void increment()
Definition: hierarchiciterator.hh:51
SPHierarchicIterator(const EntityInfo &entityInfo, int maxLevel)
Definition: hierarchiciterator.hh:39
Entity dereference() const
Definition: hierarchiciterator.hh:47
static const int dimension
Definition: hierarchiciterator.hh:24
static const int codimension
Definition: hierarchiciterator.hh:25
EntityImpl::EntityInfo EntityInfo
Definition: hierarchiciterator.hh:34
static const int mydimension
Definition: hierarchiciterator.hh:26
const GridLevel & gridLevel() const
Definition: hierarchiciterator.hh:66
EntityInfo & entityInfo()
Definition: hierarchiciterator.hh:64
const EntityInfo & entityInfo() const
Definition: hierarchiciterator.hh:63
Traits::template Codim< codimension >::Entity Entity
Definition: hierarchiciterator.hh:28
Definition: entityinfo.hh:24
void up()
Definition: entityinfo.hh:99
const GridLevel & gridLevel() const
Definition: entityinfo.hh:66
void update()
Definition: entityinfo.hh:122
bool equals(const This &other) const
Definition: entityinfo.hh:77
void down()
Definition: entityinfo.hh:107
Definition: gridlevel.hh:35