KSPQCG#

Code to run conjugate gradient method subject to a constraint on the solution norm.

Options Database Key#

  • -ksp_qcg_trustregionradius - Trust Region Radius

Notes#

This is rarely used directly, ir is used in Trust Region methods for nonlinear equations, SNESNEWTONTR

Uses preconditioned conjugate gradient to compute an approximate minimizer of the quadratic function \( q(s) = g^T * s + .5 * s^T * H * s \) subject to the Euclidean norm trust region constraint

            || D * s || <= delta,

where

     delta is the trust region radius,
     g is the gradient vector, and
     H is Hessian matrix,
     D is a scaling matrix.

KSPConvergedReason may be

   KSP_CONVERGED_NEG_CURVE if convergence is reached along a negative curvature direction,
   KSP_CONVERGED_STEP_LENGTH if convergence is reached along a constrained step,

and other KSP converged/diverged reasons

Notes#

Currently we allow symmetric preconditioning with the following scaling matrices#

      `PCNONE`:   D = Identity matrix
      `PCJACOBI`: D = diag [d_1, d_2, ...., d_n], where d_i = sqrt(H[i,i])
      `PCICC`:    D = L^T, implemented with forward and backward solves. Here L is an incomplete Cholesky factor of H.

References#

  • **** -*** Trond Steihaug, The Conjugate Gradient Method and Trust Regions in Large Scale Optimization, SIAM Journal on Numerical Analysis, Vol. 20, No. 3 (Jun., 1983).

See Also#

KSP: Linear System Solvers, ‘KSPNASH, KSPGLTR, KSPSTCG, KSPCreate(), KSPSetType(), KSPType, KSP, KSPQCGSetTrustRegionRadius() KSPQCGGetTrialStepNorm(), KSPQCGGetQuadratic()`

Level#

developer

Location#

src/ksp/ksp/impls/qcg/qcg.c


Index of all KSP routines
Table of Contents for all manual pages
Index of all manual pages