Chombo + EB  3.2
Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
EBIndexSpace Class Reference

#include <EBIndexSpace.H>

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 More...
 
void define (HDF5Handle &a_handle, int a_maxCoarsenings=-1)
 defines from one level and then does coarsening More...
 
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)
 
EBISLevelbuildFirstLevel (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)
 
EBISLevelbuildNextLevel (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 ProblemDomaingetBox (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< EBIndexSpacebiggestConnectedComponent (int &a_numComponents)
 
RefCountedPtr< EBIndexSpacebiggestConnectedComponentNew (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< ProblemDomainm_domainLevel
 
int m_nlevels
 

Static Private Attributes

static Real s_tolerance
 
static bool s_verbose
 

Friends

class Chombo_EBIS
 

Detailed Description

EBIndexSpace represents the geometric information of the domain. It should be generated through the Chombo_EBIS class. This follows the singleton pattern.

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

Constructor & Destructor Documentation

EBIndexSpace::EBIndexSpace ( )
EBIndexSpace::~EBIndexSpace ( )
EBIndexSpace::EBIndexSpace ( const EBIndexSpace ebiin)
inlineprivate

References MayDay::Error().

Member Function Documentation

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, and max().

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)
inlineprivate

References MayDay::Error().

Friends And Related Function Documentation

friend class Chombo_EBIS
friend

This makes Chombo_EBIS be the only function that can call the private constructor.

Member Data Documentation

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
Vector<ProblemDomain> EBIndexSpace::m_domainLevel
private
int EBIndexSpace::m_nlevels
private
Real EBIndexSpace::s_tolerance
staticprivate
bool EBIndexSpace::s_verbose
staticprivate

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