SNESLineSearchPreCheckPicard#
Implements a correction that is sometimes useful to improve the convergence rate of Picard iteration [HP96]
Synopsis#
#include "petscsnes.h"
PetscErrorCode SNESLineSearchPreCheckPicard(SNESLineSearch linesearch, Vec X, Vec Y, PetscBool *changed, void *ctx)
Logically Collective
Input Parameters#
linesearch - the line search 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 Keys#
-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” [HP96]. This correction is generally not useful when using a Newton linearization.
Developer Note#
The use of PetscObjectGetState()
would eliminate the need for the changed
argument to be provided
References#
See Also#
SNES: Nonlinear Solvers, SNES
, SNESLineSearch
, SNESSetPicard()
, SNESGetLineSearch()
, SNESLineSearchSetPreCheck()
, SNESLineSearchSetPostCheck()
Level#
advanced
Location#
Examples#
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages