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.