:orphan: # SNESComputeJacobian Computes the Jacobian matrix that has been set with `SNESSetJacobian()`. ## Synopsis ``` #include "petscsnes.h" PetscErrorCode SNESComputeJacobian(SNES snes, Vec X, Mat A, Mat B) ``` Collective ## Input Parameters - ***snes -*** the `SNES` context - ***x -*** input vector ## Output Parameters - ***A -*** Jacobian matrix - ***B -*** optional matrix for building the preconditioner ## Options Database Keys - ***-snes_lag_preconditioner -*** how often to rebuild preconditioner - ***-snes_lag_jacobian -*** how often to rebuild Jacobian - ***-snes_test_jacobian -*** compare the user provided Jacobian with one compute via finite differences to check for errors. If a threshold is given, display only those entries whose difference is greater than the threshold. - ***-snes_test_jacobian_view -*** display the user provided Jacobian, the finite difference Jacobian and the difference between them to help users detect the location of errors in the user provided Jacobian - ***-snes_compare_explicit -*** Compare the computed Jacobian to the finite difference Jacobian and output the differences - ***-snes_compare_explicit_draw -*** Compare the computed Jacobian to the finite difference Jacobian and draw the result - ***-snes_compare_explicit_contour -*** Compare the computed Jacobian to the finite difference Jacobian and draw a contour plot with the result - ***-snes_compare_operator -*** Make the comparison options above use the operator instead of the preconditioning matrix - ***-snes_compare_coloring -*** Compute the finite difference Jacobian using coloring and display norms of difference - ***-snes_compare_coloring_display -*** Compute the finite difference Jacobian using coloring and display verbose differences - ***-snes_compare_coloring_threshold -*** Display only those matrix entries that differ by more than a given threshold - ***-snes_compare_coloring_threshold_atol -*** Absolute tolerance for difference in matrix entries to be displayed by `-snes_compare_coloring_threshold` - ***-snes_compare_coloring_threshold_rtol -*** Relative tolerance for difference in matrix entries to be displayed by `-snes_compare_coloring_threshold` - ***-snes_compare_coloring_draw -*** Compute the finite difference Jacobian using coloring and draw differences - ***-snes_compare_coloring_draw_contour -*** Compute the finite difference Jacobian using coloring and show contours of matrices and differences ## Note Most users should not need to explicitly call this routine, as it is used internally within the nonlinear solvers. ## Developer Note This has duplicative ways of checking the accuracy of the user provided Jacobian (see the options above). This is for historical reasons, the routine `SNESTestJacobian()` use to used for with the `SNESType` of test that has been removed. ## See Also [](ch_snes), `SNESSetJacobian()`, `KSPSetOperators()`, `MatStructure`, `SNESSetLagPreconditioner()`, `SNESSetLagJacobian()` ## Level developer ## Location src/snes/interface/snes.c ## Examples src/snes/tutorials/ex12.c
src/snes/tutorials/ex56.c
src/snes/tutorials/ex63.c
src/snes/tutorials/ex77.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)