EBGraphImplem Class Reference

#include <EBGraph.H>

Collaboration diagram for EBGraphImplem:

Collaboration graph
[legend]

List of all members.


Detailed Description

Geometric description within a box.

EBGraphImplem represents the geometric information of the domain at a given refinement within the boundaries of a particular box.

Public Types

enum  TAG { AllRegular = 0, AllCovered, HasIrregular }

Public Member Functions

 EBGraphImplem ()
 ~EBGraphImplem ()
const BaseFab< int > & getMask (int &a_regIrregCovered) const
Vector< VolIndexgetVoFs (const IntVect &a_iv) const
int numVoFs (const IntVect &a_iv) const
int numVoFs (const Box &a_box) const
int numFaces (const Box &a_box, int a_dir) const
bool isAllRegular () const
bool hasIrregular () const
bool isAllCovered () const
bool isIrregular (const IntVect &a_iv) const
bool isCovered (const Box &a_box) const
bool isRegular (const Box &a_box) const
bool isRegular (const IntVect &a_iv) const
bool isCovered (const IntVect &a_iv) const
bool isConnected (const VolIndex &a_vof1, const VolIndex &a_vof2) const
Vector< FaceIndexgetFaces (const VolIndex &a_vof, const int &a_idir, const Side::LoHiSide &a_sd) const
Vector< Vector< VolIndex > > getVoFSets (const Box &a_region) const
Vector< VolIndexrefine (const VolIndex &a_coarVoF) const
Vector< FaceIndexrefine (const FaceIndex &a_coarFace, const EBGraphImplem &a_fineGraph) const
FaceIndex coarsen (const FaceIndex &a_coarFace) const
VolIndex coarsen (const VolIndex &a_fineVoF) const
void buildGraph (const BaseFab< int > &a_regIrregCovered, const Vector< IrregNode > &a_irregGraph, const Box &a_validRegion, const ProblemDomain &a_domain)
void setToAllRegular ()
void setToAllCovered ()
void define (const Box &box)
 EBGraphImplem (const Box &box)
void copy (const Box &a_regionFrom, const Interval &Cd, const Box &a_regionto, const EBGraphImplem &a_source, const Interval &Cs)
const BoxgetRegion () const
const ProblemDomaingetDomain () const
int size (const Box &R, const Interval &comps) const
void linearOut (void *buf, const Box &R, const Interval &comps) const
void linearIn (void *buf, const Box &R, const Interval &comps)
bool isDefined () const
bool isDomainSet () const
void coarsenVoFs (const EBGraphImplem &a_fineGraph, const Box &a_coarRegion)
void coarsenFaces (const EBGraphImplem &a_coarGhostGraph, const EBGraphImplem &a_fineEBIS)
void fixFineToCoarse (EBGraphImplem &a_fineEBIS) const
Vector< int > coarsenFaces (const VolIndex &a_coarVoF, const EBGraphImplem &a_coarGhostGraph, const EBGraphImplem &a_fineGraph, const int &a_idir, const Side::LoHiSide &a_sd)
void setDomain (const ProblemDomain &a_domain)
IntVectSet getIrregCells (const Box &a_subbox) const
IntVectSet getMultiCells (const Box &a_subbox) const
Vector< FaceIndexgetAllFaces (const IntVect &a_iv, const int &a_idir, const Side::LoHiSide &a_sd) const
Vector< FaceIndexgetIrregFaces (const Box &a_box, int a_dir) const
void fillMask (BaseFab< char > &a_mask) const
void fillIntMask (BaseFab< int > &a_mask) const
void addFullIrregularVoFs (const IntVectSet &a_vofsToChange, const EBGraph &a_ghostGraph)
void getRegNextToMultiValued (IntVectSet &a_vofsToChange, const EBGraph &a_ghostGraph) const
const FaceIteratorFaceIteratorCache (const Box &a_region, int a_direction, FaceStop::WhichFaces a_loc, const EBGraph &parent) const
const FaceIteratorFaceIteratorCache (const IntVectSet &ivs, int a_direction, FaceStop::WhichFaces a_loc, const EBGraph &parent) const
const VoFIteratorVoFIteratorCache (const IntVectSet &ivs, const EBGraph &parent) const

Static Public Member Functions

static void checkGraph (const BaseFab< int > &a_regIrregCovered, const Vector< IrregNode > &a_irregGraph, const Box &a_validRegion, const ProblemDomain &a_domain)
 check if a box worth of graph is self consistent
static int preAllocatable ()

Private Member Functions

void operator= (const EBGraphImplem &ebiin)
 EBGraphImplem (const EBGraphImplem &ebiin)

Private Attributes

Box m_region
 box over which this graph is defined
ProblemDomain m_domain
 computational domain at this level of refinement
TAG m_tag
BaseFab< GraphNodem_graph
bool m_isDefined
bool m_isDomainSet
IntVectSetm_irregIVS
IntVectSetm_multiIVS
std::map< Box, FaceIteratorm_boxFaceCache [2 *CH_SPACEDIM]
std::map< IntVectSet,
FaceIterator
m_faceCache [FaceStop::NUMTYPES *CH_SPACEDIM]
std::map< IntVectSet, VoFIteratorm_vofIteratorCache
BaseFab< int > m_mask
bool m_isMaskBuilt

Static Private Attributes

static bool s_verbose


Member Enumeration Documentation

The EBGraphImplem can be all regular or all covered or contain irregular cells.

Enumerator:
AllRegular 
AllCovered 
HasIrregular 


Constructor & Destructor Documentation

EBGraphImplem::EBGraphImplem (  ) 

Makes an EBGraphImplem whose contents are undefined.

EBGraphImplem::~EBGraphImplem (  ) 

EBGraphImplem::EBGraphImplem ( const Box box  ) 

EBGraphImplem::EBGraphImplem ( const EBGraphImplem ebiin  )  [inline, private]

References MayDay::Error().


Member Function Documentation

const BaseFab<int>& EBGraphImplem::getMask ( int &  a_regIrregCovered  )  const

If the graph has irregular cells get a mask over the size of the graph. -1 for covered cells or multivalued cells, 0 for singlevalued irregular, and 1 for regular. If the graph is all regular, regIrregCovered returns 1 and the mask is undefined. If the graph is all regular, regIrregCovered returns -1 and the mask is undefined.

Vector<VolIndex> EBGraphImplem::getVoFs ( const IntVect a_iv  )  const

Return the VoFs in the cell.

int EBGraphImplem::numVoFs ( const IntVect a_iv  )  const

int EBGraphImplem::numVoFs ( const Box a_box  )  const

int EBGraphImplem::numFaces ( const Box a_box,
int  a_dir 
) const

bool EBGraphImplem::isAllRegular (  )  const

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

bool EBGraphImplem::hasIrregular (  )  const

Return true neither all regular nor all covered

bool EBGraphImplem::isAllCovered (  )  const

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

bool EBGraphImplem::isIrregular ( const IntVect a_iv  )  const

Return true if a_iv is an irregular cell.

bool EBGraphImplem::isCovered ( const Box a_box  )  const

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

bool EBGraphImplem::isRegular ( const Box a_box  )  const

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

bool EBGraphImplem::isRegular ( const IntVect a_iv  )  const

bool EBGraphImplem::isCovered ( const IntVect a_iv  )  const

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

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

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

Vector<Vector<VolIndex> > EBGraphImplem::getVoFSets ( const Box a_region  )  const

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

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

Vector<FaceIndex> EBGraphImplem::refine ( const FaceIndex a_coarFace,
const EBGraphImplem a_fineGraph 
) const

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

FaceIndex EBGraphImplem::coarsen ( const FaceIndex a_coarFace  )  const

Returns the corresponding face from the next coarser EBGraphImplem (factor of two refinement). This only makes sense if there is a coarser level.

VolIndex EBGraphImplem::coarsen ( const VolIndex a_fineVoF  )  const

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

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

Completely construct the graph from IrregNodes. This makes a DENSE representation of the graph. To make sparse representations of all regular or all covered graphs, use setToAllRegular or setToAllCovered.\ irregGraph contains a complete list of irregular vofs. \ validRegion is the the region of the graph \ domain is the domain of compuation \ regIrregCovered = 1 for regular, 0 for irregular, -1 for covered. regIrregCovered must contain the valid region grown by 1. \ In chombospeak, \ regIrregCovered.box().contains(grow(validRegion, 1) & domain); \ otherwise an error will result

static void EBGraphImplem::checkGraph ( const BaseFab< int > &  a_regIrregCovered,
const Vector< IrregNode > &  a_irregGraph,
const Box a_validRegion,
const ProblemDomain a_domain 
) [static]

check if a box worth of graph is self consistent

void EBGraphImplem::setToAllRegular (  ) 

Set the graph to all regular cells (sparse);

void EBGraphImplem::setToAllCovered (  ) 

Set the graph to all covered cells (sparse);

void EBGraphImplem::define ( const Box box  ) 

Define an all-regular EBGraphImplem with the input box as its region.

void EBGraphImplem::copy ( const Box a_regionFrom,
const Interval Cd,
const Box a_regionto,
const EBGraphImplem a_source,
const Interval Cs 
)

Copy the information from a_source to the over the intersection of the box a_region, the box of the current EBGraphImplem and the box of a_source. The Interval arguments are ignored. This function is required by LevelData.

const Box& EBGraphImplem::getRegion (  )  const

const ProblemDomain& EBGraphImplem::getDomain (  )  const

int EBGraphImplem::size ( const Box R,
const Interval comps 
) const

This stuff required by LevelData in parallel:

void EBGraphImplem::linearOut ( void *  buf,
const Box R,
const Interval comps 
) const

void EBGraphImplem::linearIn ( void *  buf,
const Box R,
const Interval comps 
)

static int EBGraphImplem::preAllocatable (  )  [inline, static]

bool EBGraphImplem::isDefined (  )  const

bool EBGraphImplem::isDomainSet (  )  const

void EBGraphImplem::coarsenVoFs ( const EBGraphImplem a_fineGraph,
const Box a_coarRegion 
)

void EBGraphImplem::coarsenFaces ( const EBGraphImplem a_coarGhostGraph,
const EBGraphImplem a_fineEBIS 
)

void EBGraphImplem::fixFineToCoarse ( EBGraphImplem a_fineEBIS  )  const

Vector<int> EBGraphImplem::coarsenFaces ( const VolIndex a_coarVoF,
const EBGraphImplem a_coarGhostGraph,
const EBGraphImplem a_fineGraph,
const int &  a_idir,
const Side::LoHiSide a_sd 
)

void EBGraphImplem::setDomain ( const ProblemDomain a_domain  ) 

IntVectSet EBGraphImplem::getIrregCells ( const Box a_subbox  )  const

IntVectSet EBGraphImplem::getMultiCells ( const Box a_subbox  )  const

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

Vector<FaceIndex> EBGraphImplem::getIrregFaces ( const Box a_box,
int  a_dir 
) const

void EBGraphImplem::fillMask ( BaseFab< char > &  a_mask  )  const

void EBGraphImplem::fillIntMask ( BaseFab< int > &  a_mask  )  const

1 = regular 0 = irregular -1 = covered

void EBGraphImplem::addFullIrregularVoFs ( const IntVectSet a_vofsToChange,
const EBGraph a_ghostGraph 
)

void EBGraphImplem::getRegNextToMultiValued ( IntVectSet a_vofsToChange,
const EBGraph a_ghostGraph 
) const

const FaceIterator& EBGraphImplem::FaceIteratorCache ( const Box a_region,
int  a_direction,
FaceStop::WhichFaces  a_loc,
const EBGraph parent 
) const

const FaceIterator& EBGraphImplem::FaceIteratorCache ( const IntVectSet ivs,
int  a_direction,
FaceStop::WhichFaces  a_loc,
const EBGraph parent 
) const

const VoFIterator& EBGraphImplem::VoFIteratorCache ( const IntVectSet ivs,
const EBGraph parent 
) const

void EBGraphImplem::operator= ( const EBGraphImplem ebiin  )  [inline, private]

References MayDay::Error().


Member Data Documentation

box over which this graph is defined

computational domain at this level of refinement

If this is allregular or allcovered, the BaseFab below is undefined.

the graph description of the box. If the pointer GraphNode.m_thisNode == 0, the cell is covered. If the pointer GraphNode.m_thisNode == 1, the cell is regular. Otherwise, the pointer goes to the node of the graph.

bool EBGraphImplem::s_verbose [static, private]

std::map<Box, FaceIterator> EBGraphImplem::m_boxFaceCache[2 *CH_SPACEDIM] [mutable, private]

std::map<IntVectSet, FaceIterator> EBGraphImplem::m_faceCache[FaceStop::NUMTYPES *CH_SPACEDIM] [mutable, private]

BaseFab<int> EBGraphImplem::m_mask [mutable, private]

bool EBGraphImplem::m_isMaskBuilt [mutable, private]


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

Generated on Tue Apr 14 14:23:18 2009 for Chombo + EB by  doxygen 1.5.5