Diffpack Documentation
Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Search
Symmlq Class Reference
iterative method for large sparse symmetric system.
More...
#include <Symmlq.h>
Inheritance diagram for Symmlq::
List of all members.
Detailed Description
iterative method for large sparse symmetric system.
NAME: Symmlq - iterative method for large sparse symmetric system
DESCRIPTION:
The class implements the SYMMLQ iterative method by Paige and Saunders for solving symmetric systems of linear equations `$`Ax = b`$`. The system is meant to be large and sparse, but does not have to be positive definite. In case of symmetric positive definite systems, the Conjugate Gradient (CG) method should be preferred (see class "ConjGrad").
The SYMMLQ method is intended to solve the shifted system "(A-shift*I)*x=b", where "shift" is a scalar value. In fact, the computed vector "x" may approximate an (unnormalized) eigenvector of "A" if "shift" and "b" are well chosen.
Several stop states are signalled in this algorithm. It is therefore possible to leave out external convergence monitors.
"stop_state" == -1: Matrix "A" is ill-conditioned (an estimate of cond(A) is too large).
"stop_state" == 0: Maximum number of iteration is reached before any convergence.
"stop_state" == 1: Solution "x" is acceptable.
"stop_state" == 2: The residual is satisfactory small.
"stop_state" == 3: "x" converges towards an eigenvector of "A".
Constructor & Destructor Documentation
|
Symmlq::Symmlq (
|
NUMT shift )
|
|
|
|
There is a default constructor without arguments. For the sake of comaptibility, there is also a constructor accepting a "LinEqSolver_prm" object, aimed to be used by "LinEqSolver_prm create". |
|
|
See documentation of one of the overloaded constructor. |
|
Symmlq::~Symmlq (
|
) [inline]
|
|
Member Function Documentation
|
String Symmlq::description (
|
) const [virtual]
|
|
|
String Symmlq::getStopState (
|
) const
|
|
|
|
returns a "String" contaning the information about the stop state. |
|
|
given a string like the ones delivered by "prm2name", the current solver is reinitialized.
Reimplemented from LinEqSolver. |
|
bool Symmlq::ok (
|
) const [virtual]
|
|
|
void Symmlq::performance (
|
LinEqStatBlk & performance_status ) [virtual]
|
|
|
String Symmlq::prm2name (
|
) const [virtual]
|
|
|
|
returns a string describing the current solver, based on the parameter values in use. For instance, the string "T-OM(5)" indicates that class "Orthomin" is in use with "nsearchv = 5" and "restart = false". For most solvers, this function simply returns the class name, e.g. the string "ConjGrad".
Reimplemented from LinEqSolver. |
|
bool Symmlq::redim (
|
LinEqSystem & system ) [protected, virtual]
|
|
|
|
redimensions internal storage based on the given "LinEqSystem" object. This function is typically called from "solve".
Reimplemented from KrylovItSolver. |
|
bool Symmlq::satisfied (
|
) [protected, virtual]
|
|
|
|
evaluates all convergence monitors acting as stopping criteria and builds the compound convergence test depending on the monitor list and each monitors associates relational operator ("CM_AND"/"CM_OR"). The list traversed sequentially from start to end and no special priority is given. (For internal use only).
Convergence monitors that are recording the convergence history are caused to update their history tables (even if not acting as a stopping criterion). (For internal use only).
Reimplemented from IterativeSolver. |
|
|
takes an input argument of type "LinEqSystem" which must be properly filled. The solution process is carried out inside the function. If successful, a "true" value will be returned at the same time that different situations of convergence are recorded.
Reimplemented from KrylovItSolver. |
Member Data Documentation
NUMT Symmlq::alpha [protected]
|
|
NUMT Symmlq::anorm [protected]
|
|
NUMT Symmlq::beta [protected]
|
|
NUMT Symmlq::beta1 [protected]
|
|
NUMT Symmlq::bstep [protected]
|
|
NUMT Symmlq::cgnorm [protected]
|
|
NUMT Symmlq::cs [protected]
|
|
NUMT Symmlq::dbar [protected]
|
|
NUMT Symmlq::delta [protected]
|
|
NUMT Symmlq::diag [protected]
|
|
NUMT Symmlq::gamma [protected]
|
|
NUMT Symmlq::gbar [protected]
|
|
NUMT Symmlq::gmax [protected]
|
|
NUMT Symmlq::gmin [protected]
|
|
NUMT Symmlq::oldB [protected]
|
|
NUMT Symmlq::rhs1 [protected]
|
|
NUMT Symmlq::rhs2 [protected]
|
|
NUMT Symmlq::shift [protected]
|
|
NUMT Symmlq::sn [protected]
|
|
NUMT Symmlq::snprod [protected]
|
|
int Symmlq::stop_state [protected]
|
|
NUMT Symmlq::tmp [protected]
|
|
NUMT Symmlq::ynorm [protected]
|
|
The documentation for this class was generated from the following file:
Copyright © 2003 inuTech GmbH. All rights reserved.