SNESNRICHARDSON#
Richardson nonlinear solver that uses successive substitutions, also sometimes known as Picard iteration.
Options Database Keys#
-snes_linesearch_type (none|bt|secant|cp|nleqerr|bisection|shell) - Line search type, see
SNESLineSearchType-snes_linesearch_damping damping - Damping for the line search.
Notes#
If no inner nonlinear preconditioner is provided then solves \(F(x) - b = 0\) using \(x^{n+1} = x^{n} - \lambda
(F(x^n) - b)\), where \(\lambda\) is obtained with either SNESLineSearchSetDamping() or -snes_linesearch_damping if
using the none line search type, or determined by an actual line search algorithm.
If an inner nonlinear preconditioner is provided (either with -npc_snes_type or SNESSetNPC()), then the inner
solver is called on the initial solution \(x^n\) and the nonlinear Richardson uses \( x^{n+1} = x^{n} + \lambda d^{n}\)
where \(d^{n} = \hat{x}^{n} - x^{n}\) where \(\hat{x}^{n}\) is the solution returned from the inner solver.
The update, especially without inner nonlinear preconditioner, may be ill-scaled. If using the none
line search, one may have to scale the update with either SNESLineSearchSetDamping() or -snes_linesearch_damping
as mentioned above.
This uses no derivative information provided with SNESSetJacobian() thus it will be much slower than Newton’s method obtained with -snes_type newtonls
Only supports left non-linear preconditioning.
See Also#
SNES: Nonlinear Solvers, SNESCreate(), SNES, SNESSetType(), SNESNEWTONLS, SNESNEWTONTR, SNESNGMRES, SNESQN, SNESNCG,
SNESLineSearchSetDamping(), SNESLineSearchType
Level#
beginner
Location#
src/snes/impls/richardson/snesrichardson.c
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages