Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

ProblemDomain Class Reference

#include <ProblemDomain.H>

Collaboration diagram for ProblemDomain:

Collaboration graph
[legend]
List of all members.

Public Methods

 ProblemDomain ()
 {\bf Constructors}

 ProblemDomain (const Box &a_domBox)
 ProblemDomain (const Box &a_domBox, const bool *a_isPeriodic)
 ProblemDomain (const IntVect &small, const IntVect &big)
 ProblemDomain (const IntVect &small, const IntVect &big, const bool *a_isPeriodic)
 ProblemDomain (const IntVect &small, const int *vec_len)
 ProblemDomain (const IntVect &small, const int *vec_len, const bool *a_isPeriodic)
 ProblemDomain (const ProblemDomain &a_src)
const BoxdomainBox () const
 {\bf Accessors}

bool isPeriodic (int a_dir) const
bool isPeriodic () const
ShiftIterator shiftIterator () const
bool isEmpty () const
bool contains (const IntVect &p) const
bool image (IntVect &p) const
bool contains (const Box &b) const
bool contains_box (const Box &b) const
bool intersects (const Box &a_box) const
bool intersectsNotEmpty (const Box &a_box) const
bool intersects (const Box &box1, const Box &box2) const
ProblemDomain & operator= (const ProblemDomain &b)
 {\bf Modification Functions}

void setPeriodic (int a_dir, bool a_isPeriodic)
ProblemDomain & grow (int i)
ProblemDomain & grow (const IntVect &v)
ProblemDomain & grow (int idir, int n_cell)
ProblemDomain & growLo (int idir, int n_cell=1)
ProblemDomain & growHi (int idir, int n_cell=1)
Box operator & (const Box &a_b) const
ProblemDomain & refine (int a_refinement_ratio)
 refinement

ProblemDomain & refine (const IntVect &a_refinement_ratio)
ProblemDomain & coarsen (int a_refinement_ratio)
ProblemDomain & coarsen (const IntVect &refinement_ratio)
void dumpOn (std::ostream &strm) const

Protected Attributes

bool m_isPeriodic [SpaceDim]
Box m_domainBox
ShiftIterator m_shiftIt

Friends

class HDF5Handle
void operator &= (Box &a_box, const ProblemDomain &a_probomain)
Box operator & (const Box &a_box, const ProblemDomain &a_probdomain)
ProblemDomain grow (const ProblemDomain &pd, int i)
ProblemDomain grow (const ProblemDomain &pd, const IntVect &v)
Box bdryLo (const ProblemDomain &a_pd, int a_dir, int a_len=1)
Box bdryHi (const ProblemDomain &a_pd, int a_dir, int a_len=1)
Box adjCellLo (const ProblemDomain &a_pd, int a_dir, int a_len=1)
Box adjCellHi (const ProblemDomain &a_pd, int a_dir, int a_len=1)
ProblemDomain refine (const ProblemDomain &a_probdomain, int a_refinement_ratio)
ProblemDomain refine (const ProblemDomain &a_probdomain, const IntVect &a_refinement_ratio)
ProblemDomain coarsen (const ProblemDomain &a_probdomain, int a_refinement_ratio)
ProblemDomain coarsen (const ProblemDomain &a_probdomain, const IntVect &a_refinement_ratio)
std::ostream & operator<< (std::ostream &os, const ProblemDomain &bx)
std::istream & operator>> (std::istream &is, ProblemDomain &bx)

Constructor & Destructor Documentation

ProblemDomain::ProblemDomain   [inline]
 

{\bf Constructors}

The default constructor. The constructed domain box is empty.

ProblemDomain::ProblemDomain const Box   a_domBox
 

Construct ProblemDomain with a_domBox as computational domain This constructor defaults to non-periodic domain

ProblemDomain::ProblemDomain const Box   a_domBox,
const bool *    a_isPeriodic
 

Construct ProblemDomain with a_domBox as computational domain. a_isPeriodic is a SpaceDim array of bools, true is the physical boundary condition is periodic in the coordinate direction

ProblemDomain::ProblemDomain const IntVect   small,
const IntVect   big
 

Construct a ProblemDomain. It is an error if small is greater than big.

ProblemDomain::ProblemDomain const IntVect   small,
const IntVect   big,
const bool *    a_isPeriodic
 

Construct a ProblemDomain. It is an error if small is greater than big. a_isPeriodic is a SpaceDim array of bools, true is the physical boundary condition is periodic in the coordinate direction

ProblemDomain::ProblemDomain const IntVect   small,
const int *    vec_len
 

Construct ProblemDomain with specified lengths. It is an error if the lengths are negative.

ProblemDomain::ProblemDomain const IntVect   small,
const int *    vec_len,
const bool *    a_isPeriodic
 

Construct ProblemDomain with specified lengths. It is an error if the lengths are negative. a_isPeriodic is a SpaceDim array of bools, true is the physical boundary condition is periodic in the coordinate direction

ProblemDomain::ProblemDomain const ProblemDomain &    a_src [inline]
 

The copy constructor.


Member Function Documentation

ProblemDomain& ProblemDomain::coarsen const IntVect   refinement_ratio
 

Modifies this ProblemDomain by coarsening by given (positive) refinement ratio. The Empty ProblemDomain is not modified by this function. \

ProblemDomain& ProblemDomain::coarsen int    a_refinement_ratio
 

Modifies this ProblemDomain by coarsening it by given (positive) refinement ratio. The Empty ProblemDomain is not modified by this function. \

bool ProblemDomain::contains const Box   b const [inline]
 

Returns true if argument is contained within this ProblemDomain. It is an error if the Box is not cell-centered. An empty ProblemDomain does not contain any Box.

bool ProblemDomain::contains const IntVect   p const [inline]
 

Returns true if argument is contained within this ProblemDomain. An empty ProblemDomain does not contain and is not contained by any ProblemDomain, including itself.

bool ProblemDomain::contains_box const Box   b const [inline]
 

const Box & ProblemDomain::domainBox   const [inline]
 

{\bf Accessors}

Returns the logical computational domain

void ProblemDomain::dumpOn std::ostream &    strm const
 

Gives more detail than printOn. Useful for exiting due to an error.

ProblemDomain & ProblemDomain::grow int    idir,
int    n_cell
[inline]
 

Modifies this ProblemDomain by growing it on the low and high end by n_cell cells in direction idir

ProblemDomain & ProblemDomain::grow const IntVect   v [inline]
 

modifies this ProblemDomain by growing the domainBox in each direction by the specified amount

ProblemDomain & ProblemDomain::grow int    i [inline]
 

grows (or shrinks) the domain box by i in all directions

ProblemDomain & ProblemDomain::growHi int    idir,
int    n_cell = 1
[inline]
 

Modifies this ProblemDomain by growing it on the high end by n_Cell cells in direction idir

ProblemDomain & ProblemDomain::growLo int    idir,
int    n_cell = 1
[inline]
 

Modifies this ProblemDomain by growing it on the low end by n_cell cells in direction idir.

bool ProblemDomain::image IntVect   p const [inline]
 

Returns the periodic image of this IntVect inside of the ProblemDomain. Return true if the domain contains this IntVect, returning the image in 'p', otherwise returns false

bool ProblemDomain::intersects const Box   box1,
const Box   box2
const
 

returns true if box1 and box2 and any of their periodic images intersect (useful for checking disjointness)

bool ProblemDomain::intersects const Box   a_box const
 

