|
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.
|
virtual 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.
|
virtual 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.
|
virtual | ~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 | setNormType (int a_normType) |
| set norm type to use for evaluating convergence
|
void | solveAMR (Vector< LevelData< FArrayBox > * > &a_phiLevel, const Vector< LevelData< FArrayBox > * > &a_rhsLevel, bool a_initializePhiToZero=true) |
| Solves on hierarchy to tolerance m_tolerance.
|
virtual 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 |
virtual void | setDefaultValues () |
virtual void | clear () |
Vector< Real > | computeNorm (const Vector< LevelData< FArrayBox > * > &a_phiVect, int a_normType) |
LevelData< FArrayBox > & | getResid (int a_level) |
LevelData< FArrayBox > & | getCorr (int a_level) |
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 |
int | m_normType |
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.