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

The preconditioner for the saddle-point minimizer. More...

#include <SaddlePointLMPMatrix.h>

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

Public Member Functions

 SaddlePointLMPMatrix (const CostFct_ &j)
 
void setup (const std::vector< SPVector_ > &, const std::vector< SPVector_ > &)
 
const int & getk () const
 
void multiply (const SPVector_ &, SPVector_ &) const
 

Private Types

typedef Increment< MODEL > Increment_
 
typedef ControlIncrement< MODEL > CtrlInc_
 
typedef CostFctWeak< MODEL > CostFctWeak_
 
typedef CostFunction< MODEL > CostFct_
 
typedef SaddlePointVector< MODEL > SPVector_
 
typedef DualVector< MODEL > LagVector_
 

Private Member Functions

void Pinitmultiply (const SPVector_ &, SPVector_ &) const
 
void Gmultiply (const SPVector_ &, Eigen::VectorXd &) const
 
void Rmultiply (Eigen::VectorXd &, SPVector_ &) const
 
void Fmultiply (Eigen::VectorXd &, Eigen::VectorXd &) const
 

Private Attributes

const CostFctWeak_j_
 
const bool idmodel_
 
std::vector< SPVector_xyVEC_
 
std::vector< SPVector_pqVEC_
 
std::vector< LagVector_RpVEC_
 
std::vector< CtrlInc_RqVEC_
 
boost::scoped_ptr< SPVector_spvecinit_
 
int nvec_
 
Eigen::MatrixXd ZMat_
 
Eigen::MatrixXd FMat_
 

Detailed Description

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

The preconditioner for the saddle-point minimizer.

The preconditioner is obtained by using low-rank updates. Let us define the matrices:

\( R = [ 0 Rp ], G = [ Zinv*Rp' 0 ] \) \( [ Rq 0 ] [ 0 Zinv'*Rq' ] \)

\( F = I + G*P0inv*R \)

where \( P0 \) is the initial preconditioner and \( I \) is the identity matrix of order 2.

Then the preconditioner is updated from

\( Pk = P0inv - P0inv*R*Finv*G*P0inv \)

The solvers represent matrices as objects that implement a "multiply" method. This class defines objects that apply the saddle-point matrix.

Definition at line 56 of file SaddlePointLMPMatrix.h.

Member Typedef Documentation

◆ CostFct_

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

Definition at line 60 of file SaddlePointLMPMatrix.h.

◆ CostFctWeak_

template<typename MODEL >
typedef CostFctWeak<MODEL> oops::SaddlePointLMPMatrix< MODEL >::CostFctWeak_
private

Definition at line 59 of file SaddlePointLMPMatrix.h.

◆ CtrlInc_

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

Definition at line 58 of file SaddlePointLMPMatrix.h.

◆ Increment_

template<typename MODEL >
typedef Increment<MODEL> oops::SaddlePointLMPMatrix< MODEL >::Increment_
private

Definition at line 57 of file SaddlePointLMPMatrix.h.

◆ LagVector_

template<typename MODEL >
typedef DualVector<MODEL> oops::SaddlePointLMPMatrix< MODEL >::LagVector_
private

Definition at line 62 of file SaddlePointLMPMatrix.h.

◆ SPVector_

template<typename MODEL >
typedef SaddlePointVector<MODEL> oops::SaddlePointLMPMatrix< MODEL >::SPVector_
private

Definition at line 61 of file SaddlePointLMPMatrix.h.

Constructor & Destructor Documentation

◆ SaddlePointLMPMatrix()

template<typename MODEL >
oops::SaddlePointLMPMatrix< MODEL >::SaddlePointLMPMatrix ( const CostFct_ j)
explicit

Definition at line 97 of file SaddlePointLMPMatrix.h.

Member Function Documentation

◆ Fmultiply()

template<typename MODEL >
void oops::SaddlePointLMPMatrix< MODEL >::Fmultiply ( Eigen::VectorXd &  x,
Eigen::VectorXd &  fx 
) const
private

Definition at line 274 of file SaddlePointLMPMatrix.h.

Here is the call graph for this function:

◆ getk()

template<typename MODEL >
const int& oops::SaddlePointLMPMatrix< MODEL >::getk ( ) const
inline

Definition at line 69 of file SaddlePointLMPMatrix.h.

◆ Gmultiply()

template<typename MODEL >
void oops::SaddlePointLMPMatrix< MODEL >::Gmultiply ( const SPVector_ x,
Eigen::VectorXd &  z 
) const
private

Definition at line 236 of file SaddlePointLMPMatrix.h.

Here is the call graph for this function:

◆ multiply()

template<typename MODEL >
void oops::SaddlePointLMPMatrix< MODEL >::multiply ( const SPVector_ x,
SPVector_ z 
) const

Definition at line 214 of file SaddlePointLMPMatrix.h.

Here is the call graph for this function:

◆ Pinitmultiply()

template<typename MODEL >
void oops::SaddlePointLMPMatrix< MODEL >::Pinitmultiply ( const SPVector_ x,
SPVector_ z 
) const
private

Definition at line 162 of file SaddlePointLMPMatrix.h.

Here is the call graph for this function:

◆ Rmultiply()

template<typename MODEL >
void oops::SaddlePointLMPMatrix< MODEL >::Rmultiply ( Eigen::VectorXd &  x,
SPVector_ rx 
) const
private

Definition at line 258 of file SaddlePointLMPMatrix.h.

Here is the call graph for this function:

◆ setup()

template<typename MODEL >
void oops::SaddlePointLMPMatrix< MODEL >::setup ( const std::vector< SPVector_ > &  xyVEC,
const std::vector< SPVector_ > &  pqVEC 
)

Definition at line 105 of file SaddlePointLMPMatrix.h.

Here is the call graph for this function:

Member Data Documentation

◆ FMat_

template<typename MODEL >
Eigen::MatrixXd oops::SaddlePointLMPMatrix< MODEL >::FMat_
private

Definition at line 91 of file SaddlePointLMPMatrix.h.

◆ idmodel_

template<typename MODEL >
const bool oops::SaddlePointLMPMatrix< MODEL >::idmodel_
private

Definition at line 83 of file SaddlePointLMPMatrix.h.

◆ j_

template<typename MODEL >
const CostFctWeak_& oops::SaddlePointLMPMatrix< MODEL >::j_
private

Definition at line 82 of file SaddlePointLMPMatrix.h.

◆ nvec_

template<typename MODEL >
int oops::SaddlePointLMPMatrix< MODEL >::nvec_
private

Definition at line 89 of file SaddlePointLMPMatrix.h.

◆ pqVEC_

template<typename MODEL >
std::vector<SPVector_> oops::SaddlePointLMPMatrix< MODEL >::pqVEC_
private

Definition at line 85 of file SaddlePointLMPMatrix.h.

◆ RpVEC_

template<typename MODEL >
std::vector<LagVector_> oops::SaddlePointLMPMatrix< MODEL >::RpVEC_
private

Definition at line 86 of file SaddlePointLMPMatrix.h.

◆ RqVEC_

template<typename MODEL >
std::vector<CtrlInc_> oops::SaddlePointLMPMatrix< MODEL >::RqVEC_
private

Definition at line 87 of file SaddlePointLMPMatrix.h.

◆ spvecinit_

template<typename MODEL >
boost::scoped_ptr<SPVector_> oops::SaddlePointLMPMatrix< MODEL >::spvecinit_
private

Definition at line 88 of file SaddlePointLMPMatrix.h.

◆ xyVEC_

template<typename MODEL >
std::vector<SPVector_> oops::SaddlePointLMPMatrix< MODEL >::xyVEC_
private

Definition at line 84 of file SaddlePointLMPMatrix.h.

◆ ZMat_

template<typename MODEL >
Eigen::MatrixXd oops::SaddlePointLMPMatrix< MODEL >::ZMat_
private

Definition at line 90 of file SaddlePointLMPMatrix.h.


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