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, SNESJacobianFn *J, void *ctx)
Logically Collective
Input Parameters#
snes - the
SNES
contextAmat - 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
thenSNES
retains any previously set value), seeSNESJacobianFn
for detailsctx - [optional] user-defined context for private data for the Jacobian evaluation routine (may be
NULL
) (ifNULL
thenSNES
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#
SNES: Nonlinear Solvers, SNES
, KSPSetOperators()
, SNESSetFunction()
, MatMFFDComputeJacobian()
, SNESComputeJacobianDefaultColor()
, MatStructure
,
SNESSetPicard()
, SNESJacobianFn
, SNESFunctionFn
Level#
beginner
Location#
Examples#
src/ts/tutorials/ex4.c
src/snes/tutorials/ex58.c
src/ts/tutorials/ex15.c
src/snes/tutorials/ex78.c
src/snes/tutorials/ex59.c
src/snes/tutorials/ex2.c
src/snes/tutorials/ex35.c
src/ts/tutorials/ex10.c
src/ts/tutorials/ex17.c
src/snes/tutorials/ex77.c
Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages