Skip to main content
`Ctrl`+`K`

# SNESSetType

Sets the algorithm/method to be used to solve the nonlinear system with the given `SNES`

## Synopsis

    #include "petscsnes.h"
    #include "petscsnes.h"
    PetscErrorCode SNESSetType(SNES snes, SNESType type)

Collective

## Input Parameters

- snes - the `SNES` context

- type - a known method

## Options Database Key

- -snes_type type - Sets the method; see `SNESType`

## Notes

See `SNESType` for available methods (for instance)

- `SNESNEWTONLS` - Newton’s method with line search (systems of nonlinear equations)

- `SNESNEWTONTR` - Newton’s method with trust region (systems of nonlinear equations)

Normally, it is best to use the `SNESSetFromOptions()` command and then set the `SNES` solver type from the options database rather than by using this routine. Using the options database provides the user with maximum flexibility in evaluating the many nonlinear solvers. The `SNESSetType()` routine is provided for those situations where it is necessary to set the nonlinear solver independently of the command line or options database. This might be the case, for example, when the choice of solver changes during the execution of the program, and the user’s application is taking responsibility for choosing the appropriate method.

## Developer Note

`SNESRegister()` adds a constructor for a new `SNESType` to `SNESList`, `SNESSetType()` locates the constructor in that list and calls it to create the specific object.

## See Also

SNES: Nonlinear Solvers, `SNES`, `SNESSolve()`, `SNESType`, `SNESCreate()`, `SNESDestroy()`, `SNESGetType()`, `SNESSetFromOptions()`

## Level

intermediate

## Location

src/snes/interface/snes.c

## Examples

src/snes/tutorials/ex35.c
src/snes/tutorials/ex9.c
src/snes/tutorials/ex11.c
src/snes/tutorials/ex1.c
src/snes/tutorials/ex64.c

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