FV3 Bundle
|
Derber-Rosati GMRESR Minimizer. More...
#include <DRGMRESRMinimizer.h>
Public Member Functions | |
const std::string | classname () const override |
DRGMRESRMinimizer (const eckit::Configuration &, const CostFct_ &J) | |
~DRGMRESRMinimizer () | |
Public Member Functions inherited from oops::DRMinimizer< MODEL > | |
DRMinimizer (const CostFct_ &J) | |
~DRMinimizer () | |
Public Member Functions inherited from oops::Minimizer< MODEL > | |
Minimizer (const CostFct_ &J) | |
virtual | ~Minimizer () |
ControlIncrement< MODEL > * | minimize (const eckit::Configuration &) |
Private Types | |
typedef BMatrix< MODEL > | Bmat_ |
typedef CostFunction< MODEL > | CostFct_ |
typedef ControlIncrement< MODEL > | CtrlInc_ |
typedef HtRinvHMatrix< MODEL > | HtRinvH_ |
Private Member Functions | |
double | solve (CtrlInc_ &, CtrlInc_ &, CtrlInc_ &, const Bmat_ &, const HtRinvH_ &, const double, const double, const int, const double) override |
Derber-Rosati GMRESR Minimizer.
Derber-Rosati GMRESR solver for Ax=b.
DRGMRESR solver for Ax=b. This is a "double" version of GMRESR (H.A. Van der Vorst and C. Vuik, 1994, Numerical Linear Algebra with Applications, 1(4), 369-386) following Derber and Rosati (J. Derber and A. Rosati, 1989, J. Phys. Oceanog. 1333-1347). It solves Ax=b for the particular case \( A=B^{-1}+C\), without requiring the application of \( B^{-1}\). A must be square, but need not be symmetric. (For a symmetric matrix, and constant preconditioner, DRGMRESR is simply Derber-Rosati PCG with full orthogonalisation.) A preconditioner must be supplied that, given a vector q, returns an approximate solution of \( (AB)^{-1} q\). The preconditioner can be variable. Note that the traditional \( B\)-preconditioning corresponds to precond= \(I\).
On entry:
On exit, x will contain the solution \( x \) and xh will contain \( B^{-1} x\).
Matrices 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.)
Iteration will stop if the maximum iteration limit "maxiter" is reached or if the residual norm reduces by a factor of "tolerance".
The return value is the achieved reduction in residual norm.
Definition at line 72 of file DRGMRESRMinimizer.h.
|
private |
Definition at line 73 of file DRGMRESRMinimizer.h.
|
private |
Definition at line 74 of file DRGMRESRMinimizer.h.
|
private |
Definition at line 75 of file DRGMRESRMinimizer.h.
|
private |
Definition at line 76 of file DRGMRESRMinimizer.h.
|
inline |
Definition at line 80 of file DRGMRESRMinimizer.h.
|
inline |
Definition at line 81 of file DRGMRESRMinimizer.h.
|
inlineoverridevirtual |
Implements oops::DRMinimizer< MODEL >.
Definition at line 79 of file DRGMRESRMinimizer.h.
|
overrideprivatevirtual |
Implements oops::DRMinimizer< MODEL >.
Definition at line 90 of file DRGMRESRMinimizer.h.