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

DRPLanczos Minimizer. More...

#include <DRPLanczosMinimizer.h>

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

Public Member Functions

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

Private Attributes

SpectralLMP< CtrlInc_lmp_
 
boost::ptr_vector< CtrlInc_hvecs_
 
boost::ptr_vector< CtrlInc_vvecs_
 
boost::ptr_vector< CtrlInc_zvecs_
 
std::vector< double > alphas_
 
std::vector< double > betas_
 

Detailed Description

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

DRPLanczos Minimizer.

Derber-Rosati Preconditioned Lanczos solver.

This solver is the Lanczos version of the DRPCG algorithm It solves \( Ax=b\) for the particular case \( A=B^{-1}+C\), without requiring the application of \( B^{-1}\).

A must be square, symmetric, positive definite.

A preconditioner must be supplied that, given a vector q, returns an approximation to \( (AB)^{-1} q\). Possible preconditioning is detailed in S. Gurol, PhD Manuscript, 2013. Note that the traditional \( B\)-preconditioning corresponds to precond= \(I\).

On entry:

  • dx = starting point.
  • dxh = starting point, \( B^{-1} dx_{0}\).
  • rr = residual at starting point.
  • B = \( B \).
  • C = \( C \).
  • precond = preconditioner \( F_k \approx (AB)^{-1} \).

On exit, dxh will contain \( B^{-1} x\) where x is 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".

Each matrix must implement a method:

  • void multiply(const VECTOR&, VECTOR&) const

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 at line 73 of file DRPLanczosMinimizer.h.

Member Typedef Documentation

◆ Bmat_

template<typename MODEL >
typedef BMatrix<MODEL> oops::DRPLanczosMinimizer< MODEL >::Bmat_
private

Definition at line 74 of file DRPLanczosMinimizer.h.

◆ CostFct_

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

Definition at line 75 of file DRPLanczosMinimizer.h.

◆ CtrlInc_

template<typename MODEL >
typedef ControlIncrement<MODEL> oops::DRPLanczosMinimizer< MODEL >::CtrlInc_
private

Definition at line 76 of file DRPLanczosMinimizer.h.

◆ HtRinvH_

template<typename MODEL >
typedef HtRinvHMatrix<MODEL> oops::DRPLanczosMinimizer< MODEL >::HtRinvH_
private

Definition at line 77 of file DRPLanczosMinimizer.h.

Constructor & Destructor Documentation

◆ DRPLanczosMinimizer()

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

Definition at line 100 of file DRPLanczosMinimizer.h.

◆ ~DRPLanczosMinimizer()

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

Definition at line 82 of file DRPLanczosMinimizer.h.

Member Function Documentation

◆ classname()

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

Implements oops::DRMinimizer< MODEL >.

Definition at line 80 of file DRPLanczosMinimizer.h.

◆ solve()

template<typename MODEL >
double oops::DRPLanczosMinimizer< MODEL >::solve ( CtrlInc_ dx,
CtrlInc_ dxh,
CtrlInc_ rr,
const Bmat_ B,
const HtRinvH_ HtRinvH,
const double  costJ0Jb,
const double  costJ0JoJc,
const int  maxiter,
const double  tolerance 
)
overrideprivatevirtual

Implements oops::DRMinimizer< MODEL >.

Definition at line 108 of file DRPLanczosMinimizer.h.

Here is the call graph for this function:

Member Data Documentation

◆ alphas_

template<typename MODEL >
std::vector<double> oops::DRPLanczosMinimizer< MODEL >::alphas_
private

Definition at line 93 of file DRPLanczosMinimizer.h.

◆ betas_

template<typename MODEL >
std::vector<double> oops::DRPLanczosMinimizer< MODEL >::betas_
private

Definition at line 94 of file DRPLanczosMinimizer.h.

◆ hvecs_

template<typename MODEL >
boost::ptr_vector<CtrlInc_> oops::DRPLanczosMinimizer< MODEL >::hvecs_
private

Definition at line 90 of file DRPLanczosMinimizer.h.

◆ lmp_

template<typename MODEL >
SpectralLMP<CtrlInc_> oops::DRPLanczosMinimizer< MODEL >::lmp_
private

Definition at line 88 of file DRPLanczosMinimizer.h.

◆ vvecs_

template<typename MODEL >
boost::ptr_vector<CtrlInc_> oops::DRPLanczosMinimizer< MODEL >::vvecs_
private

Definition at line 91 of file DRPLanczosMinimizer.h.

◆ zvecs_

template<typename MODEL >
boost::ptr_vector<CtrlInc_> oops::DRPLanczosMinimizer< MODEL >::zvecs_
private

Definition at line 92 of file DRPLanczosMinimizer.h.


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