:orphan:
# SNESLineSearchPreCheckPicard
Implements a correction that is sometimes useful to improve the convergence rate of Picard iteration
## Synopsis
```
#include "petscsnes.h"
PetscErrorCode SNESLineSearchPreCheckPicard(SNESLineSearch linesearch, Vec X, Vec Y, PetscBool *changed, void *ctx)
```
Logically Collective
## Input Parameters
- ***linesearch -*** linesearch context
- ***X -*** base state for this step
- ***ctx -*** context for this function
## Input/Output Parameter
- ***Y -*** correction, possibly modified
## Output Parameter
- ***changed -*** flag indicating that Y was modified
## Options Database Key
- ***-snes_linesearch_precheck_picard -*** activate this routine
- ***-snes_linesearch_precheck_picard_angle -*** angle
## Notes
This function should be passed to `SNESLineSearchSetPreCheck()`
The justification for this method involves the linear convergence of a Picard iteration
so the Picard linearization should be provided in place of the "Jacobian". This correction
is generally not useful when using a Newton linearization.
## Reference
. - * - Hindmarsh and Payne (1996) Time step limits for stable solutions of the ice sheet equation, Annals of Glaciology.
## See Also
`SNESLineSearch`, `SNESSetPicard()`, `SNESGetLineSearch()`, `SNESLineSearchSetPreCheck()`
## Level
advanced
## Location
src/snes/linesearch/interface/linesearch.c
## Examples
src/snes/tutorials/ex15.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)