11 #ifndef OOPS_ASSIMILATION_PCGMINIMIZER_H_
12 #define OOPS_ASSIMILATION_PCGMINIMIZER_H_
39 const std::string
classname()
const override {
return "PCGMinimizer";}
46 const int,
const double)
override;
51 template<
typename MODEL,
typename OBS>
54 const int ninner,
const double gnreduc) {
56 double reduc =
PCG(dx, rhs, hessian, B, ninner, gnreduc);
Preconditioned Conjugate Gradients solver.
double solve(CtrlInc_ &, const CtrlInc_ &, const Hessian_ &, const Bmat_ &, const int, const double) override
ControlIncrement< MODEL, OBS > CtrlInc_
PCGMinimizer(const eckit::Configuration &, const CostFct_ &J)
BMatrix< MODEL, OBS > Bmat_
HessianMatrix< MODEL, OBS > Hessian_
const std::string classname() const override
CostFunction< MODEL, OBS > CostFct_
The namespace for the main oops code.
double PCG(VECTOR &x, const VECTOR &b, const AMATRIX &A, const PMATRIX &precond, const int maxiter, const double tolerance)