SNESLINESEARCHBISECTION — PETSc 3.25.0 documentation

Skip to main content
`Ctrl`+`K`

# SNESLINESEARCHBISECTION

Bisection line search. Similar to the critical point line search, `SNESLINESEARCHCP`, the bisection line search assumes that there exists some \(G(x)\) for which the `SNESFunctionFn` \(F(x) = grad G(x)\). This line search seeks to find the root of the directional derivative, that is \(F(x_k - \lambda Y_k) \cdot Y_k / ||Y_k|| = 0\), along the search direction \(Y_k\) through bisection.

## Options Database Keys

- -snes_linesearch_max_it 50 - maximum number of bisection iterations for the line search

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

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

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

- -snes_linesearch_ltol 1e-6 - minimum absolute change in `lambda` allowed (this is an alternative to setting a maximum number of iterations)

## Notes

`lambda` is the scaling of the search direction (vector) that is computed by this algorithm. If there is no change of sign in the directional derivative from \(\lambda=0\) to the initial `lambda` (the damping), then the initial `lambda` will be used. Hence, this line search will always give a `lambda` in the interval \([0, damping]\). This method does NOT use the objective function if it is provided with `SNESSetObjective()`.

## See Also

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

## Level

intermediate

## Location

src/snes/linesearch/impls/bisection/linesearchbisection.c

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