|
FV3 Bundle
|
Preconditioned Lanczos solver. More...
#include <cmath>#include <vector>#include "oops/assimilation/TriDiagSolve.h"#include "oops/util/dot_product.h"#include "oops/util/formats.h"#include "oops/util/Logger.h"Go to the source code of this file.
Namespaces | |
| oops | |
| The namespace for the main oops code. | |
Functions | |
| template<typename VECTOR , typename AMATRIX , typename PMATRIX > | |
| double | oops::PLanczos (VECTOR &xx, const VECTOR &bb, const AMATRIX &A, const PMATRIX &precond, const int maxiter, const double tolerance) |
Preconditioned Lanczos solver.
This algorihtm is based on the standard Preconditioned Lanczos method for solving the linear system Ax = b
A must be square and symmetric.
On entry:
On exit, x will contain the solution \( x \)
The return value is the achieved reduction in preconditioned residual norm.
Iteration will stop if the maximum iteration limit "maxiter" is reached or if the residual norm reduces by a factor of "tolerance".
VECTOR must implement:
Each of AMATRIX and PMATRIX must implement a method:
which applies the matrix to the first argument, and returns the matrix-vector product in the second. (Note: the const is optional, but recommended.)
Definition in file PLanczos.h.