| 
    Chombo + EB
    3.2
    
   | 
 
#include <ViscousTensorOp.H>

Public Types | |
| enum | prolongationType { piecewiseConstant = 0, linearInterp, NUM_INTERP_TYPE } | 
Public Member Functions | |
| virtual void | diagonalScale (LevelData< FArrayBox > &a_rhs, bool a_kappaWeighted) | 
| virtual void | setAlphaAndBeta (const Real &a_alpha, const Real &a_beta) | 
| virtual void | diagonalScale (LevelData< FArrayBox > &a_rhs) | 
| virtual void | divideByIdentityCoef (LevelData< FArrayBox > &a_rhs) | 
| virtual | ~ViscousTensorOp () | 
| ViscousTensorOp (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsFine, const DisjointBoxLayout &a_gridsCoar, const RefCountedPtr< LevelData< FluxBox > > &a_eta, const RefCountedPtr< LevelData< FluxBox > > &a_lambda, const RefCountedPtr< LevelData< FArrayBox > > &a_acoef, Real a_alpha, Real a_beta, int a_refToFine, int a_refToCoar, const ProblemDomain &a_domain, const Real &a_dxLevel, const Real &a_dxCoar, BCFunc a_bc, Real a_safety=VTOP_DEFAULT_SAFETY, Real a_relaxTolerance=0.0, int a_relaxMinIter=1000) | |
| ViscousTensorOp (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsFine, const DisjointBoxLayout &a_gridsCoar, const RefCountedPtr< LevelData< FluxBox > > &a_eta, const RefCountedPtr< LevelData< FluxBox > > &a_lambda, const RefCountedPtr< LevelData< FArrayBox > > &a_acoef, Real a_alpha, Real a_beta, int a_refToFine, int a_refToCoar, const ProblemDomain &a_domain, const Real &a_dxLevel, const Real &a_dxCoar, BCHolder &a_bc, Real a_safety=VTOP_DEFAULT_SAFETY, Real a_relaxTolerance=0.0, int a_relaxMinIter=1000) | |
| void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout &a_gridsFine, const DisjointBoxLayout &a_gridsCoar, const RefCountedPtr< LevelData< FluxBox > > &a_eta, const RefCountedPtr< LevelData< FluxBox > > &a_lambda, const RefCountedPtr< LevelData< FArrayBox > > &a_acoef, Real a_alpha, Real a_beta, int a_refToFine, int a_refToCoar, const ProblemDomain &a_domain, const Real &a_dxLevel, const Real &a_dxCoar, BCHolder &a_bc, Real a_safety=VTOP_DEFAULT_SAFETY, Real a_relaxTolerance=0.0, int a_relaxMinIter=1000) | 
| virtual void | residual (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false) | 
| virtual void | residualNoExchange (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false) | 
| virtual void | preCond (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_residual) | 
| virtual void | applyOp (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false) | 
| virtual void | applyOpNoExchange (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false) | 
| virtual void | create (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) | 
| virtual void | createCoarsened (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs, const int &a_refRat) | 
| void | reflux (const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &residual, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) | 
| virtual void | getFlux (FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale) | 
| void | applyOpNoBoundary (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi) | 
| void | getFlux (FArrayBox &a_flux, const FArrayBox &a_data, const FArrayBox &a_gradData, const FArrayBox &a_etaFace, const FArrayBox &a_lambdaFace, const Box &a_facebox, int a_dir, int ref=1) | 
| void | computeOperatorNoBCs (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi) | 
| utility function which computes operator after all bc's have been set  More... | |
| virtual void | assign (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) | 
| virtual Real | dotProduct (const LevelData< FArrayBox > &a_1, const LevelData< FArrayBox > &a_2) | 
| virtual void | incr (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_x, Real a_scale) | 
| virtual void | axby (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_x, const LevelData< FArrayBox > &a_y, Real a, Real b) | 
| virtual void | scale (LevelData< FArrayBox > &a_lhs, const Real &a_scale) | 
| virtual Real | norm (const LevelData< FArrayBox > &a_x, int a_ord) | 
| virtual Real | dx () const | 
| virtual Real | dxCrse () const | 
| virtual void | setToZero (LevelData< FArrayBox > &a_x) | 
MGLevelOp functions  | |
| virtual void | relax (LevelData< FArrayBox > &a_e, const LevelData< FArrayBox > &a_residual, int iterations) | 
| virtual void | createCoarser (LevelData< FArrayBox > &a_coarse, const LevelData< FArrayBox > &a_fine, bool ghosted) | 
| virtual void | restrictResidual (LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_rhsFine) | 
| virtual void | prolongIncrement (LevelData< FArrayBox > &a_phiThisLevel, const LevelData< FArrayBox > &a_correctCoarse) | 
  Public Member Functions inherited from LevelTGAHelmOp< LevelData< FArrayBox >, FluxBox > | |
