# 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
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/snes/linesearch/interface/linesearch.c.html#SNESLineSearchPreCheckPicard">src/snes/linesearch/interface/linesearch.c</A>

## Examples
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/snes/tutorials/ex15.c.html">src/snes/tutorials/ex15.c.html</A><BR>


---
[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](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
