FV3 Bundle
oops::RPLanczosMinimizer< MODEL > Class Template Reference

RLanczos Minimizer. More...

#include <RPLanczosMinimizer.h>

Inheritance diagram for oops::RPLanczosMinimizer< MODEL >:
[legend]
Collaboration diagram for oops::RPLanczosMinimizer< MODEL >:
[legend]

Public Member Functions

const std::string classname () const override
 
 RPLanczosMinimizer (const eckit::Configuration &, const CostFct_ &J)
 
 ~RPLanczosMinimizer ()
 
- 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
 

Detailed Description

template<typename MODEL>
class oops::RPLanczosMinimizer< MODEL >

RLanczos Minimizer.

Augmented Restricted Lanczos method. It is the Lanczos version of RPCG.

This solver is based on the algorithm from Gurol, PhD Manuscript,

  1. It performs minimization in the 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:

  • vv = starting point, \( v_0 \).
  • vvp = starting point augmented part, \( vp_0 \)
  • rr = right hand side.
  • aa = \( H (xb - xk) \)
  • sigma = \( (xb - xk)^T B^{-1} (xb - xk)\).
  • HBHt = \( HBH^T \).
  • Rinv = \( R^{-1} \).
  • G = preconditioner \( G \).

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 68 of file RPLanczosMinimizer.h.

Member Typedef Documentation

◆ CostFct_

template<typename MODEL >
typedef CostFunction<MODEL> oops::RPLanczosMinimizer< MODEL >::CostFct_
private

Definition at line 69 of file RPLanczosMinimizer.h.

◆ Dual_

template<typename MODEL >
typedef DualVector<MODEL> oops::RPLanczosMinimizer< MODEL >::Dual_
private

Definition at line 70 of file RPLanczosMinimizer.h.

◆ HBHt_

template<typename MODEL >
typedef HBHtMatrix<MODEL> oops::RPLanczosMinimizer< MODEL >::HBHt_
private

Definition at line 71 of file RPLanczosMinimizer.h.

◆ Rinv_

template<typename MODEL >
typedef RinvMatrix<MODEL> oops::RPLanczosMinimizer< MODEL >::Rinv_
private

Definition at line 72 of file RPLanczosMinimizer.h.

Constructor & Destructor Documentation

◆ RPLanczosMinimizer()

template<typename MODEL >
oops::RPLanczosMinimizer< MODEL >::RPLanczosMinimizer ( const eckit::Configuration &  ,
const CostFct_ J 
)
inline

Definition at line 76 of file RPLanczosMinimizer.h.

◆ ~RPLanczosMinimizer()

template<typename MODEL >
oops::RPLanczosMinimizer< MODEL >::~RPLanczosMinimizer ( )
inline

Definition at line 77 of file RPLanczosMinimizer.h.

Member Function Documentation

◆ classname()

template<typename MODEL >
const std::string oops::RPLanczosMinimizer< MODEL >::classname ( ) const
inlineoverridevirtual

Implements oops::DualMinimizer< MODEL >.

Definition at line 75 of file RPLanczosMinimizer.h.

◆ solve()

template<typename MODEL >
double oops::RPLanczosMinimizer< MODEL >::solve ( Dual_ vv,
double &  vvp,
Dual_ rr,
const HBHt_ HBHt,
const Rinv_ Rinv,
const int &  maxiter,
const double &  tolerance,
Dual_ dy,
const double &  sigma 
)
overrideprivatevirtual

Implements oops::DualMinimizer< MODEL >.

Definition at line 87 of file RPLanczosMinimizer.h.

Here is the call graph for this function:

The documentation for this class was generated from the following file: