EBIndexSpace Class Reference

#include <EBIndexSpace.H>

List of all members.


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

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


Constructor & Destructor Documentation

EBIndexSpace::EBIndexSpace (  ) 

EBIndexSpace::~EBIndexSpace (  ) 

EBIndexSpace::EBIndexSpace ( const EBIndexSpace ebiin  )  [inline, private]

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.

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().


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

int EBIndexSpace::m_nCellMax [private]

Referenced by setCellMax().

bool EBIndexSpace::m_isDefined [private]

Referenced by setDistributedData().

int EBIndexSpace::m_nlevels [private]

Real EBIndexSpace::s_tolerance [static, private]

bool EBIndexSpace::s_verbose [static, private]


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

Generated on Fri Apr 5 04:25:02 2019 for Chombo + EB by  doxygen 1.5.5