Chombo + EB  3.0
Public Member Functions | Private Attributes | List of all members
EBISBox Class Reference

#include <EBISBox.H>

Public Member Functions

 EBISBox ()
 
 ~EBISBox ()
 
IntVectSet getMultiCells (const Box &a_subbox) const
 
IntVectSet getIrregIVS (const Box &a_subbox) const
 
IntVectSet boundaryIVS (const Box &a_subbox) const
 
int numVoFs (const IntVect &a_iv) const
 
Vector< VolIndexgetVoFs (const IntVect &a_iv) const
 
Vector< VolIndexgetVoFs (const VolIndex &a_vof, const int &a_dir, const Side::LoHiSide &a_sd, const int &a_steps) const
 
bool isAllRegular () const
 
bool isAllCovered () const
 
bool isRegular (const IntVect &a_iv) const
 
bool isIrregular (const IntVect &a_iv) const
 
bool isCovered (const IntVect &a_iv) const
 
bool isCovered (const Box &a_box) const
 
bool isRegular (const Box &a_box) const
 
Vector< FaceIndexgetFaces (const VolIndex &a_vof, const int &a_idir, const Side::LoHiSide &a_sd) const
 
Vector< FaceIndexgetAllFaces (const IntVect &a_iv, const int &a_idir, const Side::LoHiSide &a_sd) const
 
RealVect centroid (const FaceIndex &facein) const
 
int numFaces (const VolIndex &a_vof, const int &a_idir, const Side::LoHiSide &a_sd) const
 
Real volFrac (const VolIndex &a_vof) const
 
Real areaFracScaling (const VolIndex &a_vof) const
 
bool isConnected (const VolIndex &a_vof1, const VolIndex &a_vof2) const
 
Real areaFrac (const FaceIndex &a_face1) const
 
Real sumArea (const VolIndex &a_vof, const int &a_idir, const Side::LoHiSide &a_sd) const
 
RealVect centroid (const VolIndex &a_vof) const
 
Vector< VolIndexrefine (const VolIndex &a_coarVoF) const
 
VolIndex coarsen (const VolIndex &a_fineVoF) const
 
RealVect bndryCentroid (const VolIndex &a_vof) const
 
RealVect bndryCentroid (const VolIndex &a_vof, int face) const
 
Real bndryArea (const VolIndex &a_vof) const
 
Real bndryArea (const VolIndex &a_vof, int face) const
 
int numFacePhase (const VolIndex &a_vof) const
 
int facePhase (const VolIndex &a_vof, int face) const
 used by multi-fluid code More...
 
const VolIndexfaceIndex (const VolIndex &a_vof, int face) const
 used by multi-fluid code More...
 
RealVect normal (const VolIndex &a_vof) const
 
RealVect normal (const VolIndex &a_vof, int face) const
 
const BoxgetRegion () const
 
const ProblemDomaingetDomain () const
 
void setDomain (const ProblemDomain &a_domain)
 
Vector< FaceIndexrefine (const FaceIndex &a_coarFace, const EBISBox &a_fineEBISBox) const
 
FaceIndex coarsen (const FaceIndex &a_fineFace) const
 
void setToAllRegular ()
 
void setToAllCovered ()
 
void define (const BaseFab< int > &a_regIrregCovered, const Vector< IrregNode > &a_irregGraph, const Box &a_validRegion, const ProblemDomain &a_domain)
 define from scratch using irregular graph More...
 
const EBGraphgetEBGraph () const
 
const EBDatagetEBData () const
 
void define (const EBGraph &a_graph, const EBData &a_data)
 define from scratch using a graph and an ebdata More...
 
EBISBoxoperator= (const EBISBox &ebiin)
 pointer copy More...
 
 EBISBox (const EBISBox &ebiin)
 pointer copy More...
 
bool operator== (const EBISBox &ebiin)
 pointer comparison More...
 

Private Attributes

EBGraph m_graph
 this is already a ref-counted object More...
 
EBData m_data
 this is already a ref-counted objecto More...
 

Detailed Description

Geometric description within a box EBISBox represents the geometric information of the domain at a given refinement within the boundaries of a particular box. It is implemented as a reference-counted pointer to an EBISBox object. This means that assignment and copying are computationally inexpensive but it also means that these functions have the reference-counted pointer semantic. If one copies an EBISBox and changes the copy, the original one changes too.

Constructor & Destructor Documentation

EBISBox::EBISBox ( )

Makes an EBISBox whose contents are undefined.

EBISBox::~EBISBox ( )
EBISBox::EBISBox ( const EBISBox ebiin)

pointer copy

Member Function Documentation

IntVectSet EBISBox::getMultiCells ( const Box a_subbox) const

Returns all the multi-valued cells within the input Box a_subbox.

Referenced by BaseEBCellFAB< T >::define().

IntVectSet EBISBox::getIrregIVS ( const Box a_subbox) const

Returns the irregular cells of the EBISBox that are within the input subbox.

IntVectSet EBISBox::boundaryIVS ( const Box a_subbox) const

Returns the irregular cells that have non-zero boundary area

int EBISBox::numVoFs ( const IntVect a_iv) const
inline

Returns the number of VoFs in the cell

References m_graph, and EBGraph::numVoFs().

Vector< VolIndex > EBISBox::getVoFs ( const IntVect a_iv) const
inline

Return the VoFs in the cell.

References EBGraph::getVoFs(), and m_graph.

Vector<VolIndex> EBISBox::getVoFs ( const VolIndex a_vof,
const int &  a_dir,
const Side::LoHiSide a_sd,
const int &  a_steps 
) const

Return the VoFs in the direction and distance given. Chases the connectivity the number of steps given. a_steps = 0 just returns the vof input. a_steps < 0 is an error. Stops at the domain boundary without error. Will be an error if the number of steps steps out of the EBISBox region without stepping out of the domain. If this happens, you probably need to define your EBISLayout with more ghost cells.

bool EBISBox::isAllRegular ( ) const
inline

Return true if every cell in the EBISBox is a regular cell.

References EBGraph::isAllRegular(), and m_graph.

bool EBISBox::isAllCovered ( ) const
inline

Return true if every cell in the EBISBox is a covered cell.

References EBGraph::isAllCovered(), and m_graph.

bool EBISBox::isRegular ( const IntVect a_iv) const
inline

Return true if a_iv is a regular cell.

References EBGraph::isRegular(), and m_graph.

bool EBISBox::isIrregular ( const IntVect a_iv) const
inline

Return true if a_iv is an irregular cell.

References EBGraph::isIrregular(), and m_graph.

bool EBISBox::isCovered ( const IntVect a_iv) const
inline

Return true if a_iv is a covered cell.

References EBGraph::isCovered(), and m_graph.

bool EBISBox::isCovered ( const Box a_box) const
inline

Return true if every cell in a_box is a covered cell.

References EBGraph::isCovered(), and m_graph.

bool EBISBox::isRegular ( const Box a_box) const
inline

Return true if every cell in a_box is a regular cell.

References EBGraph::isRegular(), and m_graph.

Vector< FaceIndex > EBISBox::getFaces ( const VolIndex a_vof,
const int &  a_idir,
const Side::LoHiSide a_sd 
) const
inline

Return the faces on the side and direction of the input VoF.

References EBGraph::getFaces(), and m_graph.

Vector< FaceIndex > EBISBox::getAllFaces ( const IntVect a_iv,
const int &  a_idir,
const Side::LoHiSide a_sd 
) const
inline

References EBGraph::getAllFaces(), and m_graph.

RealVect EBISBox::centroid ( const FaceIndex facein) const

Returns a RealVect whose component in the uninteresting direction normal to the face is undefined. Returns the centroid of input face in the (one or two) interesting directions. Return the zero vector if the face is covered or regular. The answer is given as a normalized (by grid spacing) offset from the center of the cell face (all numbers range from -0.5 to 0.5).

int EBISBox::numFaces ( const VolIndex a_vof,
const int &  a_idir,
const Side::LoHiSide a_sd 
) const

Return the number of faces on the side and direction of the input VoF.

Real EBISBox::volFrac ( const VolIndex a_vof) const

Return the volume fraction of teh input VoF.

