This routine is not a line search at all; it simply uses the full Newton step. This version does not even compute the norm of the function or search direction; this is intended only when you know the full step is fine and are not checking for convergence of the nonlinear iteration (for example, you are running always for a fixed number of Newton steps).


PetscErrorCode PETSCSNES_DLLEXPORT SNESLineSearchNoNorms(SNES snes,void *lsctx,Vec x,Vec f,Vec g,Vec y,Vec w,PetscReal fnorm,PetscReal *ynorm,PetscReal *gnorm,PetscTruth *flag)
Collective on SNES and Vec

Input Parameters

snes - nonlinear context
lsctx - optional context for line search (not used here)
x - current iterate
f - residual evaluated at x
y - search direction
w - work vector
fnorm - 2-norm of f

Output Parameters

g - residual evaluated at new iterate y
w - new iterate
gnorm - not changed
ynorm - not changed
flag - set to PETSC_TRUE indicating a successful line search

Options Database Key

-snes_ls basicnonorms -Activates SNESLineSearchNoNorms()


SNESLineSearchNoNorms() must be used in conjunction with either the options
    -snes_no_convergence_test -snes_max_it <its>
or alternatively a user-defined custom test set via SNESSetConvergenceTest(); or a -snes_max_it of 1, otherwise, the SNES solver will generate an error.

During the final iteration this will not evaluate the function at the solution point. This is to save a function evaluation while using pseudo-timestepping.

The residual norms printed by monitoring routines such as SNESMonitorDefault() (as activated via -snes_monitor) will not be correct, since they are not computed.


SNES, nonlinear, line search, cubic

See Also

SNESLineSearchCubic(), SNESLineSearchQuadratic(),
SNESLineSearchSet(), SNESLineSearchNo()

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