<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Apr 8, 2014 at 4:45 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
   The first monitor is called BEFORE the Jacobian is ever created. So skip mucking with the jacobian in the 0th iteration of SNES, use the iteration argument in your SNES monitor routine.<br></blockquote><div><br></div>
<div>Yes, by adding the condition iter>0 fixed the matrix unassemble problem.</div><div><br></div><div>Thanks a lot for mentioning the -mat_view options. </div><div><br></div><div>Xiangdong</div><div><br></div><div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
   BTW: there is a lot of built in viewing of PETSc matrices you can do without writing your own monitor. For example in the master development of PETSc you can use<br>
<br>
-mat_view viewer type:filename:format<br>
<br>
for example -mat_view prints the values to the screen in ASCII (use only for tiny matrices). -mat_view draw draws the nonzero pattern -mat_view binary:filename saves the matrix in binary format to the file filename.<br>
<span class="HOEnZb"><font color="#888888"><br>
   Barry<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Apr 8, 2014, at 3:18 PM, Xiangdong <<a href="mailto:epscodes@gmail.com">epscodes@gmail.com</a>> wrote:<br>
<br>
> Hello everyone,<br>
><br>
> I have a question about the usage of SNESGetJacobian().<br>
><br>
> When I added the following three lines to the snes Monitor function in ex3 for viewing the Jacobian matrix:<br>
><br>
> Mat Jmat;<br>
> ierr = SNESGetJacobian(snes,&Jmat,NULL,NULL,NULL); CHKERRQ(ierr);<br>
> ierr = MatView(Jamt, PETSC_VIEWER_STDOUT_WORLD); CHKERRQ(ierr);<br>
><br>
>  I got error message complaining:<br>
> Operation done in wrong order!<br>
> Must call MatAssemblyBegin/End() before viewing matrix!<br>
>  MatView() line 812 in matrix.c<br>
><br>
><br>
> Is the Jmat returned by SNESGetJacobian supposed to be assembled?<br>
><br>
> Even if I add MatAssemblyBegin/End(), it still crashes by reporting argument out of range in MatSetValues_SeqAIJ() or MatSetValues_MPIAIJ().<br>
><br>
> Any suggestions?<br>
><br>
> Thank you.<br>
><br>
> Xiangdong<br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div></div>