SNESLineSearchApply#
Computes the line-search update.
Synopsis#
#include "petscsnes.h" 
PetscErrorCode SNESLineSearchApply(SNESLineSearch linesearch, Vec X, Vec F, PetscReal *fnorm, Vec Y)
Collective
Input Parameter#
- linesearch - The line search context 
Input/Output Parameters#
- X - The current solution, on output the new solution 
- F - The current function value, on output the new function value at the solution value - X
- fnorm - The current norm of - F, on output the new norm of- F
- Y - The current search direction, on output the direction determined by the linesearch, i.e. Xnew = Xold - lambda*Y 
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#
SNES: Nonlinear Solvers, SNES, SNESLineSearch, SNESGetLineSearch(), SNESLineSearchCreate(), SNESLineSearchGetLambda(), SNESLineSearchPreCheck(), SNESLineSearchPostCheck(), SNESSolve(), SNESComputeFunction(), SNESLineSearchSetComputeNorms(),
SNESLineSearchType, SNESLineSearchSetType()
Level#
intermediate
Location#
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