11 #ifndef _EBADVECTPATCHINTEGRATOR_H_ 12 #define _EBADVECTPATCHINTEGRATOR_H_ 26 #include "NamespaceHeader.H" 28 #define EBAPI_TOL 1.e-12 48 bool a_useSlopeLimiting);
141 const Box& a_box)
const;
163 const int & a_doingVel);
168 const Box& a_validBox);
200 const int& a_faceDir,
205 const Real& a_minVal)
278 const int& a_faceDir,
287 const int& a_faceDir,
298 const int& a_faceDir,
302 const int& a_numPrim);
308 const int& a_faceDir,
312 const int& a_numPrim);
326 const int& a_faceDir,
335 const int& a_faceDir,
339 const int& a_numPrim);
346 const int& a_faceDir,
350 const int& a_numPrim);
374 bool& a_hasFacesLeft,
375 bool& a_hasFacesRigh,
380 const bool& a_verbose);
391 bool& a_hasFacesLeft,
392 bool& a_hasFacesRigh,
397 const bool& a_verbose);
440 const EBFaceFAB a_fluxTwo[SpaceDim][SpaceDim],
499 const int& a_faceDir,
501 const Real& a_scale);
514 const Real& a_dtbydx,
519 #include "NamespaceFooter.H" 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 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 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)
Definition: Stencils.H:194
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:141
bool m_isMaxMinSet
Definition: EBAdvectPatchIntegrator.H:215
void consUndividedDivergence(BaseIVFAB< Real > &a_divF, const BaseIFFAB< Real > a_centroidFlux[SpaceDim], const IntVectSet &a_ivs)
const EBFluxFAB * m_advectionVelPtr
Definition: EBAdvectPatchIntegrator.H:212
virtual ~EBAdvectPatchIntegrator()
Definition: EBAdvectPatchIntegrator.H:50
one dimensional dynamic array
Definition: Vector.H:53
bool m_isVelSet
Definition: EBAdvectPatchIntegrator.H:214
Definition: FaceIndex.H:28
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 setMaxMin(const Real &a_maxVal, const Real &a_minVal)
Definition: EBAdvectPatchIntegrator.H:204
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
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 slope(EBCellFAB &a_slopePrim, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box)
options for 4th ordeer slopes and flattening removed
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 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 setVelocities(const EBCellFAB &a_normalVel, const EBFluxFAB &a_advectionVel)
Definition: EBAdvectPatchIntegrator.H:105
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 interpolateFluxToCentroids(BaseIFFAB< Real > a_centroidFlux[SpaceDim], const BaseIFFAB< Real > *const a_fluxInterpolant[SpaceDim], const IntVectSet &a_irregIVS)
Definition: EBFaceFAB.H:28
Definition: EBAdvectPatchIntegrator.H:38
Real m_maxVal
Definition: EBAdvectPatchIntegrator.H:217
const int SpaceDim
Definition: SPACE.H:38
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 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)
Vector< VolIndex > m_coveredFaceMinuG4[SpaceDim]
Definition: EBAdvectPatchIntegrator.H:233
A EBFaceFAB-like container for edge-centered fluxes.
Definition: EBFluxFAB.H:25
IntVectSet m_coveredSetsPlusG4[SpaceDim]
Definition: EBAdvectPatchIntegrator.H:230
RealVect m_dx
Definition: EBAdvectPatchIntegrator.H:225
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)
Real m_minVal
Definition: EBAdvectPatchIntegrator.H:218
static int s_doingVel
Definition: EBAdvectPatchIntegrator.H:237
bool m_useLimiting
Definition: EBAdvectPatchIntegrator.H:216
void upwindSlope(EBCellFAB &a_slopeUpWi, const EBCellFAB &a_primState, const int &a_dir, const Box &a_box)
Definition: EBCellFAB.H:29
bool m_isBCSet
Definition: EBAdvectPatchIntegrator.H:221
double Real
Definition: REAL.H:33
void floorPrimitives(EBCellFAB &a_primState, const Box &a_box)
floors if m_isMaxMinSet
Box m_validBoxG4
Definition: EBAdvectPatchIntegrator.H:227
Vector< VolIndex > m_coveredFacePlusG4[SpaceDim]
Definition: EBAdvectPatchIntegrator.H:232
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 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)
IntVectSet m_coveredSetsMinuG4[SpaceDim]
Definition: EBAdvectPatchIntegrator.H:231
LoHiSide
Definition: LoHiSide.H:27
void coveredExtrapSlopes(Real &a_dq, const VolIndex &a_vof, const EBCellFAB &a_primState, const int &a_dir, const int &a_ivar)
void incrementWithSource(EBCellFAB &a_primState, const EBCellFAB &a_source, const Real &a_scale, 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)
ProblemDomain m_domain
Definition: EBAdvectPatchIntegrator.H:223
static int getDoingVel()
Definition: EBAdvectPatchIntegrator.H:181
Definition: EBPhysIBCFactory.H:25
IntVectSet m_cfivs
Definition: EBAdvectPatchIntegrator.H:226
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)
virtual void define(const ProblemDomain &a_domain, const RealVect &a_dx)=0
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:469
A Real vector in SpaceDim-dimensional space.
Definition: RealVect.H:41
Definition: DataIndex.H:114
Definition: BaseIFFAB.H:34
EBISBox m_ebisBox
Definition: EBAdvectPatchIntegrator.H:224
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)
const EBCellFAB * m_normalVelPtr
Definition: EBAdvectPatchIntegrator.H:213
EBAdvectPatchIntegrator()
weak construction is bad.
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)
static int s_curComp
these exist because special things have to be done for velocity
Definition: EBAdvectPatchIntegrator.H:236
Box m_validBox
Definition: EBAdvectPatchIntegrator.H:222
RefCountedPtr< EBPhysIBC > m_bc
Definition: EBAdvectPatchIntegrator.H:220
Vector< VolIndex > m_irregVoFs
Definition: EBAdvectPatchIntegrator.H:228
Volume of Fluid Index.
Definition: VolIndex.H:31
void setEBPhysIBC(const EBPhysIBCFactory &a_bc)
Definition: EBAdvectPatchIntegrator.H:98
void kappaDivergenceFlux(EBCellFAB &a_kappaDivF, const EBFluxFAB &a_centroidFlux, const Box &a_validBox)
virtual EBPhysIBC * create() const =0
Real bilinearFunc(const Real a_WVal[2][2], const Real &a_xd1, const Real &a_xd2)
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 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 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)
FaceStencil getInterpStencil(const FaceIndex &a_face) const
static int getCurComp()
Definition: EBAdvectPatchIntegrator.H:185
static void setDoingVel(int a_yesorno)
Definition: EBAdvectPatchIntegrator.H:176
static void setCurComp(int a_curComp)
here are a couple of awful hooks necessary to get the minutiae of the algorithm correct ...
Definition: EBAdvectPatchIntegrator.H:171