Also, is this a good opportunity to get rid of that ugliness passing Mat* instead of Mat? Since the KSP (or SNES) is in the callback, can't we make it so that the occasional user who needs this can call KSPSetOperators() or SNESSetJacobian() from within the callback? It looks like everywhere in PETSc except SNESSolve_Test(), SNESComputeJacobian() is called with snes->jacobian,snes->jacobian_pre.<div>
<br></div><div><div>Or maybe this is going to be fragile enough that we should wait until after the release?</div><div><br><div><div class="gmail_quote">On Sun, Mar 18, 2012 at 10:14, Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@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"><div class="gmail_quote"><div class="im">On Sat, Mar 17, 2012 at 22:48, 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">

<div>As I noted before to you I did this to have a similar interface for KSP as SNES so that people could see the pattern and easily "switch up" to SNES from KSP.<br></div></blockquote><div><br></div></div><div>

Okay, but the DM interface _is_ the SNES interface, that callback just doesn't pass the solver context and doesn't pass a state vector at which to evaluate the matrix.</div><div class="im"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>
<br>
  I know you advocate having the user just use SNES if they want this cool "SNES-like" behavior.<br>
<br>
  Will it kill you to leave this stuff in there? Are you wanting to remove it just for philosophical reasons or is it causing trouble to have it?<br></div></blockquote></div></div><br><div>My problem is that I don't like the way PCMG is meddling with DM:</div>


<div><br></div><div><div>      ierr = DMSetFunction(dms[i],0);</div><div>      ierr = DMSetInitialGuess(dms[i],0);</div></div><div><br></div><div>In my model, these pointers will be private to the KSP (they are composed with the DM, but the DM doesn't know about them), so I guess the meddling won't be as bad.</div>


</blockquote></div><br></div></div></div>