Returns true if this ProblemDomain and the argument have non-null intersections. It is an error if a_box is not cell-centered. An empty ProblemDomain does not intersect any Box. This will do nothing in periodic directions (since a periodic domain is infinite in the periodic direction. If periodic in all dimensions, this will always return true.

bool ProblemDomain::intersectsNotEmpty const Box   a_box const
 

Returns true if this ProblemDomain and the argument have non-null intersections. It is an error if a_box is not cell-centered. This routine does not perform the check to see if *this or b are empty boxes. It is the callers responsibility to ensure that this never happens. If you are unsure, the use the .intersects(..) routine. In periodic directions, will always return true.

bool ProblemDomain::isEmpty   const [inline]
 

Returns true if this ProblemDomain is empty or undefined.

bool ProblemDomain::isPeriodic   const [inline]
 

returns true is BC is periodic in _any_ direction

bool ProblemDomain::isPeriodic int    a_dir const [inline]
 

returns true if BC is periodic in direction a_dir

Box ProblemDomain::operator & const Box   a_b const
 

Returns the Box that is intersection of this ProblemDomain and the argument ProblemDomain. The Box MUST be cell-centered. The intersection of the Empty ProblemDomain and any Box is the Empty Box. This operator does nothing in periodic directions (since a periodic domain is an infinite domain).

ProblemDomain & ProblemDomain::operator= const ProblemDomain &    b [inline]
 

{\bf Modification Functions}

The assignment operator.

ProblemDomain& ProblemDomain::refine const IntVect   a_refinement_ratio
 

Modifies this ProblemDomain by refining it by given (positive) refinement ratio. The Empty ProblemDomain is not modified by this function. \

ProblemDomain& ProblemDomain::refine int    a_refinement_ratio
 

refinement

Modifies this ProblemDomain by refining it by given (positive) refinement ratio. The Empty ProblemDomain is not modified by this function. \

void ProblemDomain::setPeriodic int    a_dir,
bool    a_isPeriodic
 

sets whether BC is periodic in direction a_dir (true == periodic)

ShiftIterator ProblemDomain::shiftIterator   const [inline]
 

returns the shiftIterator for this ProblemDomain


Friends And Related Function Documentation

Box adjCellHi const ProblemDomain &    a_pd,
int    a_dir,
int    a_len = 1
[friend]
 

Returns the cell centered Box of the given length adjacent to the argument ProblemDomain on the high end along the given coordinate direction. The return Box is identical to the argument ProblemDomain in the other directions. The return Box and the argument ProblemDomain have an empty intersection. \

NOTE: len >= 1. \

NOTE: Box retval = adjCellHi(b,dir,len) is equivalent to the following set of operations: \

Box retval(b); \

retval.convert(dir,ProblemDomain::CELL); \

retval.setrange(dir,retval.bigEnd(dir)+1,len);\

Directions are zero-based. It is an error if not 0 <= dir < SpaceDim. The neighbor of an Empty ProblemDomain is an Empty Box of the appropriate type. If dir is a periodic direction, will return an empty Box.

Box adjCellLo const ProblemDomain &    a_pd,
int    a_dir,
int    a_len = 1
[friend]
 

Returns the cell centered Box of the given length adjacent to the argument ProblemDomain on the low end along the given coordinate direction. The return Box is identical to the argument ProblemDomain in the other directions. The return ProblemDomain and the argument ProblemDomain have an empty intersection.\

NOTE: len >= 1. \

NOTE: Box retval = adjCellLo(b,dir,len) is equivalent to the following set of operations: \

Box retval(b); \

retval.convert(dir,ProblemDomain::CELL); \

retval.setrange(dir,retval.smallEnd(dir)-len,len); \

Directions are zero-based. It is an error if not 0 <= dir < SpaceDim. The neighbor of an Empty ProblemDomain is an Empty Box of the appropriate type. If dir is a periodic direction, will return an empty Box as well.

Box bdryHi const ProblemDomain &    a_pd,
int    a_dir,
int    a_len = 1
[friend]
 

Returns the edge-centered Box (in direction dir) defining the high side of the argument ProblemDomain. The return Box will have the given length in the given direction. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim. The neighbor of an Empty ProblemDomain is an Empty Box of the appropriate type. If dir is a periodic direction, will return an empty box.

Box bdryLo const ProblemDomain &    a_pd,
int    a_dir,
int    a_len = 1
[friend]
 

Returns the edge-centered Box (in direction dir) defining the low side of the argument ProblemDomain. The output Box will have the given length in the given direction. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim. The neighbor of an Empty ProblemDomain is an Empty Box of the appropriate type. If dir is a periodic direction, will return an empty box.

ProblemDomain coarsen const ProblemDomain &    a_probdomain,
const IntVect   a_refinement_ratio
[friend]
 

Returns a ProblemDomain that is the argument ProblemDomain coarsened by given (positive) refinement ratio. The Empty ProblemDomain is not modified by this function. \

ProblemDomain coarsen const ProblemDomain &    a_probdomain,
int    a_refinement_ratio
[friend]
 

Returns a ProblemDomain that is the argument ProblemDomain coarsened by given (positive) refinement ratio. The Empty ProblemDomain is not modified by this function. \

ProblemDomain grow const ProblemDomain &    pd,
const IntVect   v
[friend]
 

Returns a ProblemDomain that is the argument ProblemDomain with a DomainBox grown by the given amount.

ProblemDomain grow const ProblemDomain &    pd,
int    i
[friend]
 

returns a ProblemDomain with a domainBox grown by the given amount

friend class HDF5Handle [friend]
 

Box operator & const Box   a_box,
const ProblemDomain &    a_probdomain
[friend]
 

returns a box which is the interesection of a_box and the problemDomain

void operator &= Box   a_box,
const ProblemDomain &    a_probomain
[friend]
 

modifies a_box to be the intersection of a_box and the problemDomain

std::ostream& operator<< std::ostream &    os,
const ProblemDomain &    bx
[friend]
 

Write an ASCII representation to the ostream.

std::istream& operator>> std::istream &    is,
ProblemDomain &    bx
[friend]
 

Read from istream.

ProblemDomain refine const ProblemDomain &    a_probdomain,
const IntVect   a_refinement_ratio
[friend]
 

Returns a ProblemDomain that is the argument ProblemDomain refined by given (positive) refinement ratio. The Empty ProblemDomain is not modified by this function. \

ProblemDomain refine const ProblemDomain &    a_probdomain,
int    a_refinement_ratio
[friend]
 

Returns a ProblemDomain that is the argument ProblemDomain refined by given (positive) refinement ratio. The Empty ProblemDomain is not modified by this function. \


Member Data Documentation

Box ProblemDomain::m_domainBox [protected]
 

bool ProblemDomain::m_isPeriodic[SpaceDim] [protected]
 

ShiftIterator ProblemDomain::m_shiftIt [protected]
 


The documentation for this class was generated from the following file:
Generated on Tue Jul 2 10:44:15 2002 for Chombo by doxygen1.2.16