FV3 Bundle
|
The preconditioner for the saddle-point minimizer. More...
#include <SaddlePointLMPMatrix.h>
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_ |
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.
|
private |
Definition at line 60 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 59 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 58 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 57 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 62 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 61 of file SaddlePointLMPMatrix.h.
|
explicit |
Definition at line 97 of file SaddlePointLMPMatrix.h.
|
private |
|
inline |
Definition at line 69 of file SaddlePointLMPMatrix.h.
|
private |
void oops::SaddlePointLMPMatrix< MODEL >::multiply | ( | const SPVector_ & | x, |
SPVector_ & | z | ||
) | const |
|
private |
|
private |
void oops::SaddlePointLMPMatrix< MODEL >::setup | ( | const std::vector< SPVector_ > & | xyVEC, |
const std::vector< SPVector_ > & | pqVEC | ||
) |
|
private |
Definition at line 91 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 83 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 82 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 89 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 85 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 86 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 87 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 88 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 84 of file SaddlePointLMPMatrix.h.
|
private |
Definition at line 90 of file SaddlePointLMPMatrix.h.