petsc-master 2019-11-13
Report Typos and Errors


Code to run conjugate gradient method subject to a constraint on the solution norm. This is used in Trust Region methods for nonlinear equations, SNESNEWTONTR

Options Database Keys

-ksp_qcg_trustregionradius <r> -Trust Region Radius


This is rarely used directly


Use 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,


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_CG_NEG_CURVE if convergence is reached along a negative curvature direction,
 KSP_CONVERGED_CG_CONSTRAINED if convergence is reached along a constrained step,
 other KSP converged/diverged reasons


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.


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

KSPCreate(), KSPSetType(), KSPType (for list of available types), KSP, KSPQCGSetTrustRegionRadius()
KSPQCGGetTrialStepNorm(), KSPQCGGetQuadratic()




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