| LevelTGAHelmOp () | |
| LevelTGAHelmOp (bool a_isTimeIndependent) | |
| virtual | ~LevelTGAHelmOp () | 
| Destructor.  More... | |
  Public Member Functions inherited from TGAHelmOp< LevelData< FArrayBox > > | |
| TGAHelmOp () | |
| TGAHelmOp (bool a_isTimeDependent) | |
| virtual | ~TGAHelmOp () | 
| Destructor.  More... | |
| virtual void | kappaScale (LevelData< FArrayBox > &a_rhs) | 
| for eb only. kappa weight the rhs but do not multiply by the identity coefficient  More... | |
| virtual void | setTime (Real a_time) | 
| virtual void | setTime (Real a_oldTime, Real a_mu, Real a_dt) | 
| bool | isTimeDependent () const | 
| Returns true if the operator is time-dependent, false otherwise.  More... | |
| virtual LevelData< FArrayBox > & | identityCoef () | 
| Allows access to the identity coefficient data for the operator.  More... | |
  Public Member Functions inherited from AMRLevelOp< LevelData< FArrayBox > > | |
| virtual void | dumpAMR (Vector< LevelData< FArrayBox > * > &a_data, string name) | 
| virtual void | dumpLevel (LevelData< FArrayBox > &a_data, string name) | 
| AMRLevelOp () | |
| Constructor.  More... | |
| virtual void | dumpStuff (Vector< LevelData< FArrayBox > * > data, string filename) | 
| virtual | ~AMRLevelOp () | 
| Destructor.  More... | |
| virtual void | buildCopier (Copier &a_copier, const LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) | 
| virtual void | assignCopier (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs, const Copier &a_copier) | 
| virtual void | zeroCovered (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_rhs, const Copier &a_copier) | 
| virtual Real | localMaxNorm (const LevelData< FArrayBox > &a_phi) | 
| virtual void | AMRProlongS (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &a_temp, const Copier &a_copier) | 
| virtual void | AMRProlongS_2 (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &a_temp, const Copier &a_copier, const Copier &a_cornerCopier, const AMRLevelOp< LevelData< FArrayBox > > *a_crsOp) | 
| virtual void | AMRRestrictS (LevelData< FArrayBox > &a_resCoarse, const LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, LevelData< FArrayBox > &scratch, bool a_skip_res=false) | 
| virtual unsigned int | orderOfAccuracy (void) const | 
| virtual void | enforceCFConsistency (LevelData< FArrayBox > &a_coarseCorrection, const LevelData< FArrayBox > &a_correction) | 
| This routine is for operators with orderOfAccuracy()>2.  More... | |
  Public Member Functions inherited from MGLevelOp< LevelData< FArrayBox > > | |
| MGLevelOp () | |
| Constructor.  More... | |
| virtual | ~MGLevelOp () | 
| Destructor.  More... | |
| virtual void | relaxNF (LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhs, int a_iterations) | 
| specialized no-fine relax function, useful for full-multigrid schemes, defaults to regular relax  More... | |
| virtual void | restrictResidual (LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhsFine, bool homogeneous) | 
| full-multigrid version of restrictResidual, useful for FAS-type schemes. Defaults to standard restriction  More... | |
| virtual void | restrictR (LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_phiFine) | 
| simple restriction function  More... | |
| void | addObserver (MGLevelOpObserver< LevelData< FArrayBox > > *a_observer) | 
| virtual void | applyOpMg (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > *a_phiCoarse, bool a_homogeneous) | 
| Apply an operator.  More... | |
| virtual void | residualNF (LevelData< FArrayBox > &a_lhs, LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false) | 
| void | removeObserver (MGLevelOpObserver< LevelData< FArrayBox > > *a_observer) | 
| void | addCoarserObserver (MGLevelOp< LevelData< FArrayBox > > *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< FArrayBox > > &a_operator, int a_coarseningFactor) | 
| int | numObservers () const | 
| Returns the number of objects observing this operator.  More... | |
  Public Member Functions inherited from LinearOp< LevelData< FArrayBox > > | |
| virtual | ~LinearOp () | 
| virtual void | clear (LevelData< FArrayBox > &a_lhs) | 
| virtual void | assignLocal (LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs) | 
| virtual void | mDotProduct (const LevelData< FArrayBox > &a_1, const int a_sz, const LevelData< FArrayBox > a_2[], Real a_mdots[]) | 
| virtual void | write (const LevelData< FArrayBox > *a, const char *filename) | 
  Public Member Functions inherited from MGLevelOpObserver< LevelData< FArrayBox > > | |
| MGLevelOpObserver () | |
| Base level Constructor. Called by all subclasses.  More... | |
| virtual | ~MGLevelOpObserver () | 
| Destructor.  More... | |
| virtual void | operatorChanged (const MGLevelOp< LevelData< FArrayBox > > &a_operator) | 
| void | setObservee (MGLevelOp< LevelData< FArrayBox > > *a_observee) | 
| void | clearObservee () | 
AMRLevelOp functions | |
| static int | s_prolongType | 
| prolongation type  More... | |
| static bool | s_lazy_gsrb | 
| if true, only do exchange once per GSRB pass, rather than for each color  More... | |
| RefCountedPtr< LevelData< FluxBox > > | m_eta | 
| RefCountedPtr< LevelData< FluxBox > > | m_lambda | 
| RefCountedPtr< LevelData< FArrayBox > > | m_acoef | 
| Real | m_alpha | 
| Real | m_beta | 
| int | m_refToCoar | 
| int | m_refToFine | 
| BCHolder | m_bc | 
| int | m_ncomp | 
| Real | m_dx | 
| Real | m_dxCrse | 
| ProblemDomain | m_domain | 
| Real | m_safety | 
| Real | m_relaxTolerance | 
| int | m_relaxMinIter | 
| LevelData< FArrayBox > | m_grad | 
| LevelDataOps< FArrayBox > | m_levelOps | 
| Copier | m_exchangeCopier | 
| TensorCFInterp | m_interpWithCoarser | 
| LayoutData< CFIVS > | m_loCFIVS [SpaceDim] | 
| LayoutData< CFIVS > | m_hiCFIVS [SpaceDim] | 
| LayoutData< TensorFineStencilSet > | m_hiTanStencilSets [SpaceDim] | 
| LayoutData< TensorFineStencilSet > | m_loTanStencilSets [SpaceDim] | 
| Vector< IntVect > | m_colors | 
| LevelData< FArrayBox > | m_relaxCoef | 
| virtual int | refToCoarser () | 
| virtual void | AMRResidual (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) | 
| virtual void | AMRResidualNC (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) | 
| virtual void | AMRResidualNF (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC) | 
| virtual void | AMRRestrict (LevelData< FArrayBox > &a_resCoarse, const LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, bool a_skip_res=false) | 
| virtual void | AMRProlong (LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection) | 
| virtual void | AMRUpdateResidual (LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection) | 
| virtual Real | AMRNorm (const LevelData< FArrayBox > &a_coarseResid, const LevelData< FArrayBox > &a_fineResid, const int &a_refRat, const int &a_ord) | 
| virtual void | outputLevel (LevelData< FArrayBox > &a_rhs, string &a_name) | 
| virtual void | outputAMR (Vector< LevelData< FArrayBox > * > &a_rhs, string &a_name) | 
| void | homogeneousCFInterp (LevelData< FArrayBox > &a_phif) | 
| void | homogeneousCFInterpPhi (LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, int a_idir, Side::LoHiSide a_hiorlo) | 
| void | homogeneousCFInterpTanGrad (LevelData< FArrayBox > &a_tanGrad, const LevelData< FArrayBox > &a_phi, const DataIndex &a_datInd, int a_idir, Side::LoHiSide a_hiorlo) | 
| void | interpOnIVSHomo (LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, const int a_idir, const Side::LoHiSide a_hiorlo, const IntVectSet &a_interpIVS) | 
| void | AMROperator (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, bool a_homogeneousDomBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) | 
| void | AMROperatorNF (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, bool a_homogeneousBC) | 
| virtual void | AMROperatorNC (LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp) | 
| void | cellGrad (FArrayBox &a_gradPhi, const FArrayBox &a_phi, const Box &a_grid) | 
| void | cfinterp (const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phiCoarse) | 
| void | fillGrad (const LevelData< FArrayBox > &a_phiFine) | 
| These functions are part of the LevelTGA interface......  More... | |
| void | fillGradNoExchange (const LevelData< FArrayBox > &a_phiFine) | 
| optimized version of fillGrad which doesn't call exchange on phi  More... | |
| void | divergenceCC (LevelData< FArrayBox > &a_div, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phiC) | 
| take cell centered divergence of the inputs.  More... | |
| RefCountedPtr< LevelData< FluxBox > > | getEta () const | 
| access function  More... | |
| RefCountedPtr< LevelData< FluxBox > > | getLambda () const | 
| RefCountedPtr< LevelData< FArrayBox > > | getACoef () const | 
| Real | getAlpha () const | 
| Real | getBeta () const | 
| static void | loHiCenterFace (Box &a_loBox, int &a_hasLo, Box &a_hiBox, int &a_hasHi, Box &a_centerBox, const ProblemDomain &a_eblg, const Box &a_inBox, const int &a_dir) | 
| static void | getFaceDivAndGrad (FArrayBox &a_faceDiv, FArrayBox &a_faceGrad, const FArrayBox &a_data, const FArrayBox &a_gradData, const ProblemDomain &a_domain, const Box &a_faceBox, const int &a_faceDir, const Real a_dx) | 
| static void | getFluxFromDivAndGrad (FArrayBox &a_flux, const FArrayBox &a_faceDiv, const FArrayBox &a_faceGrad, const FArrayBox &a_etaFace, const FArrayBox &a_lambdaFace, const Box &a_faceBox, int a_dir) | 
| void | defineRelCoef () | 
| ViscousTensorOp () | |
| weak construction is bad  More... | |
| ViscousTensorOp (const ViscousTensorOp &a_opin) | |
| void | operator= (const ViscousTensorOp &a_opin) | 
operator is alpha a I + (divF) = alpha*acoef I + beta*div(eta(grad B + grad BT) + lambda I div B ) beta, lambda, and eta are incorporated into the flux F
      
  | 
  inlinevirtual | 
