<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, May 5, 2016 at 12:01 PM, Juha Jaykka <span dir="ltr"><<a href="mailto:juhaj@iki.fi" target="_blank">juhaj@iki.fi</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear list,<br>
<br>
I am a bit confused by some SNES options. How do -snes_mf, -snes_fd,<br>
SNESSetJacobian exactly interact?<br>
<br>
I run my code (it's basically the Bratu3D example in python) with<br></blockquote><div><br></div><div>It would help to have -snes_monitor -snes_converged_reason here:</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-snes_fd 0 -snes_mf 0 and my RHS code gets called 7 times<br></blockquote><div><br></div><div>This looks like 7 iterates with your assembled Jacobian. Judging from below, it appears there might be a different PC here.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-snes_fd 0 -snes_mf 1 and RHS called 44 times<br></blockquote><div><br></div><div>Here each action of the Jacobian takes one RHS evaluation, and one at the beginning of each Newton iterate.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-snes_fd 1 -snes_mf 0 and RHS called 775 times<br></blockquote><div><br></div><div>Here we have one RHS for each column of the Jacobian  at each Newton iterate since we form it explicitly (actually for each color in the</div><div>graph, but that is a detail).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-snes_fd 1 -snes_mf 1 and RHS called 44 times<br></blockquote><div><br></div><div>The second option overrides the first.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
without -snes_mf AT ALL but with -snes_fd 0 I get RHS called 3 times [1]<br></blockquote><div><br></div><div>I need to see the output of -snes_view for these cases. Its possible that we</div><div>have a bug related to the argument.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
without -snes_mf AT ALL but with -snes_fd 1 I get RHS called 775 times<br>
without -snes_mf OR -snes_fd, I get RHS called 3 times [1]<br></blockquote><div><br></div><div>Yes.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
without -snes_fd at all and -snes_mf, I get 44 calls<br>
without -snes_fd at all and -snes_mf 1, I get 44 calls<br></blockquote><div><br></div><div>These two are the same since we assume a 1 argument.</div><div><br></div><div>  Thanks,</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
without -snes_fd at all and -snes_mf 0, I get 3 calls [1]<br>
<br>
I would have expected -snes_mf 0 and no snes_mf at all to behave in the same<br>
way. I am also puzzled by the fact that there seem to be four different ways<br>
to solve the problem: with Jacobian (3 calls), with fd (775 calls) and with mf<br>
(44 calls). What is the 7 calls case all about?<br>
<br>
I guess in all the years I've used PETSc I should have learnt better, but I<br>
had never taught it to anyone before, so hand't noticed my lack of knowledge.<br>
<br>
Cheers,<br>
Juha<br>
<br>
[1] This causes my Jacobian routine to be called as intended.<br>
<br>
<br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>