PETSc version 3.17.4
Fix/Edit manual page

# SNESLineSearchApply

Computes the line-search update.

### Synopsis

    #include "petscsnes.h"
    PetscErrorCode SNESLineSearchApply(SNESLineSearch linesearch, Vec X, Vec F, PetscReal * fnorm, Vec Y)

Collective on SNESLineSearch

### Input Parameters

| linesearch | - The linesearch context
| Y | - The search direction

### Input/Output Parameters

| X | - The current solution, on output the new solution
| F | - The current function, on output the new function
| fnorm | - The current norm, on output the new function norm

### Options Database Keys

| -snes_linesearch_type | - basic, bt, l2, cp, nleqerr, shell
| -snes_linesearch_monitor [:filename] | - Print progress of line searches
| -snes_linesearch_damping | - The linesearch damping parameter, default is 1.0 (no damping)
| -snes_linesearch_norms | - Turn on/off the linesearch norms computation (SNESLineSearchSetComputeNorms())
| -snes_linesearch_keeplambda | - Keep the previous search length as the initial guess
| -snes_linesearch_max_it | - The number of iterations for iterative line searches

### Notes

This is typically called from within a SNESSolve() implementation in order to help with convergence of the nonlinear method. Various SNES types use line searches in different ways, but the overarching theme is that a line search is used to determine an optimal damping parameter of a step at each iteration of the method. Each application of the line search may invoke SNESComputeFunction() several times, and therefore may be fairly expensive.

### See Also

SNESGetLineSearch(), SNESLineSearchCreate(), SNESLineSearchPreCheck(), SNESLineSearchPostCheck(), SNESSolve(), SNESComputeFunction(), SNESLineSearchSetComputeNorms(),
SNESLineSearchType, SNESLineSearchSetType()

### Level

Intermediate

### Location

src/snes/linesearch/interface/linesearch.c

### Implementations

SNESLineSearchApply_NCGLinear in src/snes/impls/ncg/snesncg.c
SNESLineSearchApply_Basic in src/snes/linesearch/impls/basic/linesearchbasic.c
SNESLineSearchApply_BT in src/snes/linesearch/impls/bt/linesearchbt.c
SNESLineSearchApply_CP in src/snes/linesearch/impls/cp/linesearchcp.c
SNESLineSearchApply_L2 in src/snes/linesearch/impls/l2/linesearchl2.c
SNESLineSearchApply_NLEQERR in src/snes/linesearch/impls/nleqerr/linesearchnleqerr.c
SNESLineSearchApply_Shell in src/snes/linesearch/impls/shell/linesearchshell.c
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages