<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Sep 28, 2015 at 2:53 AM, Timothée Nicolas <span dir="ltr"><<a href="mailto:timothee.nicolas@gmail.com" target="_blank">timothee.nicolas@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Hi all,<br><br></div>I have something strange in my application and I don't know what could cause this. I am trying to do an implicit MHD problem and I thought I finally figured out the preconditioner step, but somehow I don't get the expected result, not even close.<br><br>For the preconditioning, I am using an approximate Schur complement, which requires two relatively easy KSP inversions at each preconditioner application. I apply this algorithm directly to the result function at the end of the routine FormFunction. I have checked that the approximation to the inversion of the Jacobian is good, in the sense that when I multiply the preconditioned vector by the <u><b>total</b></u><b> </b>Jacobian matrix, I indeed recover almost the initial unpreconditioned vector. Also, I know that my Jacobian matrix is correct, because (i) I have checked manually that F(X + dX) ~ F(X) + J * dX and (ii) when I don't use -snes_mf and use the provided Jacobian matrix the result is pretty much equivalent to using -snes_mf.<br><br></div>In my understanding, this means that what I effectively feed to SNES at the end of my FormFunction routine is a good approximation to J^(-1) F. As a result, I naturally expect that the number of KSP iterations necessary to achieve one SNES iteration be drastically reduced. However, I observe virtually no change whatsoever in the number of iterations.<br><br></div>Any thoughts about what I could be missing ? Maybe I forgot to set a SNES or KSP option somewhere ? I can send pieces of code if needs be.<br></div></div></div></blockquote><div><br></div><div>It sounds like you are putting this in the wrong place. If you have the action of a good preconditioner for the Jacobian, then you</div><div>should use a PCSHELL and pass it to the KSP. It does not belong in the FormFunction.</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"><div dir="ltr"><div><div></div>Best<br><br></div>Timothee<br><div><br><br></div></div>
</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>