Chombo + EB
3.2
|
#include <NWOEBViscousTensorOp.H>
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) |
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) |
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.
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::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.
|
virtual |
Destructor.
|
inlineprivate |
weak construction is bad
References MayDay::Error().
|
inlineprivate |
References MayDay::Error().
void NWOEBViscousTensorOp::relaxTimed | ( | LevelData< EBCellFAB > & | a_phi, |
const LevelData< EBCellFAB > & | a_rhs, | ||
TimedDataIterator & | a_dit, | ||
int | a_iterations | ||
) |
|
virtual |
for tga to reset stuff
Implements TGAHelmOp< LevelData< EBCellFAB > >.
|
inlinevirtual |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
References s_step, s_whichLev, and writeEBLevelname().
|
inlinevirtual |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
References s_step, s_whichLev, and writeEBAMRname().
it's tga's world—we just live in it.
Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.
References getCCSigma(), getCellCenteredCoefficients(), getKappaDivSigmaU(), getShearStressDotGradU(), and EBLevelDataOps::kappaWeight().
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().
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().
void NWOEBViscousTensorOp::getCellCenteredCoefficients | ( | LevelData< EBCellFAB > & | a_etaCell, |
LevelData< EBCellFAB > & | a_lambdaCell | ||
) |
Referenced by kappaScale().
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().
|
inlinevirtual |
another tgaism
Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.
References BoxLayout::dataIterator(), EBLevelGrid::getDBL(), EBLevelDataOps::kappaWeight(), m_acoef, m_eblg, LayoutIterator::ok(), and SpaceDim.
|
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).
a_rhs | The 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.
a leveltgaism
Implements LevelTGAHelmOp< LevelData< EBCellFAB >, EBFluxFAB >.
References getFlux(), getVelDotSigma(), and setTime().
|
virtual |
another leveltgaism
Implements LevelTGAHelmOp< LevelData< EBCellFAB >, EBFluxFAB >.
Referenced by fillGrad(), and setForceNoEBCF().
void NWOEBViscousTensorOp::getVelDotSigma | ( | LevelData< EBFluxFAB > & | a_velDotSigma, |
const LevelData< EBFluxFAB > & | a_vel, | ||
const LevelData< EBFluxFAB > & | a_sigma | ||
) |
Referenced by fillGrad().
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 | ||
) |
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).
a_oldTime | The time at the beginning of the current step. |
a_mu | The fraction of the current step that has elapsed. |
a_dt | The size of the current step. |
Reimplemented from TGAHelmOp< LevelData< EBCellFAB > >.
Referenced by fillGrad().
|
inlinevirtual |
apply operator without any boundary or coarse-fine boundary conditions and no finer level
Implements TGAHelmOp< LevelData< EBCellFAB > >.
References AMRNorm(), AMROperator(), AMROperatorNC(), AMROperatorNF(), AMRProlong(), AMRResidual(), AMRResidualNC(), AMRResidualNF(), AMRRestrict(), AMRUpdateResidual(), applyOp(), assign(), axby(), create(), createCoarsened(), createCoarser(), dotProduct(), getDivergenceStencil(), getFaceCenteredFluxStencil(), getFluxStencil(), getGradientStencil(), incr(), localMaxNorm(), norm(), preCond(), prolongIncrement(), refToCoarser(), refToFiner(), relax(), residual(), restrictResidual(), s_turnOffBCs, scale(), setToZero(), setVal(), and staticMaxNorm().
|
virtual |
a_residual = a_rhs - L(a_phiFine, a_phi) no coaser AMR level
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
apply AMR operator no coaser AMR level
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
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().
|
virtual |
Given the current state of the residual the correction, apply your preconditioner to a_cor.
Implements LinearOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
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().
|
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().
|
virtual |
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
Set a_lhs equal to a_rhs.
Implements LinearOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
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().
|
virtual |
Increment by scaled amount (a_lhs += a_scale*a_x).
Implements LinearOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
Set input to a scaled sum (a_lhs = a_a*a_x + a_b*a_y).
Implements LinearOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
Multiply the input by a given scale (a_lhs *= a_scale).
Implements LinearOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
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().
|
static |
Referenced by applyOpNoBoundary().
Reimplemented from AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
Set a_lhs to zero.
Implements LinearOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
Referenced by applyOpNoBoundary().
|
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().
|
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().
|
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().
|
virtual |
Correct the fine solution based on coarse correction: a_phiThisLevel += I[2h->h] (a_correctCoarse)
Implements MGLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
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().
|
virtual |
Refinement ratio between this level and coarser level. Returns 1 when there are no coarser AMRLevelOp objects
Referenced by applyOpNoBoundary().
|
virtual |
a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
a_residual = a_rhs - L(a_phi, a_phiCoarse)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
a_residual = a_rhs - L(a_phi, a_phiCoarse)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
a_resCoarse = I[h-2h] (a_residual - L(a_correction, a_coarseCorrection))
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
a_correction += I[2h->h](a_coarseCorrection)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
virtual |
a_residual = a_residual - L(a_correction, a_coarseCorrection)
Implements AMRLevelOp< LevelData< EBCellFAB > >.
Referenced by applyOpNoBoundary().
|
static |
static for code reuse in bcs
Referenced by applyOpNoBoundary(), and setForceNoEBCF().
|
static |
static for code reuse in bcs
Referenced by applyOpNoBoundary().
|
static |
static for code reuse in bcs
Referenced by applyOpNoBoundary(), and setForceNoEBCF().
|
static |
static for code reuse in bcs
Referenced by applyOpNoBoundary(), and setForceNoEBCF().
|
inlinestatic |
References s_doLazyRelax.
|
inlinestatic |
References applyOpIrregular(), applyOpRegular(), averageToCells(), cfinterp(), defineStencils(), defineStencilsForTimingOnly(), fillVelGhost(), fillVelGhostTimed(), getDivergenceStencil(), getFaceCenteredFluxStencil(), getFlux(), getGradientStencil(), getVoFStencil(), gsrbColor(), gsrbColorTimed(), homogeneousCFInterp(), incrementFRCoar(), incrementFRFine(), reflux(), and s_forceNoEBCF.
void NWOEBViscousTensorOp::defineStencils | ( | ) |
(Re)define the stencils for the given coefficients.
Referenced by setForceNoEBCF().
void NWOEBViscousTensorOp::defineStencilsForTimingOnly | ( | ) |
Referenced by setForceNoEBCF().
|
protected |
Referenced by setForceNoEBCF().
|
protected |
Referenced by setForceNoEBCF().
|
protected |
|
protected |
Referenced by setForceNoEBCF().
|
protected |
Referenced by setForceNoEBCF().
Referenced by setForceNoEBCF().
|
protected |
Referenced by setForceNoEBCF().
|
protected |
|
protected |
|
protected |
Referenced by setForceNoEBCF().
|
protected |
Referenced by setForceNoEBCF().
|
protected |
Referenced by setForceNoEBCF().
|
protected |
|
protected |
Referenced by setForceNoEBCF().
|
protected |
|
protected |
Referenced by setForceNoEBCF().
|
protected |
Referenced by setForceNoEBCF().
|
protected |
Referenced by setForceNoEBCF().
|
protected |
|
protectedvirtual |
|
protectedvirtual |
|
protected |
|
protected |
|
protected |
|
inlineprivate |
References MayDay::Error().
|
static |
Referenced by outputAMR(), and outputLevel().
|
static |
Referenced by outputAMR(), and outputLevel().
|
staticprotected |
Referenced by applyOpNoBoundary().
|
staticprotected |
Referenced by setForceNoEBCF().
|
staticprotected |
Referenced by doLazyRelax().
|
protected |
|
protected |
|
protected |
Referenced by diagonalScale(), and divideByIdentityCoef().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
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().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |