Computes the Jacobian using finite differences.


#include "petscsnes.h"  
PetscErrorCode PETSCSNES_DLLEXPORT SNESDefaultComputeJacobian(SNES snes,Vec x1,Mat *J,Mat *B,MatStructure *flag,void *ctx)
Collective on SNES

Input Parameters

x1 - compute Jacobian at this point
ctx - application's function context, as set with SNESSetFunction()

Output Parameters

J - Jacobian matrix (not altered in this routine)
B - newly computed Jacobian matrix to use with preconditioner (generally the same as J)
flag - flag indicating whether the matrix sparsity structure has changed

Options Database Key

-snes_fd - Activates SNESDefaultComputeJacobian()
-snes_test_err - Square root of function error tolerance, default square root of machine epsilon (1.e-8 in double, 3.e-4 in single)
-mat_fd_type - Either wp or ds (see MATSNESMF_WP or MATSNESMF_DS)


This routine is slow and expensive, and is not currently optimized to take advantage of sparsity in the problem. Although SNESDefaultComputeJacobian() is not recommended for general use in large-scale applications, It can be useful in checking the correctness of a user-provided Jacobian.

An alternative routine that uses coloring to exploit matrix sparsity is SNESDefaultComputeJacobianColor().


SNES, finite differences, Jacobian

See Also

SNESSetJacobian(), SNESDefaultComputeJacobianColor(), MatCreateSNESMF()

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