petsc-3.10.5 2019-03-28
Report Typos and Errors

# 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 on SNESLineSearch

### Input Arguments

| linesearch | - linesearch context
| X | - base state for this step
| Y | - initial correction
| ctx | - context for this function

### Output Arguments

| Y | - correction, possibly modified
| 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

SNESGetLineSearch(), SNESLineSearchSetPreCheck()

### Level

advanced

### Location

src/snes/linesearch/interface/linesearch.c

### Examples

src/snes/examples/tutorials/ex15.c.html
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages