Class to solve systems of linear equations by direct or iterative methods. More...
#include <LinearSolver.h>
Public Member Functions | |
LinearSolver () | |
Default Constructor. More... | |
LinearSolver (int max_it, real_t tolerance) | |
Constructor with iteration parameters. More... | |
LinearSolver (SpMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x) | |
Constructor using matrix, right-hand side and solution vector. More... | |
LinearSolver (SkMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x) | |
Constructor using skyline-stored matrix, right-hand side and solution vector. More... | |
LinearSolver (TrMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x) | |
Constructor using a tridiagonal matrix, right-hand side and solution vector. More... | |
LinearSolver (BMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x) | |
Constructor using a banded matrix, right-hand side and solution vector. More... | |
LinearSolver (DMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x) | |
Constructor using a dense matrix, right-hand side and solution vector. More... | |
LinearSolver (DSMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x) | |
Constructor using a dense symmetric matrix, right-hand side and solution vector. More... | |
LinearSolver (SkSMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x) | |
Constructor using skyline-stored symmetric matrix, right-hand side and solution vector. More... | |
LinearSolver (SkMatrix< real_t > &A, Vect< real_t > &b, Vect< real_t > &x) | |
Constructor using matrix, right-hand side. More... | |
virtual | ~LinearSolver () |
Destructor. | |
void | setMaxIter (int m) |
Set Maximum number of iterations. More... | |
void | setTolerance (real_t tol) |
Set tolerance value. | |
void | setSolution (Vect< real_t > &x) |
Set solution vector. | |
void | setRHS (Vect< real_t > &b) |
Set right-hand side vector. | |
void | setMatrix (Matrix< real_t > *A) |
Set matrix in the case of a pointer to Matrix. More... | |
void | setMatrix (SpMatrix< real_t > &A) |
Set matrix in the case of a pointer to matrix. More... | |
void | setMatrix (SkMatrix< real_t > &A) |
Set matrix in the case of a skyline matrix. More... | |
void | set (SpMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x) |
Set matrix, right-hand side and initial guess. More... | |
void | setSolver (Iteration s, Preconditioner p=DIAG_PREC) |
Set solver and preconditioner. More... | |
Iteration | getSolver () const |
Return solver code. | |
Preconditioner | getPreconditioner () const |
Return solver preconditioner. | |
int | solve (SpMatrix< real_t > &A, const Vect< real_t > &b, Vect< real_t > &x, Iteration s, Preconditioner p=DIAG_PREC) |
Solve equations using system data, prescribed solver and preconditioner. More... | |
int | solve (Iteration s, Preconditioner p=DIAG_PREC) |
Solve equations using prescribed solver and preconditioner. More... | |
int | solve () |
Solve equations all arguments must have been given by other member functions. More... | |
void | setFact () |
Factorize matrix. | |
void | setNoFact () |
Do not factorize matrix. | |
int | getNbIter () const |
Get number of performed iterations. | |
Detailed Description
Class to solve systems of linear equations by direct or iterative methods.
- Copyright
- GNU Lesser Public License
Constructor & Destructor Documentation
◆ LinearSolver() [1/10]
LinearSolver | ( | ) |
Default Constructor.
Initializes default parameters and pointers to 0.
◆ LinearSolver() [2/10]
LinearSolver | ( | int | max_it, |
real_t | tolerance | ||
) |
Constructor with iteration parameters.
- Parameters
-
[in] max_it Maximal number of iterations [in] tolerance Tolerance for convergence (measured in relative weighted 2-Norm) in input, effective discrepancy in output.
◆ LinearSolver() [3/10]
◆ LinearSolver() [4/10]
◆ LinearSolver() [5/10]
◆ LinearSolver() [6/10]
◆ LinearSolver() [7/10]
◆ LinearSolver() [8/10]
◆ LinearSolver() [9/10]
◆ LinearSolver() [10/10]
Member Function Documentation
◆ set()
Set matrix, right-hand side and initial guess.
- Parameters
-
[in] A Reference to matrix as a SpMatrix instance [in] b Vector containing right-hand side [in,out] x Vector containing initial guess on input and solution on output
◆ setMatrix() [1/3]
◆ setMatrix() [2/3]
Set matrix in the case of a skyline matrix.
- Parameters
-
[in] A Matrix as instance of class SkMatrix
◆ setMatrix() [3/3]
Set matrix in the case of a pointer to matrix.
- Parameters
-
[in] A Pointer to abstract Matrix class
◆ setMaxIter()
void setMaxIter | ( | int | m | ) |
Set Maximum number of iterations.
Default value is 1000
◆ setSolver()
void setSolver | ( | Iteration | s, |
Preconditioner | p = DIAG_PREC |
||
) |
Set solver and preconditioner.
- Parameters
-
[in] s Solver identification parameter. To be chosen in the enumeration variable Iteration:
DIRECT_SOLVER
,CG_SOLVER
,CGS_SOLVER
,BICG_SOLVER
,BICG_STAB_SOLVER
,GMRES_SOLVER
,QMR_SOLVER
[in] p Preconditioner identification parameter. By default, the diagonal preconditioner is used. To be chosen in the enumeration variable Preconditioner:
IDENT_PREC
,DIAG_PREC
,SSOR_PREC
,ILU_PREC
[Default:ILU_PREC
]
- Note
- The argument
p
has no effect if the solver isDIRECT_SOLVER
◆ solve() [1/3]
int solve | ( | ) |
Solve equations all arguments must have been given by other member functions.
Solver and preconditioner parameters must have been set by function setSolver. Otherwise, default values are set.
◆ solve() [2/3]
int solve | ( | Iteration | s, |
Preconditioner | p = DIAG_PREC |
||
) |
Solve equations using prescribed solver and preconditioner.
- Parameters
-
[in] s Solver identification parameter To be chosen in the enumeration variable Iteration:
DIRECT_SOLVER
,CG_SOLVER
,CGS_SOLVER
,BICG_SOLVER
,BICG_STAB_SOLVER
,GMRES_SOLVER
,QMR_SOLVER
[Default:CGS_SOLVER
][in] p Preconditioner identification parameter. To be chosen in the enumeration variable Preconditioner:
IDENT_PREC
,DIAG_PREC
,SSOR_PREC
,DILU_PREC
,ILU_PREC
[Default:DIAG_PREC
]
- Note
- The argument
p
has no effect if the solver isDIRECT_SOLVER
◆ solve() [3/3]
int solve | ( | SpMatrix< real_t > & | A, |
const Vect< real_t > & | b, | ||
Vect< real_t > & | x, | ||
Iteration | s, | ||
Preconditioner | p = DIAG_PREC |
||
) |
Solve equations using system data, prescribed solver and preconditioner.
- Parameters
-
[in] A Reference to matrix as a SpMatrix instance [in] b Vector containing right-hand side [in,out] x Vector containing initial guess on input and solution on output [in] s Solver identification parameter To be chosen in the enumeration variable Iteration:
DIRECT_SOLVER
,CG_SOLVER
,CGS_SOLVER
,BICG_SOLVER
,BICG_STAB_SOLVER
,GMRES_SOLVER
,QMR_SOLVER
[Default:CGS_SOLVER
][in] p Preconditioner identification parameter. To be chosen in the enumeration variable Preconditioner:
IDENT_PREC
,DIAG_PREC
,SSOR_PREC
,ILU_PREC
,DILU_PREC
[Default:DIAG_PREC
]
- Remarks
- The argument
p
has no effect if the solver isDIRECT_SOLVER
- Warning
- If the library
eigen
is used, only the preconditionersIDENT_PREC
,DIAG_PREC
andILU_PREC
are available.