| ViscousTensorOp::ViscousTensorOp | ( | const DisjointBoxLayout & | a_grids, | 
| const DisjointBoxLayout & | a_gridsFine, | ||
| const DisjointBoxLayout & | a_gridsCoar, | ||
| const RefCountedPtr< LevelData< FluxBox > > & | a_eta, | ||
| const RefCountedPtr< LevelData< FluxBox > > & | a_lambda, | ||
| const RefCountedPtr< LevelData< FArrayBox > > & | a_acoef, | ||
| Real | a_alpha, | ||
| Real | a_beta, | ||
| int | a_refToFine, | ||
| int | a_refToCoar, | ||
| const ProblemDomain & | a_domain, | ||
| const Real & | a_dxLevel, | ||
| const Real & | a_dxCoar, | ||
| BCFunc | a_bc, | ||
| Real | a_safety = VTOP_DEFAULT_SAFETY,  | 
        ||
| Real | a_relaxTolerance = 0.0,  | 
        ||
| int | a_relaxMinIter = 1000  | 
        ||
| ) | 
| ViscousTensorOp::ViscousTensorOp | ( | const DisjointBoxLayout & | a_grids, | 
| const DisjointBoxLayout & | a_gridsFine, | ||
| const DisjointBoxLayout & | a_gridsCoar, | ||
| const RefCountedPtr< LevelData< FluxBox > > & | a_eta, | ||
| const RefCountedPtr< LevelData< FluxBox > > & | a_lambda, | ||
| const RefCountedPtr< LevelData< FArrayBox > > & | a_acoef, | ||
| Real | a_alpha, | ||
| Real | a_beta, | ||
| int | a_refToFine, | ||
| int | a_refToCoar, | ||
| const ProblemDomain & | a_domain, | ||
| const Real & | a_dxLevel, | ||
| const Real & | a_dxCoar, | ||
| BCHolder & | a_bc, | ||
| Real | a_safety = VTOP_DEFAULT_SAFETY,  | 
        ||
| Real | a_relaxTolerance = 0.0,  | 
        ||
| int | a_relaxMinIter = 1000  | 
        ||
| ) | 
      
  | 
  inlineprivate | 
      
  | 
  inlineprivate | 
References MayDay::Error().
      
  | 
  inlinevirtual | 
Scales the right hand side of the Helmholtz equation by the identity term in the operator. If you are solving rho(x) dphi/dt = L(phi), this means multiply by rho (or kappa * rho in embedded boundary calculations.
| a_rhs | The right hand side of the equation to be scaled. | 
| a_kappaWeighted | If set to true, a_rhs will be scaled by the volume fraction in addition to the identity term. | 
Reimplemented from TGAHelmOp< LevelData< FArrayBox > >.
      
  | 
  inlinevirtual | 
Sets the scaling constants in the Helmholtz equation.
| a_alpha | The scaling constant that multiplies the identity term. | 
| a_beta | The scaling constant that multiplies the derivative term. | 
Implements TGAHelmOp< LevelData< FArrayBox > >.
References defineRelCoef(), m_alpha, and m_beta.
Scales the right hand side of the Helmholtz equation by the identity term in the operator. This version assumes volume fraction weighting.
| a_rhs | The right hand side of the equation to be scaled. | 
Reimplemented from TGAHelmOp< LevelData< FArrayBox > >.
References BoxLayout::dataIterator(), LevelData< T >::disjointBoxLayout(), m_acoef, LayoutIterator::ok(), and SpaceDim.
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< FArrayBox > >.
References BoxLayout::dataIterator(), LevelData< T >::disjointBoxLayout(), m_acoef, LayoutIterator::ok(), and SpaceDim.
| void ViscousTensorOp::define | ( | const DisjointBoxLayout & | a_grids, | 
| const DisjointBoxLayout & | a_gridsFine, | ||
| const DisjointBoxLayout & | a_gridsCoar, | ||
| const RefCountedPtr< LevelData< FluxBox > > & | a_eta, | ||
| const RefCountedPtr< LevelData< FluxBox > > & | a_lambda, | ||
| const RefCountedPtr< LevelData< FArrayBox > > & | a_acoef, | ||
| Real | a_alpha, | ||
| Real | a_beta, | ||
| int | a_refToFine, | ||
| int | a_refToCoar, | ||
| const ProblemDomain & | a_domain, | ||
| const Real & | a_dxLevel, | ||
| const Real & | a_dxCoar, | ||
| BCHolder & | a_bc, | ||
| Real | a_safety = VTOP_DEFAULT_SAFETY,  | 
        ||
| Real | a_relaxTolerance = 0.0,  | 
        ||
| int | a_relaxMinIter = 1000  | 
        ||
| ) | 
Referenced by ~ViscousTensorOp(), and ViscousTensorOpFactory::~ViscousTensorOpFactory().
      
  | 
  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< FArrayBox > >.
Referenced by ~ViscousTensorOp().
      
  | 
  virtual | 
Referenced by ~ViscousTensorOp().
      
  | 
  virtual | 
Given the current state of the residual the correction, apply your preconditioner to a_cor.
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by ~ViscousTensorOp().
      
  | 
  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< FArrayBox > >.
Referenced by ~ViscousTensorOp().
      
  | 
  virtual | 
Referenced by ~ViscousTensorOp().
      
  | 
  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< FArrayBox > >.
Referenced by ~ViscousTensorOp().
      
  | 
  virtual | 
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by ~ViscousTensorOp().
| void ViscousTensorOp::reflux | ( | const LevelData< FArrayBox > & | a_phiFine, | 
| const LevelData< FArrayBox > & | a_phi, | ||
| LevelData< FArrayBox > & | residual, | ||
| AMRLevelOp< LevelData< FArrayBox > > * | a_finerOp | ||
| ) | 
Referenced by ~ViscousTensorOp().
      
  | 
  inlinevirtual | 
Implements LevelTGAHelmOp< LevelData< FArrayBox >, FluxBox >.
References FluxBox::box(), FluxBox::define(), ProblemDomain::domainBox(), m_domain, m_grad, SpaceDim, and surroundingNodes().
Referenced by applyOpNoBoundary().
      
  | 
  inlinevirtual | 
Apply the differential operator without any boundary or coarse-fine boundary conditions and no finer level
| a_ans | The result of the application of the operator to a_phi. | 
| a_phi | The data to which the operator is applied. | 
Implements TGAHelmOp< LevelData< FArrayBox > >.
References assign(), axby(), computeOperatorNoBCs(), dotProduct(), fillGrad(), getFlux(), incr(), norm(), and scale().
| void ViscousTensorOp::getFlux | ( | FArrayBox & | a_flux, | 
| const FArrayBox & | a_data, | ||
| const FArrayBox & | a_gradData, | ||
| const FArrayBox & | a_etaFace, | ||
| const FArrayBox & | a_lambdaFace, | ||
| const Box & | a_facebox, | ||
| int | a_dir, | ||
| int | ref = 1  | 
        ||
| ) | 
| void ViscousTensorOp::computeOperatorNoBCs | ( | LevelData< FArrayBox > & | a_lhs, | 
| const LevelData< FArrayBox > & | a_phi | ||
| ) | 
utility function which computes operator after all bc's have been set
Referenced by applyOpNoBoundary().
      
  | 
  virtual | 
Set a_lhs equal to a_rhs.
Implements LinearOp< LevelData< FArrayBox > >.
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< FArrayBox > >.
Referenced by applyOpNoBoundary().
      
  | 
  virtual | 
Increment by scaled amount (a_lhs += a_scale*a_x).
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by applyOpNoBoundary().
      
  | 
  virtual | 
Set input to a scaled sum (a_lhs = a_a*a_x + a_b*a_y).
Implements LinearOp< LevelData< FArrayBox > >.
Referenced by applyOpNoBoundary().
      
  | 
  virtual | 
Multiply the input by a given scale (a_lhs *= a_scale).
Implements LinearOp< LevelData< FArrayBox > >.
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< FArrayBox > >.
Referenced by applyOpNoBoundary().
      
  | 
  inlinevirtual | 
Return dx at this level of refinement
Reimplemented from LinearOp< LevelData< FArrayBox > >.
References m_dx.
      
  | 
  inlinevirtual | 
References createCoarser(), m_dxCrse, prolongIncrement(), relax(), restrictResidual(), and setToZero().
      
  | 
  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< FArrayBox > >.
Referenced by dxCrse().
      
  | 
  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< FArrayBox > >.
Referenced by dxCrse().
      
  | 
  virtual | 
calculate restricted residual a_resCoarse[2h] = I[h->2h] (rhsFine[h] - L[h](phiFine[h])
Implements MGLevelOp< LevelData< FArrayBox > >.
Referenced by dxCrse().
      
  | 
  virtual | 
correct the fine solution based on coarse correction a_phiThisLevel += I[2h->h](a_correctCoarse)
Implements MGLevelOp< LevelData< FArrayBox > >.
Referenced by dxCrse().
      
  | 
  inlinevirtual | 
returns 1 when there are no coarser AMRLevelOp objects
Implements AMRLevelOp< LevelData< FArrayBox > >.
References AMRNorm(), AMRProlong(), AMRResidual(), AMRResidualNC(), AMRResidualNF(), AMRRestrict(), AMRUpdateResidual(), and m_refToCoar.
      
  | 
  virtual | 
a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse)
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
      
  | 
  virtual | 
residual assuming no more coarser AMR levels
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
      
  | 
  virtual | 
a_residual = a_rhs - L(a_phi, a_phiCoarse)
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
      
  | 
  virtual | 
a_resCoarse = I[h-2h]( a_residual - L(a_correction, a_coarseCorrection)) it is assumed that a_resCoarse has already been filled in with the coarse version of AMRResidualNF and that this operation is free to overwrite in the overlap regions.
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
      
  | 
  virtual | 
a_correction += I[h->h](a_coarseCorrection)
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
      
  | 
  virtual | 
a_residual = a_residual - L(a_correction, a_coarseCorrection)
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
      
  | 
  virtual | 
compute norm over all cells on coarse not covered by finer
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
Referenced by refToCoarser().
      
  | 
  inlinevirtual | 
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
References writeLevelname().
Referenced by outputAMR().
      
  | 
  inlinevirtual | 
Reimplemented from AMRLevelOp< LevelData< FArrayBox > >.
References AMROperator(), AMROperatorNC(), AMROperatorNF(), cellGrad(), cfinterp(), divergenceCC(), fillGrad(), fillGradNoExchange(), getFaceDivAndGrad(), getFluxFromDivAndGrad(), homogeneousCFInterp(), homogeneousCFInterpPhi(), homogeneousCFInterpTanGrad(), interpOnIVSHomo(), loHiCenterFace(), and outputLevel().
Referenced by outputAMR().
| void ViscousTensorOp::homogeneousCFInterpPhi | ( | LevelData< FArrayBox > & | a_phif, | 
| const DataIndex & | a_datInd, | ||
| int | a_idir, | ||
| Side::LoHiSide | a_hiorlo | ||
| ) | 
does homogeneous coarse/fine interpolation for phi
Referenced by outputAMR().
| void ViscousTensorOp::homogeneousCFInterpTanGrad | ( | LevelData< FArrayBox > & | a_tanGrad, | 
| const LevelData< FArrayBox > & | a_phi, | ||
| const DataIndex & | a_datInd, | ||
| int | a_idir, | ||
| Side::LoHiSide | a_hiorlo | ||
| ) | 
does homogeneous coarse/fine interpolation for tangential gradient (needs phi ghost cells to be filled in first, so should call homogeneousCFInterpPhi first)
Referenced by outputAMR().
| void ViscousTensorOp::interpOnIVSHomo | ( | LevelData< FArrayBox > & | a_phif, | 
| const DataIndex & | a_datInd, | ||
| const int | a_idir, | ||
| const Side::LoHiSide | a_hiorlo, | ||
| const IntVectSet & | a_interpIVS | ||
| ) | 
Referenced by outputAMR().
      
  | 
  virtual | 
Apply the AMR operator, including coarse-fine matching
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by outputAMR().
      
  | 
  virtual | 
Apply the AMR operator, including coarse-fine matching. assume no finer AMR level
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by outputAMR().
      
  | 
  virtual | 
Apply the AMR operator, including coarse-fine matching assume no coarser AMR level
Implements AMRLevelOp< LevelData< FArrayBox > >.
Referenced by outputAMR().
| void ViscousTensorOp::cellGrad | ( | FArrayBox & | a_gradPhi, | 
| const FArrayBox & | a_phi, | ||
| const Box & | a_grid | ||
| ) | 
Referenced by outputAMR().
| void ViscousTensorOp::cfinterp | ( | const LevelData< FArrayBox > & | a_phiFine, | 
| const LevelData< FArrayBox > & | a_phiCoarse | ||
| ) | 
Referenced by outputAMR().
These functions are part of the LevelTGA interface......
Implements LevelTGAHelmOp< LevelData< FArrayBox >, FluxBox >.
Referenced by applyOpNoBoundary(), and outputAMR().
optimized version of fillGrad which doesn't call exchange on phi
Referenced by outputAMR().
      
  | 
  static | 
Referenced by outputAMR().
      
  | 
  static | 
Referenced by outputAMR().
      
  | 
  static | 
Referenced by ViscousBaseDomainBC::getFluxFromGrad(), and outputAMR().
| void ViscousTensorOp::divergenceCC | ( | LevelData< FArrayBox > & | a_div, | 
| const LevelData< FArrayBox > & | a_phi, | ||
| const LevelData< FArrayBox > * | a_phiC | ||
| ) | 
take cell centered divergence of the inputs.
not part of the operator evaluation. this is to test whether the divergence of b converges at h^2 as b does if b is analytically divergence-free.
Referenced by outputAMR().
      
  | 
  inline | 
access function
References m_eta.
      
  | 
  inline | 
References m_lambda.
      
  | 
  inline | 
References m_acoef.
      
  | 
  inline | 
References defineRelCoef(), and m_beta.
      
  | 
  protected | 
Referenced by getBeta(), and setAlphaAndBeta().
      
  | 
  inlineprivate | 
References MayDay::Error().
      
  | 
  static | 
prolongation type
make this public/static to make it easy to change, while also ensuring that it remains constent across all instances
      
  | 
  static | 
if true, only do exchange once per GSRB pass, rather than for each color
make this public/static to make it easy to change, while also ensuring that it remains constent across all instances
      
  | 
  protected | 
Referenced by getEta(), ~ViscousTensorOp(), and ViscousTensorOpFactory::~ViscousTensorOpFactory().
      
  | 
  protected | 
Referenced by getLambda(), ~ViscousTensorOp(), and ViscousTensorOpFactory::~ViscousTensorOpFactory().
      
  | 
  protected | 
      
  | 
  protected | 
Referenced by getAlpha(), and setAlphaAndBeta().
      
  | 
  protected | 
Referenced by getBeta(), and setAlphaAndBeta().
      
  | 
  protected | 
Referenced by refToCoarser().
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
Referenced by getFlux().
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
Referenced by ~ViscousTensorOp().
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
      
  | 
  protected | 
 1.8.13