#include <BiCGStabSolver.H>
Public Member Functions | |
BiCGStabSolver () | |
virtual | ~BiCGStabSolver () |
virtual void | setHomogeneous (bool a_homogeneous) |
virtual void | define (LinearOp< T > *a_op, bool a_homogeneous) |
virtual void | solve (T &a_phi, const T &a_rhs) |
solve the equation. | |
virtual void | setConvergenceMetrics (Real a_metric, Real a_tolerance) |
Set a convergence metric, along with solver tolerance, if desired. | |
Public Attributes | |
bool | m_homogeneous |
LinearOp< T > * | m_op |
int | m_imax |
int | m_verbosity |
Real | m_eps |
Real | m_reps |
Real | m_convergenceMetric |
Real | m_hang |
int | m_exitStatus |
Real | m_small |
int | m_numRestarts |
int | m_normType |
BiCGStabSolver< T >::BiCGStabSolver | ( | ) | [inline] |
BiCGStabSolver< T >::~BiCGStabSolver | ( | ) | [inline, virtual] |
References BiCGStabSolver< T >::m_op.
virtual void BiCGStabSolver< T >::setHomogeneous | ( | bool | a_homogeneous | ) | [inline, virtual] |
reset whether the solver is homogeneous.
Implements LinearSolver< T >.
Reimplemented in MergeSolver< T >.
void BiCGStabSolver< T >::define | ( | LinearOp< T > * | a_op, | |
bool | a_homogeneous | |||
) | [inline, virtual] |
define the solver. a_op is the linear operator. a_homogeneous is whether the solver uses homogeneous boundary conditions.
Implements LinearSolver< T >.
Reimplemented in MergeSolver< T >.
References BiCGStabSolver< T >::m_homogeneous, and BiCGStabSolver< T >::m_op.
void BiCGStabSolver< T >::solve | ( | T & | a_phi, | |
const T & | a_rhs | |||
) | [inline, virtual] |
solve the equation.
Implements LinearSolver< T >.
Reimplemented in MergeSolver< T >.
References Abs(), CH_assert, CH_START, CH_STOP, CH_TIME, CH_TIMER, CH_TIMERS, BiCGStabSolver< T >::m_convergenceMetric, BiCGStabSolver< T >::m_eps, BiCGStabSolver< T >::m_exitStatus, BiCGStabSolver< T >::m_hang, BiCGStabSolver< T >::m_homogeneous, BiCGStabSolver< T >::m_imax, BiCGStabSolver< T >::m_normType, BiCGStabSolver< T >::m_numRestarts, BiCGStabSolver< T >::m_op, BiCGStabSolver< T >::m_reps, BiCGStabSolver< T >::m_small, BiCGStabSolver< T >::m_verbosity, norm(), and pout().
void BiCGStabSolver< T >::setConvergenceMetrics | ( | Real | a_metric, | |
Real | a_tolerance | |||
) | [inline, virtual] |
Set a convergence metric, along with solver tolerance, if desired.
Default implementation does nothing, since there are probably cases (liked direct solves), where this has no real meaning.
Reimplemented from LinearSolver< T >.
Reimplemented in MergeSolver< T >.
References BiCGStabSolver< T >::m_convergenceMetric, and BiCGStabSolver< T >::m_eps.
bool BiCGStabSolver< T >::m_homogeneous |
public member data: whether the solver is restricted to homogeneous boundary conditions
Referenced by BiCGStabSolver< T >::define(), BiCGStabSolver< LevelData< T > >::setHomogeneous(), and BiCGStabSolver< T >::solve().
LinearOp<T>* BiCGStabSolver< T >::m_op |
public member data: operator to solve.
Referenced by BiCGStabSolver< T >::define(), BiCGStabSolver< T >::solve(), and BiCGStabSolver< T >::~BiCGStabSolver().
int BiCGStabSolver< T >::m_imax |
public member data: maximum number of iterations
Referenced by BiCGStabSolver< T >::solve().
int BiCGStabSolver< T >::m_verbosity |
public member data: how much screen out put the user wants. set = 0 for no output.
Referenced by MultilevelLinearOp< T >::define(), and BiCGStabSolver< T >::solve().
Real BiCGStabSolver< T >::m_eps |
public member data: solver tolerance
Referenced by BiCGStabSolver< T >::setConvergenceMetrics(), and BiCGStabSolver< T >::solve().
Real BiCGStabSolver< T >::m_reps |
public member data: relative solver tolerance
Referenced by BiCGStabSolver< T >::solve().
Real BiCGStabSolver< T >::m_convergenceMetric |
public member data: solver convergence metric -- if negative, use initial residual; if positive, then use m_convergenceMetric
Referenced by BiCGStabSolver< T >::setConvergenceMetrics(), and BiCGStabSolver< T >::solve().
Real BiCGStabSolver< T >::m_hang |
public member data: minium norm of solution should change per iterations
Referenced by BiCGStabSolver< T >::solve().
int BiCGStabSolver< T >::m_exitStatus |
public member data: set = -1 if solver exited for an unknown reason set = 1 if solver converged to tolerance set = 2 if rho = 0 set = 3 if max number of restarts was reached
Referenced by BiCGStabSolver< T >::solve().
Real BiCGStabSolver< T >::m_small |
public member data: what the algorithm should consider "close to zero"
Referenced by BiCGStabSolver< T >::solve().
int BiCGStabSolver< T >::m_numRestarts |
public member data: number of times the algorithm can restart
Referenced by BiCGStabSolver< T >::solve().
int BiCGStabSolver< T >::m_normType |
public member data: norm to be used when evaluation convergence. 0 is max norm, 1 is L(1), 2 is L(2) and so on.
Referenced by BiCGStabSolver< T >::solve().