SNESComputeJacobianDefaultColor#
Computes the Jacobian using finite differences and coloring to exploit matrix sparsity.
Synopsis#
#include "petscsnes.h"  
#include "petscdm.h"    
PetscErrorCode SNESComputeJacobianDefaultColor(SNES snes, Vec x1, Mat J, Mat B, void *ctx)
Collective
Input Parameters#
- snes - nonlinear solver object 
- x1 - location at which to evaluate Jacobian 
- ctx - - MatFDColoringcontext or- NULL
Output Parameters#
- J - Jacobian matrix (not altered in this routine) 
- B - newly computed Jacobian matrix to use with preconditioner (generally the same as - J)
Options Database Keys#
- -snes_fd_color_use_mat - use a matrix coloring from the explicit matrix nonzero pattern instead of from the - DMproviding the matrix
- -snes_fd_color - Activates - SNESComputeJacobianDefaultColor()in- SNESSetFromOptions()
- -mat_fd_coloring_err - - Sets- (square root of relative error in the function) 
- -mat_fd_coloring_umin - - Sets umin, the minimum allowable u-value magnitude
- -mat_fd_type - Either wp or ds (see - MATMFFD_WPor- MATMFFD_DS)
- -snes_mf_operator - Use matrix-free application of Jacobian 
- -snes_mf - Use matrix-free Jacobian with no explicit Jacobian representation 
Notes#
If the coloring is not provided through the context, this will first try to get the
coloring from the DM.  If the DM has no coloring routine, then it will try to
get the coloring from the matrix.  This requires that the matrix have its nonzero locations already provided.
SNES supports three approaches for computing (approximate) Jacobians: user provided via SNESSetJacobian(), matrix-free via SNESSetUseMatrixFree(),
and computing explicitly with finite differences and coloring using MatFDColoring. It is also possible to use automatic differentiation
and the MatFDColoring object, see src/ts/tutorials/autodiff/ex16adj_tl.cxx
This function can be provided to SNESSetJacobian() along with an appropriate sparse matrix to hold the Jacobian
Developer Note#
The function has a poorly chosen name since it does not mention the use of finite differences
See Also#
SNES: Nonlinear Solvers, SNES, SNESSetJacobian(), SNESTestJacobian(), SNESComputeJacobianDefault(), SNESSetUseMatrixFree(),
MatFDColoringCreate(), MatFDColoringSetFunction()
Level#
intermediate
Location#
Examples#
src/ts/tutorials/ex10.c
src/snes/tutorials/ex14.c
src/ts/tutorials/ex15.c
src/ts/tutorials/ex17.c
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages