Chombo + EB + MF
3.2
|
Geometric description within a box. More...
#include <EBGraph.H>
Public Types | |
enum | TAG { AllRegular = 0, AllCovered, HasIrregular } |
Public Member Functions | |
EBGraphImplem () | |
~EBGraphImplem () | |
const BaseFab< char > & | getMask (int &a_regIrregCovered) const |
Vector< VolIndex > | getVoFs (const IntVect &a_iv) const |
long long | numVoFs (const IntVect &a_iv) const |
long long | numVoFs (const Box &a_box) const |
long long | 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 | isMultiValued (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 | fillCellTypeMask (BaseFab< char > &a_mask) const |
void | addFullIrregularVoFs (const IntVectSet &a_vofsToChange, const EBGraph &a_ghostGraph) |
void | addEmptyIrregularVoFs (const IntVectSet &a_vofsToChange) |
void | getRegNextToMultiValued (IntVectSet &a_vofsToChange, const EBGraph &a_ghostGraph) const |
Vector< FaceIndex > | getMultiValuedFaces (const int &a_idir, const Box &a_box, const EBGraph &a_ebgraph) 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 More... | |
static int | preAllocatable () |
Static Public Attributes | |
static IntVect | s_ivDebug |
static Box | s_doDebug |
Private Member Functions | |
void | operator= (const EBGraphImplem &ebiin) |
EBGraphImplem (const EBGraphImplem &ebiin) | |
Private Attributes | |
Box | m_region |
box over which this graph is defined More... | |
ProblemDomain | m_domain |
computational domain at this level of refinement More... | |
TAG | m_tag |
BaseFab< GraphNode > | m_graph |
bool | m_isDefined |
bool | m_isDomainSet |
IntVectSet * | m_irregIVS |
IntVectSet * | m_multiIVS |
BaseFab< char > | m_mask |
bool | m_isMaskBuilt |
Static Private Attributes | |
static bool | s_verbose |
Friends | |
class | EBIndexSpace |
class | EBISLevel |
Geometric description within a box.
EBGraphImplem represents the geometric information of the domain at a given refinement within the boundaries of a particular box.
enum EBGraphImplem::TAG |
The EBGraphImplem can be all regular or all covered or contain irregular cells.
Enumerator | |
---|---|
AllRegular | |
AllCovered | |
HasIrregular |
EBGraphImplem::EBGraphImplem | ( | ) |
Makes an EBGraphImplem whose contents are undefined.
EBGraphImplem::~EBGraphImplem | ( | ) |
EBGraphImplem::EBGraphImplem | ( | const Box & | box | ) |
|
inlineprivate |
References MayDay::Error().
const BaseFab<char>& EBGraphImplem::getMask | ( | int & | a_regIrregCovered | ) | const |
changing this definition to make things run faster/better
long long EBGraphImplem::numVoFs | ( | const IntVect & | a_iv | ) | const |
long long EBGraphImplem::numVoFs | ( | const Box & | a_box | ) | const |
long long EBGraphImplem::numFaces | ( | const Box & | a_box, |
int | a_dir | ||
) | const |
Referenced by EBGraph::preAllocatable().
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::isMultiValued | ( | const IntVect & | a_iv | ) | 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.
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.
Returns the corresponding face from the next coarser EBGraphImplem (factor of two refinement). This only makes sense if there is a coarser level.
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 |
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 |
This stuff required by LevelData in parallel:
|
inlinestatic |
References addEmptyIrregularVoFs(), addFullIrregularVoFs(), coarsenFaces(), coarsenVoFs(), FaceIteratorCache(), fillCellTypeMask(), fillMask(), fixFineToCoarse(), getAllFaces(), getIrregCells(), getIrregFaces(), getMultiCells(), getMultiValuedFaces(), getRegNextToMultiValued(), isDefined(), isDomainSet(), setDomain(), and VoFIteratorCache().
bool EBGraphImplem::isDefined | ( | ) | const |
Referenced by preAllocatable().
bool EBGraphImplem::isDomainSet | ( | ) | const |
Referenced by preAllocatable().
void EBGraphImplem::coarsenVoFs | ( | const EBGraphImplem & | a_fineGraph, |
const Box & | a_coarRegion | ||
) |
Referenced by preAllocatable().
void EBGraphImplem::coarsenFaces | ( | const EBGraphImplem & | a_coarGhostGraph, |
const EBGraphImplem & | a_fineEBIS | ||
) |
Referenced by preAllocatable().
void EBGraphImplem::fixFineToCoarse | ( | EBGraphImplem & | a_fineEBIS | ) | const |
Referenced by preAllocatable().
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 | ) |
Referenced by preAllocatable().
IntVectSet EBGraphImplem::getIrregCells | ( | const Box & | a_subbox | ) | const |
Referenced by preAllocatable().
IntVectSet EBGraphImplem::getMultiCells | ( | const Box & | a_subbox | ) | const |
Referenced by preAllocatable().
Vector<FaceIndex> EBGraphImplem::getAllFaces | ( | const IntVect & | a_iv, |
const int & | a_idir, | ||
const Side::LoHiSide & | a_sd | ||
) | const |
Referenced by preAllocatable().
Referenced by preAllocatable().
void EBGraphImplem::fillMask | ( | BaseFab< char > & | a_mask | ) | const |
0 outside problem domain, multi-valued, covered 1 regular
Referenced by preAllocatable().
void EBGraphImplem::fillCellTypeMask | ( | BaseFab< char > & | a_mask | ) | const |
0 outside problem domain 1 covered 2 regular 3 irregular handy for debugging, can write out to hdf5 files.
Referenced by preAllocatable().
void EBGraphImplem::addFullIrregularVoFs | ( | const IntVectSet & | a_vofsToChange, |
const EBGraph & | a_ghostGraph | ||
) |
Referenced by preAllocatable(), and EBGraph::preAllocatable().
void EBGraphImplem::addEmptyIrregularVoFs | ( | const IntVectSet & | a_vofsToChange | ) |
Referenced by preAllocatable(), and EBGraph::preAllocatable().
void EBGraphImplem::getRegNextToMultiValued | ( | IntVectSet & | a_vofsToChange, |
const EBGraph & | a_ghostGraph | ||
) | const |
Referenced by preAllocatable(), and EBGraph::preAllocatable().
Vector<FaceIndex> EBGraphImplem::getMultiValuedFaces | ( | const int & | a_idir, |
const Box & | a_box, | ||
const EBGraph & | a_ebgraph | ||
) | const |
Referenced by preAllocatable(), and EBGraph::preAllocatable().
const FaceIterator& EBGraphImplem::FaceIteratorCache | ( | const Box & | a_region, |
int | a_direction, | ||
FaceStop::WhichFaces | a_loc, | ||
const EBGraph & | parent | ||
) | const |
Referenced by preAllocatable(), and EBGraph::preAllocatable().
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 |
Referenced by preAllocatable(), and EBGraph::preAllocatable().
|
inlineprivate |
References MayDay::Error().
|
friend |
|
friend |
|
static |
|
static |
|
private |
box over which this graph is defined
|
private |
computational domain at this level of refinement
|
private |
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.
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
mutableprivate |
|
mutableprivate |