#include <NodeCGSmoother.H>
The NodeCGSmoother class implements the CG algorithm for NodeLevelOp-derived classes
Public Member Functions | |
Constructor and destructor | |
NodeCGSmoother () | |
virtual | ~NodeCGSmoother () |
virtual NodeBaseBottomSmoother * | new_bottomSmoother () const |
Parameter-setting functions | |
void | setMaxIter (int a_max_iter) |
void | setSolverTol (Real a_solverTol) |
Data modification functions | |
virtual void | doBottomSmooth (LevelData< NodeFArrayBox > &a_phi, const LevelData< NodeFArrayBox > &a_rhs, NodeLevelOp *a_levelop_ptr) |
Protected Attributes | |
int | m_maxIter |
Real | m_solverTol |
Real | m_small |
Real | m_converge_small |
NodeCGSmoother::NodeCGSmoother | ( | ) |
Default constructor.
virtual NodeCGSmoother::~NodeCGSmoother | ( | ) | [virtual] |
Destructor.
virtual NodeBaseBottomSmoother* NodeCGSmoother::new_bottomSmoother | ( | ) | const [virtual] |
this gets around the "no virtual constructor" rule
Implements NodeBaseBottomSmoother.
void NodeCGSmoother::setMaxIter | ( | int | a_max_iter | ) |
set max number of CG iterations
void NodeCGSmoother::setSolverTol | ( | Real | a_solverTol | ) |
set solver tolerance (amount residual must be decreased, etc)
virtual void NodeCGSmoother::doBottomSmooth | ( | LevelData< NodeFArrayBox > & | a_phi, | |
const LevelData< NodeFArrayBox > & | a_rhs, | |||
NodeLevelOp * | a_levelop_ptr | |||
) | [virtual] |
Perform CG smoothing of L(a_phi) = a_rhs, where L is the operator defined in a_levelop_ptr, and the preconditioner is a_levelop_ptr->levelPreconditioner().
a_phi | data at this level, to be smoothed |
a_rhs | right-hand side at this level |
a_levelop_ptr | pointer to the operator |
Implements NodeBaseBottomSmoother.
int NodeCGSmoother::m_maxIter [protected] |
max number of iterations
Real NodeCGSmoother::m_solverTol [protected] |
solver tolerance
Real NodeCGSmoother::m_small [protected] |
small parameter to check for division by zero
Real NodeCGSmoother::m_converge_small [protected] |
parameter to check for hanging