:orphan: # SNESLineSearchApply Computes the line-search update. ## Synopsis ``` #include "petscsnes.h" PetscErrorCode SNESLineSearchApply(SNESLineSearch linesearch, Vec X, Vec F, PetscReal *fnorm, Vec Y) ``` Collective ## 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 (or equivalently none), 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 `SNESLineSearch`, `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
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/snes/linesearch/interface/linesearch.c) [Index of all SNES routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)