Skip to main content
`Ctrl`+`K`

# SNESNGMRES

An implementation of the Nonlinear Generalized Minimum Residual method, Nonlinear GMRES, or N-GMRES [WO00], [BKST15] for solving nonlinear systems with `SNES`.

## Options Database Keys

- -snes_ngmres_select_type<difference,none,linesearch> - choose the select between candidate and combined solution

- -snes_ngmres_restart_type<difference,none,periodic> - choose the restart conditions

- -snes_ngmres_candidate - Use `SNESNGMRES` variant which combines candidate solutions instead of actual solutions

- -snes_ngmres_m - Number of stored previous solutions and residuals

- -snes_ngmres_restart_it - Number of iterations the restart conditions hold before restart

- -snes_ngmres_gammaA - Residual tolerance for solution select between the candidate and combination

- -snes_ngmres_gammaC - Residual tolerance for restart

- -snes_ngmres_epsilonB - Difference tolerance between subsequent solutions triggering restart

- -snes_ngmres_deltaB - Difference tolerance between residuals triggering restart

- -snes_ngmres_restart_fm_rise - Restart on residual rise from \(x_M\) step

- -snes_ngmres_monitor - Prints relevant information about the nonlinear GNMRES iterations

- -snes_linesearch_type <basic,l2,cp> - Line search type used for the default smoother

- -snes_ngmres_additive_snes_linesearch_type - line search type used to select between the candidate and combined solution with additive select type

## Notes

The N-GMRES method combines m previous solutions into a minimum-residual solution by solving a small linearized optimization problem at each iteration.

Very similar to the `SNESANDERSON` algorithm.

Unlike the linear GMRES algorithm this algorithm does not compute a Krylov subspace using the Arnoldi process. Instead it stores a collection of previous solutions and the residuals \( F(x) - b \) at those solutions.

This algorithm ignores any Jacobian provided with `SNESSetJacobian()`

Only supports left non-linear preconditioning.

## References

[BKST15]

Peter R. Brune, Matthew G. Knepley, Barry F. Smith, and Xuemin Tu. Composing scalable nonlinear algebraic solvers. SIAM Review, 57(4):535–565, 2015. http://www.mcs.anl.gov/papers/P2010-0112.pdf. URL: http://www.mcs.anl.gov/papers/P2010-0112.pdf, doi:10.1137/130936725.

[WO00]

T. Washio and C. W. Oosterlee. Krylov subspace acceleration for nonlinear multigrid schemes with application to recirculating flow. SIAM Journal on Scientific Computing, 21(5):1670–1690, 2000.

## See Also

SNES: Nonlinear Solvers, `SNESCreate()`, `SNES`, `SNESSetType()`, `SNESType`, `SNESANDERSON`, `SNESNGMRESSetSelectType()`, `SNESNGMRESSetRestartType()`, `SNESNGMRESSetRestartFmRise()`, `SNESNGMRESSelectType`, `SNESNGMRESRestartType`

## Level

beginner

## Location

src/snes/impls/ngmres/snesngmres.c

Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages