Skip to main content
`Ctrl`+`K`

# SNESSetJacobian

Sets the function to compute Jacobian as well as the location to store the matrix.

## Synopsis

    #include "petscsnes.h"
    PetscErrorCode SNESSetJacobian(SNES snes, Mat Amat, Mat Pmat, SNESJacobianFn *J, void *ctx)

Logically Collective

## Input Parameters

- snes - the `SNES` context

- Amat - the matrix that defines the (approximate) Jacobian

- Pmat - the matrix to be used in constructing the preconditioner, usually the same as `Amat`.

- J - Jacobian evaluation routine (if `NULL` then `SNES` retains any previously set value), see `SNESJacobianFn` for details

- ctx - [optional] user-defined context for private data for the Jacobian evaluation routine (may be `NULL`) (if `NULL` then `SNES` retains any previously set value)

## Notes

If the `Amat` matrix and `Pmat` matrix are different you must call `MatAssemblyBegin()`/`MatAssemblyEnd()` on each matrix.

If you know the operator `Amat` has a null space you can use `MatSetNullSpace()` and `MatSetTransposeNullSpace()` to supply the null space to `Amat` and the `KSP` solvers will automatically use that null space as needed during the solution process.

If using `SNESComputeJacobianDefaultColor()` to assemble a Jacobian, the `ctx` argument must be a `MatFDColoring`.

Other defect-correction schemes can be used by computing a different matrix in place of the Jacobian. One common example is to use the “Picard linearization” which only differentiates through the highest order parts of each term using `SNESSetPicard()`

## See Also

SNES: Nonlinear Solvers, `SNES`, `KSPSetOperators()`, `SNESSetFunction()`, `MatMFFDComputeJacobian()`, `SNESComputeJacobianDefaultColor()`, `MatStructure`, `SNESSetPicard()`, `SNESJacobianFn`, `SNESFunctionFn`

## Level

beginner

## Location

src/snes/interface/snes.c

## Examples

src/snes/tutorials/ex28.c
src/snes/tutorials/ex12.c
src/snes/tutorials/ex15.c
src/snes/tutorials/ex3.c
src/snes/tutorials/ex1f.F90
src/snes/tutorials/ex18.c
src/snes/tutorials/ex1.c
src/snes/tutorials/ex14.c
src/snes/tutorials/ex2.c
src/snes/tutorials/ex22.c

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