Chombo + EB + MF
3.2
|
A Rectangular Domain on an Integer Lattice. More...
#include <Box.H>
Public Member Functions | |
Box () | |
Box (const IntVect &small, const IntVect &big) | |
void | define (const IntVect &small, const IntVect &big) |
Box (const IntVect &small, const int *vec_len) | |
Box (const IntVect &small, const IntVect &big, const IntVect &typ) | |
void | define (const IntVect &small, const IntVect &big, const IntVect &typ) |
Box (const IntVect &small, const IntVect &big, const IndexType &t) | |
void | define (const IntVect &small, const IntVect &big, const IndexType &t) |
void | define (const Box &b) |
Box | copy () const |
const IntVect & | smallEnd () const |
{ Accessors} More... | |
IntVect | sideEnd (Side::LoHiSide a_side) const |
int | smallEnd (int dir) const |
const IntVect & | bigEnd () const |
int | bigEnd (int dir) const |
const int * | loVect () const |
const int * | hiVect () const |
const int * | getVect () const |
long | index (const IntVect &v) const |
IndexType | ixType () const |
centering More... | |
IntVect | type () const |
IndexType::CellIndex | type (int dir) const |
IntVect | size () const |
size functions More... | |
int | size (int dir) const |
size_t | numPts () const |
size_t | volume () const |
int | longside (int &dir) const |
int | longside () const |
int | shortside (int &dir) const |
int | shortside () const |
bool | isEmpty () const |
{ Comparison Functions} More... | |
bool | ok () const |
bool | contains (const IntVect &p) const |
bool | contains (const Box &b) const |
bool | intersects (const Box &b) const |
bool | intersectsNotEmpty (const Box &b) const |
bool | sameSize (const Box &b) const |
bool | sameType (const Box &b) const |
bool | operator== (const Box &b) const |
bool | eq (const Box &b) const |
bool | operator!= (const Box &b) const |
bool | neq (const Box &b) const |
bool | cellCentered () const |
bool | operator< (const Box &rhs) const |
bool | lt (const Box &rhs) const |
Box & | setSmall (const IntVect &sm) |
{ Modification Functions} More... | |
Box & | setSmall (int dir, int sm_index) |
Box & | setBig (const IntVect &bg) |
Box & | setBig (int dir, int bg_index) |
Box & | setRange (int dir, int sm_index, int n_cells=1) |
Box & | convert (IndexType typ) |
centering type conversion functions More... | |
Box & | convert (const IntVect &typ) |
Box & | convert (int dir, IndexType::CellIndex typ) |
Box & | surroundingNodes () |
Box & | surroundingNodes (int dir) |
Box & | surroundingNodes_int (int dir) |
Box & | enclosedCells () |
Box & | enclosedCells (int dir) |
Box & | enclosedCells_int (int dir) |
Box & | shift (int dir, int nzones) |
shift functions More... | |
Box & | shift (const IntVect &iv) |
Box & | shift_intvect (const IntVect &iv) |
Box & | shiftHalf (int dir, int num_halfs) |
void | convertOldToNew (const IntVect &a_permutation, const IntVect &a_sign, const IntVect &a_translation) |
multiblock stuff. More... | |
void | convertNewToOld (const IntVect &a_permutation, const IntVect &a_sign, const IntVect &a_translation) |
multiblock stuff More... | |
Box & | shiftHalf (const IntVect &iv) |
Box & | shiftHalf_intvect (const IntVect &iv) |
Box & | operator+= (const IntVect &v) |
Box | operator+ (const IntVect &v) const |
Box & | operator-= (const IntVect &v) |
Box | operator- (const IntVect &v) const |
Box | operator & (const Box &) const |
intersection functions More... | |
Box & | operator &= (const Box &) |
Box & | minBox (const Box &b) |
Box & | grow (int i) |
grow functions More... | |
Box & | grow (const IntVect &v) |
Box & | grow (int idir, int n_cell) |
Box & | growLo (int idir, int n_cell=1) |
Box & | growDir (int a_idir, const Side::LoHiSide &a_sd, int a_cell) |
Box & | growHi (int idir, int n_cell=1) |
Box & | refine (int refinement_ratio) |
refinement More... | |
Box & | refine (const IntVect &refinement_ratio) |
bool | coarsenable (int refrat) const |
coarsening More... | |
Box & | coarsen (int refinement_ratio) |
Box & | coarsen (const IntVect &refinement_ratio) |
void | next (IntVect &) const |
void | next (IntVect &p, const int *shv) const |
Box | chop (int dir, int chop_pnt) |
misc More... | |
void | degenerate (Box &a_to, const SliceSpec &a_sliceSpec, bool *a_outofbounds=0) const |
void | p () const |
void | dumpOn (std::ostream &strm) const |
void | computeBoxLen () |
{ Box Constants} More... | |
void | computeBoxLenNotEmpty () |
Box (const IntVect &lb, const IntVect &ub) | |
int | smallEnd (const int dir) const |
int | bigEnd (const int dir) const |
IntVect | size () const |
Static Public Member Functions | |
static void | setTempestOutputFormat (bool) |
Public Attributes | |
IntVect | m_lb |
IntVect | m_ub |
Protected Attributes | |
IntVect | smallend |
IntVect | bigend |
IndexType | btype |
Static Protected Attributes | |
static bool | s_tempestOutputFormat |
Friends | |
class | HDF5Handle |
Box | surroundingNodes (const Box &b, int dir) |
Box | surroundingNodes (const Box &b) |
Box | enclosedCells (const Box &b, int dir) |
Box | enclosedCells (const Box &b) |
Box | bdryBox (const Box &b, int dir, Side::LoHiSide a_sd, int len) |
neighbor box functions More... | |
Box | bdryLo (const Box &b, int dir, int len) |
Box | bdryHi (const Box &b, int dir, int len) |
Box | adjCellLo (const Box &b, int dir, int len) |
Box | adjCellHi (const Box &b, int dir, int len) |
Box | adjCellBox (const Box &b, int dir, Side::LoHiSide a_side, int len) |
Box | minBox (const Box &b1, const Box &b2) |
Box | grow (const Box &b, int i) |
Box | grow (const Box &b, const IntVect &v) |
Box | refine (const Box &b, int refinement_ratio) |
Box | refine (const Box &b, const IntVect &refinement_ratio) |
Box | coarsen (const Box &b, int refinement_ratio) |
Box | coarsen (const Box &b, const IntVect &refinement_ratio) |
std::ostream & | operator<< (std::ostream &os, const Box &bx) |
{ I/O Functions} More... | |
std::istream & | operator>> (std::istream &os, Box &bx) |
A Rectangular Domain on an Integer Lattice.
A Box is an abstraction for defining discrete rectangular regions of SpaceDim-dimensioned indexing space. Boxes have an IndexType, which defines IndexType::CELL or IndexType::NODE based points for each direction and a low and high IntVect which defines the lower and upper corners of the Box. Boxes can exist in positive and negative indexing space.
Box is a dimension dependent class, so SpaceDim must be defined as either 1, 2, or 3 when compiling.
Box::Box | ( | ) |
The default constructor. The constructed Box is empty.
The destructor. Let the compiler build the default version (bvs) Construct cell-centered type Box. It is an error if small is greater than big.
Box::Box | ( | const IntVect & | small, |
const int * | vec_len | ||
) |
Construct Box with specified lengths. It is an error if the lengths are negative.
Construct Box with given type. small and big are expected to be consistent with given type. It is an error if small is greater than big.
Modify cell-centered type Box. It is an error if small is greater than big.
Referenced by LevelGridMetrics::blockDomain().
Modify Box with given type. small and big are expected to be consistent with given type. It is an error if small is greater than big.
void Box::define | ( | const Box & | b | ) |
The copy constructor. Compiler can build default copy (bvs)
|
inline |
References adjCellHi(), adjCellLo(), bdryBox(), bdryHi(), bdryLo(), IndexType::cellCentered(), enclosedCells(), grow(), isEmpty(), IndexType::ixType(), minBox(), IndexType::ok(), IndexType::operator!=(), operator+(), operator-(), IndexType::operator<(), IndexType::operator==(), refine(), and surroundingNodes().
Referenced by BlockBaseRegister< FArrayBox >::fill(), and BlockBaseRegister< FArrayBox >::store().
|
inline |
{ Accessors}
Returns the lower corner of this Box.
Referenced by ProblemDomain::contains(), IVSFAB< T >::copy(), CodimBox< S >::copy(), BaseIF::corners(), BaseIFFAB< FaceStencil >::define(), XPointBlockCoordSys::domainSmallEnd(), ParticleData< P >::enforcePeriodic(), ParticleData< P >::fillGhosts(), FortranArrayIndex(), ProblemDomain::image(), ListBox< T >::isEnclosed(), IVSFAB< T >::linearOut(), XPointBlockCoordSys::lowerMappedCoordinate(), BaseFab< Real >::offset(), FASMultiGrid< T >::oneCycle(), ParticleData< P >::remapOutcast(), BaseFab< Real >::smallEnd(), IndicesTransformation::transform(), and WriteMultiData< T >::writeData().
|
inline |
return smallend if side is low, bigend if side is high.
References Side::Lo.
|
inline |
Returns the coordinate of the low end of this Box in the given direction. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
|
inline |
Returns the upper corner of this Box.
Referenced by BaseFab< Real >::bigEnd(), ProblemDomain::contains(), IVSFAB< T >::copy(), BaseIF::corners(), BaseIFFAB< FaceStencil >::define(), ParticleData< P >::enforcePeriodic(), ParticleData< P >::fillGhosts(), ProblemDomain::image(), ListBox< T >::isEnclosed(), FASMultiGrid< T >::oneCycle(), and XPointBlockCoordSys::upperMappedCoordinate().
|
inline |
Returns the coordinate of the high end of this Box in the given direction. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
|
inline |
Returns a constant pointer to the array of low end coordinates. Useful for calls to Fortran. It should not be used in any other circumstances.
Referenced by BaseFab< Real >::loVect().
|
inline |
Returns a constant pointer the array of high end coordinates. Useful for calls to Fortran. It should not be used in any other circumstances.
Referenced by BaseFab< Real >::hiVect().
|
inline |
Returns a constant pointer to the array of coordinates in the Box. Useful for calls to Fortran, but otherwise too dangerous for use.
|
inline |
Returns offset of point from smallend; i.e. index(smallend) -> 0, bigend would return volume()-1. Is used in accessing FArrayBox.
References IntVect::vect.
Referenced by BaseFab< Real >::BaseFab(), BaseFab< Real >::define(), BaseFab< Real >::getVal(), BaseFab< Real >::operator()(), DenseIntVectSet::operator-=(), BaseFab< Real >::resize(), BaseFab< Real >::shift(), and BaseFab< Real >::shiftHalf().
|
inline |
|
inline |
Return the indexing type of this Box.
Referenced by ProblemDomain::contains(), and IndicesTransformation::transform().
|
inline |
Return the indexing type of this Box in the specified direction. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
|
inline |
size functions
Return an IntVect containing the size of this Box in each coordinate direction.
References D_DECL6.
Referenced by BaseFab< Real >::BaseFab(), MiniIFFAB< Real >::define(), BaseFab< Real >::define(), CHArray< Box, 1, ArZeroCol >::define(), FortranArrayIndex(), ProblemDomain::image(), BaseFab< Real >::offset(), BaseFab< Real >::resize(), DenseIntVectSetIterator::setStride(), ProblemDomain::shiftIt(), BinFab< T >::size(), ListBox< T >::size(), BaseFab< Real >::size(), ProblemDomain::size(), IndicesTransformation::transform(), ProblemDomain::unshiftIt(), and WriteMultiData< T >::writeData().
|
inline |
Return the size of this Box in the specified coordinate direction. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
size_t Box::numPts | ( | ) | const |
Return the volume, in indexing space, of region enclosed by this Box. This is identical to volume().
Referenced by PetscSolver< LevelData< FArrayBox > >::create_mat_vec(), dataSize(), BinFab< T >::define(), MultiGrid< T >::define(), BaseFab< Real >::getVal(), BaseFab< Real >::resize(), BinFab< T >::size(), BaseFab< Real >::size(), MergeSolver< T >::solve(), IndicesTransformation::transform(), and WriteMultiData< T >::writeData().
size_t Box::volume | ( | ) | const |
int Box::longside | ( | int & | dir | ) | const |
Returns length of the longest side of this Box. The argument dir is modified to give direction with longest side: 0...SpaceDim-1. Ignores type.
int Box::longside | ( | ) | const |
Returns length of the longest side of this Box. Ignores type.
int Box::shortside | ( | int & | dir | ) | const |
Returns length of shortest side of this Box. The argument dir is modified to give direction with shortest side: 0...SpaceDim-1. Ignores type.
int Box::shortside | ( | ) | const |
Returns length of the shortest side of this Box. Ignores type.
|
inline |
{ Comparison Functions}
Returns true if this Box is empty.
References D_TERM6.
Referenced by contains(), MiniIFFAB< Real >::copy(), BaseEBCellFAB< Real >::copy(), BaseEBFaceFAB< Real >::copy(), CodimBox< S >::copy(), BaseFab< Real >::copy(), BaseEBCellFAB< Real >::define(), BaseEBFaceFAB< Real >::define(), MultilevelLinearOp< T >::dotProduct(), BlockBaseRegister< FArrayBox >::getSrcBlockBdryIndex(), grow(), ProblemDomain::isEmpty(), BinFab< T >::numItems(), ListBox< T >::numItems(), operator<(), BinFab< T >::reBin(), BaseEBCellFAB< Real >::setVal(), and IndicesTransformation::transform().
|
inline |
Returns true if this Box is not empty and all sizes are right
|
inline |
Returns true if argument is contained within this Box. An empty Box does not contain and is not contained by any Box, including itself.
Referenced by BinFab< T >::addItem(), BinFab< T >::addItems(), BinFab< T >::addItemsDestructive(), BaseFab< Real >::contains(), MiniIVFAB< Real >::copy(), MiniIFFAB< Real >::copy(), BaseEBCellFAB< Real >::copy(), BaseEBFaceFAB< Real >::copy(), BaseFab< Real >::copy(), BaseEBFaceFAB< Real >::define(), NeumannConductivityDomainBC::fillPhiGhost(), DirichletConductivityDomainBC::fillPhiGhost(), NeumannViscousTensorDomainBC::fillVelGhost(), DirichletViscousTensorDomainBC::fillVelGhost(), MiniIVFAB< Real >::forall(), MiniIFFAB< Real >::getFaceSubset(), ProblemDomain::image(), MiniIVFAB< Real >::linearOut(), BaseFab< Real >::offset(), BaseEBFaceFAB< Real >::operator()(), BaseFab< Real >::operator()(), DenseIntVectSet::operator-=(), BaseFab< Real >::performCopy(), BaseFab< Real >::performSetVal(), BinFab< T >::reBin(), MiniIVFAB< Real >::size(), BinFab< T >::transfer(), ListBox< T >::transfer(), IndicesTransformation::transform(), and BaseIFFAB< FaceStencil >::useThisFace().
|
inline |
bool Box::intersects | ( | const Box & | b | ) | const |
bool Box::intersectsNotEmpty | ( | const Box & | b | ) | const |
Returns true if this Box and the argument have non-null intersections. It is an error if the Boxes have different types. 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.
Referenced by BlockBaseRegister< FArrayBox >::hasInterface().
|
inline |
Returns true if this Box and the argument are the same size, ie translates of each other. It is an error if they have different types.
References bigend, CH_assert, D_TERM6, and smallend.
Referenced by CodimBox< S >::copy(), BaseFab< Real >::copy(), BaseFab< Real >::performCopy(), BinFab< T >::transfer(), and ListBox< T >::transfer().
|
inline |
Returns true if this Box and the argument have same type.
References btype.
Referenced by BaseEBFaceFAB< Real >::copy(), and BaseFab< Real >::copy().
|
inline |
bool Box::eq | ( | const Box & | b | ) | const |
|
inline |
Returns true if this Box and the argument differ, including type.
References IndexType::operator==().
bool Box::neq | ( | const Box & | b | ) | const |
|
inline |
Returns true if this Box is cell-centered in all indexing directions.
Referenced by BinFab< T >::addItemsDestructive(), BaseEBFaceFAB< Real >::copy(), BaseEBCellFAB< Real >::define(), BaseEBFaceFAB< Real >::define(), and NodeFArrayBox::dotProduct().
|
inline |
Returns true if this Box is lexigraphically less than rhs box. All comparison is based on lower box corner. In the name of coding efficiency, we do not handle the case where two boxes have the same lower left corner. In DEBUG mode, this is checked for with an assert.
bool Box::lt | ( | const Box & | rhs | ) | const |
|
inline |
|
inline |
|
inline |
Set the entire range in a given direction, starting at sm_index with length n_cells. It is an error if n_cells <= 0.
References CH_assert.
centering type conversion functions
Modifies this Box by converting from the current type into the argument type. This may change the Box coordinates:\
type CELL -> NODE : increase coordinate by one on high end.\
type NODE -> CELL : reduce coordinate by one on high end.\
other type mappings make no change.
Modifies this Box by converting from the current type into the argument type. This may change the Box coordinates:\ type CELL -> NODE : increase coordinate by one on high end.\ type NODE -> CELL : reduce coordinate by one on high end.\ other type mappings make no change. It is an error if typ is not convertible to an IndexType.
References CH_assert, IndexType::IndexType(), isEmpty(), IntVect::Unit, and IntVect::Zero.
Box& Box::convert | ( | int | dir, |
IndexType::CellIndex | typ | ||
) |
Modifies this Box by converting from the current type into the argument type. This may change the Box coordinates:\
type CELL -> NODE : increase coordinate by one on high end.\
type NODE -> CELL : reduce coordinate by one on high end.\
Other type mappings make no change. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
Box& Box::surroundingNodes | ( | ) |
Modifies this Box by converting it to NODE type in all directions. This increases all components of the upper corner by one. The Empty Box is not modified by this function except for changing of type.
Referenced by ProblemDomain::contains(), NodeFArrayBox::dotProduct(), CodimBox< S >::genOrientBox(), and surroundingNodes().
|
inline |
Box& Box::surroundingNodes_int | ( | int | dir | ) |
Box& Box::enclosedCells | ( | ) |
Modifies this Box by converting it to CELL type in all directions. This decreases all components of the upper corner by one. The Empty Box is not modified by this function except for changing of type.
Referenced by ProblemDomain::contains(), dataSize(), enclosedCells(), and LDaddEdgeOp< T >::linearIn().
|
inline |
Box& Box::enclosedCells_int | ( | int | dir | ) |
|
inline |
shift functions
Modifies this Box by shifting it nzones indexing positions in coordinate direction dir. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim. The Empty Box is not modified by this function.
References isEmpty(), and shift().
Referenced by CodimBox< S >::copy(), enclosedCells(), grow(), growHi(), growLo(), DenseIntVectSet::shift(), BaseFab< Real >::shift(), shift(), NodeFArrayBox::shift(), ProblemDomain::shiftIt(), surroundingNodes(), and ProblemDomain::unshiftIt().
Box& Box::shiftHalf | ( | int | dir, |
int | num_halfs | ||
) |
This member modifies this Box by shifting by "half" indices, thereby converting the Box from type CELL to NODE or vice-versa. b.shiftHalf(0,1) shifts b to the right by 1/2 cells. b.shiftHalf(1,-3) shifts b in the -j direction by 3/2 cells. NOTE: If num_halfs is EVEN the shift is num_halfs/2 full zones and hence will not change the type. This is: b.shifthalf(4) == b.shift(2). Directions are zero-based. It is an error if not 0 <= dir < SpaceDim. The Empty Box is not modified by this function except for changing of type.
Referenced by BlockBaseRegister< FArrayBox >::fill(), BlockBaseRegister< FArrayBox >::increment(), BaseFab< Real >::shiftHalf(), and BlockBaseRegister< FArrayBox >::store().
void Box::convertOldToNew | ( | const IntVect & | a_permutation, |
const IntVect & | a_sign, | ||
const IntVect & | a_translation | ||
) |
multiblock stuff.
void Box::convertNewToOld | ( | const IntVect & | a_permutation, |
const IntVect & | a_sign, | ||
const IntVect & | a_translation | ||
) |
multiblock stuff
Modifies this Box to that of the minimum Box containing both this Box and the argument Box. Both Boxes must have identical type.
Referenced by MergeSolver< T >::solve().
|
inline |
grow functions
Modifies this Box by growing it in all directions by given amount. The Empty Box is not modified by this function. NOTE: n_cell negative shrinks the Box by that number of cells. If shrinking produces an empty Box, the Box is transformed into the canonical Empty Box.
References convert(), and isEmpty().
Referenced by BoxLayoutData< BaseFab< int > >::allocateGhostVector(), blockLocalOffsets(), blockWriteToBuffer(), BlockBaseRegister< FArrayBox >::define(), BaseEBFaceFAB< Real >::define(), BlockBaseRegister< FArrayBox >::fill(), NeumannConductivityDomainBC::fillPhiGhost(), DirichletConductivityDomainBC::fillPhiGhost(), NeumannViscousTensorDomainBC::fillVelGhost(), DirichletViscousTensorDomainBC::fillVelGhost(), MixedViscousTensorDomainBC::fillVelGhost(), BaseIFFAB< FaceStencil >::getBoxAndIVS(), EBAMRPoissonOp::getFlux(), getOffsets(), ProblemDomain::grow(), BlockBaseRegister< FArrayBox >::increment(), LevelData< BaseFab< int > >::localCopyTo(), read(), BlockBaseRegister< FArrayBox >::store(), write(), and WriteMultiData< T >::writeData().
|
inline |
Modifies this Box by growing it on the low and high end by n_cell cells in direction idir. The Empty Box is not modified by this function. NOTE: n_cell negative shrinks this Box by that number of cells. If shrinking produces an empty Box, the Box is transformed into the canonical Empty Box. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
|
inline |
Modifies this Box by growing it on the low end by n_cell cells in direction idir. The Empty Box is not modified by this function. NOTE: n_cell negative shrinks this Box by that number of cells. If shrinking produces an empty Box, the Box is transformed into the canonical Empty Box. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
References convert(), isEmpty(), and shift().
Referenced by BlockBaseRegister< FArrayBox >::buildBoxVectors(), BlockBaseRegister< FArrayBox >::getSrcBlockBdryIndex(), and ProblemDomain::growLo().
|
inline |
growLo if a_sd == Side::Lo \ growHi if a_sd= = Side::Hi
References Side::Lo.
Referenced by BlockBaseRegister< FArrayBox >::buildBoxVectors(), BlockBaseRegister< FArrayBox >::fill(), BlockBaseRegister< FArrayBox >::increment(), and BlockBaseRegister< FArrayBox >::store().
|
inline |
Modifies this Box by growing it on the high end by n_cell cells in direction idir. The Empty Box is not modified by this function. NOTE: n_cell negative shrinks the Box by that number of cells. If shrinking produces an empty Box, the Box is transformed into the canonical Empty Box. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
References convert(), isEmpty(), operator &(), and shift().
Referenced by BlockBaseRegister< FArrayBox >::buildBoxVectors(), and ProblemDomain::growHi().
Box& Box::refine | ( | int | refinement_ratio | ) |
refinement
Modifies this Box by refining it by given (positive) refinement ratio. The Empty Box is not modified by this function. \
NOTE: if type(dir) = CELL centered: lo <- lo*ratio and hi <- (hi+1)*ratio - 1. \
NOTE: if type(dir) = NODE centered: lo <- lo*ratio and hi <- hi*ratio.
Referenced by coarsenable().
|
inline |
coarsening
References coarsen(), coarsen(), IndexType::operator<<, IndexType::operator>>, refine(), and IndexType::test().
Box& Box::coarsen | ( | int | refinement_ratio | ) |
Modifies this Box by coarsening it by given (positive) refinement ratio. The Empty Box is not modified by this function. \
NOTE: if type(dir) = CELL centered: lo <- lo/ratio and hi <- hi/ratio.\
NOTE: if type(dir) = NODE centered: lo <- lo/ratio and hi <- hi/ratio + ((hiratio)==0 ? 0 : 1).\
That is, refinement of coarsened Box must contain the original Box.
Referenced by coarsenable(), and MultilevelLinearOp< T >::dotProduct().
Modifies this Box by coarsening by given (positive) refinement ratio. The Empty Box is not modified by this function. \
NOTE: if type(dir) = CELL centered: lo <- lo/ratio and hi <- hi/ratio.\
NOTE: if type(dir) = NODE centered: lo <- lo/ratio and hi <- hi/ratio + ((hiratio)==0 ? 0 : 1).\
That is, refinement of coarsened Box must contain the original Box.
void Box::next | ( | IntVect & | ) | const |
void Box::next | ( | IntVect & | p, |
const int * | shv | ||
) | const |
Box Box::chop | ( | int | dir, |
int | chop_pnt | ||
) |
misc
Chops the Box at the chop_pnt in the dir direction returns one Box, modifies the object Box. The union of the two is the original Box. The modified Box is the low end, the returned Box is the high end. If type(dir) = CELL, the Boxes are disjoint with the chop_pnt included in the high end (new Box). It is an ERROR if chop_pnt is the low end of the orig Box. If type(dir) = NODE, the chop_pnt is included in both Boxes but is the only point in common. It is also an error if the chop_pnt is an end node of the Box. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim.
Makes a_to a box that's the same as *this except that it's just one cell thick in the a_sliceSpec.direction-th direction, and its (one) coordinate in that direction is a_sliceSpec.position.
If a_sliceSpec.position is outside the range of *this, and a_outofbounds isn't null, then we set *a_outofbounds to true, otherwise to false.
It would be more natural to return a Box, than to set the value of a Box reference, but we do it this way to be consistent with BaseFab::degenerate() where we can't return an object because of the policy of disallowing copy constructors for heavyweight classes.
Referenced by BaseFab< Real >::degenerate().
void Box::p | ( | ) | const |
print to pout()
void Box::dumpOn | ( | std::ostream & | strm | ) | const |
Gives more detail than printOn. Useful for exiting due to an error.
|
inline |
|
inline |
|
static |
Doesn't print the IndexType, and uses square outer brackets.
|
inline |
|
inline |
|
inline |
References D_DECL6, and IntVect::IntVect().
|
friend |
Returns a Box with NODE based coordinates in direction dir that encloses the argument Box. NOTE: equivalent to b.convert(dir,NODE). NOTE: error if b.type(dir) == NODE. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim. The Empty Box is not modified by this function except for changing of type.
Returns a Box with CELL based coordinates in direction dir that is enclosed by argument Box. NOTE: equivalent to b.convert(dir,CELL). NOTE: error if b.type(dir) == CELL. Directions are zero-based. It is an error if not 0 <= dir < SpaceDim. The Empty Box is not modified by this function except for changing of type.
|
friend |
neighbor box functions
Returns the cell centered Box of the given length adjacent to the argument Box on the low end along the given coordinate direction. The return Box is identical to the argument Box in the other directions. The return Box and the argument Box have an empty intersection. \
NOTE: len != 0. A negative length results in cells inside the original box. \
NOTE: Box retval = adjCellLo(b,dir,len) is equivalent to the following set of operations: \
Box retval(b); \
retval.convert(dir,Box::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 Box is an Empty Box of the appropriate type.
Returns the cell centered Box of the given length adjacent to the argument Box on the high end along the given coordinate direction. The return Box is identical to the argument Box in the other directions. The return Box and the argument Box have an empty intersection. \
NOTE: len != 0. A Negative length results in cells inside the original box. \
NOTE: Box retval = adjCellHi(b,dir,len) is equivalent to the following set of operations: \
Box retval(b); \
retval.convert(dir,Box::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 Box is an Empty Box of the appropriate type.
|
friend |
Returns a Box that is the argument Box coarsened by given (positive) refinement ratio. The Empty Box is not modified by this function. \
NOTE: if type(dir) = CELL centered: lo <- lo/ratio and hi <- hi/ratio.\
NOTE: if type(dir) = NODE centered: lo <- lo/ratio and hi <- hi/ratio + ((hiratio)==0 ? 0 : 1).\
That is, refinement of coarsened Box must contain the original Box.
Returns a Box that is the argument Box coarsened by given (positive) refinement ratio. The Empty Box is not modified by this function. \
NOTE: if type(dir) = CELL centered: lo <- lo/ratio and hi <- hi/ratio.\
NOTE: if type(dir) = NODE centered: lo <- lo/ratio and hi <- hi/ratio + ((hiratio)==0 ? 0 : 1).\
That is, refinement of coarsened Box must contain the original Box.
|
friend |
{ I/O Functions}
Write an ASCII representation to the ostream.
|
friend |
Read from istream.
|
protected |
Referenced by contains(), grow(), operator<(), operator==(), and sameSize().
|
protected |
Referenced by contains(), grow(), operator<(), operator==(), and sameSize().
|
protected |
Referenced by grow(), operator==(), and sameType().
|
staticprotected |
IntVect Box::m_lb |
IntVect Box::m_ub |