00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _FaceIterator_H_
00030 #define _FaceIterator_H_
00031
00032 #include "IntVect.H"
00033 #include "FaceIndex.H"
00034 #include "IntVectSet.H"
00035 #include "EBGraph.H"
00036 #include "Vector.H"
00037
00039
00042 class FaceStop
00043 {
00044 public:
00046
00060 enum WhichFaces{Invalid=-1,
00061 SurroundingWithBoundary=0, HiWithBoundary, LoWithBoundary,
00062 SurroundingNoBoundary , HiNoBoundary , LoNoBoundary,
00063 NUMTYPES};
00064 };
00065
00067
00071 class FaceIterator
00072 {
00073 public:
00074
00076 FaceIterator(const IntVectSet& a_ivs,
00077 const EBGraph& a_ebgraph,
00078 const int& a_direction,
00079 const FaceStop::WhichFaces& a_location);
00080
00082 FaceIterator();
00083
00085 ~FaceIterator();
00086
00088 void define(const IntVectSet& a_ivs,
00089 const EBGraph& a_ebgraph,
00090 const int& a_direction,
00091 const FaceStop::WhichFaces& a_location);
00092
00094 void reset();
00095
00097 void operator++();
00098
00100 const FaceIndex& operator() () const;
00101
00103 bool ok() const;
00104
00106 bool isDefined() const;
00107
00108 private:
00109 bool m_isDefined;
00110 Vector<FaceIndex> m_faces;
00111 int m_iface;
00112 int m_direction;
00113 };
00114
00115 #endif