Skip to main content
`Ctrl`+`K`

# KSPNASH

Code to run conjugate gradient method subject to a constraint on the solution norm in a trust region method [Nas84]

## Options Database Keys

- -ksp_cg_radius <r> - Trust Region Radius

## Notes

This is rarely used directly, it 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 + 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 must be symmetric and positive definite.

## References

[Nas84]

Stephen G Nash. Newton-type minimization via the Lanczos method. SIAM Journal on Numerical Analysis, 21(4):770–788, 1984.

## See Also

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

## Level

developer

## Location

src/ksp/ksp/impls/cg/nash/nash.c

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