# SNESSetJacobian

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

### Synopsis

    #include "petscsnes.h"
    PetscErrorCode PETSCSNES_DLLEXPORT SNESSetJacobian(SNES snes,Mat A,Mat B,PetscErrorCode (*func)(SNES,Vec,Mat*,Mat*,MatStructure*,void*),void *ctx)

Collective on SNES and Mat

### Input Parameters

| snes | - the SNES context
| A | - Jacobian matrix
| B | - preconditioner matrix (usually same as the Jacobian)
| func | - Jacobian evaluation routine
| ctx | - [optional] user-defined context for private data for the Jacobian evaluation routine (may be PETSC_NULL)

### Calling sequence of func

        func (SNES snes,Vec x,Mat *A,Mat *B,int *flag,void *ctx);

| x | - input vector
| A | - Jacobian matrix
| B | - preconditioner matrix, usually the same as A
| flag | - flag indicating information about the preconditioner matrix structure (same as flag in KSPSetOperators()), one of SAME_NONZERO_PATTERN,DIFFERENT_NONZERO_PATTERN,SAME_PRECONDITIONER
| ctx | - [optional] user-defined Jacobian context

### Notes

See KSPSetOperators() for important information about setting the flag output parameter in the routine func(). Be sure to read this information!

The routine func() takes Mat * as the matrix arguments rather than Mat. This allows the Jacobian evaluation routine to replace A and/or B with a completely new new matrix structure (not just different matrix elements) when appropriate, for instance, if the nonzero structure is changing throughout the global iterations.

### Keywords

SNES, nonlinear, set, Jacobian, matrix

### See Also

KSPSetOperators(), SNESSetFunction(), MatSNESMFComputeJacobian(), SNESDefaultComputeJacobianColor(), MatStructure

Level:beginner
Location: src/snes/interface/snes.c
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages

### Examples

src/snes/examples/tutorials/ex1.c.html
src/snes/examples/tutorials/ex2.c.html
src/snes/examples/tutorials/ex3.c.html
src/snes/examples/tutorials/ex5.c.html
src/snes/examples/tutorials/ex5s.c.html
src/snes/examples/tutorials/ex6.c.html
src/snes/examples/tutorials/ex14.c.html
src/snes/examples/tutorials/ex24.c.html
src/snes/examples/tutorials/ex26.c.html
src/snes/examples/tutorials/ex1f.F.html
src/snes/examples/tutorials/ex5f.F.html