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

#include <NWOEBViscousTensorOp.H>

Inheritance diagram for NWOEBViscousTensorOp:
Inheritance graph
[legend]

Public Member Functions

 NWOEBViscousTensorOp (const EBLevelGrid &a_eblgFine, const EBLevelGrid &a_eblg, const EBLevelGrid &a_eblgCoar, const EBLevelGrid &a_eblgCoarMG, const Real &a_alpha, const Real &a_beta, const RefCountedPtr< LevelData< EBCellFAB > > &a_acoef, const RefCountedPtr< LevelData< EBFluxFAB > > &a_eta, const RefCountedPtr< LevelData< EBFluxFAB > > &a_lambda, const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_etaIrreg, const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_lambdaIrreg, const Real &a_dx, const Real &a_dxCoar, const int &a_refToFine, const int &a_refToCoar, const RefCountedPtr< ViscousBaseDomainBC > &a_domainBC, const RefCountedPtr< ViscousBaseEBBC > &a_ebBC, const bool &a_hasMGObjects, const IntVect &a_ghostPhi, const IntVect &a_ghostRHS)
 
 NWOEBViscousTensorOp (const EBLevelGrid &a_eblg, const Real &a_alpha, const Real &a_beta, const RefCountedPtr< LevelData< EBCellFAB > > &a_acoef, const RefCountedPtr< LevelData< EBFluxFAB > > &a_eta, const RefCountedPtr< LevelData< EBFluxFAB > > &a_lambda, const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_etaIrreg, const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &a_lambdaIrreg, const Real &a_dx, const RefCountedPtr< ViscousBaseDomainBC > &a_domainBC, const RefCountedPtr< ViscousBaseEBBC > &a_ebBC, const IntVect &a_ghostPhi, const IntVect &a_ghostRHS)
 
void relaxTimed (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, TimedDataIterator &a_dit, int a_iterations)
 
virtual ~NWOEBViscousTensorOp ()
 Destructor. More...
 
virtual void setAlphaAndBeta (const Real &a_alpha, const Real &a_beta)
 for tga to reset stuff More...
 
virtual void outputLevel (LevelData< EBCellFAB > &a_rhs, string &a_name)
 
virtual void outputAMR (Vector< LevelData< EBCellFAB > * > &a_rhs, string &a_name)
 
virtual void kappaScale (LevelData< EBCellFAB > &a_rhs)
 it's tga's world—we just live in it. More...
 
void getShearStressDotGradU (LevelData< EBCellFAB > &a_source, const LevelData< EBCellFAB > &a_gradU, int a_level)
 compute (tau dot grad u) (for energy equation) More...
 
void getKappaDivSigmaU (LevelData< EBCellFAB > &a_divSigmaU, const LevelData< EBCellFAB > &a_velocity, const LevelData< EBCellFAB > *a_veloCoar, int a_level)
 compute volfrac(sigma dot grad u) (for energy equation) More...
 
void getCellCenteredCoefficients (LevelData< EBCellFAB > &a_etaCell, LevelData< EBCellFAB > &a_lambdaCell)
 
void getCCSigma (LevelData< EBCellFAB > &a_source, const LevelData< EBCellFAB > &a_gradU, const LevelData< EBCellFAB > &a_eta, const LevelData< EBCellFAB > &a_lambda)
 
virtual void diagonalScale (LevelData< EBCellFAB > &a_rhs, bool a_kappaWeighted)
 another tgaism More...
 
virtual void divideByIdentityCoef (LevelData< EBCellFAB > &a_rhs)
 
virtual void fillGrad (const LevelData< EBCellFAB > &a_phi)
 a leveltgaism More...
 
virtual void getFlux (EBFluxFAB &a_flux, const LevelData< EBCellFAB > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
 another leveltgaism More...
 
void getVelDotSigma (LevelData< EBFluxFAB > &a_velDotSigma, const LevelData< EBFluxFAB > &a_vel, const LevelData< EBFluxFAB > &a_sigma)
 
void getFlux (EBFaceFAB &a_fluxCentroid, const EBCellFAB &a_phi, const Box &a_ghostedBox, const Box &a_fabBox, const ProblemDomain &a_domain, const EBISBox &a_ebisBox, const Real &a_dx, const DataIndex &a_datInd, const int &a_idir)
 
void setTime (Real a_oldTime, Real a_mu, Real a_dt)
 
virtual void applyOpNoBoundary (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi)
 apply operator without any boundary or coarse-fine boundary conditions and no finer level More...
 
void AMRResidualNC (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
 
void AMROperatorNC (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
 
virtual void residual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousPhysBC=false)
 
virtual void preCond (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi)
 
virtual void applyOp (LevelData< EBCellFAB > &a_opPhi, const LevelData< EBCellFAB > &a_phi, bool a_homogeneousPhysBC)
 
virtual void create (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
 
virtual void createCoarsened (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const int &a_refRat)
 
Real AMRNorm (const LevelData< EBCellFAB > &a_coarResid, const LevelData< EBCellFAB > &a_fineResid, const int &a_refRat, const int &a_ord)
 
virtual void assign (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
 
virtual Real dotProduct (const LevelData< EBCellFAB > &a_1, const LevelData< EBCellFAB > &a_2)
 
virtual void incr (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, Real a_scale)
 
virtual void axby (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_x, const LevelData< EBCellFAB > &a_y, Real a_a, Real a_b)
 
virtual void scale (LevelData< EBCellFAB > &a_lhs, const Real &a_scale)
 
virtual Real norm (const LevelData< EBCellFAB > &a_rhs, int a_ord)
 
virtual Real localMaxNorm (const LevelData< EBCellFAB > &a_rhs)
 
virtual void setToZero (LevelData< EBCellFAB > &a_lhs)
 
virtual void setVal (LevelData< EBCellFAB > &a_lhs, const Real &a_value)
 
virtual void createCoarser (LevelData< EBCellFAB > &a_coarse, const LevelData< EBCellFAB > &a_fine, bool a_ghosted)
 
virtual void relax (LevelData< EBCellFAB > &a_e, const LevelData< EBCellFAB > &a_residual, int a_iterations)
 
virtual void restrictResidual (LevelData< EBCellFAB > &a_resCoarse, LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_rhsFine)
 
virtual void prolongIncrement (LevelData< EBCellFAB > &a_phiThisLevel, const LevelData< EBCellFAB > &a_correctCoarse)
 
virtual int refToCoarser ()
 
virtual int refToFiner ()
 
virtual void AMRResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
 
virtual void AMRResidualNF (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneousBC)
 
virtual void AMROperator (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, bool a_homogeneousBC, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
 
virtual void AMROperatorNF (LevelData< EBCellFAB > &a_LofPhi, const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse, bool a_homogeneousBC)
 
virtual void AMRRestrict (LevelData< EBCellFAB > &a_resCoarse, const LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection, bool a_skip_res=false)
 
virtual void AMRProlong (LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection)
 
virtual void AMRUpdateResidual (LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection)
 
void defineStencils ()
 (Re)define the stencils for the given coefficients. More...
 
void defineStencilsForTimingOnly ()
 
- Public Member Functions inherited from LevelTGAHelmOp< LevelData< EBCellFAB >, EBFluxFAB >
 LevelTGAHelmOp ()
 
 LevelTGAHelmOp (bool a_isTimeIndependent)
 
virtual ~LevelTGAHelmOp ()
 Destructor. More...
 
- Public Member Functions inherited from TGAHelmOp< LevelData< EBCellFAB > >
 TGAHelmOp ()
 
 TGAHelmOp (bool a_isTimeDependent)
 
virtual ~TGAHelmOp ()
 Destructor. More...
 
virtual void diagonalScale (LevelData< EBCellFAB > &a_rhs)
 
virtual void setTime (Real a_time)
 
bool isTimeDependent () const
 Returns true if the operator is time-dependent, false otherwise. More...
 
virtual LevelData< EBCellFAB > & identityCoef ()
 Allows access to the identity coefficient data for the operator. More...
 
- Public Member Functions inherited from AMRLevelOp< LevelData< EBCellFAB > >
virtual void dumpAMR (Vector< LevelData< EBCellFAB > * > &a_data, string name)
 
virtual void dumpLevel (LevelData< EBCellFAB > &a_data, string name)
 
 AMRLevelOp ()
 Constructor. More...
 
virtual void dumpStuff (Vector< LevelData< EBCellFAB > * > data, string filename)
 
virtual ~AMRLevelOp ()
 Destructor. More...
 
virtual void buildCopier (Copier &a_copier, const LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
 
virtual void assignCopier (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs, const Copier &a_copier)
 
virtual void zeroCovered (LevelData< EBCellFAB > &a_lhs, LevelData< EBCellFAB > &a_rhs, const Copier &a_copier)
 
virtual void AMRProlongS (LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection, LevelData< EBCellFAB > &a_temp, const Copier &a_copier)
 
virtual void AMRProlongS_2 (LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection, LevelData< EBCellFAB > &a_temp, const Copier &a_copier, const Copier &a_cornerCopier, const AMRLevelOp< LevelData< FArrayBox > > *a_crsOp)
 
virtual void AMRRestrictS (LevelData< EBCellFAB > &a_resCoarse, const LevelData< EBCellFAB > &a_residual, const LevelData< EBCellFAB > &a_correction, const LevelData< EBCellFAB > &a_coarseCorrection, LevelData< EBCellFAB > &scratch, bool a_skip_res=false)
 
virtual unsigned int orderOfAccuracy (void) const
 
virtual void enforceCFConsistency (LevelData< EBCellFAB > &a_coarseCorrection, const LevelData< EBCellFAB > &a_correction)
 This routine is for operators with orderOfAccuracy()>2. More...
 
- Public Member Functions inherited from MGLevelOp< LevelData< EBCellFAB > >
 MGLevelOp ()
 Constructor. More...
 
virtual ~MGLevelOp ()
 Destructor. More...
 
virtual void relaxNF (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > *a_phiCoarse, const LevelData< EBCellFAB > &a_rhs, int a_iterations)
 specialized no-fine relax function, useful for full-multigrid schemes, defaults to regular relax More...
 
virtual void restrictResidual (LevelData< EBCellFAB > &a_resCoarse, LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > *a_phiCoarse, const LevelData< EBCellFAB > &a_rhsFine, bool homogeneous)
 full-multigrid version of restrictResidual, useful for FAS-type schemes. Defaults to standard restriction More...
 
virtual void restrictR (LevelData< EBCellFAB > &a_phiCoarse, const LevelData< EBCellFAB > &a_phiFine)
 simple restriction function More...
 
void addObserver (MGLevelOpObserver< LevelData< EBCellFAB > > *a_observer)
 
virtual void applyOpMg (LevelData< EBCellFAB > &a_lhs, LevelData< EBCellFAB > &a_phi, LevelData< EBCellFAB > *a_phiCoarse, bool a_homogeneous)
 Apply an operator. More...
 
virtual void residualNF (LevelData< EBCellFAB > &a_lhs, LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > *a_phiCoarse, const LevelData< EBCellFAB > &a_rhs, bool a_homogeneous=false)
 
void removeObserver (MGLevelOpObserver< LevelData< EBCellFAB > > *a_observer)
 
void addCoarserObserver (MGLevelOp< LevelData< EBCellFAB > > *a_operator, int a_coarseningFactor)
 
void notifyObserversOfChange ()
 This should be called whenever the operator's data is updated. More...
 
virtual void finerOperatorChanged (const MGLevelOp< LevelData< EBCellFAB > > &a_operator, int a_coarseningFactor)
 
int numObservers () const
 Returns the number of objects observing this operator. More...
 
- Public Member Functions inherited from LinearOp< LevelData< EBCellFAB > >
virtual ~LinearOp ()
 
virtual void clear (LevelData< EBCellFAB > &a_lhs)
 
virtual void assignLocal (LevelData< EBCellFAB > &a_lhs, const LevelData< EBCellFAB > &a_rhs)
 
virtual void mDotProduct (const LevelData< EBCellFAB > &a_1, const int a_sz, const LevelData< EBCellFAB > a_2[], Real a_mdots[])
 
virtual Real dx () const
 
virtual void write (const LevelData< EBCellFAB > *a, const char *filename)
 
- Public Member Functions inherited from MGLevelOpObserver< LevelData< EBCellFAB > >
 MGLevelOpObserver ()
 Base level Constructor. Called by all subclasses. More...
 
virtual ~MGLevelOpObserver ()
 Destructor. More...
 
virtual void operatorChanged (const MGLevelOp< LevelData< EBCellFAB > > &a_operator)
 
void setObservee (MGLevelOp< LevelData< EBCellFAB > > *a_observee)
 
void clearObservee ()
 

Static Public Member Functions

static Real staticMaxNorm (const LevelData< EBCellFAB > &a_rhs, const EBLevelGrid &a_eblg)
 
static void getFaceCenteredFluxStencil (VoFStencil &a_fluxStencil, const RefCountedPtr< LevelData< EBFluxFAB > > &a_eta, const RefCountedPtr< LevelData< EBFluxFAB > > &a_lambda, const Real &a_dx, const EBLevelGrid &a_eblg, const FaceIndex &a_face, const DataIndex &a_dit, int a_ivar)
 static for code reuse in bcs More...
 
static void getFluxStencil (VoFStencil &a_fluxStencil, const RefCountedPtr< LevelData< EBFluxFAB > > &a_eta, const RefCountedPtr< LevelData< EBFluxFAB > > &a_lambda, const Real &a_dx, const EBLevelGrid &a_eblg, const FaceIndex &a_face, const DataIndex &a_dit, int a_ivar)
 static for code reuse in bcs More...
 
static void getDivergenceStencil (VoFStencil &a_divStencil, const FaceIndex &a_face, const DataIndex &a_dit, const Real &a_dx, const EBLevelGrid &a_eblg)
 static for code reuse in bcs More...
 
static void getGradientStencil (VoFStencil &a_gradStencil, int a_ivar, int a_diffDir, const FaceIndex &a_face, const DataIndex &a_dit, const Real &a_dx, const EBLevelGrid &a_eblg)
 static for code reuse in bcs More...
 
static void doLazyRelax (bool a_doLazyRelax)
 
static void setForceNoEBCF (bool a_forceNoEBCF)
 

Static Public Attributes

static int s_whichLev
 
static int s_step
 

Protected Member Functions

void applyOpIrregular (EBCellFAB &a_lhs, const EBCellFAB &a_phi, const bool &a_homogeneous, const DataIndex &a_datInd)
 
void applyOpRegular (EBCellFAB &a_lhs, const EBCellFAB &a_phi, const bool &a_homogeneous, const DataIndex &a_datInd)
 
void getFlux (FArrayBox &a_flux, const FArrayBox &a_phi, const Box &a_faceBox, const int &a_idir, const DataIndex &a_datInd)
 
void cfinterp (const LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_phiCoarse)
 
void reflux (const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, LevelData< EBCellFAB > &residual, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
 
void homogeneousCFInterp (LevelData< EBCellFAB > &a_phi)
 
void getVoFStencil (VoFStencil &a_vofStencil, const VolIndex &a_vof, const DataIndex &a_dit, int a_ivar)
 
void getDivergenceStencil (VoFStencil &a_gradStencil, const FaceIndex &a_face, const DataIndex &a_dit)
 
void getGradientStencil (VoFStencil &a_gradStencil, int a_ivar, int a_diffDir, const FaceIndex &a_face, const DataIndex &a_dit)
 
void gsrbColor (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, const IntVect &a_color)
 
void gsrbColorTimed (LevelData< EBCellFAB > &a_phi, const LevelData< EBCellFAB > &a_rhs, const IntVect &a_color, TimedDataIterator &a_dit)
 
void fillVelGhost (const EBCellFAB &a_phi, const DataIndex &a_datInd, bool a_homog) const
 
void fillVelGhost (const LevelData< EBCellFAB > &a_phi, bool a_homog) const
 
void fillVelGhostTimed (const LevelData< EBCellFAB > &a_phi, bool a_homog, TimedDataIterator &a_dit) const
 
void getFaceCenteredFluxStencil (VoFStencil &a_fluxStencil, const FaceIndex &a_face, const DataIndex &a_dit, int a_ivar)
 
void incrementFRCoar (EBFastFR &a_fr, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi)
 
void averageToCells (LevelData< EBCellFAB > &a_cellCoef, const LevelData< EBFluxFAB > &a_faceCoef, const LevelData< BaseIVFAB< Real > > &a_irregCoef)
 
void incrementFRFine (EBFastFR &a_fr, const LevelData< EBCellFAB > &a_phiFine, const LevelData< EBCellFAB > &a_phi, AMRLevelOp< LevelData< EBCellFAB > > *a_finerOp)
 
Real getSafety ()
 
virtual void calculateAlphaWeight ()
 
virtual void calculateRelaxationCoefficient ()
 
void averageCellToFace (EBFaceFAB &a_fluxData, const EBCellFAB &a_cellData, const Box &a_grid, const EBISBox &a_ebisBox, const ProblemDomain &a_domain, const DataIndex &a_dit, int isrc, int idst, int inco, bool a_interpolateToCentroid)
 
void averageCellToFace (LevelData< EBFluxFAB > &a_fluxData, const LevelData< EBCellFAB > &a_cellData, const DisjointBoxLayout &a_grids, const EBISLayout &a_ebisl, const ProblemDomain &a_domain, int isrc, int idst, int inco, bool a_interpolateToCentroid)
 
void faceCenteredAverageCellsToFaces (EBFaceFAB &a_faceData, const EBCellFAB &a_cellData, const Box &ccFluxBox, const EBISBox &a_ebisBox, const ProblemDomain &a_domain, const DataIndex &a_dit, int isrc, int idst, int inco)
 

Protected Attributes

LayoutData< RefCountedPtr< DivergenceStencil > > m_divergenceStencil
 
EBLevelGrid m_eblgFine
 
EBLevelGrid m_eblg
 
EBLevelGrid m_eblgCoar
 
EBLevelGrid m_eblgCoarMG
 
Real m_alpha
 
Real m_beta
 
LayoutData< BaseIVFAB< Real > > m_alphaDiagWeight
 
LayoutData< BaseIVFAB< Real > > m_betaDiagWeight
 
RefCountedPtr< LevelData< EBCellFAB > > m_acoef
 
RefCountedPtr< LevelData< EBFluxFAB > > m_eta
 
RefCountedPtr< LevelData< EBFluxFAB > > m_lambda
 
RefCountedPtr< LevelData< BaseIVFAB< Real > > > m_etaIrreg
 
RefCountedPtr< LevelData< BaseIVFAB< Real > > > m_lambdaIrreg
 
EBFastFR m_fastFR
 
Real m_dx
 
Real m_dxCoar
 
bool m_hasFine
 
bool m_hasCoar
 
int m_refToFine
 
int m_refToCoar
 
bool m_hasMGObjects
 
IntVect m_ghostPhi
 
IntVect m_ghostRHS
 
LayoutData< RefCountedPtr< VCAggStencil > > m_opEBStencil [CH_SPACEDIM]
 
LevelData< EBCellFABm_relCoef
 
LayoutData< VoFIteratorm_vofIterIrreg
 
LayoutData< VoFIteratorm_vofIterMulti
 
LayoutData< VoFIteratorm_vofIterDomLo [CH_SPACEDIM]
 
LayoutData< VoFIteratorm_vofIterDomHi [CH_SPACEDIM]
 
RefCountedPtr< NWOEBQuadCFInterpm_interpWithCoarser
 
EBMGAverage m_ebAverage
 
EBMGAverage m_ebAverageMG
 
EBMGInterp m_ebInterp
 
EBMGInterp m_ebInterpMG
 
RefCountedPtr< ViscousBaseDomainBCm_domainBC
 
RefCountedPtr< ViscousBaseEBBCm_ebBC
 
Vector< IntVectm_colors
 
Copier m_exchangeCopier
 
LayoutData< IntVectSetm_ivsIrregCCFlux
 
bool m_operatorForTimingOnly
 

Static Protected Attributes

static bool s_turnOffBCs
 
static bool s_forceNoEBCF
 
static bool s_doLazyRelax
 

Private Member Functions

 NWOEBViscousTensorOp ()
 weak construction is bad More...
 
 NWOEBViscousTensorOp (const NWOEBViscousTensorOp &a_opin)
 
void operator= (const NWOEBViscousTensorOp &a_opin)
 

Detailed Description

This class implements an operator that solves the equation alpha a I + (divF) = alpha a I + beta*div(eta(grad B + grad B^T) + lambda* I div B ) = rhs where beta, lambda, and eta are incorporated into the flux F. It uses the AMRLevelOp interface.

Constructor & Destructor Documentation

◆ NWOEBViscousTensorOp() [1/4]

NWOEBViscousTensorOp::NWOEBViscousTensorOp ( const EBLevelGrid a_eblgFine,
const EBLevelGrid a_eblg,
const EBLevelGrid a_eblgCoar,
const EBLevelGrid a_eblgCoarMG,
const Real a_alpha,
const Real a_beta,
const RefCountedPtr< LevelData< EBCellFAB > > &  a_acoef,
const RefCountedPtr< LevelData< EBFluxFAB > > &  a_eta,
const RefCountedPtr< LevelData< EBFluxFAB > > &  a_lambda,
const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &  a_etaIrreg,
const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &  a_lambdaIrreg,
const Real a_dx,
const Real a_dxCoar,
const int &  a_refToFine,
const int &  a_refToCoar,
const RefCountedPtr< ViscousBaseDomainBC > &  a_domainBC,
const RefCountedPtr< ViscousBaseEBBC > &  a_ebBC,
const bool &  a_hasMGObjects,
const IntVect a_ghostPhi,
const IntVect a_ghostRHS 
)

Constructs a viscous tensor operator using the given data. This constructor is for time-independent a and b coefficients.

◆ NWOEBViscousTensorOp() [2/4]

NWOEBViscousTensorOp::NWOEBViscousTensorOp ( const EBLevelGrid a_eblg,
const Real a_alpha,
const Real a_beta,
const RefCountedPtr< LevelData< EBCellFAB > > &  a_acoef,
const RefCountedPtr< LevelData< EBFluxFAB > > &  a_eta,
const RefCountedPtr< LevelData< EBFluxFAB > > &  a_lambda,
const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &  a_etaIrreg,
const RefCountedPtr< LevelData< BaseIVFAB< Real > > > &  a_lambdaIrreg,
const Real a_dx,
const RefCountedPtr< ViscousBaseDomainBC > &  a_domainBC,
const RefCountedPtr< ViscousBaseEBBC > &  a_ebBC,
const IntVect a_ghostPhi,
const IntVect a_ghostRHS 
)

minimal define. ONLY for load balancing purposes (only capable of applying the calling timed relax) alpha = 1, beta = -1. coeffs set to constants. dx forced to 1.0. BCs left in there because that can affect stencils.

◆ ~NWOEBViscousTensorOp()

virtual NWOEBViscousTensorOp::~NWOEBViscousTensorOp ( )
virtual

Destructor.

◆ NWOEBViscousTensorOp() [3/4]

NWOEBViscousTensorOp::NWOEBViscousTensorOp ( )
inlineprivate

weak construction is bad

References MayDay::Error().

◆ NWOEBViscousTensorOp() [4/4]

NWOEBViscousTensorOp::NWOEBViscousTensorOp ( const NWOEBViscousTensorOp a_opin)
inlineprivate

References MayDay::Error().

Member Function Documentation

◆ relaxTimed()

void NWOEBViscousTensorOp::relaxTimed ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
TimedDataIterator a_dit,
int  a_iterations 
)

◆ setAlphaAndBeta()

virtual void NWOEBViscousTensorOp::setAlphaAndBeta ( const Real a_alpha,
const Real a_beta 
)
virtual

for tga to reset stuff

Implements TGAHelmOp< LevelData< EBCellFAB > >.

◆ outputLevel()

virtual void NWOEBViscousTensorOp::outputLevel ( LevelData< EBCellFAB > &  a_rhs,
string &  a_name 
)
inlinevirtual

◆ outputAMR()

virtual void NWOEBViscousTensorOp::outputAMR ( Vector< LevelData< EBCellFAB > * > &  a_rhs,
string &  a_name 
)
inlinevirtual

◆ kappaScale()

virtual void NWOEBViscousTensorOp::kappaScale ( LevelData< EBCellFAB > &  a_rhs)
inlinevirtual

◆ getShearStressDotGradU()

void NWOEBViscousTensorOp::getShearStressDotGradU ( LevelData< EBCellFAB > &  a_source,
const LevelData< EBCellFAB > &  a_gradU,
int  a_level 
)

compute (tau dot grad u) (for energy equation)

Referenced by kappaScale().

◆ getKappaDivSigmaU()

void NWOEBViscousTensorOp::getKappaDivSigmaU ( LevelData< EBCellFAB > &  a_divSigmaU,
const LevelData< EBCellFAB > &  a_velocity,
const LevelData< EBCellFAB > *  a_veloCoar,
int  a_level 
)

compute volfrac(sigma dot grad u) (for energy equation)

Referenced by kappaScale().

◆ getCellCenteredCoefficients()

void NWOEBViscousTensorOp::getCellCenteredCoefficients ( LevelData< EBCellFAB > &  a_etaCell,
LevelData< EBCellFAB > &  a_lambdaCell 
)

Referenced by kappaScale().

◆ getCCSigma()

void NWOEBViscousTensorOp::getCCSigma ( LevelData< EBCellFAB > &  a_source,
const LevelData< EBCellFAB > &  a_gradU,
const LevelData< EBCellFAB > &  a_eta,
const LevelData< EBCellFAB > &  a_lambda 
)

Referenced by kappaScale().

◆ diagonalScale()

virtual void NWOEBViscousTensorOp::diagonalScale ( LevelData< EBCellFAB > &  a_rhs,
bool  a_kappaWeighted 
)
inlinevirtual

◆ divideByIdentityCoef()

virtual void NWOEBViscousTensorOp::divideByIdentityCoef ( LevelData< EBCellFAB > &  a_rhs)
inlinevirtual

Divides the right hand side of the Helmholtz equation by the identity coefficient rho(x) in the equation rho(x) dphi/dt = L(phi).

Parameters
a_rhsThe right hand side of the equation to be scaled.

Implements TGAHelmOp< LevelData< EBCellFAB > >.

References BoxLayout::dataIterator(), EBLevelGrid::getDBL(), m_acoef, m_eblg, LayoutIterator::ok(), and SpaceDim.

◆ fillGrad()

virtual void NWOEBViscousTensorOp::fillGrad ( const LevelData< EBCellFAB > &  a_phi)
inlinevirtual

◆ getFlux() [1/3]

virtual void NWOEBViscousTensorOp::getFlux ( EBFluxFAB a_flux,
const LevelData< EBCellFAB > &  a_data,
const Box a_grid,
const DataIndex a_dit,
Real  a_scale 
)
virtual

another leveltgaism

Implements LevelTGAHelmOp< LevelData< EBCellFAB >, EBFluxFAB >.

Referenced by fillGrad(), and setForceNoEBCF().

◆ getVelDotSigma()

void NWOEBViscousTensorOp::getVelDotSigma ( LevelData< EBFluxFAB > &  a_velDotSigma,
const LevelData< EBFluxFAB > &  a_vel,
const LevelData< EBFluxFAB > &  a_sigma 
)

Referenced by fillGrad().

◆ getFlux() [2/3]

void NWOEBViscousTensorOp::getFlux ( EBFaceFAB a_fluxCentroid,
const EBCellFAB a_phi,
const Box a_ghostedBox,
const Box a_fabBox,
const ProblemDomain a_domain,
const EBISBox a_ebisBox,
const Real a_dx,
const DataIndex a_datInd,
const int &  a_idir 
)

◆ setTime()

void NWOEBViscousTensorOp::setTime ( Real  a_oldTime,
Real  a_mu,
Real  a_dt 
)
virtual

Sets the time-dependent state of the operator. This version of setTime allows one to linearly interpolate coefficients across an integration step, since it accepts arguments that define where in the step it is to be updated. The default implementation calls setTime(a_oldTime + a_mu * a_dt).

Parameters
a_oldTimeThe time at the beginning of the current step.
a_muThe fraction of the current step that has elapsed.
a_dtThe size of the current step.

Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.

Referenced by fillGrad().

◆ applyOpNoBoundary()

virtual void NWOEBViscousTensorOp::applyOpNoBoundary ( LevelData< EBCellFAB > &  a_opPhi,
const LevelData< EBCellFAB > &  a_phi 
)
inlinevirtual

◆ AMRResidualNC()

void NWOEBViscousTensorOp::AMRResidualNC ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
)
virtual

a_residual = a_rhs - L(a_phiFine, a_phi) no coaser AMR level

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ AMROperatorNC()

void NWOEBViscousTensorOp::AMROperatorNC ( LevelData< EBCellFAB > &  a_LofPhi,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
)
virtual

apply AMR operator no coaser AMR level

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ residual()

virtual void NWOEBViscousTensorOp::residual ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
bool  a_homogeneous = false 
)
virtual

Say you are solving L(phi) = rhs. Make a_lhs = L(a_phi) - a_rhs. If a_homogeneous is true, evaluate the operator using homogeneous boundary conditions.

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ preCond()

virtual void NWOEBViscousTensorOp::preCond ( LevelData< EBCellFAB > &  a_cor,
const LevelData< EBCellFAB > &  a_residual 
)
virtual

Given the current state of the residual the correction, apply your preconditioner to a_cor.

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ applyOp()

virtual void NWOEBViscousTensorOp::applyOp ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_phi,
bool  a_homogeneous 
)
virtual

In the context of solving L(phi) = rhs, set a_lhs = L(a_phi). If a_homogeneous is true, evaluate the operator using homogeneous boundary conditions.

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ create()

virtual void NWOEBViscousTensorOp::create ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs 
)
virtual

Creat data holder a_lhs that mirrors a_rhs. You do not need to copy the data of a_rhs, just make a holder the same size.

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ createCoarsened()

virtual void NWOEBViscousTensorOp::createCoarsened ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs,
const int &  a_refRat 
)
virtual

◆ AMRNorm()

Real NWOEBViscousTensorOp::AMRNorm ( const LevelData< EBCellFAB > &  a_coarResid,
const LevelData< EBCellFAB > &  a_fineResid,
const int &  a_refRat,
const int &  a_ord 
)
virtual

Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ assign()

virtual void NWOEBViscousTensorOp::assign ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_rhs 
)
virtual

