On Tue, Nov 15, 2011 at 5:13 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On Nov 15, 2011, at 3:48 PM, Jed Brown wrote:<br>
<br>
> On Tue, Nov 15, 2011 at 15:44, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br>
> How about a SNES level interface that backs into the TS for the implementation? The thing is "if one is solving a nonlinear problem they should use the nonlinear solver interface" not a completely different interface that exists for a different purpose.<br>

><br>
> Well, I don't choose KSP, SNES, or TS based on what kind of problem I'm trying to solve,<br>
<br>
</div>   I do :-)<br>
<div class="im"><br>
<br>
> I choose it based on how I want to describe the problem. So I might use SNES for a linear problem because I want to write a function to evaluate the RHS and a function to evaluate the Jacobian. And I might use TS for a steady problem because I want a principled way to do damping and to accelerate certain regions.<br>

<br>
</div>   Hmm, if I write my code to use SNES to solve a nonlinear system and decide I want to instead use Ptc I have to write new code and a whole knew interface.<br>
<br>
   If I wrote my code to use Jacobi and decided I wanted to try ILU should I have to write a new code? Obviously not so why is your case different? I just add a mass matrix (for example) and say I want to use Ptc with SNES or don't even add a mass matrix just say I want to use Ptc.</blockquote>
<div><br></div><div>This does expose a problem with our solvers. They should fit together better than they do. I would like to see them telescope so that</div><div><br></div><div>  a) A and b set into a KSP could be used by an enclosing SNES to do iterative refinement</div>
<div><br></div><div>  b) FormFunction and FormJacobian in a SNES could be used by an enclosing TS to do pseudo-timestepping</div><div><br></div><div>This way, the user does no more work than create a solver wrapper, and we get interface separation.</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 class="im">
<br>
><br>
> I think it would be more confusing to use SNES because then we would need to augment the SNES interface so the user can provide the IJacobian. Having another function signature that the user has to implement is BAD.<br>

<br>
</div>  I think using TS to solve a nonlinear equation is more confusing.<br>
<br>
   This needs a few use cases to clarify<br>
<font color="#888888"><br>
   Barry<br>
<br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>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<br>