SNESCreate#

Creates a nonlinear solver context used to manage a set of nonlinear solves

Synopsis#

#include "petscsnes.h"  
PetscErrorCode SNESCreate(MPI_Comm comm, SNES *outsnes)

Collective

Input Parameter#

  • comm - MPI communicator

Output Parameter#

  • outsnes - the new SNES context

Options Database Keys#

  • -snes_mf - Activates default matrix-free Jacobian-vector products, and no preconditioning matrix

  • -snes_mf_operator - Activates default matrix-free Jacobian-vector products, and a user-provided preconditioning matrix as set by SNESSetJacobian()

  • -snes_fd_coloring - uses a relative fast computation of the Jacobian using finite differences and a graph coloring

  • -snes_fd - Uses (slow!) finite differences to compute Jacobian

Developer Notes#

SNES always creates a KSP object even though many SNES methods do not use it. This is unfortunate and should be fixed at some point. The flag snes->usesksp indicates if the particular method does use KSP and regulates if the information about the KSP is printed in SNESView().

TSSetFromOptions() does call SNESSetFromOptions() which can lead to users being confused by help messages about meaningless SNES options.

SNES always creates the snes->kspconvctx even though it is used by only one type. This should be fixed.

See Also#

SNES: Nonlinear Solvers, SNES, SNESSolve(), SNESDestroy(), SNES, SNESSetLagPreconditioner(), SNESSetLagJacobian()

Level#

beginner

Location#

src/snes/interface/snes.c

Examples#

src/snes/tutorials/ex1.c
src/snes/tutorials/ex12.c
src/snes/tutorials/ex13.c
src/snes/tutorials/ex14.c
src/snes/tutorials/ex15.c
src/snes/tutorials/ex16.c
src/snes/tutorials/ex17.c
src/snes/tutorials/ex18.c
src/snes/tutorials/ex19.c
src/snes/tutorials/ex1f.F90
src/snes/tutorials/ex2.c

Implementations#

SNESCreate_Composite in src/snes/impls/composite/snescomposite.c
SNESCreate_FAS in src/snes/impls/fas/fas.c
SNESCreate_NGS in src/snes/impls/gs/snesgs.c
SNESCreate_KSPONLY in src/snes/impls/ksponly/ksponly.c
SNESCreate_KSPTRANSPOSEONLY in src/snes/impls/ksponly/ksponly.c
SNESCreate_NEWTONLS in src/snes/impls/ls/ls.c
SNESCreate_MS in src/snes/impls/ms/ms.c
SNESCreate_Multiblock in src/snes/impls/multiblock/multiblock.c
SNESCreate_ASPIN in src/snes/impls/nasm/aspin.c
SNESCreate_NASM in src/snes/impls/nasm/nasm.c
SNESCreate_NCG in src/snes/impls/ncg/snesncg.c
SNESCreate_Anderson in src/snes/impls/ngmres/anderson.c
SNESCreate_NGMRES in src/snes/impls/ngmres/snesngmres.c
SNESCreate_NEWTONTRDC in src/snes/impls/ntrdc/ntrdc.c
SNESCreate_Patch in src/snes/impls/patch/snespatch.c
SNESCreate_QN in src/snes/impls/qn/qn.c
SNESCreate_NRichardson in src/snes/impls/richardson/snesrichardson.c
SNESCreate_Shell in src/snes/impls/shell/snesshell.c
SNESCreate_NEWTONTR in src/snes/impls/tr/tr.c
SNESCreate_VINEWTONRSLS in src/snes/impls/vi/rs/virs.c
SNESCreate_VINEWTONSSLS in src/snes/impls/vi/ss/viss.c


Edit on GitLab

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