36#ifndef OPM_ITERATORS_HEADER
37#define OPM_ITERATORS_HEADER
39#include <dune/grid/common/gridenums.hh>
40#include "PartitionIteratorRule.hpp"
41#include <opm/common/ErrorMacros.hpp>
42#include "CpGridData.hpp"
58 template<
int cd, PartitionIteratorType pitype>
77 if(rule_.fullSet || rule_.emptySet)
79 while(this->
index()<noEntities_ && rule_.isInvalid(*
this))
116 : virtualEntity_(grid,
EntityRep<0>::InvalidIndex, true )
122 : virtualEntity_(target), maxLevel_(maxLevel)
125 stackChildren_(target);
133 HierarchicIterator(
int maxLevel)
134 : maxLevel_(maxLevel)
142 return virtualEntity_ == other.virtualEntity_;
156 if (elemStack_.empty()){
160 auto target = elemStack_.top();
164 stackChildren_(target);
175 if (elemStack_.empty()){
180 auto target = elemStack_.top();
184 stackChildren_(target);
193 assert(
this -> virtualEntity_.
isValid());
194 return &virtualEntity_;
200 assert(this-> virtualEntity_.
isValid());
201 return virtualEntity_;
205 void stackChildren_(
const Entity<0>& target);
215 std::stack<Entity<0>> elemStack_;
224 template<
int codim, Dune::PartitionIteratorType pitype >
225 struct iterator_traits<
Dune::cpgrid::Iterator< codim, pitype > >
228 typedef ptrdiff_t difference_type;
229 typedef typename Iterator::Entity value_type;
230 typedef value_type* pointer;
231 typedef value_type& reference;
232 typedef forward_iterator_tag iterator_category;
236 struct iterator_traits<
Dune::cpgrid::HierarchicIterator >
238 typedef ptrdiff_t difference_type;
240 typedef value_type* pointer;
241 typedef value_type& reference;
242 typedef forward_iterator_tag iterator_category;
248#include <opm/grid/cpgrid/CpGridData.hpp>
254template<
int cd, PartitionIteratorType pitype>
260 noEntities_(grid.size(cd))
262 if(rule_.fullSet || rule_.emptySet)
265 while(this->
index()<noEntities_ && rule_.isInvalid(*
this))
Struct that hods all the data needed to represent a Cpgrid.
Definition CpGridData.hpp:135
Represents an entity of a given codim, with positive or negative orientation.
Definition EntityRep.hpp:99
bool orientation() const
Returns true if the entity has positive orientation.
Definition EntityRep.hpp:140
int index() const
The (positive) index of an entity.
Definition EntityRep.hpp:126
void increment()
Increments the entityrep's index() by one.
Definition EntityRep.hpp:153
bool isValid() const
isValid method for EntitySeed
Definition Entity.hpp:402
Only needs to provide interface for doing nothing.
Definition Iterators.hpp:108
bool operator==(const HierarchicIterator &other) const
Equality.
Definition Iterators.hpp:140
const Entity< 0 > & operator*() const
Const dereferencing operator.
Definition Iterators.hpp:198
HierarchicIterator operator++(int)
Definition Iterators.hpp:173
HierarchicIterator(const CpGridData &grid)
Definition Iterators.hpp:115
HierarchicIterator & operator++()
Definition Iterators.hpp:154
bool operator!=(const HierarchicIterator &other) const
Inequality.
Definition Iterators.hpp:146
const Entity< 0 > * operator->() const
Const member by pointer operator.
Definition Iterators.hpp:191
Iterator intended to be used as LeafIterator and LevelIterator (no difference due to no adaptivity) f...
Definition Iterators.hpp:60
const Entity< cd > * operator->() const
Const member by pointer operator.
Definition Iterators.hpp:84
Iterator & operator++()
Increment operator.
Definition Iterators.hpp:74
Iterator(const CpGridData &grid, int index, bool orientation)
Definition Iterators.hpp:255
const Entity< cd > & operator*() const
Const dereferencing operator.
Definition Iterators.hpp:91
Copyright 2019 Equinor AS.
Definition CartesianIndexMapper.hpp:10
A rule at what entities to stop.
Definition PartitionIteratorRule.hpp:42