Real EBISBox::areaFracScaling ( const VolIndex a_vof) const

Return the area fraction scaling of the input VoF. Currently, this is 1/Max_faces(areaFrac).

bool EBISBox::isConnected ( const VolIndex a_vof1,
const VolIndex a_vof2 
) const

Return true if the two VoFs are connected.

Real EBISBox::areaFrac ( const FaceIndex a_face1) const

Return the area fraction of the face. Returns zero if the two vofs in the face are not actually connected.

Real EBISBox::sumArea ( const VolIndex a_vof,
const int &  a_idir,
const Side::LoHiSide a_sd 
) const

Return the sum of area fractions of the high side of the vof in the given direction.

RealVect EBISBox::centroid ( const VolIndex a_vof) const

Returns the centroid of the input VoF. Return the zero vector if the VoF is regular or covered. The answer is given as a normalized (by grid spacing) offset from the center of the cell (all numbers range from -0.5 to 0.5).

Vector<VolIndex> EBISBox::refine ( const VolIndex a_coarVoF) const

Returns the corresponding set of VoFs from the next finer EBISBox (factor of two refinement). The result is only defined if this { EBISBox} was defined by coarsening.

VolIndex EBISBox::coarsen ( const VolIndex a_fineVoF) const

Returns the corresponding VoF from the next coarser EBISBox (same solution location, different index space, factor of two refinement ratio).

RealVect EBISBox::bndryCentroid ( const VolIndex a_vof) const
RealVect EBISBox::bndryCentroid ( const VolIndex a_vof,
int  face 
) const
Real EBISBox::bndryArea ( const VolIndex a_vof) const
Real EBISBox::bndryArea ( const VolIndex a_vof,
int  face 
) const
int EBISBox::numFacePhase ( const VolIndex a_vof) const
int EBISBox::facePhase ( const VolIndex a_vof,
int  face 
) const

used by multi-fluid code

const VolIndex& EBISBox::faceIndex ( const VolIndex a_vof,
int  face 
) const

used by multi-fluid code

RealVect EBISBox::normal ( const VolIndex a_vof) const

Return the normal to the boundary at the input VoF. If said normal is undefined, returns the zero vector.

Referenced by ViscousBaseEBBC::getChangeInSolution().

RealVect EBISBox::normal ( const VolIndex a_vof,
int  face 
) const
const Box& EBISBox::getRegion ( ) const
const ProblemDomain& EBISBox::getDomain ( ) const
void EBISBox::setDomain ( const ProblemDomain a_domain)
Vector<FaceIndex> EBISBox::refine ( const FaceIndex a_coarFace,
const EBISBox a_fineEBISBox 
) const

Returns the corresponding set of faces from the next finer EBISBox (factor of two refinement). The result is only defined if this EBISBox was defined by coarsening.

FaceIndex EBISBox::coarsen ( const FaceIndex a_fineFace) const

Returns the corresponding face from the next coarser { EBISLevel} (same solution location, different index space, factor of two refinement ratio).

void EBISBox::setToAllRegular ( )

Set the graph to all regular cells (sparse);

void EBISBox::setToAllCovered ( )

Set the graph to all covered cells (sparse);

void EBISBox::define ( const BaseFab< int > &  a_regIrregCovered,
const Vector< IrregNode > &  a_irregGraph,
const Box a_validRegion,
const ProblemDomain a_domain 
)

define from scratch using irregular graph

const EBGraph& EBISBox::getEBGraph ( ) const
const EBData& EBISBox::getEBData ( ) const
void EBISBox::define ( const EBGraph a_graph,
const EBData a_data 
)

define from scratch using a graph and an ebdata

EBISBox& EBISBox::operator= ( const EBISBox ebiin)

pointer copy

bool EBISBox::operator== ( const EBISBox ebiin)

pointer comparison

Member Data Documentation

EBGraph EBISBox::m_graph
private

this is already a ref-counted object

Referenced by getAllFaces(), getFaces(), getVoFs(), isAllCovered(), isAllRegular(), isCovered(), isIrregular(), isRegular(), and numVoFs().

EBData EBISBox::m_data
private

this is already a ref-counted objecto


The documentation for this class was generated from the following file: