petsc-3.14.6 2021-03-30
Report Typos and Errors

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
X - The current solution
F - The current function
fnorm - The current norm
Y - The search direction

Output Parameters

X - The new solution
F - The new function
fnorm - 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