Skip to main content
`Ctrl`+`K`

# SNESLineSearchReason

indication if the line search has succeeded or failed and why

## Synopsis

    typedef enum {
      SNES_LINESEARCH_SUCCEEDED,
      SNES_LINESEARCH_FAILED_NANORINF,
      SNES_LINESEARCH_FAILED_DOMAIN,
      SNES_LINESEARCH_FAILED_REDUCT, /* INSUFFICIENT REDUCTION */
      SNES_LINESEARCH_FAILED_USER,
      SNES_LINESEARCH_FAILED_FUNCTION
    } SNESLineSearchReason;

## Values

- `SNES_LINESEARCH_SUCCEEDED` - the line search succeeded

- `SNES_LINESEARCH_FAILED_NANORINF` - a not a number of infinity appeared in the computions

- `SNES_LINESEARCH_FAILED_DOMAIN` - the function was evaluated outside of its domain, see `SNESSetFunctionDomainError()` and `SNESSetJacobianDomainError()`

- `SNES_LINESEARCH_FAILED_REDUCT` - the linear search failed to get the requested decrease in its norm or objective

- `SNES_LINESEARCH_FAILED_USER` - used by `SNESLINESEARCHNLEQERR` to indicate the user changed the search direction inappropriately

- `SNES_LINESEARCH_FAILED_FUNCTION` - indicates the maximum number of function evaluations allowed has been surpassed, `SNESConvergedReason` is also set to `SNES_DIVERGED_FUNCTION_COUNT`

## Developer Note

Some of these reasons overlap with values of `SNESConvergedReason`

## See Also

SNES: Nonlinear Solvers, `SNES`, `SNESSolve()`, `SNESGetConvergedReason()`, `KSPConvergedReason`, `SNESSetConvergenceTest()`, `SNESSetFunctionDomainError()` and `SNESSetJacobianDomainError()`

## Level

intermediate

## Location

include/petscsnes.h

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