#include <LevelNodeSolver.H>
Collaboration diagram for LevelNodeSolver:
Public Methods | |
LevelNodeSolver () | |
{\bf constructors, destructor and defines} | |
LevelNodeSolver (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_gridsCoarsePtr, const ProblemDomain &a_domain, Real a_dx, int a_refToCoarse, const NodeLevelOp *const a_opin, int a_minLength=1) | |
LevelNodeSolver (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_gridsCoarsePtr, const Box &a_domain, Real a_dx, int a_refToCoarse, const NodeLevelOp *const a_opin, int a_minLength=1) | |
virtual | ~LevelNodeSolver () |
virtual void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_gridsCoarsePtr, const ProblemDomain &a_domain, Real a_dx, int a_refToCoarse, const NodeLevelOp *const a_opin, int a_minLength=1) |
virtual void | define (const DisjointBoxLayout &a_grids, const DisjointBoxLayout *a_gridsCoarsePtr, const Box &a_domain, Real a_dx, int a_refToCoarse, const NodeLevelOp *const a_opin, int a_minLength=1) |
bool | isDefined () const |
{\bf access functions} | |
void | setnumBottomGSRB (int a_numBottomGSRB) |
{\bf parameter-setting functions} | |
void | setnumSmoothUp (int a_numSmoothUp) |
void | setnumSmoothDown (int a_numSmoothDown) |
void | setBottomSmoothing (bool a_bottomSolveFlag) |
void | setTolerance (Real a_tolerance) |
void | setOperatorTolerance (Real a_operatorTolerance) |
void | setVerbose (bool a_verbose) |
void | setMaxIter (int a_maxIter) |
void | setMinIter (int a_minIter) |
void | clearMemory () |
{\bf data modification functions} | |
void | setDefaultValues () |
void | levelSolveH (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs, bool a_initializePhiToZero=true) |
void | levelSolve (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > *a_phiCoarse, const LevelData< NodeFArrayBox > &a_rhs, bool a_initializePhiToZero=true) |
Protected Attributes | |
NodeLevelMG | m_levelMG |
NodeLevelOp * | m_levelOpPtr |
bool | m_isDefined |
DisjointBoxLayout | m_grids |
ProblemDomain | m_domain |
LevelData< NodeFArrayBox > | m_resid |
LevelData< NodeFArrayBox > | m_scratch |
LevelData< NodeFArrayBox > | m_corr |
int | m_refToCoarse |
Real | m_dx |
int | m_maxIter |
int | m_minIter |
Real | m_tolerance |
Real | m_operatorTolerance |
bool | m_bottomSolveFlag |
bool | m_verbose |
LayoutData< Vector< IntVectSet > > | m_IVSV |
LayoutData< Vector< IntVectSet > > | m_IVSVext |
LevelNodeSolver solves elliptic equations on a level using multigrid.
|
{\bf constructors, destructor and defines} Default constructor leaves LevelNodeSolver undefined. |
|
Full constructor. Calls full {\bf define} function with identical arguments. |
|
|
|
Destructor. |
|
{\bf data modification functions}
|
|
|
|
Full define function. {\bf Arguments:}\ a_grids: Grids on which solution will be computed.\ a_gridsCoarsePtr: pointer to next coarser grids, or NULL if there is no coarser level.\ a_domain: domain of solution level.\ a_dx: grid spacing at solution level.\ a_refToCoarse: refinement ratio to next coarser level. Not used if there is no coarser level.\ a_opin: operator L used in solution of L(phi)=rho.\ a_minLength: minimum side length of maximally coarsened box, or 0 if no coarsening. Set to 1 for max coarsening.\ |
|
{\bf access functions} Returns true if this object was created with the defining constructor or if define() has been called. |
|
Does a level solve on this level using multigrid and inhomogeneous bcs at interfaces. {\bf Arguments:} \ a_phi (modified): input initial guess at solution, output solution.\ a_phiCoarse (not modified): pointer to solution at next coarser level, or NULL if there is no coarser level.\ a_rhs (not modified): right-hand side.\ a_initializePhiToZero: whether to initialize guess of phi to zero.\ |
|
Does a level solve on this level using multigrid and homogeneous bcs at coarse/fine interfaces. {\bf Arguments:} \ a_phi (modified): input initial guess at solution, output solution.\ a_rhs (not modified): right-hand side.\ a_initializePhiToZero: whether to initialize guess of phi to zero.\ |
|
Sets whether smoothing is done at bottom level. Default is true. |
|
|
|
Sets max number of multigrid V-cycles to use in solution; Default is 33. |
|
Set min number of iterations. Only relevant when residual is not decreasing fast enough to satisfy the "operator tolerance". Default is 4. |
|
{\bf parameter-setting functions} Set number of smoothings on the bottom level; Default == 16. Passed to NodeLevelMG. |
|
Set number of smoothings on way down V-cycle; Default == 4. Passed to NodeLevelMG. |
|
Set number of smoothings on way up V-cycle; Default == 4. Passed to NodeLevelMG. |
|
Set "operator tolerance" of iterative solution. Iteration will stop if (new_residual/old_residual) > 1-operatorTolerance (and at least minIter iterations have been performed). Default is 1.0e-4. |
|
Sets solution tolerance. Default is 1.0e-10. |
|
Sets whether the solver gives output while solving. Default is false. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|