11 #ifndef _PROBLEMDOMAIN_H_    12 #define _PROBLEMDOMAIN_H_    24 #include "NamespaceHeader.H"    87   inline bool ok() 
const;
   183                  const bool* a_isPeriodic);
   202                  const bool* a_isPeriodic);
   213   void define(
const Box& a_domBox);
   221   void define(
const Box& a_domBox, 
const bool* a_isPeriodic);
   228   void define (
const IntVect& small,
   238   void define (
const IntVect& small,
   240                const bool* a_isPeriodic);
   247   void  define (
const IntVect& small,
   257   void define (
const IntVect& small,
   259                const bool* a_isPeriodic);
   271   const Box& domainBox() 
const;
   276   bool isPeriodic(
int a_dir) 
const;
   282   {
return m_isPeriodic;}
   287   bool isPeriodic() 
const;
   304   int size (
const int& a_idir) 
const;
   318   bool contains (
const IntVect& p) 
const;
   332   bool contains (
const Box& b) 
const;
   348   bool intersects (
const Box& a_box) 
const;
   359   bool intersectsNotEmpty (
const Box& a_box) 
const;
   364   bool periodicAdjacent(
const Box& a_box) 
const;
   369   void insertImages(std::list<Box>& a_list, 
const Box& a_box) 
const;
   375   bool intersects(
const Box& box1, 
const Box& box2) 
const;
   407   void setPeriodic(
int a_dir, 
bool a_isPeriodic);
   551   Box operator& (
const Box& a_b) 
const;
   569                                int   a_refinement_ratio);
   586                             const IntVect& a_refinement_ratio);
   606                              int        a_refinement_ratio);
   623                                 const IntVect&        a_refinement_ratio);
   628     m_domainBox.shift(a_shift);
   640   friend std::ostream& 
