<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div>  What version of PETSc are you using? The output looks a little funny.<div><br></div><div>  Would you be willing to send your code to <a href="mailto:petsc-maint@mcs.anl.gov">petsc-maint@mcs.anl.gov</a> so I can debug it quickly?</div><div><br><div><br><blockquote type="cite"><div>On May 29, 2023, at 9:54 PM, Waltz Jan <jl2862237661@gmail.com> wrote:</div><br class="Apple-interchange-newline"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><span style="color:rgb(36,41,47);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;white-space:pre-wrap;background-color:rgb(244,246,248)">Thank you for your reply and help. I followed your advice to try it out, but found that the results were not quite right. It may be due to my misunderstanding. Could you please help me? The specific information is as follows:</span><br></div><div dir="ltr"><span style="color:rgb(36,41,47);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;white-space:pre-wrap;background-color:rgb(244,246,248)"><br></span></div><div><span style="color:rgb(36,41,47);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:14px;white-space:pre-wrap;background-color:rgb(244,246,248)">Codes:</span></div><div><div style="line-height:22px"><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color:rgb(0,128,0)">    /* Solve J Y = F, where J is Jacobian matrix */</span></div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(0,16,128)">ierr</span> = <span style="color:rgb(121,94,38)">SNESComputeJacobian</span>(<span style="color:rgb(0,16,128)">snes</span>, <span style="color:rgb(0,16,128)">X</span>, <span style="color:rgb(0,16,128)">snes</span>-><span style="color:rgb(0,16,128)">jacobian</span>, <span style="color:rgb(0,16,128)">snes</span>-><span style="color:rgb(0,16,128)">jacobian_pre</span>);</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(0,0,255)">CHKERRQ</span>(<span style="color:rgb(0,16,128)">ierr</span>);</div><br><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(38,127,153)">PetscViewer</span> <span style="color:rgb(0,16,128)">viewer</span>;</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color:rgb(0,128,0)">    /* View the matrix in a text file */</span></div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(0,16,128)">ierr</span> = <span style="color:rgb(121,94,38)">PetscViewerASCIIOpen</span>(<span style="color:rgb(0,16,128)">PETSC_COMM_WORLD</span>, <span style="color:rgb(163,21,21)">"/share/userfile/jianglei/Muti-layers-well-working/petsc/jacobianmatrix.m"</span>, &<span style="color:rgb(0,16,128)">viewer</span>);<span style="color:rgb(0,0,255)">CHKERRQ</span>(<span style="color:rgb(0,16,128)">ierr</span>);</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(0,16,128)">ierr</span> = <span style="color:rgb(121,94,38)">PetscViewerPushFormat</span>(<span style="color:rgb(0,16,128)">viewer</span>, <span style="color:rgb(0,112,193)">PETSC_VIEWER_ASCII_MATLAB</span>);<span style="color:rgb(0,0,255)">CHKERRQ</span>(<span style="color:rgb(0,16,128)">ierr</span>);<span style="color:rgb(0,128,0)"> /* Optional: use MATLAB format */</span></div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(0,16,128)">ierr</span> = <span style="color:rgb(121,94,38)">MatView</span>(<span style="color:rgb(0,16,128)">snes</span>-><span style="color:rgb(0,16,128)">jacobian</span>, <span style="color:rgb(0,16,128)">viewer</span>);<span style="color:rgb(0,0,255)">CHKERRQ</span>(<span style="color:rgb(0,16,128)">ierr</span>);</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(0,16,128)">ierr</span> = <span style="color:rgb(121,94,38)">PetscViewerDestroy</span>(&<span style="color:rgb(0,16,128)">viewer</span>);<span style="color:rgb(0,0,255)">CHKERRQ</span>(<span style="color:rgb(0,16,128)">ierr</span>); </div><br><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(121,94,38)">MatAssemblyBegin</span>(<span style="color:rgb(0,16,128)">snes</span>-><span style="color:rgb(0,16,128)">jacobian</span>,<span style="color:rgb(0,112,193)">MAT_FINAL_ASSEMBLY</span>);</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(121,94,38)">MatAssemblyEnd</span>(<span style="color:rgb(0,16,128)">snes</span>-><span style="color:rgb(0,16,128)">jacobian</span>,<span style="color:rgb(0,112,193)">MAT_FINAL_ASSEMBLY</span>);</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(38,127,153)">PetscInt</span> <span style="color:rgb(0,16,128)">rstart</span>, <span style="color:rgb(0,16,128)">rend</span>;</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(121,94,38)">MatGetOwnershipRange</span>(<span style="color:rgb(0,16,128)">snes</span>-><span style="color:rgb(0,16,128)">jacobian</span>, &<span style="color:rgb(0,16,128)">rstart</span>, &<span style="color:rgb(0,16,128)">rend</span>);</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(38,127,153)">PetscInt</span> <span style="color:rgb(0,16,128)">row</span>=<span style="color:rgb(9,134,88)">1000</span>, <span style="color:rgb(0,16,128)">col</span>=<span style="color:rgb(9,134,88)">1000</span>;</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(38,127,153)">PetscScalar</span> <span style="color:rgb(0,16,128)">v</span>;</div><br><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    <span style="color:rgb(175,0,219)">if</span> (<span style="color:rgb(0,16,128)">row</span>>=<span style="color:rgb(0,16,128)">rstart</span> && <span style="color:rgb(0,16,128)">row</span><<span style="color:rgb(0,16,128)">rend</span>)</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    {</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">      <span style="color:rgb(121,94,38)">MatGetValues</span>(<span style="color:rgb(0,16,128)">snes</span>-><span style="color:rgb(0,16,128)">jacobian</span>, <span style="color:rgb(9,134,88)">1</span>, &<span style="color:rgb(0,16,128)">row</span>, <span style="color:rgb(9,134,88)">1</span>, &<span style="color:rgb(0,16,128)">col</span>, &<span style="color:rgb(0,16,128)">v</span>);</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">      <span style="color:rgb(121,94,38)">PetscPrintf</span>(<span style="color:rgb(0,16,128)">PETSC_COMM_WORLD</span>, <span style="color:rgb(163,21,21)">"rstart: </span><span style="color:rgb(0,16,128)">%d</span><span style="color:rgb(163,21,21)">, rend: </span><span style="color:rgb(0,16,128)">%d</span><span style="color:rgb(163,21,21)">, row: </span><span style="color:rgb(0,16,128)">%d</span><span style="color:rgb(163,21,21)">, col: </span><span style="color:rgb(0,16,128)">%d</span><span style="color:rgb(163,21,21)">, v: </span><span style="color:rgb(0,16,128)">%e</span><span style="color:rgb(238,0,0)">\n</span><span style="color:rgb(163,21,21)">"</span>, <span style="color:rgb(0,16,128)">rstart</span>, <span style="color:rgb(0,16,128)">rend</span>, <span style="color:rgb(0,16,128)">row</span>, <span style="color:rgb(0,16,128)">col</span>, <span style="color:rgb(0,0,255)">PetscRealPart</span>(<span style="color:rgb(0,16,128)">v</span>));</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">    }</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><br></div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">Results:</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span id="cid:ii_li9mjciz0"><image.png></span><br></div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span id="cid:ii_li9mk2af1"><image.png></span><br></div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span id="cid:ii_li9mkq6a2"><image.png></span><br></div><div><font face="Consolas, Courier New, monospace"><span style="font-size:16px;white-space:pre">====================== Step: 1, time: 0. days====================
  0 SNES Function norm 1.772062116708e-01 
rstart: 0, rend: 4000, row: 1000, col: 1000, v: 7.443232e-06</span></font><br></div><div> </div><div>That's all. Could you help me?</div><div style="font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><br></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, May 30, 2023 at 1:00 AM <<a href="mailto:petsc-users-request@mcs.anl.gov">petsc-users-request@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Send petsc-users mailing list submissions to<br>
        <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.mcs.anl.gov/mailman/listinfo/petsc-users" rel="noreferrer" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/petsc-users</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:petsc-users-request@mcs.anl.gov" target="_blank">petsc-users-request@mcs.anl.gov</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:petsc-users-owner@mcs.anl.gov" target="_blank">petsc-users-owner@mcs.anl.gov</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of petsc-users digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1.  MatGetValues() can't return the correct values (Waltz Jan)<br>
   2. Re:  MatGetValues() can't return the correct values (Barry Smith)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Mon, 29 May 2023 16:49:40 +0800<br>
From: Waltz Jan <<a href="mailto:jl2862237661@gmail.com" target="_blank">jl2862237661@gmail.com</a>><br>
To: <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
Subject: [petsc-users] MatGetValues() can't return the correct values<br>
Message-ID:<br>
        <CAEj=jGKvgY5ys=4_=YoEZrE5Xu4Pj6FVxSq8XgUH=N=<a href="mailto:QF_C-vA@mail.gmail.com" target="_blank">QF_C-vA@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
/* Solve J Y = F, where J is Jacobian matrix */<br>
ierr = SNESComputeJacobian(snes, X, snes->jacobian, snes->jacobian_pre);<br>
CHKERRQ(ierr);<br>
<br>
PetscInt rstart, rend;<br>
MatGetOwnershipRange(snes->jacobian, &rstart, &rend);<br>
PetscInt row=1000, col=1000;<br>
PetscScalar v;<br>
if (row>=rstart && row<rend)<br>
{<br>
    MatGetValues(snes->jacobian, 1, &row, 1, &col, &v);<br>
    PetscPrintf(PETSC_COMM_WORLD, "rstart: %d, rend: %d, row: %d, col: %d,<br>
v: %e\n", rstart, rend, row, col, v);<br>
}<br>
<br>
It was supposed to return the value of the matrix at row 1001 and column<br>
1001, but it returned the value at row 2001 and column 2001 instead. There<br>
is a two-fold relationship between these coordinates, and I'm not sure if<br>
it's related to the fact that I set the number of processes to 2.<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230529/e6c3eb3b/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230529/e6c3eb3b/attachment-0001.html</a>><br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Mon, 29 May 2023 11:01:32 -0400<br>
From: Barry Smith <<a href="mailto:bsmith@petsc.dev" target="_blank">bsmith@petsc.dev</a>><br>
To: Waltz Jan <<a href="mailto:jl2862237661@gmail.com" target="_blank">jl2862237661@gmail.com</a>><br>
Cc: <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
Subject: Re: [petsc-users] MatGetValues() can't return the correct<br>
        values<br>
Message-ID: <<a href="mailto:99A3D1B8-6CA1-41C3-8B19-E68F90A67102@petsc.dev" target="_blank">99A3D1B8-6CA1-41C3-8B19-E68F90A67102@petsc.dev</a>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
<br>
    Perhaps run a very small problem with 2 ranks and use MatView() to see the matrix before getting the values. Maybe use the debugger (-start_in_debugger) and step through the code as it gets values. I would say there is very little chance it is getting the "wrong values" and is more likely due to a misunderstanding of the matrix usage.<br>
<br>
  Barry<br>
<br>
<br>
<br>
<br>
> On May 29, 2023, at 4:49 AM, Waltz Jan <<a href="mailto:jl2862237661@gmail.com" target="_blank">jl2862237661@gmail.com</a>> wrote:<br>
> <br>
> /* Solve J Y = F, where J is Jacobian matrix */<br>
> ierr = SNESComputeJacobian(snes, X, snes->jacobian, snes->jacobian_pre);<br>
> CHKERRQ(ierr);<br>
> <br>
> PetscInt rstart, rend;<br>
> MatGetOwnershipRange(snes->jacobian, &rstart, &rend);<br>
> PetscInt row=1000, col=1000;<br>
> PetscScalar v;<br>
> if (row>=rstart && row<rend)<br>
> {<br>
>     MatGetValues(snes->jacobian, 1, &row, 1, &col, &v);<br>
>     PetscPrintf(PETSC_COMM_WORLD, "rstart: %d, rend: %d, row: %d, col: %d, v: %e\n", rstart, rend, row, col, v);<br>
> }<br>
> <br>
> It was supposed to return the value of the matrix at row 1001 and column 1001, but it returned the value at row 2001 and column 2001 instead. There is a two-fold relationship between these coordinates, and I'm not sure if it's related to the fact that I set the number of processes to 2.<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230529/345ddb55/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230529/345ddb55/attachment-0001.html</a>><br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
petsc-users mailing list<br>
<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
<a href="https://lists.mcs.anl.gov/mailman/listinfo/petsc-users" rel="noreferrer" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/petsc-users</a><br>
<br>
<br>
------------------------------<br>
<br>
End of petsc-users Digest, Vol 173, Issue 131<br>
*********************************************<br>
</blockquote></div>
</div></blockquote></div><br></div></body></html>