1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML3.2 EN">
<HTML>
<HEAD> <link rel="canonical" href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESComputeJacobian.html" />
<META NAME="GENERATOR" CONTENT="DOCTEXT">
<TITLE>SNESComputeJacobian</TITLE>
</HEAD>
<BODY BGCOLOR="FFFFFF">
<div id="version" align=right><b>petsc-3.14.5 2021-03-03</b></div>
<div id="bugreport" align=right><a href="mailto:petsc-maint@mcs.anl.gov?subject=Typo or Error in Documentation &body=Please describe the typo or error in the documentation: petsc-3.14.5 v3.14.5 docs/manualpages/SNES/SNESComputeJacobian.html "><small>Report Typos and Errors</small></a></div>
<A NAME="SNESComputeJacobian"><H1>SNESComputeJacobian</H1></A>
Computes the Jacobian matrix that has been set with <A HREF="../SNES/SNESSetJacobian.html#SNESSetJacobian">SNESSetJacobian</A>().
<H3><FONT COLOR="#CC3333">Synopsis</FONT></H3>
<PRE>
#include "petscsnes.h"
<A HREF="../Sys/PetscErrorCode.html#PetscErrorCode">PetscErrorCode</A> <A HREF="../SNES/SNESComputeJacobian.html#SNESComputeJacobian">SNESComputeJacobian</A>(<A HREF="../SNES/SNES.html#SNES">SNES</A> snes,<A HREF="../Vec/Vec.html#Vec">Vec</A> X,<A HREF="../Mat/Mat.html#Mat">Mat</A> A,<A HREF="../Mat/Mat.html#Mat">Mat</A> B)
</PRE>
Collective on <A HREF="../SNES/SNES.html#SNES">SNES</A>
<P>
<H3><FONT COLOR="#CC3333">Input Parameters</FONT></H3>
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>snes </B></TD><TD>- the <A HREF="../SNES/SNES.html#SNES">SNES</A> context
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>x </B></TD><TD>- input vector
</TD></TR></TABLE>
<P>
<H3><FONT COLOR="#CC3333">Output Parameters</FONT></H3>
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>A </B></TD><TD>- Jacobian matrix
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>B </B></TD><TD>- optional preconditioning matrix
</TD></TR></TABLE>
<P>
<H3><FONT COLOR="#CC3333">Options Database Keys</FONT></H3>
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_lag_preconditioner <lag></B></TD>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_lag_jacobian <lag></B></TD>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_test_jacobian <optional threshold> </B></TD><TD>- 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.
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_test_jacobian_view </B></TD><TD>- 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
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_explicit </B></TD><TD>- Compare the computed Jacobian to the finite difference Jacobian and output the differences
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_explicit_draw </B></TD><TD>- Compare the computed Jacobian to the finite difference Jacobian and draw the result
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_explicit_contour </B></TD><TD>- Compare the computed Jacobian to the finite difference Jacobian and draw a contour plot with the result
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_operator </B></TD><TD>- Make the comparison options above use the operator instead of the preconditioning matrix
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_coloring </B></TD><TD>- Compute the finite difference Jacobian using coloring and display norms of difference
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_coloring_display </B></TD><TD>- Compute the finite differece Jacobian using coloring and display verbose differences
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_coloring_threshold </B></TD><TD>- Display only those matrix entries that differ by more than a given threshold
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_coloring_threshold_atol </B></TD><TD>- Absolute tolerance for difference in matrix entries to be displayed by -snes_compare_coloring_threshold
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_coloring_threshold_rtol </B></TD><TD>- Relative tolerance for difference in matrix entries to be displayed by -snes_compare_coloring_threshold
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_coloring_draw </B></TD><TD>- Compute the finite differece Jacobian using coloring and draw differences
</TD></TR>
<TR><TD WIDTH=40></TD><TD ALIGN=LEFT VALIGN=TOP><B>-snes_compare_coloring_draw_contour </B></TD><TD>- Compute the finite differece Jacobian using coloring and show contours of matrices and differences
</TD></TR></TABLE>
<P>
<P>
<H3><FONT COLOR="#CC3333">Notes</FONT></H3>
Most users should not need to explicitly call this routine, as it
is used internally within the nonlinear solvers.
<P>
<H3><FONT COLOR="#CC3333">Developer Notes</FONT></H3>
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 <A HREF="../SNES/SNESType.html#SNESType">SNESType</A> of test that has been removed.
<P>
<P>
<H3><FONT COLOR="#CC3333">See Also</FONT></H3>
<A HREF="../SNES/SNESSetJacobian.html#SNESSetJacobian">SNESSetJacobian</A>(), <A HREF="../KSP/KSPSetOperators.html#KSPSetOperators">KSPSetOperators</A>(), <A HREF="../Mat/MatStructure.html#MatStructure">MatStructure</A>, <A HREF="../SNES/SNESSetLagPreconditioner.html#SNESSetLagPreconditioner">SNESSetLagPreconditioner</A>(), <A HREF="../SNES/SNESSetLagJacobian.html#SNESSetLagJacobian">SNESSetLagJacobian</A>()
<BR><P><B></B><H3><FONT COLOR="#CC3333">Level</FONT></H3>developer<BR>
<H3><FONT COLOR="#CC3333">Location</FONT></H3>
</B><A HREF="../../../src/snes/interface/snes.c.html#SNESComputeJacobian">src/snes/interface/snes.c</A>
<P><H3><FONT COLOR="#CC3333">Examples</FONT></H3>
<A HREF="../../../src/snes/tutorials/ex12.c.html">src/snes/tutorials/ex12.c.html</A><BR>
<A HREF="../../../src/snes/tutorials/ex77.c.html">src/snes/tutorials/ex77.c.html</A><BR>
<A HREF="../../../src/ts/tutorials/ex48.c.html">src/ts/tutorials/ex48.c.html</A><BR>
<BR><A HREF="./index.html">Index of all SNES routines</A>
<BR><A HREF="../../index.html">Table of Contents for all manual pages</A>
<BR><A HREF="../singleindex.html">Index of all manual pages</A>
</BODY></HTML>
|