SNESSetFromOptions#

Sets various SNES and KSP parameters from user options.

Synopsis#

#include "petscsnes.h"  
#include "petscsnes.h"  
PetscErrorCode SNESSetFromOptions(SNES snes)

Collective

Input Parameter#

  • snes - the SNES context

Options Database Keys#

  • -snes_view_pre viewer_specification - view information about the nonlinear solver before the solve

  • -snes_view viewer_specification - view information about the nonlinear solver after the solve

  • -snes_type type - newtonls, newtontr, ngmres, ncg, nrichardson, qn, vi, fas, SNESType for complete list

  • -snes_rtol rtol - relative decrease in tolerance norm from initial

  • -snes_atol abstol - absolute tolerance of residual norm

  • -snes_stol stol - convergence tolerance in terms of the norm of the change in the solution between steps

  • -snes_divergence_tolerance divtol - if the residual goes above divtol*rnorm0, exit with divergence

  • -snes_max_it max_it - maximum number of iterations

  • -snes_max_funcs max_funcs - maximum number of function evaluations

  • -snes_force_iteration force - force SNESSolve() to take at least one iteration

  • -snes_max_fail max_fail - maximum number of line search failures allowed before stopping, default is none

  • -snes_max_linear_solve_fail num - number of linear solver failures allowed before SNESSolve() is stopped

  • -snes_lag_preconditioner lag - how often preconditioner is rebuilt (use -1 to never rebuild)

  • -snes_lag_preconditioner_persists (true|false) - retains the -snes_lag_preconditioner information across multiple SNESSolve()

  • -snes_lag_jacobian lag - how often Jacobian is rebuilt (use -1 to never rebuild)

  • -snes_lag_jacobian_persists (true|false) - retains the -snes_lag_jacobian information across multiple SNESSolve()

  • -snes_convergence_test (default|skip|correct_pressure) - convergence test in nonlinear solver. default SNESConvergedDefault(). skip uses SNESConvergedSkip() and means continue iterating until max_it or some other criterion is reached. correct_pressure uses SNESConvergedCorrectPressure() and has special handling of a pressure null space.

  • -snes_monitor viewer_specification - displays residual norm at each iteration. if no filename given prints to stdout

  • -snes_monitor_solution viewer_specification - displays solution at each iteration

  • -snes_monitor_residual viewer_specification - displays residual (not its norm) at each iteration

  • -snes_monitor_solution_update viewer_specification - displays update to solution at each iteration

  • -snes_monitor_lg_range (true|false) - plots function range at each iteration

  • -snes_monitor_pause_final (true|false) - Pauses all monitor drawing after the solver ends

  • -snes_fd (true|false) - use finite differences to compute Jacobian; very slow, only for testing

  • -snes_fd_color (true|false) - use finite differences with coloring to compute Jacobian

  • -snes_converged_reason viewer_specification - print the reason for convergence/divergence after each solve

  • -npc_snes_type type - the SNES type to use as a nonlinear preconditioner

  • -snes_test_jacobian [threshold] - compare the user provided Jacobian with one computed via finite differences to check for errors. If a threshold is given, display only those entries whose difference is greater than the threshold.

  • -snes_test_jacobian_view viewer_specification - display the user provided Jacobian, the finite difference Jacobian and the difference between them to help users detect the location of errors in the user provided Jacobian.

Options Database Keys for Eisenstat-Walker method#

  • -snes_ksp_ew - use Eisenstat-Walker method for determining linear system convergence

  • -snes_ksp_ew_version ver - version of Eisenstat-Walker method

  • -snes_ksp_ew_rtol0 rtol0 - Sets rtol0

  • -snes_ksp_ew_rtolmax rtolmax - Sets rtolmax

  • -snes_ksp_ew_gamma gamma - Sets gamma

  • -snes_ksp_ew_alpha alpha - Sets alpha

  • -snes_ksp_ew_alpha2 alpha2 - Sets alpha2

  • -snes_ksp_ew_threshold threshold - Sets threshold

Notes#

See PetscOptionsCreateViewer() for the format of viewer_specification

See KSPSetFromOptions() for the KSP options database keys

To see all options, run your program with the -help option or consult the users manual

See SNESLineSearchSetFromOptions() for all the line search options available

SNES supports three approaches for computing (approximate) Jacobians: user provided via SNESSetJacobian(), matrix-free using MatCreateSNESMF(), and computing explicitly with finite differences and coloring using MatFDColoring. It is also possible to use automatic differentiation and the MatFDColoring object.

See Also#

SNES: Nonlinear Solvers, SNESType, SNESSetOptionsPrefix(), SNESResetFromOptions(), SNES, SNESCreate(), MatCreateSNESMF(), MatFDColoring, SNESLineSearchSetFromOptions()

Level#

beginner

Location#

src/snes/interface/snes.c

Examples#

src/snes/tutorials/ex23.c
src/snes/tutorials/ex35.c
src/snes/tutorials/ex28.c
src/snes/tutorials/ex17.c
src/snes/tutorials/ex33.c
src/snes/tutorials/ex21.c
src/snes/tutorials/ex14.c
src/snes/tutorials/ex1.c
src/snes/tutorials/ex40f90.F90
src/snes/tutorials/ex99.c

Implementations#

SNESSetFromOptions_NEWTONAL() in src/snes/impls/al/al.c
SNESSetFromOptions_Composite() in src/snes/impls/composite/snescomposite.c
SNESSetFromOptions_FAS() in src/snes/impls/fas/fas.c
SNESSetFromOptions_NGS() in src/snes/impls/gs/snesgs.c
SNESSetFromOptions_MS() in src/snes/impls/ms/ms.c
SNESSetFromOptions_Multiblock() in src/snes/impls/multiblock/multiblock.c
SNESSetFromOptions_NASM() in src/snes/impls/nasm/nasm.c
SNESSetFromOptions_NCG() in src/snes/impls/ncg/snesncg.c
SNESSetFromOptions_Anderson() in src/snes/impls/ngmres/anderson.c
SNESSetFromOptions_NGMRES() in src/snes/impls/ngmres/snesngmres.c
SNESSetFromOptions_NEWTONTRDC() in src/snes/impls/ntrdc/ntrdc.c
SNESSetFromOptions_Patch() in src/snes/impls/patch/snespatch.c
SNESSetFromOptions_QN() in src/snes/impls/qn/qn.c
SNESSetFromOptions_NRichardson() in src/snes/impls/richardson/snesrichardson.c
SNESSetFromOptions_NEWTONTR() in src/snes/impls/tr/tr.c
SNESSetFromOptions_VINEWTONSSLS() in src/snes/impls/vi/ss/viss.c
SNESSetFromOptions_VI() in src/snes/impls/vi/vi.c


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