4 #ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH 5 #define DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH 10 #include <dune/common/iteratorfacades.hh> 35 :
public ForwardIteratorFacade
36 < BoundaryIterator<GV>,
37 const typename GV::Intersection,
38 const typename GV::Intersection&,
39 typename std::iterator_traits<typename GV::template Codim<0>::
40 Iterator>::difference_type>
45 typedef const typename GV::Intersection
Value;
49 typedef typename std::iterator_traits<ElementIterator>::difference_type
58 std::shared_ptr<IntersectionIterator> iit;
62 if(eit == gv->template end<0>())
return true;
64 if((*iit)->boundary() && !(*iit)->neighbor())
return true;
69 void basic_increment() {
71 if(*iit == gv->iend(*eit)) {
74 if(eit != gv->template end<0>())
83 bool equals(
const DerivedType& other)
const {
84 if(eit != other.eit)
return false;
88 bool mePassedTheEnd = eit == gv->template end<0>();
89 bool otherPassedTheEnd = other.eit == other.gv->template end<0>();
92 if(mePassedTheEnd && otherPassedTheEnd)
return true;
95 if(mePassedTheEnd || otherPassedTheEnd)
return false;
98 return *iit == *other.iit;
103 while(!valid()) basic_increment();
112 const IntersectionIterator& iit_)
113 : gv(&gv_), eit(eit_), iit(new IntersectionIterator(iit_))
115 while(!valid()) basic_increment();
124 : gv(&gv_), eit(eit_)
126 if(eit != gv->template end<0>())
129 while(!valid()) basic_increment();
137 : gv(&gv_), eit(end ? gv->template end<0>() : gv->template begin<0>())
139 if(eit != gv->template end<0>())
142 while(!valid()) basic_increment();
146 template<
typename ElementIndexSet>
148 const ElementIndexSet& eis;
156 template<
typename GV>
161 static const unsigned dimCell = GV::dimension-1;
163 typedef typename GV::Intersection
Cell;
180 return CellIterator(gv);
183 return CellIterator(gv,
true);
187 return CornerIterator(beginCells(), endCells());
190 return CornerIterator(endCells());
194 PointIterator
endPoints()
const {
return endCorners(); }
197 return ConnectivityWriter();
199 const CollectiveCommunication&
comm()
const {
210 #endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH VTK::Corner< Cell > Corner
Definition: boundaryiterators.hh:166
void increment()
Definition: boundaryiterators.hh:101
Corner Point
Definition: boundaryiterators.hh:169
Value & Reference
Definition: boundaryiterators.hh:46
BoundaryIterator(const GV &gv_, bool end=false)
construct a BoundaryIterator
Definition: boundaryiterators.hh:136
PointIterator beginPoints() const
Definition: boundaryiterators.hh:193
GV::template Codim< 0 >::Iterator ElementIterator
Definition: boundaryiterators.hh:47
VTK::CornerIterator< CellIterator > CornerIterator
Definition: boundaryiterators.hh:167
BoundaryIterator< GV > CellIterator
Definition: boundaryiterators.hh:164
NonConformingBoundaryIteratorFactory(const GV &gv_)
Definition: boundaryiterators.hh:175
CornerIterator beginCorners() const
Definition: boundaryiterators.hh:186
std::iterator_traits< ElementIterator >::difference_type DifferenceType
Definition: boundaryiterators.hh:50
CornerIterator endCorners() const
Definition: boundaryiterators.hh:189
IntersectionIndexSet(const ElementIndexSet &eis_)
Definition: boundaryiterators.hh:151
GV::Intersection Cell
Definition: boundaryiterators.hh:163
ConnectivityWriter makeConnectivity() const
Definition: boundaryiterators.hh:196
Definition: boundaryiterators.hh:147
GV::IntersectionIterator IntersectionIterator
Definition: boundaryiterators.hh:48
iterate over the GridViews boundary intersections
Definition: boundaryiterators.hh:34
CellIterator endCells() const
Definition: boundaryiterators.hh:182
Include standard header files.
Definition: agrid.hh:59
BoundaryIterator(const GV &gv_, const ElementIterator &eit_, const IntersectionIterator &iit_)
construct a BoundaryIterator
Definition: boundaryiterators.hh:111
iterate over the corners of some cell range
Definition: corneriterator.hh:29
Definition: boundaryiterators.hh:157
bool equals(const DerivedType &other) const
Definition: boundaryiterators.hh:83
writer for the connectivity array in nonconforming mode
Definition: functionwriter.hh:251
const GV::Intersection Value
Definition: boundaryiterators.hh:45
NonConformingConnectivityWriter< Cell > ConnectivityWriter
Definition: boundaryiterators.hh:172
simple class representing a corner of a cell
Definition: corner.hh:23
BoundaryIterator< GV > DerivedType
Definition: boundaryiterators.hh:44
GV::CollectiveCommunication CollectiveCommunication
Definition: boundaryiterators.hh:173
BoundaryIterator(const GV &gv_, const ElementIterator &eit_)
construct a BoundaryIterator
Definition: boundaryiterators.hh:123
const CollectiveCommunication & comm() const
Definition: boundaryiterators.hh:199
Reference dereference() const
Definition: boundaryiterators.hh:80
PointIterator endPoints() const
Definition: boundaryiterators.hh:194
CornerIterator PointIterator
Definition: boundaryiterators.hh:170
CellIterator beginCells() const
Definition: boundaryiterators.hh:179