operator<< (std::ostream&   os,
   646   friend std::istream& 
operator>> (std::istream& is,
   649   void shiftIt(
Box& a_box, 
int shiftIndex) 
const ;
   650   void unshiftIt(
Box& a_box, 
int shiftIndex) 
const ;
   655   void dumpOn (std::ostream& strm) 
const;
   713     if (!(m_domain == a_domain)) define(a_domain);
   799   for (
int dir=0; dir<
SpaceDim; dir++)
   801       m_isPeriodic[dir] = 
false;
   808   : m_domainBox(b.m_domainBox), m_shiftIt(b.m_shiftIt)
   810   for (
int dir=0; dir<
SpaceDim; dir++)
   822   for (
int dir=0; dir<
SpaceDim; dir++)
   840     for (
int dir=0; dir<
SpaceDim; dir++)
   857   return !(*
this == a_otherDomain);
   865   for (
int dir=0; dir<
SpaceDim; dir++)
  1098     for (
int dir = 0; dir < 
SpaceDim; dir++)
  1100       if (b.
type(dir) != domainBox.
type(dir))
  1225 #include "NamespaceFooter.H" Box m_domainBox
Definition: ProblemDomain.H:669
 
bool contains(const IntVect &p) const
Returns true if argument is contained within this ProblemDomain. 
Definition: ProblemDomain.H:999
 
bool contains_box(const Box &b) const
Equivalent to contains() function. 
Definition: ProblemDomain.H:335
 
IntVect size() const
size functions 
Definition: Box.H:1803
 
#define D_TERM6(a, b, c, d, e, f)
Definition: CHArray.H:40
 
#define CH_assert(cond)
Definition: CHArray.H:37
 
Box refine(const Box &b, const IntVect &refinement_ratio)
 
A class to facilitate interaction with physical boundary conditions. 
Definition: ProblemDomain.H:141
 
ProblemDomain & growLo(int idir, int n_cell=1)
Grow this ProblemDomain on the low side. 
Definition: ProblemDomain.H:955
 
void shift(const IntVect &a_shift)
Definition: ProblemDomain.H:626
 
friend Box bdryLo(const ProblemDomain &a_pd, int a_dir, int a_len)
Returns a face-centered Box at the low side of a_pd. 
 
const Box & box() const
Definition: ProblemDomain.H:701
 
IntVect i() const
Equivalent to the () operator. 
Definition: ProblemDomain.H:73
 
IntVect type() const
Definition: Box.H:1789
 
bool contains(const IntVect &p) const
Definition: Box.H:1871
 
ProblemDomain & operator=(const ProblemDomain &b)
The assignment operator. 
Definition: ProblemDomain.H:862
 
IntVect size() const
Return the size of the domainBox. 
Definition: ProblemDomain.H:992
 
int isEmpty(const box2d *)
 
bool m_isPeriodic[SpaceDim]
Definition: ProblemDomain.H:664
 
IntVect operator()() const
Returns the current shift unit vector. 
Definition: ProblemDomain.H:754
 
ShiftIterator shiftIterator() const
Returns the shiftIterator for this ProblemDomain. 
Definition: ProblemDomain.H:971
 
ProblemDomain m_domain
Definition: ProblemDomain.H:717
 
const int SpaceDim
Definition: SPACE.H:38
 
bool ok()
Definition: ProblemDomain.H:696
 
void incr()
Equivalent to the ++ operator. 
Definition: ProblemDomain.H:81
 
const ProblemDomain & domain() const
Definition: ProblemDomain.H:706
 
IndexTM< T, N > coarsen(const IndexTM< T, N > &a_p, T a_s)
Definition: IndexTMI.H:430
 
ShiftIterator()
Basic constructor. 
Definition: ProblemDomain.H:731
 
const IntVect & bigEnd() const
Definition: Box.H:1768
 
bool operator<(const ProblemDomain &rhs) const
Definition: ProblemDomain.H:631
 
std::ostream & operator<<(std::ostream &a_os, const IndexTM< T, N > &a_iv)
 
void begin(const Box &a_box)
Definition: ProblemDomain.H:687
 
Class to manage box-shifting used to enforce periodic BC's. 
Definition: ProblemDomain.H:33
 
friend Box adjCellLo(const ProblemDomain &a_pd, int a_dir, int a_len)
Returns the cell-centered Box adjacent to the low side of a_pd. 
 
bool isPeriodic() const
Returns true if BC is periodic in any direction. 
Definition: ProblemDomain.H:901
 
void shiftIt(Box &a_box, int shiftIndex) const
Definition: ProblemDomain.H:874
 
const IntVect & smallEnd() const
{ Accessors} 
Definition: Box.H:1754
 
void computeShifts(const bool *a_isPeriodic)
Recompute shift vectors based on periodic directions. 
 
std::istream & operator>>(std::istream &a_os, IndexTM< T, N > &a_iv)
 
void begin()
Equivalent to reset() 
Definition: ProblemDomain.H:783
 
bool operator==(const ProblemDomain &a_otherDomain) const
Returns true if the two domain are equivalent. 
Definition: ProblemDomain.H:830
 
bool isEmpty() const
Returns true if this ProblemDomain is empty or undefined. 
Definition: ProblemDomain.H:978
 
unsigned int index() const
which periodic image is this 
Definition: ProblemDomain.H:90
 
ShiftIterator m_shiftIt
Definition: ProblemDomain.H:674
 
Vector< IntVect > m_shift_vectors
Definition: ProblemDomain.H:115
 
size_t size() const
Definition: Vector.H:192
 
int m_counter
Definition: ProblemDomain.H:722
 
static const IntVect Zero
Definition: IntVect.H:654
 
void define(const Box &a_domBox)
Construct ProblemDomain with a_domBox as computational domain. 
 
friend Box bdryHi(const ProblemDomain &a_pd, int a_dir, int a_len)
Returns a face-centered Box at the high side of a_pd. 
 
Box adjCellLo(const ProblemDomain &a_pd, int a_dir, int a_len=1)
Returns the cell-centered Box adjacent to the low side of a_pd. 
 
void checkDefine(const ProblemDomain &a_domain)
Definition: ProblemDomain.H:711
 
bool image(IntVect &p) const
Returns the periodic image of this IntVect inside of the ProblemDomain. 
Definition: ProblemDomain.H:1026
 
A Rectangular Domain on an Integer Lattice. 
Definition: Box.H:465
 
ProblemDomain & growHi(int idir, int n_cell=1)
Grow this ProblemDomain on the high side. 
Definition: ProblemDomain.H:963
 
void unshiftIt(Box &a_box, int shiftIndex) const
Definition: ProblemDomain.H:880
 
bool ok() const
Is the iterator still within its range of shift vectors? 
Definition: ProblemDomain.H:769
 
ImageIterator(const ProblemDomain &a_domain)
Definition: ProblemDomain.H:680
 
void operator++()
Increment to the next shift unit vector. 
Definition: ProblemDomain.H:762
 
friend Box adjCellHi(const ProblemDomain &a_pd, int a_dir, int a_len)
Returns the cell-centered Box adjacent to the low side of a_pd. 
 
Handle to a particular group in an HDF file. 
Definition: CH_HDF5.H:294
 
An integer Vector in SpaceDim-dimensional space. 
Definition: CHArray.H:42
 
Box bdryLo(const ProblemDomain &a_pd, int a_dir, int a_len=1)
Returns a face-centered Box at the low side of a_pd. 
 
ProblemDomain()
The default constructor. The constructed domain box is empty. 
Definition: ProblemDomain.H:796
 
ProblemDomain grow(const ProblemDomain &pd, int i)
Definition: ProblemDomain.H:921
 
ShiftIterator & operator=(const ShiftIterator &a_src)
Assignment operator. 
Definition: ProblemDomain.H:745
 
void reset()
Reset to first shift unit vector. 
Definition: ProblemDomain.H:776
 
Box & shift(int dir, int nzones)
shift functions 
Definition: Box.H:2067
 
bool operator!=(const ProblemDomain &a_otherDomain) const
Returns true if the two domain are not equivalent. 
Definition: ProblemDomain.H:855
 
Box bdryHi(const ProblemDomain &a_pd, int a_dir, int a_len=1)
Returns a face-centered Box at the high side of a_pd. 
 
Box m_box
Definition: ProblemDomain.H:720
 
Box & grow(int i)
grow functions 
Definition: Box.H:2247
 
const IntVect & operator[](int index) const
Definition: ProblemDomain.H:95
 
Box & growLo(int idir, int n_cell=1)
Definition: Box.H:2333
 
ProblemDomain & grow(int i)
Grows (or shrinks) the domain Box by i in all directions. 
Definition: ProblemDomain.H:913
 
Definition: ProblemDomain.H:677
 
const Box & domainBox() const
Returns the logical computational domain. 
Definition: ProblemDomain.H:887
 
bool isEmpty() const
{ Comparison Functions} 
Definition: Box.H:1846
 
Box m_current
Definition: ProblemDomain.H:721
 
Box adjCellHi(const ProblemDomain &a_pd, int a_dir, int a_len=1)
Returns the cell-centered Box adjacent to the low side of a_pd. 
 
~ShiftIterator()
Destructor. 
 
void end()
Skip the iterator to the end. 
Definition: ProblemDomain.H:790
 
unsigned int m_index
Definition: ProblemDomain.H:113
 
Box & growHi(int idir, int n_cell=1)
Definition: Box.H:2364
 
const bool * isPeriodicVect() const
Returns bool[SpaceDim vector of periodicity info. 
Definition: ProblemDomain.H:281