The Nonlinear Generalized Minimum Residual method [WO00], [BKST15]

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 ngmres iteration

  • -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


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.



Peter R. Brune, Matthew G. Knepley, Barry F. Smith, and Xuemin Tu. Composing scalable nonlinear algebraic solvers. SIAM Review, 57(4):535–565, 2015. URL:, doi:10.1137/130936725.


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`





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