Skip to main content
`Ctrl`+`K`

# SNESLINESEARCHCP

Critical point line search. This line search assumes that there exists some artificial \(G(x)\) for which the `SNESFunctionFn` \(F(x) = grad G(x)\). Therefore, this line search seeks to find roots of the directional derivative via a secant method, that is \(F(x_k - \lambda Y_k) \cdot Y_k / ||Y_k|| = 0\).

## Options Database Keys

- -snes_linesearch_minlambda 1e-12 - the minimum acceptable `lambda` (scaling of solution update)

- -snes_linesearch_maxlambda 1.0 - the algorithm ensures that `lambda` is never larger than this value

- -snes_linesearch_damping 1.0 - initial `lambda` on entry to the line search

- -snes_linesearch_order 1 - order of the approximation in the secant method, must be 1, 2, or 3

- -snes_linesearch_max_it 1 - the maximum number of secant iterations performed

- -snes_linesearch_rtol 1e-8 - relative tolerance for the directional derivative

- -snes_linesearch_atol 1e-15 - absolute tolerance for the directional derivative

- -snes_linesearch_ltol 1e-8 - minimum absolute change in `lambda` allowed

## Notes

This method does NOT use the objective function if it is provided with `SNESSetObjective()`.

This method is the preferred line search for `SNESQN` and `SNESNCG`.

## See Also

SNES: Nonlinear Solvers, `SNESLineSearch`, `SNESLineSearchType`, `SNESLineSearchCreate()`, `SNESLineSearchSetType()`, `SNESLINESEARCHBISECTION`

## Level

advanced

## Location

src/snes/linesearch/impls/cp/linesearchcp.c

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