#include <EBIndexSpace.H>
Construction of the EBIndexSpace can follow one of methods 1. From a previously written out HDF5 file. This is a representation of the EBIndexSpace at the finest level. When this is read back into a running application the EBIndexSpace at the coarser levels is regenerated on construction 2. As a GeometryService. The base class for Geometry objects. 3. As a Workshop object that reads the finest level EB boxes from the EBIndexSpace itself and fills in the data structure as it accepts it. 4. As a Worshop object that has an already defined data decomposition
Public Member Functions | |
| EBIndexSpace () | |
| void | define (const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx, const GeometryService &a_geoserver, int a_nCellMax=-1, int a_maxCoarsenings=-1) |
| void | define (HDF5Handle &a_handle, ProblemDomain a_finestLevel) |
| reads in all levels from finest level down | |
| void | define (HDF5Handle &a_handle, int a_maxCoarsenings=-1) |
| defines from one level and then does coarsening | |
| void | define (EBISLevel *a_level0, int a_nCellMax=-1, int a_maxCoarsenings=-1) |
| void | define (const ProblemDomain &a_entireDomain, const RealVect &a_origin, const Real &a_dx, const Vector< RefCountedPtr< EBIndexSpace > > &a_patches, const Vector< IntVect > &a_offsets, int a_maxCoarsenings=-1) |
| EBISLevel * | buildFirstLevel (const ProblemDomain &a_domain, const RealVect &a_origin, const Real &a_dx, const GeometryService &a_geoserver, int a_nCellMax, int a_maxCoarsenings, bool a_fixRegularNextToMultiValued=true) |
| EBISLevel * | buildNextLevel (const GeometryService &a_geoserver, int a_nCellMax, bool a_fixRegularNextToMultiValued=true) |
| ~EBIndexSpace () | |
| bool | setDistributedData () |
| int | numLevels () const |
| long long | numVoFs (const ProblemDomain &a_domain) const |
| Real | totalVolFrac (const ProblemDomain &a_domain) const |
| int | getLevel (const ProblemDomain &a_domain) const |
| RealVect | getOrigin () const |
| const ProblemDomain & | getBox (int level) const |
| void | fillEBISLayout (EBISLayout &a_ebis, const DisjointBoxLayout &a_grids, const ProblemDomain &a_domain, const int &a_nghost) const |
| bool | isDefined () const |
| void | clear () |
| int | getNCellMax () const |
| void | write (HDF5Handle &a_handle, ProblemDomain a_outputLevel=ProblemDomain()) const |
| void | writeInfo (HDF5Handle &handle) const |
| void | writeAllLevels (HDF5Handle &a_handle) const |
| void | readInAllLevels (HDF5Handle &a_handle, ProblemDomain a_finestLevel) |
| DisjointBoxLayout | getIrregGrids (int level) const |
| DisjointBoxLayout | getIrregGrids (const ProblemDomain &a_domain) const |
| DisjointBoxLayout | getFlowGrids (int level) const |
| DisjointBoxLayout | getGrids (const ProblemDomain &a_domain) const |
| DisjointBoxLayout | getFlowGrids (const ProblemDomain &a_domain) const |
| DisjointBoxLayout | getCoveredGrids (int level) const |
| DisjointBoxLayout | getCoveredGrids (const ProblemDomain &a_domain) const |
| DisjointBoxLayout | levelGrids (int level) const |
| Real | dx (int level) const |
| IntVectSet | irregCells (int depth=0) const |
| void | setCellMax (int max) |
| void | resetLevels (int nLevel) |
| Vector< RefCountedPtr < EBIndexSpace > > | connectedComponents () |
| Vector< RefCountedPtr < EBIndexSpace > > | connectedComponentsNew () |
| RefCountedPtr< EBIndexSpace > | biggestConnectedComponent (int &a_numComponents) |
| RefCountedPtr< EBIndexSpace > | biggestConnectedComponentNew (int &a_numComponents) |
Static Public Attributes | |
| static bool | s_MFSingleBox |
| static bool | s_useMemoryLoadBalance |
Private Member Functions | |
| Vector< RefCountedPtr < EBIndexSpace > > | findConnectedComponents (int &a_numComponents, const bool &a_onlyBiggest) |
| Vector< RefCountedPtr < EBIndexSpace > > | findConnectedComponentsNew (int &a_numComponents, const bool &a_onlyBiggest) |
| bool | setAllConnectedVoFs (Real &a_totalVolFrac, EBCellFAB &a_curEBCellFAB, const EBGraph &a_curEBGraph, const EBISBox &a_curEBISBox, const VolIndex &a_curVoF, const VolIndex &a_lastVoF, const unsigned int &a_curNum) |
| bool | setAllConnectedVoFsNew (Real &a_totalVolFrac, EBCellFAB &a_curEBCellFAB, const Box &a_curBox, const EBGraph &a_curEBGraph, const EBISBox &a_curEBISBox, const VolIndex &a_curVoF, const VolIndex &a_lastVoF, const unsigned int &a_curNum) |
| void | resetAllConnectedVoFs (EBCellFAB &a_curEBCellFAB, const EBGraph &a_curEBGraph, const EBISBox &a_curEBISBox, const VolIndex &a_curVoF, const VolIndex &a_lastVoF) |
| void | resetAllConnectedVoFsNew (EBCellFAB &a_curEBCellFAB, const Box &a_curBox, const EBGraph &a_curEBGraph, const EBISBox &a_curEBISBox, const VolIndex &a_curVoF, const VolIndex &a_lastVoF) |
| void | operator= (const EBIndexSpace &ebiin) |
| EBIndexSpace (const EBIndexSpace &ebiin) | |
Private Attributes | |
| int | m_nCellMax |
| bool | m_isDefined |
| bool | m_distributedData |
| Vector< EBISLevel * > | m_ebisLevel |
| Vector< ProblemDomain > | m_domainLevel |
| int | m_nlevels |
Static Private Attributes | |
| static Real | s_tolerance |
| static bool | s_verbose |
Friends | |
| class | Chombo_EBIS |
| EBIndexSpace::EBIndexSpace | ( | ) |
| EBIndexSpace::~EBIndexSpace | ( | ) |
| EBIndexSpace::EBIndexSpace | ( | const EBIndexSpace & | ebiin | ) | [inline, private] |
References MayDay::Error().
| void EBIndexSpace::define | ( | const ProblemDomain & | a_domain, | |
| const RealVect & | a_origin, | |||
| const Real & | a_dx, | |||
| const GeometryService & | a_geoserver, | |||
| int | a_nCellMax = -1, |
|||
| int | a_maxCoarsenings = -1 | |||
| ) |
If a_ncellMax is set, that is the max width of an internal grid. Otherwise use defaults of (16 in 3D, 64 in 2d)
This
| void EBIndexSpace::define | ( | HDF5Handle & | a_handle, | |
| ProblemDomain | a_finestLevel | |||
| ) |
reads in all levels from finest level down
| void EBIndexSpace::define | ( | HDF5Handle & | a_handle, | |
| int | a_maxCoarsenings = -1 | |||
| ) |
defines from one level and then does coarsening
| void EBIndexSpace::define | ( | EBISLevel * | a_level0, | |
| int | a_nCellMax = -1, |
|||
| int | a_maxCoarsenings = -1 | |||
| ) |
| void EBIndexSpace::define | ( | const ProblemDomain & | a_entireDomain, | |
| const RealVect & | a_origin, | |||
| const Real & | a_dx, | |||
| const Vector< RefCountedPtr< EBIndexSpace > > & | a_patches, | |||
| const Vector< IntVect > & | a_offsets, | |||
| int | a_maxCoarsenings = -1 | |||
| ) |
| EBISLevel* EBIndexSpace::buildFirstLevel | ( | const ProblemDomain & | a_domain, | |
| const RealVect & | a_origin, | |||
| const Real & | a_dx, | |||
| const GeometryService & | a_geoserver, | |||
| int | a_nCellMax, | |||
| int | a_maxCoarsenings, | |||
| bool | a_fixRegularNextToMultiValued = true | |||
| ) |
| EBISLevel* EBIndexSpace::buildNextLevel | ( | const GeometryService & | a_geoserver, | |
| int | a_nCellMax, | |||
| bool | a_fixRegularNextToMultiValued = true | |||
| ) |
| bool EBIndexSpace::setDistributedData | ( | ) | [inline] |
Set a flag that indicates the data defining the EB is distributed. This will signal EBISLevel to hand grid generation off to the GeometryService. Function returns previous value of m_distributedData. Call this before define() if this functionality is desired.
References m_distributedData.
| int EBIndexSpace::numLevels | ( | ) | const |
| long long EBIndexSpace::numVoFs | ( | const ProblemDomain & | a_domain | ) | const |
Get the number of vofs over the entire domain. This is blocking as a broadcast and gather are required.
| Real EBIndexSpace::totalVolFrac | ( | const ProblemDomain & | a_domain | ) | const |
Get the total of the volume fractions over the entire domain. This is blocking as a broadcast and gather are required.
| int EBIndexSpace::getLevel | ( | const ProblemDomain & | a_domain | ) | const |
return level index of domain. return -1 if a_domain does not correspond to any refinement of EBIS.
Referenced by getCoveredGrids(), getFlowGrids(), getGrids(), and getIrregGrids().
| RealVect EBIndexSpace::getOrigin | ( | ) | const [inline] |
References m_ebisLevel.
| const ProblemDomain& EBIndexSpace::getBox | ( | int | level | ) | const [inline] |
returns the problem domain box at a level of refinement
References m_domainLevel.
| void EBIndexSpace::fillEBISLayout | ( | EBISLayout & | a_ebis, | |
| const DisjointBoxLayout & | a_grids, | |||
| const ProblemDomain & | a_domain, | |||
| const int & | a_nghost | |||
| ) | const |
| bool EBIndexSpace::isDefined | ( | ) | const |
Return true if the define function has been called.
| void EBIndexSpace::clear | ( | ) |
| int EBIndexSpace::getNCellMax | ( | ) | const |
| void EBIndexSpace::write | ( | HDF5Handle & | a_handle, | |
| ProblemDomain | a_outputLevel = ProblemDomain() | |||
| ) | const |
Writes out finest level as a default. Writes at the level you are domain you want if a_outputLevel is defined.
| void EBIndexSpace::writeInfo | ( | HDF5Handle & | handle | ) | const |
| void EBIndexSpace::writeAllLevels | ( | HDF5Handle & | a_handle | ) | const |
Outputs ALL levels of the EBIS. this is the one to use if you want to do all definition through the file (no coarsening).
| void EBIndexSpace::readInAllLevels | ( | HDF5Handle & | a_handle, | |
| ProblemDomain | a_finestLevel | |||
| ) |
Define entirely from the input file. a_finestLevel can be a coarsening of the finest level in the file. No coarsening algorithm is done.
| DisjointBoxLayout EBIndexSpace::getIrregGrids | ( | int | level | ) | const [inline] |
References m_domainLevel, and m_ebisLevel.
| DisjointBoxLayout EBIndexSpace::getIrregGrids | ( | const ProblemDomain & | a_domain | ) | const [inline] |
References getLevel(), and m_ebisLevel.
| DisjointBoxLayout EBIndexSpace::getFlowGrids | ( | int | level | ) | const [inline] |
References m_domainLevel, and m_ebisLevel.
| DisjointBoxLayout EBIndexSpace::getGrids | ( | const ProblemDomain & | a_domain | ) | const [inline] |
References getLevel(), and m_ebisLevel.
| DisjointBoxLayout EBIndexSpace::getFlowGrids | ( | const ProblemDomain & | a_domain | ) | const [inline] |
References getLevel(), and m_ebisLevel.
| DisjointBoxLayout EBIndexSpace::getCoveredGrids | ( | int | level | ) | const [inline] |
References m_domainLevel, and m_ebisLevel.
| DisjointBoxLayout EBIndexSpace::getCoveredGrids | ( | const ProblemDomain & | a_domain | ) | const [inline] |
References getLevel(), and m_ebisLevel.
| DisjointBoxLayout EBIndexSpace::levelGrids | ( | int | level | ) | const [inline] |
References m_ebisLevel.
| Real EBIndexSpace::dx | ( | int | level | ) | const [inline] |
References m_ebisLevel.
| IntVectSet EBIndexSpace::irregCells | ( | int | depth = 0 |
) | const [inline] |
References m_ebisLevel.
| void EBIndexSpace::setCellMax | ( | int | max | ) | [inline] |
References m_nCellMax.
| void EBIndexSpace::resetLevels | ( | int | nLevel | ) |
| Vector<RefCountedPtr<EBIndexSpace> > EBIndexSpace::connectedComponents | ( | ) |
| Vector<RefCountedPtr<EBIndexSpace> > EBIndexSpace::connectedComponentsNew | ( | ) |
| RefCountedPtr<EBIndexSpace> EBIndexSpace::biggestConnectedComponent | ( | int & | a_numComponents | ) |
| RefCountedPtr<EBIndexSpace> EBIndexSpace::biggestConnectedComponentNew | ( | int & | a_numComponents | ) |
| Vector<RefCountedPtr<EBIndexSpace> > EBIndexSpace::findConnectedComponents | ( | int & | a_numComponents, | |
| const bool & | a_onlyBiggest | |||
| ) | [private] |
| Vector<RefCountedPtr<EBIndexSpace> > EBIndexSpace::findConnectedComponentsNew | ( | int & | a_numComponents, | |
| const bool & | a_onlyBiggest | |||
| ) | [private] |
| bool EBIndexSpace::setAllConnectedVoFs | ( | Real & | a_totalVolFrac, | |
| EBCellFAB & | a_curEBCellFAB, | |||
| const EBGraph & | a_curEBGraph, | |||
| const EBISBox & | a_curEBISBox, | |||
| const VolIndex & | a_curVoF, | |||
| const VolIndex & | a_lastVoF, | |||
| const unsigned int & | a_curNum | |||
| ) | [private] |
| bool EBIndexSpace::setAllConnectedVoFsNew | ( | Real & | a_totalVolFrac, | |
| EBCellFAB & | a_curEBCellFAB, | |||
| const Box & | a_curBox, | |||
| const EBGraph & | a_curEBGraph, | |||
| const EBISBox & | a_curEBISBox, | |||
| const VolIndex & | a_curVoF, | |||
| const VolIndex & | a_lastVoF, | |||
| const unsigned int & | a_curNum | |||
| ) | [private] |
| void EBIndexSpace::resetAllConnectedVoFs | ( | EBCellFAB & | a_curEBCellFAB, | |
| const EBGraph & | a_curEBGraph, | |||
| const EBISBox & | a_curEBISBox, | |||
| const VolIndex & | a_curVoF, | |||
| const VolIndex & | a_lastVoF | |||
| ) | [private] |
| void EBIndexSpace::resetAllConnectedVoFsNew | ( | EBCellFAB & | a_curEBCellFAB, | |
| const Box & | a_curBox, | |||
| const EBGraph & | a_curEBGraph, | |||
| const EBISBox & | a_curEBISBox, | |||
| const VolIndex & | a_curVoF, | |||
| const VolIndex & | a_lastVoF | |||
| ) | [private] |
| void EBIndexSpace::operator= | ( | const EBIndexSpace & | ebiin | ) | [inline, private] |
References MayDay::Error().
friend class Chombo_EBIS [friend] |
This makes Chombo_EBIS be the only function that can call the private constructor.
bool EBIndexSpace::s_MFSingleBox [static] |
bool EBIndexSpace::s_useMemoryLoadBalance [static] |
int EBIndexSpace::m_nCellMax [private] |
Referenced by setCellMax().
bool EBIndexSpace::m_isDefined [private] |
bool EBIndexSpace::m_distributedData [private] |
Referenced by setDistributedData().
Vector<EBISLevel*> EBIndexSpace::m_ebisLevel [private] |
Referenced by dx(), getCoveredGrids(), getFlowGrids(), getGrids(), getIrregGrids(), getOrigin(), irregCells(), and levelGrids().
Vector<ProblemDomain> EBIndexSpace::m_domainLevel [private] |
Referenced by getBox(), getCoveredGrids(), getFlowGrids(), and getIrregGrids().
int EBIndexSpace::m_nlevels [private] |
Real EBIndexSpace::s_tolerance [static, private] |
bool EBIndexSpace::s_verbose [static, private] |
1.5.5