Skip to main content
`Ctrl`+`K`

# SNESNCG

Nonlinear Conjugate-Gradient method for the solution of nonlinear systems [BKST15].

## Options Database Keys

- -snes_ncg_type <fr, prp, dy, hs, cd> - Choice of conjugate-gradient update parameter, default is `prp`.

- -snes_linesearch_type <cp,l2,basic> - Line search type.

- -snes_ncg_monitor - Print the beta values nonlinear Conjugate-Gradient used in the iteration, .

## Notes

This solves the nonlinear system of equations \( F(x) = 0 \) using the nonlinear generalization of the conjugate gradient method. This may be used with a nonlinear preconditioner used to pick the new search directions, but otherwise chooses the initial search direction as \( F(x) \) for the initial guess \(x\).

Only supports left non-linear preconditioning.

Default line search is `SNESLINESEARCHCP`, unless a nonlinear preconditioner is used with `-npc_snes_type` <type>, `SNESSetNPC()`, or `SNESGetNPC()` then `SNESLINESEARCHL2` is used. Also supports the special-purpose line search `SNESLINESEARCHNCGLINEAR`

## References

[BKST15]

Peter R. Brune, Matthew G. Knepley, Barry F. Smith, and Xuemin Tu. Composing scalable nonlinear algebraic solvers. SIAM Review, 57(4):535–565, 2015. http://www.mcs.anl.gov/papers/P2010-0112.pdf. URL: http://www.mcs.anl.gov/papers/P2010-0112.pdf, doi:10.1137/130936725.

## See Also

SNES: Nonlinear Solvers, `SNES`, `SNESNCG`, `SNESCreate()`, `SNES`, `SNESSetType()`, `SNESNEWTONLS`, `SNESNEWTONTR`, `SNESNGMRES`, `SNESQN`, `SNESLINESEARCHNCGLINEAR`, `SNESNCGSetType()`, `SNESLineSearchSetType()`

## Level

beginner

## Location

src/snes/impls/ncg/snesncg.c

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