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>
79 if(rule_.fullSet || rule_.emptySet)
81 while(this->
index()<noEntities_ && rule_.isInvalid(*
this))
126 : virtualEntity_(grid,
EntityRep<0>::InvalidIndex, true )
134 : virtualEntity_(target), maxLevel_(maxLevel)
137 stackChildren_(target);
146 : maxLevel_(maxLevel)
154 return virtualEntity_ == other.virtualEntity_;
168 if (elemStack_.empty()){
172 auto target = elemStack_.top();
176 stackChildren_(target);
187 if (elemStack_.empty()){
192 auto target = elemStack_.top();
196 stackChildren_(target);
205 assert(
this -> virtualEntity_.isValid());
206 return &virtualEntity_;
212 assert(this-> virtualEntity_.isValid());
213 return virtualEntity_;
217 void stackChildren_(
const Entity<0>& target);
227 std::stack<Entity<0>> elemStack_;
236 template<
int codim, Dune::PartitionIteratorType pitype >
237 struct iterator_traits<
Dune::cpgrid::Iterator< codim, pitype > >
240 typedef ptrdiff_t difference_type;
242 typedef value_type* pointer;
243 typedef value_type& reference;
244 typedef forward_iterator_tag iterator_category;
248 struct iterator_traits<
Dune::cpgrid::HierarchicIterator >
250 typedef ptrdiff_t difference_type;
252 typedef value_type* pointer;
253 typedef value_type& reference;
254 typedef forward_iterator_tag iterator_category;
260#include <opm/grid/cpgrid/CpGridData.hpp>
266template<
int cd, PartitionIteratorType pitype>
272 noEntities_(grid.size(cd))
274 if(rule_.fullSet || rule_.emptySet)
277 while(this->index()<noEntities_ && rule_.isInvalid(*
this))
Struct that hods all the data needed to represent a Cpgrid.
Definition CpGridData.hpp:118
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:434
Entity()
Definition Entity.hpp:121
bool operator==(const HierarchicIterator &other) const
Equality.
Definition Iterators.hpp:152
const Entity< 0 > & operator*() const
Const dereferencing operator.
Definition Iterators.hpp:210
HierarchicIterator operator++(int)
Definition Iterators.hpp:185
HierarchicIterator(const CpGridData &grid)
Definition Iterators.hpp:125
HierarchicIterator & operator++()
Definition Iterators.hpp:166
bool operator!=(const HierarchicIterator &other) const
Inequality.
Definition Iterators.hpp:158
const Entity< 0 > * operator->() const
Const member by pointer operator.
Definition Iterators.hpp:203
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:94
Iterator & operator++()
Increment operator.
Definition Iterators.hpp:76
Iterator(const CpGridData &grid, int index, bool orientation)
Definition Iterators.hpp:267
const Entity< cd > & operator*() const
Const dereferencing operator.
Definition Iterators.hpp:101
Copyright 2019 Equinor AS.
Definition GridPartitioning.cpp:673
The namespace Dune is the main namespace for all Dune code.
Definition CartesianIndexMapper.hpp:10
A rule at what entities to stop.
Definition PartitionIteratorRule.hpp:42