FV3 Bundle
|
#include <RPCGMinimizer.h>
Public Member Functions | |
const std::string | classname () const override |
RPCGMinimizer (const eckit::Configuration &, const CostFct_ &J) | |
~RPCGMinimizer () | |
Public Member Functions inherited from oops::DualMinimizer< MODEL > | |
DualMinimizer (const CostFct_ &J) | |
~DualMinimizer () | |
Public Member Functions inherited from oops::Minimizer< MODEL > | |
Minimizer (const CostFct_ &J) | |
virtual | ~Minimizer () |
ControlIncrement< MODEL > * | minimize (const eckit::Configuration &) |
Private Types | |
typedef CostFunction< MODEL > | CostFct_ |
typedef DualVector< MODEL > | Dual_ |
typedef HBHtMatrix< MODEL > | HBHt_ |
typedef RinvMatrix< MODEL > | Rinv_ |
Private Member Functions | |
double | solve (Dual_ &, double &, Dual_ &, const HBHt_ &, const Rinv_ &, const int &, const double &, Dual_ &, const double &) override |
RPCG Minimizer.
Augmented Restricted Preconditioned Conjugate Gradients.
This solver is based on the algorithm proposed in Gratton and Tshimanga, QJRMS, 135: 1573-1585 (2009). It performs minimization in observation space.
It solves the linear system \( (I + R^{-1}HBH^T) lambda = H^T R^{-1}d \) with \( HBH^T \) inner-product in the augmented observation space.
Note that the traditional \( B\)-preconditioning in model space corresponds to \(I\) for this algorithm.
A second-level preconditioner, \( G \), must be symmetric and positive definite with respect to \( HBH^T \) inner-product. Possible preconditioning is detailed in S. Gurol, PhD Manuscript, 2013.
On entry:
On exit, vv and vvp will contain the solution \( lambda = [vv; vp] \)
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 preconditioned residual norm reduces by a factor of "tolerance".
Definition at line 67 of file RPCGMinimizer.h.
|
private |
Definition at line 68 of file RPCGMinimizer.h.
|
private |
Definition at line 69 of file RPCGMinimizer.h.
|
private |
Definition at line 70 of file RPCGMinimizer.h.
|
private |
Definition at line 71 of file RPCGMinimizer.h.
|
inline |
Definition at line 75 of file RPCGMinimizer.h.
|
inline |
Definition at line 76 of file RPCGMinimizer.h.
|
inlineoverridevirtual |
Implements oops::DualMinimizer< MODEL >.
Definition at line 74 of file RPCGMinimizer.h.
|
overrideprivatevirtual |
Implements oops::DualMinimizer< MODEL >.
Definition at line 86 of file RPCGMinimizer.h.