FV3 Bundle
|
FullGMRES solver for Ax=b. More...
#include <cmath>
#include <iostream>
#include <vector>
#include "oops/assimilation/rotmat.h"
#include "oops/assimilation/UpTriSolve.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::FullGMRES (VECTOR &xx, const VECTOR &bb, const AMATRIX &A, const PMATRIX &precond, const int maxiter, const double tolerance, std::vector< VECTOR > &pqVEC, std::vector< VECTOR > &xyVEC) |
FullGMRES solver for Ax=b.
GMRES solver for Ax=b.(based on implementation following Saad-Schultz and C. T. Kelley, July 10, 1994)
A must be square, but need not be symmetric. A preconditioner must be supplied that, given a vector q, returns an approximate solution of Ap=q.
On entry:
On exit, x will contain the solution. The return value is the achieved reduction in 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:
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 FullGMRES.h.