Chombo + EB
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
Referenced by EBGraph::getMask().
Return the VoFs in the cell.
Referenced by EBGraph::getVoFs().
long long EBGraphImplem::numVoFs | ( | const IntVect & | a_iv | ) | const |
Referenced by EBGraph::numVoFs().
long long EBGraphImplem::numVoFs | ( | const Box & | a_box | ) | const |
long long 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.
Referenced by EBGraph::isAllRegular().
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.
Referenced by EBGraph::isAllCovered().
bool EBGraphImplem::isIrregular | ( | const IntVect & | a_iv | ) | const |
Return true if a_iv is an irregular cell.
Referenced by EBGraph::isIrregular().
bool EBGraphImplem::isCovered | ( | const Box & | a_box | ) | const |
Return true if every cell in a_box is a covered cell.
Referenced by EBGraph::isCovered().
bool EBGraphImplem::isRegular | ( | const Box & | a_box | ) | const |
Return true if every cell in a_box is a regular cell.
Referenced by EBGraph::isRegular().
bool EBGraphImplem::isRegular | ( | const IntVect & | a_iv | ) | const |
bool EBGraphImplem::isCovered | ( | const IntVect & | a_iv | ) | const |
bool EBGraphImplem::isMultiValued | ( | const IntVect & | a_iv | ) | const |
Referenced by EBGraph::isMultiValued().
Referenced by EBGraph::isConnected().
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.
Referenced by EBGraph::getFaces().
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.
Referenced by EBGraph::refine().
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.
Referenced by EBGraph::coarsen().
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
Referenced by EBGraph::buildGraph().
|
static |
check if a box worth of graph is self consistent
void EBGraphImplem::setToAllRegular | ( | ) |
Set the graph to all regular cells (sparse);
Referenced by EBGraph::setToAllRegular().
void EBGraphImplem::setToAllCovered | ( | ) |
Set the graph to all covered cells (sparse);
Referenced by EBGraph::setToAllCovered().
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.
Referenced by EBGraph::copy().
const Box& EBGraphImplem::getRegion | ( | ) | const |
Referenced by EBGraph::getRegion().
const ProblemDomain& EBGraphImplem::getDomain | ( | ) | const |
Referenced by EBGraph::getDomain().
This stuff required by LevelData in parallel:
|
inlinestatic |
bool EBGraphImplem::isDefined | ( | ) | const |
Referenced by EBGraph::isDefined().
bool EBGraphImplem::isDomainSet | ( | ) | const |
void EBGraphImplem::coarsenVoFs | ( | const EBGraphImplem & | a_fineGraph, |
const Box & | a_coarRegion | ||
) |
Referenced by EBGraph::coarsenVoFs().
void EBGraphImplem::coarsenFaces | ( | const EBGraphImplem & | a_coarGhostGraph, |
const EBGraphImplem & | a_fineEBIS | ||
) |
Referenced by EBGraph::coarsenFaces().
void EBGraphImplem::fixFineToCoarse | ( | EBGraphImplem & | a_fineEBIS | ) | const |
Referenced by EBGraph::fixFineToCoarse().
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 EBGraph::setDomain().
IntVectSet EBGraphImplem::getIrregCells | ( | const Box & | a_subbox | ) | const |
Referenced by EBGraph::getIrregCells().
IntVectSet EBGraphImplem::getMultiCells | ( | const Box & | a_subbox | ) | const |
Referenced by EBGraph::getMultiCells().
Vector<FaceIndex> EBGraphImplem::getAllFaces | ( | const IntVect & | a_iv, |
const int & | a_idir, | ||
const Side::LoHiSide & | a_sd | ||
) | const |
Referenced by EBGraph::getAllFaces().
void EBGraphImplem::fillMask | ( | BaseFab< char > & | a_mask | ) | const |
0 outside problem domain, multi-valued, covered 1 regular
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.
void EBGraphImplem::addFullIrregularVoFs | ( | const IntVectSet & | a_vofsToChange, |
const EBGraph & | a_ghostGraph | ||
) |
void EBGraphImplem::addEmptyIrregularVoFs | ( | const IntVectSet & | a_vofsToChange | ) |
void EBGraphImplem::getRegNextToMultiValued | ( | IntVectSet & | a_vofsToChange, |
const EBGraph & | a_ghostGraph | ||
) | const |
Vector<FaceIndex> EBGraphImplem::getMultiValuedFaces | ( | const int & | a_idir, |
const Box & | a_box, | ||
const EBGraph & | a_ebgraph | ||
) | const |
const FaceIterator& EBGraphImplem::FaceIteratorCache | ( | const Box & | a_region, |
int | a_direction, | ||
FaceStop::WhichFaces | a_loc, | ||
const EBGraph & | parent | ||
) | const |
Referenced by EBGraph::FaceIteratorCache().
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 EBGraph::VoFIteratorCache().
|
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 |