<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>It's indeed a DMDA (with 2 dofs per point), but the code is run
with</p>
<p>-snes_test_jacobian -snes_test_jacobian_view</p>
<p>Would the hand-coded and the f.d. jacobian be different matrix
type in this case?</p>
<p>Matteo</p>
<div class="moz-cite-prefix">Il 02/03/26 21:32, Stefano Zampini ha
scritto:<br>
</div>
<blockquote type="cite" cite="mid:CAGPUisiMN2k2A-2VVhokn6uaDxmDYFcpgZ_cMka=z3gU8Wj-XQ@mail.gmail.com">
<div dir="ltr">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. </div>
<br>
<div class="gmail_quote gmail_quote_container">
<div dir="ltr" class="gmail_attr">Il giorno lun 2 mar 2026 alle
ore 18:10 Matteo Semplice via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" moz-do-not-send="true" class="moz-txt-link-freetext">petsc-users@mcs.anl.gov</a>>
ha scritto:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p>Dear all,</p>
<p> 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.</p>
<font face="monospace">0 SNES Function norm
2.945516399303e-01<br>
---------- Testing Jacobian -------------<br>
Testing hand-coded Jacobian, if (for double precision
runs) ||J - Jfd||_F/||J||_F is<br>
O(1.e-8), the hand-coded Jacobian is probably correct.<br>
||J - Jfd||_F/||J||_F = 0.000121529, ||J - Jfd||_F =
0.395752<br>
Hand-coded Jacobian ----------<br>
Mat Object: 4 MPI processes<br>
row 84: (84, 60.) (85, 0.) <font color="#ed5c57">(3446, -80.) </font> (3447, 0.) <font color="#ed5c57"> (6808, 20.) </font> (6809, 0.)
<br>
row 85: (84, 0.00914434) (85, 1.) (3446,
0.) (3447, 0.) (6808, 0.) (6809, 0.) <br>
<br>
Finite difference Jacobian ----------<br>
Mat Object: 4 MPI processes<br>
type: mpiaij<br>
row 84: (84, 60.) <font color="#ed5c57">(1806,
-80.) </font> <font color="#ed5c57"> (3528, 20.) </font>
<br>
row 85: (85, 0.999971)<br>
<br>
Hand-coded minus finite-difference Jacobian with
tolerance 1e-05 ----------<br>
Mat Object: 4 MPI processes<br>
type: mpiaij<br>
<font color="#ed5c57">row 84:</font> <br>
row 85: (84, 0.00914434) (85, 2.9293e-05)</font>
<p>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?</p>
<p>I would have expected an output like</p>
<p>row 84: (1806,80.) (3446,-80.), etc</p>
<p>(This was on <span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">PETSc Release
Version 3.24.2</span>)</span> </p>
<p>Thanks</p>
<p> Matteo</p>
<pre cols="72">--
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</pre>
</div>
</blockquote>
</div>
<div><br clear="all">
</div>
<div><br>
</div>
<span class="gmail_signature_prefix">-- </span><br>
<div dir="ltr" class="gmail_signature">Stefano</div>
</blockquote>
<pre class="moz-signature" cols="72">--
---
Professore Associato in Analisi Numerica
Dipartimento di Scienza e Alta Tecnologia
Università degli Studi dell'Insubria
Via Valleggio, 11 - Como</pre>
</body>
</html>