|
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.