Set a_lhs equal to a_rhs.

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ dotProduct()

virtual Real NWOEBViscousTensorOp::dotProduct ( const LevelData< EBCellFAB > &  a_1,
const LevelData< EBCellFAB > &  a_2 
)
virtual

Compute and return the dot product of a_1 and a_2. In most contexts, this means return the sum over all data points of a_1*a_2.

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ incr()

virtual void NWOEBViscousTensorOp::incr ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_x,
Real  a_scale 
)
virtual

Increment by scaled amount (a_lhs += a_scale*a_x).

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ axby()

virtual void NWOEBViscousTensorOp::axby ( LevelData< EBCellFAB > &  a_lhs,
const LevelData< EBCellFAB > &  a_x,
const LevelData< EBCellFAB > &  a_y,
Real  a_a,
Real  a_b 
)
virtual

Set input to a scaled sum (a_lhs = a_a*a_x + a_b*a_y).

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ scale()

virtual void NWOEBViscousTensorOp::scale ( LevelData< EBCellFAB > &  a_lhs,
const Real a_scale 
)
virtual

Multiply the input by a given scale (a_lhs *= a_scale).

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ norm()

virtual Real NWOEBViscousTensorOp::norm ( const LevelData< EBCellFAB > &  a_rhs,
int  a_ord 
)
virtual

Return the norm of a_rhs. a_ord == 0 max norm, a_ord == 1 sum(abs(a_rhs)), else, L(a_ord) norm.

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ staticMaxNorm()

static Real NWOEBViscousTensorOp::staticMaxNorm ( const LevelData< EBCellFAB > &  a_rhs,
const EBLevelGrid a_eblg 
)
static

Referenced by applyOpNoBoundary().

◆ localMaxNorm()

virtual Real NWOEBViscousTensorOp::localMaxNorm ( const LevelData< EBCellFAB > &  a_rhs)
virtual

Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ setToZero()

virtual void NWOEBViscousTensorOp::setToZero ( LevelData< EBCellFAB > &  a_lhs)
virtual

Set a_lhs to zero.

Implements LinearOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ setVal()

virtual void NWOEBViscousTensorOp::setVal ( LevelData< EBCellFAB > &  a_lhs,
const Real a_value 
)
virtual

Referenced by applyOpNoBoundary().

◆ createCoarser()

virtual void NWOEBViscousTensorOp::createCoarser ( LevelData< EBCellFAB > &  a_coarse,
const LevelData< EBCellFAB > &  a_fine,
bool  ghosted 
)
virtual

Create a coarsened (by two) version of the input data. This does not include averaging the data. So if a_fine is over a Box of (0, 0, 0) (63, 63, 63), a_fine should be over a Box (0, 0, 0) (31, 31, 31).

Implements MGLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ relax()

virtual void NWOEBViscousTensorOp::relax ( LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  a_residual,
int  a_iterations 
)
virtual

Use your relaxation operator to remove the high frequency wave numbers from the correction so that it may be averaged to a coarser refinement. A point relaxtion scheme, for example takes the form a_correction -= lambda*(L(a_correction) - a_residual).

Implements MGLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ restrictResidual()

virtual void NWOEBViscousTensorOp::restrictResidual ( LevelData< EBCellFAB > &  a_resCoarse,
LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_rhsFine 
)
virtual

This does not work anymore because acoef is now wrapped in the stencil void resetACoefficient(RefCountedPtr<LevelData<EBCellFAB> >& a_acoef) { m_acoef = a_acoef; calculateAlphaWeight(); calculateRelaxationCoefficient(); } Calculate restricted residual: a_resCoarse[2h] = I[h->2h] (a_rhsFine[h] - L[h](a_phiFine[h]))

Implements MGLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ prolongIncrement()

virtual void NWOEBViscousTensorOp::prolongIncrement ( LevelData< EBCellFAB > &  a_phiThisLevel,
const LevelData< EBCellFAB > &  a_correctCoarse 
)
virtual

Correct the fine solution based on coarse correction: a_phiThisLevel += I[2h->h] (a_correctCoarse)

Implements MGLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ refToCoarser()

virtual int NWOEBViscousTensorOp::refToCoarser ( )
virtual

Refinement ratio between this level and coarser level. Returns 1 when there are no coarser AMRLevelOp objects

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ refToFiner()

virtual int NWOEBViscousTensorOp::refToFiner ( )
virtual

Refinement ratio between this level and coarser level. Returns 1 when there are no coarser AMRLevelOp objects

Referenced by applyOpNoBoundary().

◆ AMRResidual()

virtual void NWOEBViscousTensorOp::AMRResidual ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse,
const LevelData< EBCellFAB > &  a_rhs,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
)
virtual

a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ AMRResidualNF()

virtual void NWOEBViscousTensorOp::AMRResidualNF ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse,
const LevelData< EBCellFAB > &  a_rhs,
bool  a_homogeneousBC 
)
virtual

a_residual = a_rhs - L(a_phi, a_phiCoarse)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ AMROperator()

virtual void NWOEBViscousTensorOp::AMROperator ( LevelData< EBCellFAB > &  a_LofPhi,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse,
bool  a_homogeneousBC,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
)
virtual

a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ AMROperatorNF()

virtual void NWOEBViscousTensorOp::AMROperatorNF ( LevelData< EBCellFAB > &  a_LofPhi,
const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse,
bool  a_homogeneousBC 
)
virtual

a_residual = a_rhs - L(a_phi, a_phiCoarse)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ AMRRestrict()

virtual void NWOEBViscousTensorOp::AMRRestrict ( LevelData< EBCellFAB > &  a_resCoarse,
const LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  a_coarseCorrection,
bool  a_skip_res = false 
)
virtual

a_resCoarse = I[h-2h] (a_residual - L(a_correction, a_coarseCorrection))

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ AMRProlong()

virtual void NWOEBViscousTensorOp::AMRProlong ( LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  a_coarseCorrection 
)
virtual

a_correction += I[2h->h](a_coarseCorrection)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ AMRUpdateResidual()

virtual void NWOEBViscousTensorOp::AMRUpdateResidual ( LevelData< EBCellFAB > &  a_residual,
const LevelData< EBCellFAB > &  a_correction,
const LevelData< EBCellFAB > &  a_coarseCorrection 
)
virtual

a_residual = a_residual - L(a_correction, a_coarseCorrection)

Implements AMRLevelOp< LevelData< EBCellFAB > >.

Referenced by applyOpNoBoundary().

◆ getFaceCenteredFluxStencil() [1/2]

static void NWOEBViscousTensorOp::getFaceCenteredFluxStencil ( VoFStencil a_fluxStencil,
const RefCountedPtr< LevelData< EBFluxFAB > > &  a_eta,
const RefCountedPtr< LevelData< EBFluxFAB > > &  a_lambda,
const Real a_dx,
const EBLevelGrid a_eblg,
const FaceIndex a_face,
const DataIndex a_dit,
int  a_ivar 
)
static

static for code reuse in bcs

Referenced by applyOpNoBoundary(), and setForceNoEBCF().

◆ getFluxStencil()

static void NWOEBViscousTensorOp::getFluxStencil ( VoFStencil a_fluxStencil,
const RefCountedPtr< LevelData< EBFluxFAB > > &  a_eta,
const RefCountedPtr< LevelData< EBFluxFAB > > &  a_lambda,
const Real a_dx,
const EBLevelGrid a_eblg,
const FaceIndex a_face,
const DataIndex a_dit,
int  a_ivar 
)
static

static for code reuse in bcs

Referenced by applyOpNoBoundary().

◆ getDivergenceStencil() [1/2]

static void NWOEBViscousTensorOp::getDivergenceStencil ( VoFStencil a_divStencil,
const FaceIndex a_face,
const DataIndex a_dit,
const Real a_dx,
const EBLevelGrid a_eblg 
)
static

static for code reuse in bcs

Referenced by applyOpNoBoundary(), and setForceNoEBCF().

◆ getGradientStencil() [1/2]

static void NWOEBViscousTensorOp::getGradientStencil ( VoFStencil a_gradStencil,
int  a_ivar,
int  a_diffDir,
const FaceIndex a_face,
const DataIndex a_dit,
const Real a_dx,
const EBLevelGrid a_eblg 
)
static

static for code reuse in bcs

Referenced by applyOpNoBoundary(), and setForceNoEBCF().

◆ doLazyRelax()

static void NWOEBViscousTensorOp::doLazyRelax ( bool  a_doLazyRelax)
inlinestatic

References s_doLazyRelax.

◆ setForceNoEBCF()

static void NWOEBViscousTensorOp::setForceNoEBCF ( bool  a_forceNoEBCF)
inlinestatic

◆ defineStencils()

void NWOEBViscousTensorOp::defineStencils ( )

(Re)define the stencils for the given coefficients.

Referenced by setForceNoEBCF().

◆ defineStencilsForTimingOnly()

void NWOEBViscousTensorOp::defineStencilsForTimingOnly ( )

Referenced by setForceNoEBCF().

◆ applyOpIrregular()

void NWOEBViscousTensorOp::applyOpIrregular ( EBCellFAB a_lhs,
const EBCellFAB a_phi,
const bool &  a_homogeneous,
const DataIndex a_datInd 
)
protected

Referenced by setForceNoEBCF().

◆ applyOpRegular()

void NWOEBViscousTensorOp::applyOpRegular ( EBCellFAB a_lhs,
const EBCellFAB a_phi,
const bool &  a_homogeneous,
const DataIndex a_datInd 
)
protected

Referenced by setForceNoEBCF().

◆ getFlux() [3/3]

void NWOEBViscousTensorOp::getFlux ( FArrayBox a_flux,
const FArrayBox a_phi,
const Box a_faceBox,
const int &  a_idir,
const DataIndex a_datInd 
)
protected

◆ cfinterp()

void NWOEBViscousTensorOp::cfinterp ( const LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_phiCoarse 
)
protected

Referenced by setForceNoEBCF().

◆ reflux()

void NWOEBViscousTensorOp::reflux ( const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
LevelData< EBCellFAB > &  residual,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
)
protected

Referenced by setForceNoEBCF().

◆ homogeneousCFInterp()

void NWOEBViscousTensorOp::homogeneousCFInterp ( LevelData< EBCellFAB > &  a_phi)
protected

Referenced by setForceNoEBCF().

◆ getVoFStencil()

void NWOEBViscousTensorOp::getVoFStencil ( VoFStencil a_vofStencil,
const VolIndex a_vof,
const DataIndex a_dit,
int  a_ivar 
)
protected

Referenced by setForceNoEBCF().

◆ getDivergenceStencil() [2/2]

void NWOEBViscousTensorOp::getDivergenceStencil ( VoFStencil a_gradStencil,
const FaceIndex a_face,
const DataIndex a_dit 
)
protected

◆ getGradientStencil() [2/2]

void NWOEBViscousTensorOp::getGradientStencil ( VoFStencil a_gradStencil,
int  a_ivar,
int  a_diffDir,
const FaceIndex a_face,
const DataIndex a_dit 
)
protected

◆ gsrbColor()

void NWOEBViscousTensorOp::gsrbColor ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
const IntVect a_color 
)
protected

Referenced by setForceNoEBCF().

◆ gsrbColorTimed()

void NWOEBViscousTensorOp::gsrbColorTimed ( LevelData< EBCellFAB > &  a_phi,
const LevelData< EBCellFAB > &  a_rhs,
const IntVect a_color,
TimedDataIterator a_dit 
)
protected

Referenced by setForceNoEBCF().

◆ fillVelGhost() [1/2]

void NWOEBViscousTensorOp::fillVelGhost ( const EBCellFAB a_phi,
const DataIndex a_datInd,
bool  a_homog 
) const
protected

Referenced by setForceNoEBCF().

◆ fillVelGhost() [2/2]

void NWOEBViscousTensorOp::fillVelGhost ( const LevelData< EBCellFAB > &  a_phi,
bool  a_homog 
) const
protected

◆ fillVelGhostTimed()

void NWOEBViscousTensorOp::fillVelGhostTimed ( const LevelData< EBCellFAB > &  a_phi,
bool  a_homog,
TimedDataIterator a_dit 
) const
protected

Referenced by setForceNoEBCF().

◆ getFaceCenteredFluxStencil() [2/2]

void NWOEBViscousTensorOp::getFaceCenteredFluxStencil ( VoFStencil a_fluxStencil,
const FaceIndex a_face,
const DataIndex a_dit,
int  a_ivar 
)
protected

◆ incrementFRCoar()

void NWOEBViscousTensorOp::incrementFRCoar ( EBFastFR a_fr,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi 
)
protected

Referenced by setForceNoEBCF().

◆ averageToCells()

void NWOEBViscousTensorOp::averageToCells ( LevelData< EBCellFAB > &  a_cellCoef,
const LevelData< EBFluxFAB > &  a_faceCoef,
const LevelData< BaseIVFAB< Real > > &  a_irregCoef 
)
protected

Referenced by setForceNoEBCF().

◆ incrementFRFine()

void NWOEBViscousTensorOp::incrementFRFine ( EBFastFR a_fr,
const LevelData< EBCellFAB > &  a_phiFine,
const LevelData< EBCellFAB > &  a_phi,
AMRLevelOp< LevelData< EBCellFAB > > *  a_finerOp 
)
protected

Referenced by setForceNoEBCF().

◆ getSafety()

Real NWOEBViscousTensorOp::getSafety ( )
protected

◆ calculateAlphaWeight()

virtual void NWOEBViscousTensorOp::calculateAlphaWeight ( )
protectedvirtual

◆ calculateRelaxationCoefficient()

virtual void NWOEBViscousTensorOp::calculateRelaxationCoefficient ( )
protectedvirtual

◆ averageCellToFace() [1/2]

void NWOEBViscousTensorOp::averageCellToFace ( EBFaceFAB a_fluxData,
const EBCellFAB a_cellData,
const Box a_grid,
const EBISBox a_ebisBox,
const ProblemDomain a_domain,
const DataIndex a_dit,
int  isrc,
int  idst,
int  inco,
bool  a_interpolateToCentroid 
)
protected

◆ averageCellToFace() [2/2]

void NWOEBViscousTensorOp::averageCellToFace ( LevelData< EBFluxFAB > &  a_fluxData,
const LevelData< EBCellFAB > &  a_cellData,
const DisjointBoxLayout a_grids,
const EBISLayout a_ebisl,
const ProblemDomain a_domain,
int  isrc,
int  idst,
int  inco,
bool  a_interpolateToCentroid 
)
protected

◆ faceCenteredAverageCellsToFaces()

void NWOEBViscousTensorOp::faceCenteredAverageCellsToFaces ( EBFaceFAB a_faceData,
const EBCellFAB a_cellData,
const Box ccFluxBox,
const EBISBox a_ebisBox,
const ProblemDomain a_domain,
const DataIndex a_dit,
int  isrc,
int  idst,
int  inco 
)
protected

◆ operator=()

void NWOEBViscousTensorOp::operator= ( const NWOEBViscousTensorOp a_opin)
inlineprivate

References MayDay::Error().

Member Data Documentation

◆ s_whichLev

int NWOEBViscousTensorOp::s_whichLev
static

Referenced by outputAMR(), and outputLevel().

◆ s_step

int NWOEBViscousTensorOp::s_step
static

Referenced by outputAMR(), and outputLevel().

◆ s_turnOffBCs

bool NWOEBViscousTensorOp::s_turnOffBCs
staticprotected

Referenced by applyOpNoBoundary().

◆ s_forceNoEBCF

bool NWOEBViscousTensorOp::s_forceNoEBCF
staticprotected

Referenced by setForceNoEBCF().

◆ s_doLazyRelax

bool NWOEBViscousTensorOp::s_doLazyRelax
staticprotected

Referenced by doLazyRelax().

◆ m_divergenceStencil

LayoutData<RefCountedPtr<DivergenceStencil> > NWOEBViscousTensorOp::m_divergenceStencil
protected

◆ m_eblgFine

EBLevelGrid NWOEBViscousTensorOp::m_eblgFine
protected

◆ m_eblg

EBLevelGrid NWOEBViscousTensorOp::m_eblg
protected

◆ m_eblgCoar

EBLevelGrid NWOEBViscousTensorOp::m_eblgCoar
protected

◆ m_eblgCoarMG

EBLevelGrid NWOEBViscousTensorOp::m_eblgCoarMG
protected

◆ m_alpha

Real NWOEBViscousTensorOp::m_alpha
protected

◆ m_beta

Real NWOEBViscousTensorOp::m_beta
protected

◆ m_alphaDiagWeight

LayoutData<BaseIVFAB<Real> > NWOEBViscousTensorOp::m_alphaDiagWeight
protected

◆ m_betaDiagWeight

LayoutData<BaseIVFAB<Real> > NWOEBViscousTensorOp::m_betaDiagWeight
protected

◆ m_acoef

RefCountedPtr<LevelData<EBCellFAB> > NWOEBViscousTensorOp::m_acoef
protected

"Current" (time-interpolated) value of the a coefficient. For a time-independent a coefficient, this is where the coefficient lives.

Referenced by diagonalScale(), and divideByIdentityCoef().

◆ m_eta

RefCountedPtr<LevelData<EBFluxFAB> > NWOEBViscousTensorOp::m_eta
protected

◆ m_lambda

RefCountedPtr<LevelData<EBFluxFAB> > NWOEBViscousTensorOp::m_lambda
protected

◆ m_etaIrreg

RefCountedPtr<LevelData<BaseIVFAB<Real> > > NWOEBViscousTensorOp::m_etaIrreg
protected

◆ m_lambdaIrreg

RefCountedPtr<LevelData<BaseIVFAB<Real> > > NWOEBViscousTensorOp::m_lambdaIrreg
protected

◆ m_fastFR

EBFastFR NWOEBViscousTensorOp::m_fastFR
protected

◆ m_dx

Real NWOEBViscousTensorOp::m_dx
protected

◆ m_dxCoar

Real NWOEBViscousTensorOp::m_dxCoar
protected

◆ m_hasFine

bool NWOEBViscousTensorOp::m_hasFine
protected

◆ m_hasCoar

bool NWOEBViscousTensorOp::m_hasCoar
protected

◆ m_refToFine

int NWOEBViscousTensorOp::m_refToFine
protected

◆ m_refToCoar

int NWOEBViscousTensorOp::m_refToCoar
protected

◆ m_hasMGObjects

bool NWOEBViscousTensorOp::m_hasMGObjects
protected

◆ m_ghostPhi

IntVect NWOEBViscousTensorOp::m_ghostPhi
protected

◆ m_ghostRHS

IntVect NWOEBViscousTensorOp::m_ghostRHS
protected

◆ m_opEBStencil

LayoutData<RefCountedPtr<VCAggStencil> > NWOEBViscousTensorOp::m_opEBStencil[CH_SPACEDIM]
protected

◆ m_relCoef

LevelData<EBCellFAB> NWOEBViscousTensorOp::m_relCoef
protected

◆ m_vofIterIrreg

LayoutData<VoFIterator > NWOEBViscousTensorOp::m_vofIterIrreg
protected

◆ m_vofIterMulti

LayoutData<VoFIterator > NWOEBViscousTensorOp::m_vofIterMulti
protected

◆ m_vofIterDomLo

LayoutData<VoFIterator > NWOEBViscousTensorOp::m_vofIterDomLo[CH_SPACEDIM]
protected

◆ m_vofIterDomHi

LayoutData<VoFIterator > NWOEBViscousTensorOp::m_vofIterDomHi[CH_SPACEDIM]
protected

◆ m_interpWithCoarser

RefCountedPtr<NWOEBQuadCFInterp> NWOEBViscousTensorOp::m_interpWithCoarser
protected

◆ m_ebAverage

EBMGAverage NWOEBViscousTensorOp::m_ebAverage
protected

◆ m_ebAverageMG

EBMGAverage NWOEBViscousTensorOp::m_ebAverageMG
protected

◆ m_ebInterp

EBMGInterp NWOEBViscousTensorOp::m_ebInterp
protected

◆ m_ebInterpMG

EBMGInterp NWOEBViscousTensorOp::m_ebInterpMG
protected

◆ m_domainBC

RefCountedPtr<ViscousBaseDomainBC> NWOEBViscousTensorOp::m_domainBC
protected

◆ m_ebBC

RefCountedPtr<ViscousBaseEBBC> NWOEBViscousTensorOp::m_ebBC
protected

◆ m_colors

Vector<IntVect> NWOEBViscousTensorOp::m_colors
protected

◆ m_exchangeCopier

Copier NWOEBViscousTensorOp::m_exchangeCopier
protected

◆ m_ivsIrregCCFlux

LayoutData<IntVectSet> NWOEBViscousTensorOp::m_ivsIrregCCFlux
protected

◆ m_operatorForTimingOnly

bool NWOEBViscousTensorOp::m_operatorForTimingOnly
protected

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