Chombo + EB
3.2
|
#include <EBAdvectPatchIntegrator.H>
Public Member Functions | |
EBAdvectPatchIntegrator (const Box &a_validBox, const EBISBox &a_ebisBox, const IntVectSet &a_coarseFineIVS, const ProblemDomain &a_domain, const RealVect &a_dx, bool a_useSlopeLimiting) | |
boundary condions are set via setEBPhysIBC More... | |
virtual | ~EBAdvectPatchIntegrator () |
void | extrapolatePrim (EBFluxFAB &a_flux, Vector< BaseIVFAB< Real > * > &a_coveredFluxMinu, Vector< BaseIVFAB< Real > * > &a_coveredFluxPlus, const Vector< IntVectSet > &a_coveredSetsMinu, const Vector< IntVectSet > &a_coveredSetsPlus, const Vector< Vector< VolIndex > > &a_coveredFaceMinu, const Vector< Vector< VolIndex > > &a_coveredFacePlus, const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt) |
void | advectiveDerivative (EBCellFAB &a_uDotDelRho, const EBFluxFAB &a_faceRho, const EBFluxFAB &a_faceVel, const Vector< BaseIVFAB< Real > *> &a_coveredRhoLo, const Vector< BaseIVFAB< Real > *> &a_coveredRhoHi, const Vector< BaseIVFAB< Real > *> &a_coveredVelLo, const Vector< BaseIVFAB< Real > *> &a_coveredVelHi, const Vector< Vector< VolIndex > > &a_coveredFaceLo, const Vector< Vector< VolIndex > > &a_coveredFaceHi, const Box &a_box) |
void | advectiveDerivative (EBCellFAB &a_uDotDelRho, const EBFluxFAB &a_faceRho, const EBFluxFAB &a_faceVel, const Box &a_box) |
void | setEBPhysIBC (const EBPhysIBCFactory &a_bc) |
void | setVelocities (const EBCellFAB &a_normalVel, const EBFluxFAB &a_advectionVel) |
void | consUndividedDivergence (BaseIVFAB< Real > &a_divF, const BaseIFFAB< Real > a_centroidFlux[SpaceDim], const IntVectSet &a_ivs) |
void | consUndividedDivergence (BaseIVFAB< Real > &a_divF, const BaseIFFAB< Real > a_centroidFlux[SpaceDim], const BaseIVFAB< Real > &a_ebIrregFlux, const IntVectSet &a_ivs) |
void | interpolateFluxToCentroids (BaseIFFAB< Real > a_centroidFlux[SpaceDim], const BaseIFFAB< Real > *const a_fluxInterpolant[SpaceDim], const IntVectSet &a_irregIVS) |
void | averageVelToCC (EBCellFAB &a_normalVel, const EBFluxFAB &a_advectionVel, const Vector< BaseIVFAB< Real > * > &a_coveredVeloLo, const Vector< BaseIVFAB< Real > * > &a_coveredVeloHi, const Vector< Vector< VolIndex > > &a_coveredFaceLo, const Vector< Vector< VolIndex > > &a_coveredFaceHi, const Box &a_box) const |
void | extrapolateBCG (EBFluxFAB &a_flux, const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt) |
void | mvExtrapolateBCG (EBFluxFAB &a_flux, const EBCellFAB &a_consState, const EBFluxFAB &a_advectionVel, const EBCellFAB &a_normalVel, const EBCellFAB &a_source, const Vector< RefCountedPtr< EBPhysIBCFactory > > &a_allAdvectBC, const DataIndex &a_dit, const Real &a_time, const Real &a_dt, const int &a_doingVel) |
void | kappaDivergenceFlux (EBCellFAB &a_kappaDivF, const EBFluxFAB &a_centroidFlux, const Box &a_validBox) |
void | extrapToCoveredFaces (BaseIVFAB< Real > &a_extendedPrim, const EBFaceFAB &a_primFace, const EBCellFAB &a_primState, const Vector< VolIndex > &a_coveredFaces, const int &a_faceDir, const Side::LoHiSide &a_sd, const Box &a_box) |
void | setMaxMin (const Real &a_maxVal, const Real &a_minVal) |
Static Public Member Functions | |
static void | setCurComp (int a_curComp) |
here are a couple of awful hooks necessary to get the minutiae of the algorithm correct More... | |
static void | setDoingVel (int a_yesorno) |
static int | getDoingVel () |
static int | getCurComp () |
Private Member Functions | |
EBAdvectPatchIntegrator () | |
weak construction is bad. More... | |
void | extrapolatePrim3D (EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt) |
internal functions (all the madness below probably needs to get cleaned up) More... | |
void | extrapolateBCG (EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt) |
void | extrapolatePrim2D (EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const EBCellFAB &a_consState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt) |
void | riemann (BaseIVFAB< Real > &a_coveredPrim, const BaseIVFAB< Real > &a_exteState, const EBCellFAB &a_primState, const Vector< VolIndex > &a_vofset, const int &a_faceDir, const Side::LoHiSide &a_sd, const Box &a_box) |
void | riemann (EBFaceFAB &a_primGdnv, const EBCellFAB &a_primLeft, const EBCellFAB &a_primRigh, const int &a_faceDir, const Box &a_box) |
FaceStencil | getInterpStencil (const FaceIndex &a_face) const |
void | pointExtrapToCovered2D (Vector< Real > &a_extrapVal, const EBFaceFAB &a_primFace, const EBCellFAB &a_primState, const int &a_faceDir, const VolIndex &a_vof, const RealVect &a_normal, const Side::LoHiSide &a_sd, const int &a_numPrim) |
void | pointExtrapToCovered3D (Vector< Real > &a_extrapVal, const EBFaceFAB &a_primFace, const EBCellFAB &a_primState, const int &a_faceDir, const VolIndex &a_vof, const RealVect &a_normal, const Side::LoHiSide &a_sd, const int &a_numPrim) |
void | extrapToCoveredFaces (BaseIVFAB< Real > &a_extendedPrim, const EBCellFAB &a_primMinu, const EBCellFAB &a_primPlus, const EBCellFAB &a_primState, const Vector< VolIndex > &a_coveredFaces, const int &a_faceDir, const Side::LoHiSide &a_sd, const Box &a_box) |
void | pointExtrapToCovered2D (Vector< Real > &a_extrapVal, const EBCellFAB &a_primMinu, const EBCellFAB &a_primPlus, const EBCellFAB &a_primState, const int &a_faceDir, const VolIndex &a_vof, const RealVect &a_normal, const Side::LoHiSide &a_sd, const int &a_numPrim) |
void | pointExtrapToCovered3D (Vector< Real > &a_extrapVal, const EBCellFAB &a_primMinu, const EBCellFAB &a_primPlus, const EBCellFAB &a_primState, const int &a_faceDir, const VolIndex &a_vof, const RealVect &a_normal, const Side::LoHiSide &a_sd, const int &a_numPrim) |
void | floorPrimitives (EBCellFAB &a_primState, const Box &a_box) |
floors if m_isMaxMinSet More... | |
void | floorPrimitives (BaseIVFAB< Real > &a_primState, const IntVectSet &a_set) |
floors if m_isMaxMinSet More... | |
void | coveredExtrapSlopes (Real &a_dq, const VolIndex &a_vof, const EBCellFAB &a_primState, const int &a_dir, const int &a_ivar) |
void | pointGetSlopes (Real &a_dql, Real &a_dqr, Real &a_dqc, bool &a_hasFacesLeft, bool &a_hasFacesRigh, const VolIndex &a_vof, const EBCellFAB &a_primState, const int &a_dir, const int &a_ivar, const bool &a_verbose) |
Real | bilinearFunc (const Real a_WVal[2][2], const Real &a_xd1, const Real &a_xd2) |
void | pointGetSlopesUpwind (Real &a_dql, Real &a_dqr, Real &a_dqc, bool &a_hasFacesLeft, bool &a_hasFacesRigh, const VolIndex &a_vof, const EBCellFAB &a_primState, const int &a_dir, const int &a_ivar, const bool &a_verbose) |
void | doNormalDerivativeExtr2D (EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], EBFaceFAB a_fluxOne[SpaceDim], BaseIVFAB< Real > a_coveredFluxNormMinu[SpaceDim], BaseIVFAB< Real > a_coveredFluxNormPlus[SpaceDim], Vector< VolIndex > a_coveredFaceNormMinu[SpaceDim], Vector< VolIndex > a_coveredFaceNormPlus[SpaceDim], const EBCellFAB &a_primState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt) |
and this is the simplified version More... | |
void | slope (EBCellFAB &a_slopePrim, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box) |
options for 4th ordeer slopes and flattening removed More... | |
void | finalExtrap2D (EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const BaseIVFAB< Real > a_coveredFluxNormMinu[SpaceDim], const BaseIVFAB< Real > a_coveredFluxNormPlus[SpaceDim], const Vector< VolIndex > a_coveredFaceNormMinu[SpaceDim], const Vector< VolIndex > a_coveredFaceNormPlus[SpaceDim], const EBFaceFAB a_fluxOne[SpaceDim], const EBCellFAB &a_primState, const Real &a_time, const Real &a_dt) |
void | finalExtrap3D (EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], const BaseIVFAB< Real > a_coveredFluxMinu3D[SpaceDim][SpaceDim], const BaseIVFAB< Real > a_coveredFluxPlus3D[SpaceDim][SpaceDim], const EBFaceFAB a_fluxTwo[SpaceDim][SpaceDim], const EBCellFAB &a_primState, const Real &a_time, const Real &a_dt) |
void | do111coupling (EBFaceFAB a_fluxTwo[SpaceDim][SpaceDim], BaseIVFAB< Real > a_coveredFluxMinu3D[SpaceDim][SpaceDim], BaseIVFAB< Real > a_coveredFluxPlus3D[SpaceDim][SpaceDim], const EBCellFAB a_primMinu[SpaceDim], const EBCellFAB a_primPlus[SpaceDim], const BaseIVFAB< Real > a_coveredFluxNormMinu[SpaceDim], const BaseIVFAB< Real > a_coveredFluxNormPlus[SpaceDim], const Vector< VolIndex > a_coveredFaceNormMinu[SpaceDim], const Vector< VolIndex > a_coveredFaceNormPlus[SpaceDim], const EBFaceFAB a_fluxOne[SpaceDim], const EBCellFAB &a_primState, const DataIndex &a_dit, const Real &a_time, const Real &a_dt) |
void | doNormalDerivativeExtr3D (EBCellFAB a_primMinu[SpaceDim], EBCellFAB a_primPlus[SpaceDim], EBFaceFAB a_fluxOne[SpaceDim], BaseIVFAB< Real > a_coveredFluxNormMinu[SpaceDim], BaseIVFAB< Real > a_coveredFluxNormPlus[SpaceDim], Vector< VolIndex > a_coveredFaceNormMinu[SpaceDim], Vector< VolIndex > a_coveredFaceNormPlus[SpaceDim], const EBCellFAB &a_primState, const EBCellFAB &a_source, const DataIndex &a_dit, const Real &a_time, const Real &a_dt) |
void | normalPred (EBCellFAB &a_primLo, EBCellFAB &a_primHi, const EBCellFAB &a_primState, const EBCellFAB &a_slopePrim, const Real &a_scale, const int &a_dir, const Box &a_box) |
void | incrementWithSource (EBCellFAB &a_primState, const EBCellFAB &a_source, const Real &a_scale, const Box &a_box) |
void | updatePrim (EBCellFAB &a_primMinu, EBCellFAB &a_primPlus, const EBFaceFAB &a_primFace, const BaseIVFAB< Real > &a_coveredPrimMinu, const BaseIVFAB< Real > &a_coveredPrimPlus, const Vector< VolIndex > &a_coveredFaceMinu, const Vector< VolIndex > &a_coveredFacePlus, const int &a_faceDir, const Box &a_box, const Real &a_scale) |
void | upwindSlope (EBCellFAB &a_slopeUpWi, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box) |
void | transversePred (EBCellFAB &a_rhoLo, EBCellFAB &a_rhoHi, const EBCellFAB &a_rho, const EBCellFAB &a_dRho, const Real &a_dtbydx, const int &a_dir, const Box &a_box) |
Private Attributes | |
const EBFluxFAB * | m_advectionVelPtr |
const EBCellFAB * | m_normalVelPtr |
bool | m_isVelSet |
bool | m_isMaxMinSet |
bool | m_useLimiting |
Real | m_maxVal |
Real | m_minVal |
RefCountedPtr< EBPhysIBC > | m_bc |
bool | m_isBCSet |
Box | m_validBox |
ProblemDomain | m_domain |
EBISBox | m_ebisBox |
RealVect | m_dx |
IntVectSet | m_cfivs |
Box | m_validBoxG4 |
Vector< VolIndex > | m_irregVoFs |
IntVectSet | m_coveredSetsPlusG4 [SpaceDim] |
IntVectSet | m_coveredSetsMinuG4 [SpaceDim] |
Vector< VolIndex > | m_coveredFacePlusG4 [SpaceDim] |
Vector< VolIndex > | m_coveredFaceMinuG4 [SpaceDim] |
Static Private Attributes | |
static int | s_curComp |
these exist because special things have to be done for velocity More... | |
static int | s_doingVel |
This does the same as EBPatchAdvect but presumably with less memory footprint. and with a somewhat more sane interface.
I have pared down the EBPatchGodunov interface and tried to optimize for minimal memory without completely destroying performance.
EBAdvectPatchIntegrator::EBAdvectPatchIntegrator | ( | const Box & | a_validBox, |
const EBISBox & | a_ebisBox, | ||
const IntVectSet & | a_coarseFineIVS, | ||
const ProblemDomain & | a_domain, | ||
const RealVect & | a_dx, | ||
bool | a_useSlopeLimiting | ||
) |
boundary condions are set via setEBPhysIBC
|
inlinevirtual |
References advectiveDerivative(), and extrapolatePrim().
|
private |
weak construction is bad.
void EBAdvectPatchIntegrator::extrapolatePrim | ( | EBFluxFAB & | a_flux, |
Vector< BaseIVFAB< Real > * > & | a_coveredFluxMinu, | ||
Vector< BaseIVFAB< Real > * > & | a_coveredFluxPlus, | ||
const Vector< IntVectSet > & | a_coveredSetsMinu, | ||
const Vector< IntVectSet > & | a_coveredSetsPlus, | ||
const Vector< Vector< VolIndex > > & | a_coveredFaceMinu, | ||
const Vector< Vector< VolIndex > > & | a_coveredFacePlus, | ||
const EBCellFAB & | a_consState, | ||
const EBCellFAB & | a_source, | ||
const DataIndex & | a_dit, | ||
const Real & | a_time, | ||
const Real & | a_dt | ||
) |
Referenced by ~EBAdvectPatchIntegrator().
void EBAdvectPatchIntegrator::advectiveDerivative | ( | EBCellFAB & | a_uDotDelRho, |
const EBFluxFAB & | a_faceRho, | ||
const EBFluxFAB & | a_faceVel, | ||
const Vector< BaseIVFAB< Real > *> & | a_coveredRhoLo, | ||
const Vector< BaseIVFAB< Real > *> & | a_coveredRhoHi, | ||
const Vector< BaseIVFAB< Real > *> & | a_coveredVelLo, | ||
const Vector< BaseIVFAB< Real > *> & | a_coveredVelHi, | ||
const Vector< Vector< VolIndex > > & | a_coveredFaceLo, | ||
const Vector< Vector< VolIndex > > & | a_coveredFaceHi, | ||
const Box & | a_box | ||
) |
Referenced by ~EBAdvectPatchIntegrator().
void EBAdvectPatchIntegrator::advectiveDerivative | ( | EBCellFAB & | a_uDotDelRho, |
const EBFluxFAB & | a_faceRho, | ||
const EBFluxFAB & | a_faceVel, | ||
const Box & | a_box | ||
) |
Version that leaves out the covered face stuff. This is wrong near the EB but the codes that use it overwrite the EB stuff anyway.
|
inline |
References EBPhysIBCFactory::create(), EBPhysIBC::define(), m_bc, m_domain, m_dx, and m_isBCSet.
void EBAdvectPatchIntegrator::consUndividedDivergence | ( | BaseIVFAB< Real > & | a_divF, |
const BaseIFFAB< Real > | a_centroidFlux[SpaceDim], | ||
const IntVectSet & | a_ivs | ||
) |
For when EBFlux is always zero.
Referenced by setVelocities().
void EBAdvectPatchIntegrator::consUndividedDivergence | ( | BaseIVFAB< Real > & | a_divF, |
const BaseIFFAB< Real > | a_centroidFlux[SpaceDim], | ||
const BaseIVFAB< Real > & | a_ebIrregFlux, | ||
const IntVectSet & | a_ivs | ||
) |
void EBAdvectPatchIntegrator::interpolateFluxToCentroids | ( | BaseIFFAB< Real > | a_centroidFlux[SpaceDim], |
const BaseIFFAB< Real > *const | a_fluxInterpolant[SpaceDim], | ||
const IntVectSet & | a_irregIVS | ||
) |
Referenced by setVelocities().
void EBAdvectPatchIntegrator::averageVelToCC | ( | EBCellFAB & | a_normalVel, |
const EBFluxFAB & | a_advectionVel, | ||
const Vector< BaseIVFAB< Real > * > & | a_coveredVeloLo, | ||
const Vector< BaseIVFAB< Real > * > & | a_coveredVeloHi, | ||
const Vector< Vector< VolIndex > > & | a_coveredFaceLo, | ||
const Vector< Vector< VolIndex > > & | a_coveredFaceHi, | ||
const Box & | a_box | ||
) | const |
Referenced by setVelocities().
void EBAdvectPatchIntegrator::extrapolateBCG | ( | EBFluxFAB & | a_flux, |
const EBCellFAB & | a_consState, | ||
const EBCellFAB & | a_source, | ||
const DataIndex & | a_dit, | ||
const Real & | a_time, | ||
const Real & | a_dt | ||
) |
Referenced by setVelocities().
void EBAdvectPatchIntegrator::mvExtrapolateBCG | ( | EBFluxFAB & | a_flux, |
const EBCellFAB & | a_consState, | ||
const EBFluxFAB & | a_advectionVel, | ||
const EBCellFAB & | a_normalVel, | ||
const EBCellFAB & | a_source, | ||
const Vector< RefCountedPtr< EBPhysIBCFactory > > & | a_allAdvectBC, | ||
const DataIndex & | a_dit, | ||
const Real & | a_time, | ||
const Real & | a_dt, | ||
const int & | a_doingVel | ||
) |
Referenced by setVelocities().
void EBAdvectPatchIntegrator::kappaDivergenceFlux | ( | EBCellFAB & | a_kappaDivF, |
const EBFluxFAB & | a_centroidFlux, | ||
const Box & | a_validBox | ||
) |
Referenced by setVelocities().
|
inlinestatic |
here are a couple of awful hooks necessary to get the minutiae of the algorithm correct
References s_curComp.
|
inlinestatic |
References s_doingVel.
|
inlinestatic |
References s_doingVel.
|
inlinestatic |
References extrapToCoveredFaces(), and s_curComp.
void EBAdvectPatchIntegrator::extrapToCoveredFaces | ( | BaseIVFAB< Real > & | a_extendedPrim, |
const EBFaceFAB & | a_primFace, | ||
const EBCellFAB & | a_primState, | ||
const Vector< VolIndex > & | a_coveredFaces, | ||
const int & | a_faceDir, | ||
const Side::LoHiSide & | a_sd, | ||
const Box & | a_box | ||
) |
This is called by EBAMRNoSubCycle. The insane version that uses cell-centered data holders for face data (the plus-minus stuff) is called internally.
Referenced by getCurComp().
References m_isMaxMinSet, m_maxVal, and m_minVal.
|
private |
internal functions (all the madness below probably needs to get cleaned up)
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
This insane version called internally. The primMinu and primPlus stuff are really face centered data but because they came from cell-centered data they are left there.
|
private |
|
private |
|
private |
floors if m_isMaxMinSet
|
private |
floors if m_isMaxMinSet
|
private |
|
private |
|
private |
|
private |
|
private |
and this is the simplified version
|
private |
options for 4th ordeer slopes and flattening removed
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by setVelocities().
|
private |
Referenced by setVelocities().
|
private |
Referenced by setVelocities().
|
private |
Referenced by setMaxMin().
|
private |
|
private |
Referenced by setMaxMin().
|
private |
Referenced by setMaxMin().
|
private |
Referenced by setEBPhysIBC().
|
private |
Referenced by setEBPhysIBC().
|
private |
|
private |
Referenced by setEBPhysIBC().
|
private |
|
private |
Referenced by setEBPhysIBC().
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
these exist because special things have to be done for velocity
Referenced by getCurComp(), and setCurComp().
|
staticprivate |
Referenced by getDoingVel(), and setDoingVel().