:orphan: # 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, PetscErrorCode (*J)(SNES, Vec, Mat, Mat, void *), 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 `SNESJacobianFunction` 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 [](ch_snes), `SNES`, `KSPSetOperators()`, `SNESSetFunction()`, `MatMFFDComputeJacobian()`, `SNESComputeJacobianDefaultColor()`, `MatStructure`, `SNESSetPicard()`, `SNESJacobianFunction` ## Level beginner ## Location src/snes/interface/snes.c ## Examples src/snes/tutorials/ex1.c
src/snes/tutorials/ex12.c
src/snes/tutorials/ex14.c
src/snes/tutorials/ex15.c
src/snes/tutorials/ex18.c
src/snes/tutorials/ex1f.F90
src/snes/tutorials/ex2.c
src/snes/tutorials/ex22.c
src/snes/tutorials/ex28.c
src/snes/tutorials/ex3.c
src/snes/tutorials/ex35.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/snes/interface/snes.c) [Index of all SNES routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)