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

Level Godunov. More...

#include <EBLevelGodunov.H>

Public Member Functions

 EBLevelGodunov ()
 Default constructor. More...
 
 ~EBLevelGodunov ()
 Destructor. More...
 
void define (const DisjointBoxLayout &a_thisDBL, const DisjointBoxLayout &a_coarDBL, const EBISLayout &a_thisEBISL, const EBISLayout &a_coarEBISL, const ProblemDomain &a_DProblem, const int &a_nRefine, const RealVect &a_dx, const bool &a_useMassRedist, const bool &a_doSmushing, const bool &a_doRZCoords, const bool &a_hasSourceTerm, const EBPatchGodunovFactory *const a_patchGodunov, const bool &a_hasCoarser, const bool &a_hasFiner, const IntVect &a_ivGhost, const bool &a_forceNoEBCF=false)
 Actual constructor. More...
 
void floorConserved (LevelData< EBCellFAB > &a_consState, Real a_time, Real a_dt)
 
Real step (LevelData< EBCellFAB > &a_consState, LevelData< BaseIVFAB< Real > > &a_massDiff, EBFluxRegister &a_fineFluxRegister, EBFluxRegister &a_coarFluxRegister, const LevelData< EBCellFAB > &a_consStateCoarseOld, const LevelData< EBCellFAB > &a_consStateCoarseNew, const Real &a_time, const Real &a_TCold, const Real &a_TCNew, const Real &a_dt)
 Take one timestep for this grid level. More...
 
void getDrhoDtOverRho (LevelData< EBCellFAB > &a_drhoDt, const LevelData< EBCellFAB > &a_rhoNew, const LevelData< EBCellFAB > &a_rhoOld, const Real &a_dt)
 
Real getMaxWaveSpeed (const LevelData< EBCellFAB > &a_state)
 Get maximum wave speed. More...
 
bool isDefined () const
 

Protected Member Functions

void fillConsState (LevelData< EBCellFAB > &a_consState, const LevelData< EBCellFAB > &a_consStateCoarseOld, const LevelData< EBCellFAB > &a_consStateCoarseNew, const Real &a_time, const Real &a_coarTimeOld, const Real &a_coarTimeNew)
 
void computeFlattening (Real a_time, Real a_dt, LevelData< EBCellFAB > &a_consState)
 
void doRegularUpdate (EBFluxRegister &a_fineFluxRegister, EBFluxRegister &a_coarFluxRegister, Real a_time, Real a_dt, LevelData< EBCellFAB > &a_consState)
 
Real doIrregularUpdate (EBFluxRegister &a_fineFluxRegister, EBFluxRegister &a_coarFluxRegister, LevelData< BaseIVFAB< Real > > &a_massDiff, Real a_time, Real a_dt, LevelData< EBCellFAB > &a_consState)
 

Protected Attributes

LayoutData< IntVectSetm_irregSetsSmall
 
LayoutData< IntVectSetm_irregSetsGrown [SpaceDim]
 
LevelData< BaseIFFAB< Real > > m_fluxInterpolants [SpaceDim]
 
LevelData< BaseIVFAB< Real > > m_nonConsDivergence
 
LevelData< BaseIVFAB< Real > > m_ebIrregFaceFlux
 
LayoutData< IntVectSetm_cfIVS
 
bool m_hasCoarser
 
bool m_hasFiner
 
DisjointBoxLayout m_thisGrids
 
DisjointBoxLayout m_coarGrids
 
EBISLayout m_thisEBISL
 
EBISLayout m_coarEBISL
 
bool m_isDefined
 
LayoutData< EBPatchGodunov * > m_ebPatchGodunov
 
EBPatchGodunovm_ebPatchGodunovSP
 
RealVect m_dx
 
ProblemDomain m_domain
 
int m_refRatCrse
 
int m_nCons
 
int m_nFlux
 
int m_nGhost
 
AggEBPWLFillPatch m_patcher
 
bool m_useMassRedist
 
EBLevelRedist m_ebLevelRedist
 
bool m_doSmushing
 
bool m_doRZCoords
 
bool m_hasSourceTerm
 
LevelData< EBCellFABm_flattening
 
bool m_forceNoEBCF
 
IntVect m_ivGhost
 

Static Protected Attributes

static int s_timestep
 

Private Member Functions

void operator= (const EBLevelGodunov &a_input)
 
 EBLevelGodunov (const EBLevelGodunov &a_input)
 

Detailed Description

Level Godunov.

Constructor & Destructor Documentation

◆ EBLevelGodunov() [1/2]

EBLevelGodunov::EBLevelGodunov ( )

Default constructor.

Object requires define(..) to be called before all other functions.

◆ ~EBLevelGodunov()

EBLevelGodunov::~EBLevelGodunov ( )

Destructor.

destroys all objects created by define(..). Passed in data references of define(..) are left alone.

◆ EBLevelGodunov() [2/2]

EBLevelGodunov::EBLevelGodunov ( const EBLevelGodunov a_input)
inlineprivate

References MayDay::Error().

Member Function Documentation

◆ define()

void EBLevelGodunov::define ( const DisjointBoxLayout a_thisDBL,
const DisjointBoxLayout a_coarDBL,
const EBISLayout a_thisEBISL,
const EBISLayout a_coarEBISL,
const ProblemDomain a_DProblem,
const int &  a_nRefine,
const RealVect a_dx,
const bool &  a_useMassRedist,
const bool &  a_doSmushing,
const bool &  a_doRZCoords,
const bool &  a_hasSourceTerm,
const EBPatchGodunovFactory *const  a_patchGodunov,
const bool &  a_hasCoarser,
const bool &  a_hasFiner,
const IntVect a_ivGhost,
const bool &  a_forceNoEBCF = false 
)

Actual constructor.

For the coarsest level, an empty DisjointBoxLayout is passed in for coaserDisjointBoxLayout. Inside the routine, we cast away const-ness on the data members for the assignment. The arguments passed in are maintained const. (coding standards). a_nRefine is the refinement ratio between this level and the next coarser level. a_numGhosts is the number of ghost cells in each direction. forceNoEBCF = true promises that the embedded boundary will not cross the coarse-fine interface. This will save you a lot of compute time if you are certain you are tagging all irregulkar cells. ivghost is the number of ghost cells being sent in on the data

◆ floorConserved()

void EBLevelGodunov::floorConserved ( LevelData< EBCellFAB > &  a_consState,
Real  a_time,
Real  a_dt 
)

◆ step()

Real EBLevelGodunov::step ( LevelData< EBCellFAB > &  a_consState,
LevelData< BaseIVFAB< Real > > &  a_massDiff,
EBFluxRegister a_fineFluxRegister,
EBFluxRegister a_coarFluxRegister,
const LevelData< EBCellFAB > &  a_consStateCoarseOld,
const LevelData< EBCellFAB > &  a_consStateCoarseNew,
const Real a_time,
const Real a_TCold,
const Real a_TCNew,
const Real a_dt 
)

Take one timestep for this grid level.

For the coarsest level, UcoarseOld and UCoarseNew are empty LevelData<EBCellFAB> objects. Also, either UCoarseOld or UCoarseNew might be empty to indicate that t(nf) = t(nc) the one grid is at the current time and interpolation is not required for boundary condition generation. U must be defined on the same DisjointBoxLayouts as were used in define(...) Coarse flux register is flux register with the coarse level. Fine flux register is the flux register with the fine level. To the finer level FR, this level is the coarse level. To the coarser level FR, this level is the fine level.

◆ getDrhoDtOverRho()

void EBLevelGodunov::getDrhoDtOverRho ( LevelData< EBCellFAB > &  a_drhoDt,
const LevelData< EBCellFAB > &  a_rhoNew,
const LevelData< EBCellFAB > &  a_rhoOld,
const Real a_dt 
)

◆ getMaxWaveSpeed()

Real EBLevelGodunov::getMaxWaveSpeed ( const LevelData< EBCellFAB > &  a_state)

Get maximum wave speed.

◆ isDefined()

bool EBLevelGodunov::isDefined ( ) const

◆ fillConsState()

void EBLevelGodunov::fillConsState ( LevelData< EBCellFAB > &  a_consState,
const LevelData< EBCellFAB > &  a_consStateCoarseOld,
const LevelData< EBCellFAB > &  a_consStateCoarseNew,
const Real a_time,
const Real a_coarTimeOld,
const Real a_coarTimeNew 
)
protected

◆ computeFlattening()

void EBLevelGodunov::computeFlattening ( Real  a_time,
Real  a_dt,
LevelData< EBCellFAB > &  a_consState 
)
protected

◆ doRegularUpdate()

void EBLevelGodunov::doRegularUpdate ( EBFluxRegister a_fineFluxRegister,
EBFluxRegister a_coarFluxRegister,
Real  a_time,
Real  a_dt,
LevelData< EBCellFAB > &  a_consState 
)
protected

◆ doIrregularUpdate()

Real EBLevelGodunov::doIrregularUpdate ( EBFluxRegister a_fineFluxRegister,
EBFluxRegister a_coarFluxRegister,
LevelData< BaseIVFAB< Real > > &  a_massDiff,
Real  a_time,
Real  a_dt,
LevelData< EBCellFAB > &  a_consState 
)
protected

◆ operator=()

void EBLevelGodunov::operator= ( const EBLevelGodunov a_input)
inlineprivate

References MayDay::Error().

Member Data Documentation

◆ m_irregSetsSmall

LayoutData<IntVectSet> EBLevelGodunov::m_irregSetsSmall
protected

◆ m_irregSetsGrown

LayoutData<IntVectSet> EBLevelGodunov::m_irregSetsGrown[SpaceDim]
protected

◆ m_fluxInterpolants

LevelData<BaseIFFAB<Real> > EBLevelGodunov::m_fluxInterpolants[SpaceDim]
protected

◆ m_nonConsDivergence

LevelData<BaseIVFAB<Real> > EBLevelGodunov::m_nonConsDivergence
protected

◆ m_ebIrregFaceFlux

LevelData<BaseIVFAB<Real> > EBLevelGodunov::m_ebIrregFaceFlux
protected

◆ m_cfIVS

LayoutData<IntVectSet> EBLevelGodunov::m_cfIVS
protected

◆ m_hasCoarser

bool EBLevelGodunov::m_hasCoarser
protected

◆ m_hasFiner

bool EBLevelGodunov::m_hasFiner
protected

◆ m_thisGrids

DisjointBoxLayout EBLevelGodunov::m_thisGrids
protected

◆ m_coarGrids

DisjointBoxLayout EBLevelGodunov::m_coarGrids
protected

◆ m_thisEBISL

EBISLayout EBLevelGodunov::m_thisEBISL
protected

◆ m_coarEBISL

EBISLayout EBLevelGodunov::m_coarEBISL
protected

◆ m_isDefined

bool EBLevelGodunov::m_isDefined
protected

◆ m_ebPatchGodunov

LayoutData<EBPatchGodunov*> EBLevelGodunov::m_ebPatchGodunov
protected

◆ m_ebPatchGodunovSP

EBPatchGodunov* EBLevelGodunov::m_ebPatchGodunovSP
protected

◆ m_dx

RealVect EBLevelGodunov::m_dx
protected

◆ m_domain

ProblemDomain EBLevelGodunov::m_domain
protected

◆ m_refRatCrse

int EBLevelGodunov::m_refRatCrse
protected

◆ m_nCons

int EBLevelGodunov::m_nCons
protected

◆ m_nFlux

int EBLevelGodunov::m_nFlux
protected

◆ m_nGhost

int EBLevelGodunov::m_nGhost
protected

◆ m_patcher

AggEBPWLFillPatch EBLevelGodunov::m_patcher
protected

◆ m_useMassRedist

bool EBLevelGodunov::m_useMassRedist
protected

◆ m_ebLevelRedist

EBLevelRedist EBLevelGodunov::m_ebLevelRedist
protected

◆ s_timestep

int EBLevelGodunov::s_timestep
staticprotected

◆ m_doSmushing

bool EBLevelGodunov::m_doSmushing
protected

◆ m_doRZCoords

bool EBLevelGodunov::m_doRZCoords
protected

◆ m_hasSourceTerm

bool EBLevelGodunov::m_hasSourceTerm
protected

◆ m_flattening

LevelData<EBCellFAB> EBLevelGodunov::m_flattening
protected

◆ m_forceNoEBCF

bool EBLevelGodunov::m_forceNoEBCF
protected

◆ m_ivGhost

IntVect EBLevelGodunov::m_ivGhost
protected

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