Chombo + EB + MF
3.2
|
#include <EBLevelAdvect.H>
Public Member Functions | |
EBLevelAdvect () | |
Default constructor. More... | |
~EBLevelAdvect () | |
Destructor. More... | |
EBLevelAdvect (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_hasCoarser, const bool &a_hasFiner, const EBPatchGodunovFactory *const a_patchGodunov, const bool &a_forceNoEBCF=false, const EBIndexSpace *const a_eb=Chombo_EBIS::instance()) | |
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_hasCoarser, const bool &a_hasFiner, const EBPatchGodunovFactory *const a_patchGodunov, const bool &a_forceNoEBCF=false, const EBIndexSpace *const a_eb=Chombo_EBIS::instance()) |
Actual constructor. More... | |
void | advectToFacesCol (LevelData< EBFluxFAB > &a_extrapState, LayoutData< Vector< BaseIVFAB< Real > * > > &a_coveredPrimLo, LayoutData< Vector< BaseIVFAB< Real > * > > &a_coveredPrimHi, const LayoutData< Vector< Vector< VolIndex > > > &a_coveredFaceLo, const LayoutData< Vector< Vector< VolIndex > > > &a_coveredFaceHi, const LayoutData< Vector< IntVectSet > > &a_coveredSetsLo, const LayoutData< Vector< IntVectSet > > &a_coveredSetsHi, const LevelData< EBCellFAB > &a_consState, const LevelData< EBCellFAB > &a_normalVel, const LevelData< EBFluxFAB > &a_advectionVel, const LevelData< EBCellFAB > *a_consStateCoarseOld, const LevelData< EBCellFAB > *a_consStateCoarseNew, const LevelData< EBCellFAB > *a_normalVelCoarseOld, const LevelData< EBCellFAB > *a_normalVelCoarseNew, const Real &a_timeCoarseOld, const Real &a_timeCoarseNew, const Real &a_timeFine, const Real &a_dt, const LevelData< EBCellFAB > *const a_source=NULL, const LevelData< EBCellFAB > *const a_sourceCoarOld=NULL, const LevelData< EBCellFAB > *const a_sourceCoarNew=NULL) |
void | advectToFaces (EBFluxFAB &a_extrapState, BaseIVFAB< Real > &a_boundaryPrim, Vector< BaseIVFAB< Real > * > &a_coveredPrimLo, Vector< BaseIVFAB< Real > * > &a_coveredPrimHi, const Vector< Vector< VolIndex > > &a_coveredFaceLo, const Vector< Vector< VolIndex > > &a_coveredFaceHi, const Vector< IntVectSet > &a_coveredSetsLo, const Vector< IntVectSet > &a_coveredSetsHi, const EBCellFAB &a_consState, const EBCellFAB &a_normalVel, const EBFluxFAB &a_advectionVel, const Box &a_cellBox, const EBISBox &a_ebisBox, const Real &a_dt, const Real &a_time, const EBCellFAB &a_source, const DataIndex &a_dit, bool a_doBoundaryPrim) |
void | advectToFacesBCG (LevelData< EBFluxFAB > &a_extrapState, const LevelData< EBCellFAB > &a_consState, const LevelData< EBCellFAB > &a_normalVel, const LevelData< EBFluxFAB > &a_advectionVel, const LevelData< EBCellFAB > *a_consStateCoarseOld, const LevelData< EBCellFAB > *a_consStateCoarseNew, const LevelData< EBCellFAB > *a_normalVelCoarseOld, const LevelData< EBCellFAB > *a_normalVelCoarseNew, const Real &a_timeCoarseOld, const Real &a_timeCoarseNew, const Real &a_timeFine, const Real &a_dt, const LevelData< EBCellFAB > *const a_source=NULL, const LevelData< EBCellFAB > *const a_sourceCoarOld=NULL, const LevelData< EBCellFAB > *const a_sourceCoarNew=NULL) |
void | advectToFacesBCG (EBFluxFAB &a_extrapState, BaseIVFAB< Real > &a_boundaryPrim, const EBCellFAB &a_consState, const EBCellFAB &a_normalVel, const EBFluxFAB &a_advectionVel, const Box &a_cellBox, const EBISBox &a_ebisBox, const Real &a_dt, const Real &a_time, const EBCellFAB &a_source, const DataIndex &a_dit, bool a_doBoundaryPrim) |
void | computeNormalVel (LevelData< EBCellFAB > &a_normalVel, const LevelData< EBFluxFAB > &a_advectionVel, const LayoutData< Vector< BaseIVFAB< Real > * > > &a_coveredVeloLo, const LayoutData< Vector< BaseIVFAB< Real > * > > &a_coveredVeloHi, const LayoutData< Vector< Vector< VolIndex > > > &a_coveredFaceLo, const LayoutData< Vector< Vector< VolIndex > > > &a_coveredFaceHi) const |
bool | isDefined () const |
EBPatchAdvect & | getPatchAdvect (const DataIndex &a_dit) |
void | resetBCs (const RefCountedPtr< EBPhysIBCFactory > &a_advectBC) |
Protected Attributes | |
bool | m_hasCoarser |
bool | m_hasFiner |
bool | m_forceNoEBCF |
bool | m_isDefined |
RealVect | m_dx |
int | m_refRatCrse |
int | m_nVar |
int | m_nGhost |
DisjointBoxLayout | m_thisGrids |
DisjointBoxLayout | m_coarGrids |
EBISLayout | m_thisEBISL |
EBISLayout | m_coarEBISL |
AggEBPWLFillPatch | m_fillPatch |
AggEBPWLFillPatch | m_fillPatchVel |
ProblemDomain | m_domain |
LayoutData< EBPatchAdvect * > | m_ebPatchAdvect |
Private Member Functions | |
void | operator= (const EBLevelAdvect &a_input) |
EBLevelAdvect (const EBLevelAdvect &a_input) | |
Advection and diffusion on a level using
EBLevelAdvect::EBLevelAdvect | ( | ) |
Default constructor.
Object requires define(..) to be called before all other functions.
EBLevelAdvect::~EBLevelAdvect | ( | ) |
Destructor.
destroys all objects created by define(..). Passed in data references of define(..) are left alone.
EBLevelAdvect::EBLevelAdvect | ( | 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_hasCoarser, | ||
const bool & | a_hasFiner, | ||
const EBPatchGodunovFactory *const | a_patchGodunov, | ||
const bool & | a_forceNoEBCF = false , |
||
const EBIndexSpace *const | a_eb = Chombo_EBIS::instance() |
||
) |
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.
|
inlineprivate |
References MayDay::Error().
void EBLevelAdvect::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_hasCoarser, | ||
const bool & | a_hasFiner, | ||
const EBPatchGodunovFactory *const | a_patchGodunov, | ||
const bool & | a_forceNoEBCF = false , |
||
const EBIndexSpace *const | a_eb = Chombo_EBIS::instance() |
||
) |
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.
void EBLevelAdvect::advectToFacesCol | ( | LevelData< EBFluxFAB > & | a_extrapState, |
LayoutData< Vector< BaseIVFAB< Real > * > > & | a_coveredPrimLo, | ||
LayoutData< Vector< BaseIVFAB< Real > * > > & | a_coveredPrimHi, | ||
const LayoutData< Vector< Vector< VolIndex > > > & | a_coveredFaceLo, | ||
const LayoutData< Vector< Vector< VolIndex > > > & | a_coveredFaceHi, | ||
const LayoutData< Vector< IntVectSet > > & | a_coveredSetsLo, | ||
const LayoutData< Vector< IntVectSet > > & | a_coveredSetsHi, | ||
const LevelData< EBCellFAB > & | a_consState, | ||
const LevelData< EBCellFAB > & | a_normalVel, | ||
const LevelData< EBFluxFAB > & | a_advectionVel, | ||
const LevelData< EBCellFAB > * | a_consStateCoarseOld, | ||
const LevelData< EBCellFAB > * | a_consStateCoarseNew, | ||
const LevelData< EBCellFAB > * | a_normalVelCoarseOld, | ||
const LevelData< EBCellFAB > * | a_normalVelCoarseNew, | ||
const Real & | a_timeCoarseOld, | ||
const Real & | a_timeCoarseNew, | ||
const Real & | a_timeFine, | ||
const Real & | a_dt, | ||
const LevelData< EBCellFAB > *const | a_source = NULL , |
||
const LevelData< EBCellFAB > *const | a_sourceCoarOld = NULL , |
||
const LevelData< EBCellFAB > *const | a_sourceCoarNew = NULL |
||
) |
Notes: The advection velocity that is sent in is not used. It will be taken out in later designs
void EBLevelAdvect::advectToFaces | ( | EBFluxFAB & | a_extrapState, |
BaseIVFAB< Real > & | a_boundaryPrim, | ||
Vector< BaseIVFAB< Real > * > & | a_coveredPrimLo, | ||
Vector< BaseIVFAB< Real > * > & | a_coveredPrimHi, | ||
const Vector< Vector< VolIndex > > & | a_coveredFaceLo, | ||
const Vector< Vector< VolIndex > > & | a_coveredFaceHi, | ||
const Vector< IntVectSet > & | a_coveredSetsLo, | ||
const Vector< IntVectSet > & | a_coveredSetsHi, | ||
const EBCellFAB & | a_consState, | ||
const EBCellFAB & | a_normalVel, | ||
const EBFluxFAB & | a_advectionVel, | ||
const Box & | a_cellBox, | ||
const EBISBox & | a_ebisBox, | ||
const Real & | a_dt, | ||
const Real & | a_time, | ||
const EBCellFAB & | a_source, | ||
const DataIndex & | a_dit, | ||
bool | a_doBoundaryPrim | ||
) |
void EBLevelAdvect::advectToFacesBCG | ( | LevelData< EBFluxFAB > & | a_extrapState, |
const LevelData< EBCellFAB > & | a_consState, | ||
const LevelData< EBCellFAB > & | a_normalVel, | ||
const LevelData< EBFluxFAB > & | a_advectionVel, | ||
const LevelData< EBCellFAB > * | a_consStateCoarseOld, | ||
const LevelData< EBCellFAB > * | a_consStateCoarseNew, | ||
const LevelData< EBCellFAB > * | a_normalVelCoarseOld, | ||
const LevelData< EBCellFAB > * | a_normalVelCoarseNew, | ||
const Real & | a_timeCoarseOld, | ||
const Real & | a_timeCoarseNew, | ||
const Real & | a_timeFine, | ||
const Real & | a_dt, | ||
const LevelData< EBCellFAB > *const | a_source = NULL , |
||
const LevelData< EBCellFAB > *const | a_sourceCoarOld = NULL , |
||
const LevelData< EBCellFAB > *const | a_sourceCoarNew = NULL |
||
) |
void EBLevelAdvect::advectToFacesBCG | ( | EBFluxFAB & | a_extrapState, |
BaseIVFAB< Real > & | a_boundaryPrim, | ||
const EBCellFAB & | a_consState, | ||
const EBCellFAB & | a_normalVel, | ||
const EBFluxFAB & | a_advectionVel, | ||
const Box & | a_cellBox, | ||
const EBISBox & | a_ebisBox, | ||
const Real & | a_dt, | ||
const Real & | a_time, | ||
const EBCellFAB & | a_source, | ||
const DataIndex & | a_dit, | ||
bool | a_doBoundaryPrim | ||
) |
void EBLevelAdvect::computeNormalVel | ( | LevelData< EBCellFAB > & | a_normalVel, |
const LevelData< EBFluxFAB > & | a_advectionVel, | ||
const LayoutData< Vector< BaseIVFAB< Real > * > > & | a_coveredVeloLo, | ||
const LayoutData< Vector< BaseIVFAB< Real > * > > & | a_coveredVeloHi, | ||
const LayoutData< Vector< Vector< VolIndex > > > & | a_coveredFaceLo, | ||
const LayoutData< Vector< Vector< VolIndex > > > & | a_coveredFaceHi | ||
) | const |
bool EBLevelAdvect::isDefined | ( | ) | const |
|
inline |
References m_ebPatchAdvect, and resetBCs().
void EBLevelAdvect::resetBCs | ( | const RefCountedPtr< EBPhysIBCFactory > & | a_advectBC | ) |
Referenced by getPatchAdvect().
|
inlineprivate |
References MayDay::Error().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by getPatchAdvect().