# SNESLineSearchSet

Sets the line search routine to be used by the method SNESLS.

### Synopsis

    PetscErrorCode PETSCSNES_DLLEXPORT SNESLineSearchSet(SNES snes,PetscErrorCode (*func)(SNES,void*,Vec,Vec,Vec,Vec,Vec,PetscReal,PetscReal*,PetscReal*,PetscTruth*),void *lsctx)

### Input Parameters

| snes | - nonlinear context obtained from SNESCreate()
| lsctx | - optional user-defined context for use by line search
| func | - pointer to int function

Collective on SNES

### Available Routines

| SNESLineSearchCubic() | - default line search
| SNESLineSearchQuadratic() | - quadratic line search
| SNESLineSearchNo() | - the full Newton step (actually not a line search)
| SNESLineSearchNoNorms() | - the full Newton step (calculating no norms; faster in parallel)

### Options Database Keys

| -snes_ls [cubic,quadratic,basic,basicnonorms] | - Selects line search
| -snes_ls_alpha <alpha> | - Sets alpha
| -snes_ls_maxstep <max> | - Sets maxstep
| -snes_ls_steptol <steptol> | - Sets steptol, this is the minimum step size that the line search code will accept; min p[i]/x[i] < steptol. The -snes_stol <stol> is the minimum step length the default convergence test will use and is based on 2-norm(p) < stol*2-norm(x)

### Calling sequence of func

       func (SNES snes,void *lsctx,Vec x,Vec f,Vec g,Vec y,Vec w,
             PetscReal fnorm,PetscReal *ynorm,PetscReal *gnorm,PetscTruth *flag)

### Input parameters for func

| snes | - nonlinear context
| lsctx | - optional user-defined context for line search
| x | - current iterate
| f | - residual evaluated at x
| y | - search direction
| w | - work vector
| fnorm | - 2-norm of f

### Output parameters for func

| g | - residual evaluated at new iterate y
| w | - new iterate
| gnorm | - 2-norm of g
| ynorm | - 2-norm of search length
| flag | - set to PETSC_TRUE if the line search succeeds; PETSC_FALSE on failure.

### Keywords

SNES, nonlinear, set, line search, routine

### See Also

SNESLineSearchCubic(), SNESLineSearchQuadratic(), SNESLineSearchNo(), SNESLineSearchNoNorms(),
SNESLineSearchSetPostCheck(), SNESLineSearchSetParams(), SNESLineSearchGetParams(), SNESLineSearchSetPreCheck()

Level:advanced
Location:src/snes/impls/ls/ls.c
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages

### Examples

src/snes/examples/tutorials/ex1f.F.html