Chombo + EB + MF  3.2
Public Member Functions | Private Member Functions | List of all members
EBFluxRegister Class Reference

EBFluxRegister-A class to encapsulate a levels worth of flux registers. More...

#include <EBFluxRegister.H>

Inheritance diagram for EBFluxRegister:
Inheritance graph
[legend]

Public Member Functions

 EBFluxRegister ()
 
 EBFluxRegister (const DisjointBoxLayout &a_dblFine, const DisjointBoxLayout &a_dblCoar, const EBISLayout &a_ebislFine, const EBISLayout &a_ebislCoar, const Box &a_domainCoar, const int &a_nref, const int &a_nvar, const EBIndexSpace *ebisPtr, bool a_forceNoEBCF=false)
 
virtual ~EBFluxRegister ()
 
void define (const DisjointBoxLayout &a_dblFine, const DisjointBoxLayout &a_dblCoar, const EBISLayout &a_ebislFine, const EBISLayout &a_ebislCoar, const ProblemDomain &a_domainCoar, const int &a_nref, const int &a_nvar, const EBIndexSpace *ebisPtr, bool a_forceNoEBCF=false)
 
void incrementCoarseRegular (const EBFaceFAB &a_coarseFlux, const Real &a_scale, const DataIndex &a_coarseDataIndex, const Interval &a_variables, const int &a_dir)
 
void incrementCoarse (const EBFaceFAB &a_coarseFlux, const Real &a_scale, const DataIndex &a_coarseDataIndex, const Interval &a_varSrc, const Interval &a_varDst, const int &a_dir)
 
void incrementCoarseIrregular (const BaseIFFAB< Real > &a_coarseFlux, const Real &a_scale, const DataIndex &a_coarseDataIndex, const Interval &a_variables, const int &a_dir)
 
void incrementCoarseIrregular (const EBFaceFAB &a_coarFlux, const Real &a_scale, const DataIndex &a_coarDatInd, const Interval &a_variables, const int &a_dir)
 
void incrementFineRegular (const EBFaceFAB &a_fineFlux, const Real &a_scale, const DataIndex &a_fineDataIndex, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
void incrementFine (const EBFaceFAB &a_fineFlux, const Real &a_scale, const DataIndex &a_fineDataIndex, const Interval &a_varSrc, const Interval &a_varDst, const int &a_dir)
 
void incrementFineIrregular (const BaseIFFAB< Real > &a_fineFlux, const Real &a_scale, const DataIndex &a_fineDataIndex, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
void incrementFineIrregular (const EBFaceFAB &a_fineFlux, const Real &a_scale, const DataIndex &a_fineDataIndex, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
void incrementRedistRegister (EBCoarToFineRedist &a_register, const Interval &a_variables, const Real &a_scale)
 
void incrementRedistRegister (EBCoarToCoarRedist &a_register, const Interval &a_variables, const Real &a_scale)
 
bool isDefined () const
 
- Public Member Functions inherited from EBFastFR
 EBFastFR ()
 
 EBFastFR (const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblgCoar, const int &a_nref, const int &a_nvar, bool a_forceNoEBCF=false)
 
virtual ~EBFastFR ()
 
virtual void define (const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblgCoar, const int &a_nref, const int &a_nvar, bool a_forceNoEBCF=false)
 
virtual void setToZero ()
 
virtual void incrementCoarseBoth (const EBFaceFAB &a_coarseFlux, const Real &a_scale, const DataIndex &a_coarseDataIndex, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
virtual void incrementFineBoth (const EBFaceFAB &a_fineFlux, const Real &a_scale, const DataIndex &a_fineDataIndex, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
void compareFineSparse (const EBFaceFAB &a_fluxOld, const EBFaceFAB &a_fluxNew, const DataIndex &a_fineDatInd, const int &a_dir, const Side::LoHiSide &a_sd)
 
virtual void incrementFineSparse (const EBFaceFAB &a_fineFlux, const Real &a_scale, const DataIndex &a_fineDatInd, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd, bool a_doingFineRegular)
 to support baseiffab approach More...
 
virtual void reflux (LevelData< EBCellFAB > &a_uCoarse, const Interval &a_variables, const Real &a_scale, bool a_multByKappaOneMinusKappa=false)
 
virtual void reflux (LevelData< EBCellFAB > &a_uCoarse, const Interval &a_solutionvariables, const Interval &a_fluxvariables, const Real &a_scale, bool a_multByKappaOneMinusKappa=false)
 
void incrementDensityArray (LevelData< EBCellFAB > &a_coarMass, const Interval &a_variables, const Real &a_scale)
 
bool isDefined () const
 
void incrementFineIrreg (const EBFaceFAB &a_fineFlux, const Real &a_newScale, const DataIndex &a_fineDatInd, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
void incrementCoarIrreg (const EBFaceFAB &a_coarFlux, const Real &a_scale, const DataIndex &a_coarDatInd, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
void incrementFineRegul (const EBFaceFAB &a_fineFlux, const Real &a_newScale, const DataIndex &a_fineDatInd, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
void incrementCoarRegul (const EBFaceFAB &a_coarFlux, const Real &a_scale, const DataIndex &a_coarDatInd, const Interval &a_variables, const int &a_dir, const Side::LoHiSide &a_sd)
 
bool hasEBCF () const
 
void clear ()
 undefines object More...
 
Vector< VoFIterator > & getVoFItCoar (const DataIndex &a_dit, const int &a_idir, const Side::LoHiSide &a_sd)
 
VoFIteratorgetVoFItCoFi (const DataIndex &a_dit, const int &a_idir, const Side::LoHiSide &a_sd)
 
const EBLevelGridgetEBLGCoFi () const
 

Private Member Functions

bool copyBIFFToEBFF (EBFaceFAB &a_dst, const BaseIFFAB< Real > &a_src, const Box &a_box, const EBISBox &a_ebisBox)
 
void operator= (const EBFluxRegister &)
 
 EBFluxRegister (const EBFluxRegister &)
 

Additional Inherited Members

- Static Public Member Functions inherited from EBFastFR
static int index (int a_dir, Side::LoHiSide a_side)
 
- Static Public Attributes inherited from EBFastFR
static bool s_verbose
 
- Protected Member Functions inherited from EBFastFR
void irregSetToZero ()
 
void defineSetsAndIterators ()
 
void defineBuffers ()
 
void cacheOldSolution (const LevelData< EBCellFAB > &a_uCoar, const Interval &a_variables)
 
void restoreOldSolution (LevelData< EBCellFAB > &a_uCoar, const Interval &a_variables)
 
void irregReflux (LevelData< EBCellFAB > &a_uCoar, const Interval &a_variables, const Real &a_scale, bool a_multByKappaOneMinusKappa=false)
 
void incrementByRefluxDivergence (LevelData< EBCellFAB > &a_uCoar, LevelData< EBCellFAB > &a_fluxDiff, const Interval &a_variables, const Real &a_newScale, bool a_multByOneMinusKappa, bool a_multByKappaOneMinusKappa)
 
void setDefaultValues ()
 
bool computeHasEBCF ()
 
- Protected Attributes inherited from EBFastFR
LevelFluxRegisterm_levelFluxReg
 
bool m_isDefined
 
EBLevelGrid m_eblgFine
 
EBLevelGrid m_eblgCoar
 
EBLevelGrid m_eblgCoFi
 
int m_refRat
 
int m_nComp
 
Real m_nrefdmo
 
bool m_hasEBCF
 
LayoutData< VoFIteratorm_vofiCoFi [2 *SpaceDim]
 
LayoutData< IntVectSetm_setsCoFi [2 *SpaceDim]
 
LayoutData< Vector< IntVectSet > > m_setsCoar [2 *SpaceDim]
 
LayoutData< Vector< VoFIterator > > m_vofiCoar [2 *SpaceDim]
 
Copier m_reverseCopier
 
LevelData< EBCellFABm_saveCoar
 
LevelData< EBCellFABm_delUCoFi
 
LevelData< EBCellFABm_delUCoar
 
LevelData< EBCellFABm_delUDiff
 

Detailed Description

EBFluxRegister-A class to encapsulate a levels worth of flux registers.

A EBFluxRegister handles all the data choreography necessary to create a levels worth of flux registers.

Constructor & Destructor Documentation

◆ EBFluxRegister() [1/3]

EBFluxRegister::EBFluxRegister ( )
inline

Default constructor. Leaves object undefined.

References define(), and ~EBFluxRegister().

◆ EBFluxRegister() [2/3]

EBFluxRegister::EBFluxRegister ( const DisjointBoxLayout a_dblFine,
const DisjointBoxLayout a_dblCoar,
const EBISLayout a_ebislFine,
const EBISLayout a_ebislCoar,
const Box a_domainCoar,
const int &  a_nref,
const int &  a_nvar,
const EBIndexSpace ebisPtr,
bool  a_forceNoEBCF = false 
)

Full constructor. Calls the define function which creates a levels worth of flux registers.

◆ ~EBFluxRegister()

virtual EBFluxRegister::~EBFluxRegister ( )
virtual

Referenced by EBFluxRegister().

◆ EBFluxRegister() [3/3]

EBFluxRegister::EBFluxRegister ( const EBFluxRegister )
inlineprivate

References MayDay::Error().

Member Function Documentation

◆ define()

void EBFluxRegister::define ( const DisjointBoxLayout a_dblFine,
const DisjointBoxLayout a_dblCoar,
const EBISLayout a_ebislFine,
const EBISLayout a_ebislCoar,
const ProblemDomain a_domainCoar,
const int &  a_nref,
const int &  a_nvar,
const EBIndexSpace ebisPtr,
bool  a_forceNoEBCF = false 
)

Full define function. Creates a levels worth of flux registers.

Referenced by EBFluxRegister().

◆ incrementCoarseRegular()

void EBFluxRegister::incrementCoarseRegular ( const EBFaceFAB a_coarseFlux,
const Real a_scale,
const DataIndex a_coarseDataIndex,
const Interval a_variables,
const int &  a_dir 
)
inline

increments the register with data from coarseFlux, multiplied by scale. Increment coarse buffer with the area-weighted sum of the fluxes on the faces. buf += -scale*sum(areaFrac*flux) CoarseFlux must contain the coarse fluxes in the dir direction for the grid m_coarseLayout[coarseDataIndex].

References EBFastFR::incrementCoarRegul(), and SideIterator::ok().

◆ incrementCoarse()

void EBFluxRegister::incrementCoarse ( const EBFaceFAB a_coarseFlux,
const Real a_scale,
const DataIndex a_coarseDataIndex,
const Interval a_varSrc,
const Interval a_varDst,
const int &  a_dir 
)
inline

◆ incrementCoarseIrregular() [1/2]

void EBFluxRegister::incrementCoarseIrregular ( const BaseIFFAB< Real > &  a_coarseFlux,
const Real a_scale,
const DataIndex a_coarseDataIndex,
const Interval a_variables,
const int &  a_dir 
)

increments the register with data from coarseFlux, multiplied by scale. Increment coarse buffer with the area-weighted sum of the fluxes on the faces. buf += -scale*sum(areaFrac*flux) CoarseFlux must contain the coarse fluxes in the dir direction for the grid m_coarseLayout[coarseDataIndex].

Referenced by incrementCoarse().

◆ incrementCoarseIrregular() [2/2]

void EBFluxRegister::incrementCoarseIrregular ( const EBFaceFAB a_coarFlux,
const Real a_scale,
const DataIndex a_coarDatInd,
const Interval a_variables,
const int &  a_dir 
)
inline

For when you have an EBFaceFAB lying around instead of a BaseIFFAB

References EBFastFR::incrementCoarIrreg(), and SideIterator::ok().

◆ incrementFineRegular()

void EBFluxRegister::incrementFineRegular ( const EBFaceFAB a_fineFlux,
const Real a_scale,
const DataIndex a_fineDataIndex,
const Interval a_variables,
const int &  a_dir,
const Side::LoHiSide a_sd 
)
inline

increments the register with data from fineFlux, multiplied by scale. fineFlux must contain the coarse fluxes in the dir direction for the grid m_fineLayout[fineDataIndex]. This operation is local.

References EBFastFR::incrementFineRegul().

◆ incrementFine()

void EBFluxRegister::incrementFine ( const EBFaceFAB a_fineFlux,
const Real a_scale,
const DataIndex a_fineDataIndex,
const Interval a_varSrc,
const Interval a_varDst,
const int &  a_dir 
)
inline

◆ incrementFineIrregular() [1/2]

void EBFluxRegister::incrementFineIrregular ( const BaseIFFAB< Real > &  a_fineFlux,
const Real a_scale,
const DataIndex a_fineDataIndex,
const Interval a_variables,
const int &  a_dir,
const Side::LoHiSide a_sd 
)

increments the register with data from fineFlux, multiplied by scale. fineFlux must contain the coarse fluxes in the dir direction for the grid m_fineLayout[fineDataIndex]. This operation is local.

Referenced by incrementFine().

◆ incrementFineIrregular() [2/2]

void EBFluxRegister::incrementFineIrregular ( const EBFaceFAB a_fineFlux,
const Real a_scale,
const DataIndex a_fineDataIndex,
const Interval a_variables,
const int &  a_dir,
const Side::LoHiSide a_sd 
)
inline

For when you have a EBFaceFAB lying around instead of a BaseIFFAB

References copyBIFFToEBFF(), EBFastFR::incrementFineIrreg(), incrementRedistRegister(), and isDefined().

◆ incrementRedistRegister() [1/2]

void EBFluxRegister::incrementRedistRegister ( EBCoarToFineRedist a_register,
const Interval a_variables,
const Real a_scale 
)

Increments redistribution register with left-over mass from reflux divergence.

Referenced by incrementFineIrregular().

◆ incrementRedistRegister() [2/2]

void EBFluxRegister::incrementRedistRegister ( EBCoarToCoarRedist a_register,
const Interval a_variables,
const Real a_scale 
)

Increments redistribution register with left-over mass from reflux divergence.

◆ isDefined()

bool EBFluxRegister::isDefined ( ) const

Referenced by incrementFineIrregular().

◆ copyBIFFToEBFF()

bool EBFluxRegister::copyBIFFToEBFF ( EBFaceFAB a_dst,
const BaseIFFAB< Real > &  a_src,
const Box a_box,
const EBISBox a_ebisBox 
)
private

Referenced by incrementFineIrregular().

◆ operator=()

void EBFluxRegister::operator= ( const EBFluxRegister )
inlineprivate

References MayDay::Error().


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