SNESNRICHARDSON#

Richardson nonlinear solver that uses successive substitutions, also sometimes known as Picard iteration.

Options Database Keys#

  • -snes_linesearch_type <l2,cp,basic> - Line search type.

  • -snes_linesearch_damping <1.0> - Damping for the line search.

Notes#

If no inner nonlinear preconditioner is provided then solves F(x)b=0F(x) - b = 0 using xn+1=xnλ(F(xn)b)x^{n+1} = x^{n} - \lambda (F(x^n) - b) where λ \lambda is obtained with either SNESLineSearchSetDamping(), -snes_damping or a line search. If an inner nonlinear preconditioner is provided (either with -npc_snes_type or SNESSetNPC()) then the inner solver is called on the initial solution xnx^n and the nonlinear Richardson uses xn+1=xn+λdn x^{n+1} = x^{n} + \lambda d^{n} where dn=x^nxnd^{n} = \hat{x}^{n} - x^{n} where x^n\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 basic linesearch, one may have to scale the update with -snes_linesearch_damping

This uses no derivative information provided with SNESSetJacobian() thus it will be much slower then Newton’s method obtained with -snes_type ls

Only supports left non-linear preconditioning.

See Also#

SNES: Nonlinear Solvers, SNESCreate(), SNES, SNESSetType(), SNESNEWTONLS, SNESNEWTONTR, SNESNGMRES, SNESQN, SNESNCG, SNESLineSearchSetDamping()

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