1#ifndef DUNE_SPGRID_BOUNDARYSEGMENTITERATOR_HH
2#define DUNE_SPGRID_BOUNDARYSEGMENTITERATOR_HH
9#include <dune/common/exceptions.hh>
10#include <dune/common/typetraits.hh>
13#include <dune/grid/common/intersection.hh>
14#include <dune/grid/common/intersectioniterator.hh>
27 template<
class Gr
id >
33 typedef typename std::remove_const< Grid >::type::Traits Traits;
45 typedef typename Intersection::Entity
Entity;
58 typedef typename PartitionIterator::Begin
Begin;
59 typedef typename PartitionIterator::End
End;
99 const IntersectionImpl &intersectionImpl ()
const {
return intersection_.impl(); }
102 PartitionIterator pit_;
110 template<
class Gr
id >
111 inline SPBoundarySegmentIterator< Grid >
114 pit_( gridLevel, gridLevel.boundaryPartition( face ),
Begin() )
120 template<
class Gr
id >
124 pit_( gridLevel, gridLevel.boundaryPartition( face+1 ),
Begin() )
128 template<
class Gr
id >
130 : intersection_( other.intersectionImpl() ),
135 template<
class Gr
id >
139 intersectionImpl() = other.intersectionImpl();
145 template<
class Gr
id >
149 return intersection_;
153 template<
class Gr
id >
156 return (pit_ == other.pit_);
160 template<
class Gr
id >
164 int face = This::face();
168 while( !pit_ && (face < numFaces) )
175 template<
class Gr
id >
178 return intersection_.indexInInside();
182 template<
class Gr
id >
186 return intersectionImpl().gridLevel();
190 template<
class Gr
id >
199 const int i = face >> 1;
200 const int j = 2*(face & 1) - 1;
Definition: iostream.hh:7
Definition: boundarysegmentiterator.hh:29
SPBoundarySegmentIterator(const GridLevel &gridLevel, int face, Begin)
constructor
Definition: boundarysegmentiterator.hh:112
Intersection::Entity Entity
entity type
Definition: boundarysegmentiterator.hh:45
const This & operator=(const This &other)
assignment operator
Definition: boundarysegmentiterator.hh:137
IntersectionImpl::EntityInfo EntityInfo
entity info type
Definition: boundarysegmentiterator.hh:52
PartitionIterator::End End
Definition: boundarysegmentiterator.hh:59
const Intersection & dereference() const
dereference intersection
Definition: boundarysegmentiterator.hh:147
void init(int face)
Definition: boundarysegmentiterator.hh:191
Dune::Intersection< Grid, IntersectionImpl > Intersection
intersection type
Definition: boundarysegmentiterator.hh:42
static const int dimension
grid dimension
Definition: boundarysegmentiterator.hh:48
IntersectionImpl::GridLevel GridLevel
grid level
Definition: boundarysegmentiterator.hh:54
IntersectionImpl::ctype ctype
single coordinate type
Definition: boundarysegmentiterator.hh:50
void increment()
iterator increment
Definition: boundarysegmentiterator.hh:161
const GridLevel & gridLevel() const
Definition: boundarysegmentiterator.hh:184
PartitionIterator::Begin Begin
Definition: boundarysegmentiterator.hh:58
GridLevel::PartitionList PartitionList
partition list
Definition: boundarysegmentiterator.hh:56
bool equals(const This &other) const
check for equality
Definition: boundarysegmentiterator.hh:154
int face() const
Definition: boundarysegmentiterator.hh:176
Definition: entity.hh:146
const EntityInfo & entityInfo() const
Definition: entity.hh:127
Definition: entityinfo.hh:24
unsigned int partitionNumber() const
Definition: entityinfo.hh:73
const MultiIndex & id() const
Definition: entityinfo.hh:68
Definition: gridlevel.hh:35
static const int numFaces
Definition: gridlevel.hh:47
Definition: intersection.hh:37
static const int dimension
Definition: intersection.hh:47
ReferenceCube::ctype ctype
Definition: intersection.hh:45
Definition: partition.hh:79