[petsc-users] how is snes_test_jacobian_view computing the matrix difference?

Matteo Semplice matteo.semplice at uninsubria.it
Mon Mar 2 17:00:52 CST 2026


It's indeed a DMDA (with 2 dofs per point), but the code is run with

-snes_test_jacobian -snes_test_jacobian_view

Would the hand-coded and the f.d. jacobian be different matrix type in 
this case?

Matteo

Il 02/03/26 21:32, Stefano Zampini ha scritto:
> Maybe you are using a DMDA, with one matrix coming from it and the 
> other not? DMDA changes the View to dump in natural ordering.
>
> Il giorno lun 2 mar 2026 alle ore 18:10 Matteo Semplice via 
> petsc-users <petsc-users at mcs.anl.gov> ha scritto:
>
>     Dear all,
>
>         the following output from -snes_test_jacobian_view lokks clear
>     enough to pinpoint my mistake (I must be putting jacobian elements
>     in the wrong place), but it nevertheless left me suprised.
>
>     0 SNES Function norm 2.945516399303e-01
>       ---------- Testing Jacobian -------------
>       Testing hand-coded Jacobian, if (for double precision runs) ||J
>     - Jfd||_F/||J||_F is
>         O(1.e-8), the hand-coded Jacobian is probably correct.
>       ||J - Jfd||_F/||J||_F = 0.000121529, ||J - Jfd||_F = 0.395752
>       Hand-coded Jacobian ----------
>     Mat Object: 4 MPI processes
>       row 84:     (84, 60.)      (85, 0.) (3446, -80.)     (3447, 0.)
>         (6808, 20.)   (6809, 0.)
>       row 85:     (84, 0.00914434)      (85, 1.)      (3446, 0.)     
>     (3447, 0.)      (6808, 0.)      (6809, 0.)
>
>        Finite difference Jacobian ----------
>     Mat Object: 4 MPI processes
>       type: mpiaij
>       row 84:   (84, 60.) (1806, -80.) (3528, 20.)
>       row 85:   (85, 0.999971)
>
>       Hand-coded minus finite-difference Jacobian with tolerance 1e-05
>     ----------
>     Mat Object: 4 MPI processes
>       type: mpiaij
>     row 84:
>       row 85:   (84, 0.00914434)    (85, 2.9293e-05)
>
>     The difference of the two matrices shoudl be nonzero in row 84 for
>     all elements 1806, 3528, 3446, 6808. Is it intended that the
>     difference is shown only for matrix elements that are present in
>     both the hand-coded and the FD jacobian?
>
>     I would have expected an output like
>
>     row 84: (1806,80.)   (3446,-80.), etc
>
>     (This was on PETSc Release Version 3.24.2)
>
>     Thanks
>
>         Matteo
>
>     -- 
>     Prof. Matteo Semplice
>     Università degli Studi dell’Insubria
>     Dipartimento di Scienza e Alta Tecnologia – DiSAT
>     Professore Associato
>     Via Valleggio, 11 – 22100 Como (CO) – Italia
>     tel.: +39 031 2386316
>
>
>
> -- 
> Stefano

-- 
---
Professore Associato in Analisi Numerica
Dipartimento di Scienza e Alta Tecnologia
Università degli Studi dell'Insubria
Via Valleggio, 11 - Como
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20260303/4b48480f/attachment.html>


More information about the petsc-users mailing list