# 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#

the**snes -**`SNES`

contextthe matrix that defines the (approximate) Jacobian**Amat -**the matrix to be used in constructing the preconditioner, usually the same as**Pmat -**`Amat`

.Jacobian evaluation routine (if**J -**`NULL`

then`SNES`

retains any previously set value), see`SNESJacobianFn`

for details[optional] user-defined context for private data for the Jacobian evaluation routine (may be**ctx -**`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#

## Examples#

src/snes/tutorials/ex35.c

src/snes/tutorials/ex3.c

src/snes/tutorials/ex63.c

src/snes/tutorials/ex42.c

src/snes/tutorials/ex14.c

src/snes/tutorials/ex59.c

src/snes/tutorials/ex15.c

src/snes/tutorials/ex1.c

src/snes/tutorials/ex78.c

src/snes/tutorials/ex18.c

Index of all SNES routines

Table of Contents for all manual pages

Index of all manual pages