|
Public Member Functions |
| | AMRSolver () |
| | Creates a AMRSolver whose internal state is undefined.
|
| | AMRSolver (const Vector< DisjointBoxLayout > &a_gridsLevel, const Vector< Box > &a_domainLevel, const Vector< Real > &a_dxLevel, const Vector< int > &a_refRatio, int a_numLevels, int a_lBase, const LevelOp *const a_opin, int a_ncomp=1, bool a_limitCoarsening=false) |
| | Creates a fully-defined AMRSolver.
|
| | AMRSolver (const Vector< DisjointBoxLayout > &a_gridsLevel, const Vector< ProblemDomain > &a_domainLevel, const Vector< Real > &a_dxLevel, const Vector< int > &a_refRatio, int a_numLevels, int a_lBase, const LevelOp *const a_opin, int a_ncomp=1, bool a_limitCoarsening=false) |
| | Creates a fully-defined AMRSolver.
|
| void | define (const Vector< DisjointBoxLayout > &a_gridsLevel, const Vector< Box > &a_domainLevel, const Vector< Real > &a_dxLevel, const Vector< int > &a_refRatio, int a_numLevels, int a_lBase, const LevelOp *const a_opin, int a_ncomp=1, bool a_limitCoarsening=false) |
| | Defines AMRSolver object's internal state.
|
| void | define (const Vector< DisjointBoxLayout > &a_gridsLevel, const Vector< ProblemDomain > &a_domainLevel, const Vector< Real > &a_dxLevel, const Vector< int > &a_refRatio, int a_numLevels, int a_lBase, const LevelOp *const a_opin, int a_ncomp=1, bool a_limitCoarsening=false) |
| | Defines AMRSolver object's internal state.
|
| | ~AMRSolver () |
| | Destructor.
|
| bool | isDefined () const |
| | Returns true if full define function has been called.
|
| void | setNumSmoothUp (int a_numSmoothUp) |
| | Set number of multigrid smoothings on way up v-cycle. Default is 4.
|
| void | setNumSmoothDown (int a_numSmoothDown) |
| | Set number of multigrid smoothings on way down v-cycle; Default is 4.
|
| void | setTolerance (Real a_tolerance) |
| | Set tolerance of iterative solution. Default is 1.0e-10.
|
| void | setOperatorTolerance (Real a_operatorTolerance) |
| | Set "operator tolerance" of iterative solution.
|
| void | setMaxIter (int a_maxIter) |
| | Set max number of iterations. Default is 42.
|
| void | setMinIter (int a_minIter) |
| | Set min number of iterations.
|
| void | setNumVCyclesBottom (int a_numVCycleBottom) |
| | Set the number of V-cycles performed at the bottom of the AMR v-cycle.
|
| void | setConvergenceMetric (Real a_metric, int a_comp) |
| | set the convergence metrics (if appropriate) for this problem
|
| void | solveAMR (Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel, bool a_initializePhiToZero=true) |
| | Solves on hierarchy to tolerance m_tolerance.
|
| void | AMRVCycleMG (Vector< LevelData< FArrayBox > * > &a_corrLevel, const Vector< LevelData< FArrayBox > * > &a_residLevel) |
| | Does one relaxation V-cycle using a MG solver.
|
| Vector< Real > | computeResidualNorm (Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel, int a_normType) |
| | Calculate norm of multilevel residual on levels lBase to lmax.
|
| Vector< Real > | computeResidualNorm (Vector< LevelData< FArrayBox > * > &a_residLevel, Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel, int a_normType) |
| | Calculate norm of multilevel residual on levels lBase to lmax.
|
| void | computeAMRResidual (Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel, LevelData< FArrayBox > &a_res, int a_ilev) |
| | Calculate multilevel residual on level ilev.
|
| void | applyAMROperator (Vector< LevelData< FArrayBox > * > &a_phiLevel, LevelData< FArrayBox > &a_LofPhi, int a_ilev) |
| | Calculate multilevel L(phi). includes refluxing and all that.
|
| void | applyAMROperatorHphys (Vector< LevelData< FArrayBox > * > &a_phiLevel, LevelData< FArrayBox > &a_LofPhi, int a_ilev) |
| | Calculate multilevel L(phi) with homogeneous physical BCs.
|
| void | setVerbose (bool a_verbose) |
| | set whether the solver does i/o while solving. default is true
|
Protected Member Functions |
| void | setDefaultValues () |
| void | clear () |
| Vector< Real > | computeNorm (const Vector< LevelData< FArrayBox > * > &a_phiVect, int a_normType) |
Protected Attributes |
| Real | m_errorTolerance |
| Real | m_tolerance |
| Vector< Real > | m_convergenceMetrics |
| Real | m_operatorTolerance |
| int | m_numLevels |
| int | m_finestLevel |
| Vector< int > | m_refRatio |
| Vector< Real > | m_dxLevel |
| Vector< DisjointBoxLayout > | m_gridsLevel |
| Vector< ProblemDomain > | m_domainLevel |
| int | m_maxIter |
| int | m_minIter |
| int | m_numSmoothUp |
| int | m_numVCyclesBottom |
| int | m_numSmoothDown |
| Vector< AMRLevelMG * > | m_amrmgLevel |
| bool | m_isDefined |
| LevelSolver | m_levelSolver |
| int | m_lBase |
| int | m_ncomp |
| bool | m_verbose |
Friends |
| class | AMRLevelMG |
AMRSolver manages the AMR/multigrid solution to the elliptic equation on a multiple level grid that satisfies certain proper nesting conditions. It can be used either as a solver, or to apply the AMR / multigrid V-cycle as a preconditioner for some other iterative method, such as a Krylov method.