1e5148a0bSMatthew G. Knepley #pragma once 2e5148a0bSMatthew G. Knepley 3e5148a0bSMatthew G. Knepley /* SUBMANSEC = SNES */ 4e5148a0bSMatthew G. Knepley 5e5148a0bSMatthew G. Knepley /*S 6e5148a0bSMatthew G. Knepley SNES - Abstract PETSc object that manages nonlinear solves 7e5148a0bSMatthew G. Knepley 8e5148a0bSMatthew G. Knepley Level: beginner 9e5148a0bSMatthew G. Knepley 10*0b4b7b1cSBarry Smith Notes: 11*0b4b7b1cSBarry Smith The most commonly used `SNESType` is `SNESNEWTONLS` which uses Newton's method with a line search. For all the Newton based `SNES` nonlinear 12*0b4b7b1cSBarry Smith solvers, `KSP`, the PETSc abstract linear solver object, is used to (approximately) solve the required linear systems. 13*0b4b7b1cSBarry Smith 14*0b4b7b1cSBarry Smith See `SNESType` for a list of all the nonlinear solver algorithms provided by PETSc. 15*0b4b7b1cSBarry Smith 16*0b4b7b1cSBarry Smith Some of the `SNES` solvers support nonlinear preconditioners, which themselves are also `SNES` objects managed with `SNESGetNPC()` 17*0b4b7b1cSBarry Smith 18*0b4b7b1cSBarry Smith .seealso: [](doc_nonlinsolve), [](ch_snes), `SNESCreate()`, `SNESSolve()`, `SNESSetType()`, `SNESType`, `TS`, `SNESType`, `KSP`, `PC`, `SNESDestroy()` 19e5148a0bSMatthew G. Knepley S*/ 20e5148a0bSMatthew G. Knepley typedef struct _p_SNES *SNES; 21