Skip to main content
`Ctrl`+`K`

# KSPSTCG

Code to run conjugate gradient method subject to a constraint on the solution norm for use in a trust region method [Ste83], [Toi81]

## Options Database Key

- -ksp_cg_radius <r> - Trust Region Radius

## Notes

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

Use preconditioned conjugate gradient to compute an approximate minimizer of the quadratic function

\[ q(s) = g^T * s + 0.5 * s^T * H * s \]

subject to the trust region constraint

\[ || s || le delta, \]

where

         delta is the trust region radius,
         g is the gradient vector,
         H is the Hessian approximation, and
         M is the positive definite preconditioner matrix.

`KSPConvergedReason` may include

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

The preconditioner supplied should be symmetric and positive definite.

## References

[Ste83]

Trond Steihaug. The conjugate gradient method and trust regions in large scale optimization. SIAM J. Numer. Anal., 20:626–637, 1983.

[Toi81]

Philippe Toint. Towards an efficient sparsity exploiting Newton method for minimization. In Sparse matrices and their uses, pages 57–88. Academic press, 1981.

## See Also

KSP: Linear System Solvers, `KSPCreate()`, `KSPCGSetType()`, `KSPType`, `KSP`, `KSPCGSetRadius()`, `KSPCGGetNormD()`, `KSPCGGetObjFcn()`, `KSPNASH`, `KSPGLTR`, `KSPQCG`

## Level

developer

## Location

src/ksp/ksp/impls/cg/stcg/stcg.c

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