[petsc-users] Jacobian test by finite difference

zakaryah . zakaryah at gmail.com
Tue May 19 00:56:05 CDT 2020


Hi all,

I'm debugging some convergence issues and I came across something strange.
I am using a nonlinear solver on a structured grid. The DMDA is 3
dimensional, with 3 dof, and a box stencil of width 1. There are some small
errors in the hand-coded Jacobian, which I am trying to sort out, but at
least the fill pattern of the matrix is correct.

However, when I run with -snes_test_jacobian -snes_test_jacobian_display
-snes_compare_explicit, I see something very strange. The finite difference
Jacobian has large terms outside the stencil. For example, for x,y,z,c =
0,0,0,0 (row 0), the columns 6, 7, 8, 12, 13, and 14 (column 6 =>
x=2,y=0,z=0,c=0, etc.) have large values, while columns 9 through 20 are
calculated but equal to zero. The "correct" values, i.e., in the stencil,
are calculated as well, and nearly agree with my hand-coded Jacobian. This
issue does NOT occur in serial, but occurs for any number of processors
greater than 1.

I have checked the indexing by hand, carefully, and the memory access with
valgrind, and the results were clean. Does anyone have an idea why the
finite difference calculation of the Jacobian would produce large values
outside the stencil? I am using PETSc 3.12.2 and openMPI 3.1.0. Thanks for
your help.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200519/9a5311da/attachment.html>


More information about the petsc-users mailing list