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< VolIndex > getVoFs (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< FaceIndex > getFaces (const VolIndex &a_vof, const int &a_idir, const Side::LoHiSide &a_sd) const
Vector< Vector< VolIndex > > getVoFSets (const Box &a_region) const
Vector< VolIndex > refine (const VolIndex &a_coarVoF) const
Vector< FaceIndex > refine (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 Box & getRegion () const
const ProblemDomain & getDomain () 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< FaceIndex > getAllFaces (const IntVect &a_iv, const int &a_idir, const Side::LoHiSide &a_sd) const
Vector< FaceIndex > getIrregFaces (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 FaceIterator & FaceIteratorCache (const Box &a_region, int a_direction, FaceStop::WhichFaces a_loc, const EBGraph &parent) const
const FaceIterator & FaceIteratorCache (const IntVectSet &ivs, int a_direction, FaceStop::WhichFaces a_loc, const EBGraph &parent) const
const VoFIterator & VoFIteratorCache (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< GraphNode > m_graph
bool m_isDefined
bool m_isDomainSet
IntVectSet * m_irregIVS
IntVectSet * m_multiIVS
std::map< Box, FaceIterator > m_boxFaceCache [2 *CH_SPACEDIM]
std::map< IntVectSet,
FaceIterator > 
m_faceCache [FaceStop::NUMTYPES *CH_SPACEDIM]
std::map< IntVectSet, VoFIterator > m_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