<div dir="auto">For linear time dependent problems you can try KSPGUESSFISCHER and KSPGUESSPOD, that project the linear system on a lower dimensional manifold. Note that there are also integrators, like bdf, that already computed a fairly good initial guess for Newton.</div><br><div class="gmail_quote"><div dir="ltr">Il Dom 29 Apr 2018, 21:14 Derek Gaston <<a href="mailto:friedmud@gmail.com">friedmud@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I suppose that's a good point.<div><br></div><div>This came about because I happen to be solving linear problems right now - and I'm just using KSP - but I'm still solving for an "update" as in a Newton method.  So, naturally, I wanted to "predict" the update of that linear problem each timestep.  That got me thinking about what we generally choose as the initial guess for the KSP in SNES so I went looking.</div><div><br></div><div>I think the moral of the story here is, as per usual, making good guesses for the solution of the nonlinear solve is a good idea. It obviously helps Newton and it makes the initial guess of 0 for the solution of the update also make more sense.</div><div><br></div><div>Also: I hadn't really considered the effect of an initial guess on a Krylov solver before.  It's intuitively obvious that providing a good initial guess helps Newton (for instance, guessing within the ball of convergence)... but I haven't seen much work on how the initial guess effects Krylov solvers before.  A bit of googling led me to this paper which is interesting: <a href="http://dodo.inm.ras.ru/vassilevski/wp-content/uploads/2015/01/jcp219_210-227.pdf" target="_blank" rel="noreferrer">http://dodo.inm.ras.ru/vassilevski/wp-content/uploads/2015/01/jcp219_210-227.pdf</a> do you know of another reference that is related?</div><div><br></div><div>Thanks for the response,</div><div>Derek</div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Apr 29, 2018 at 11:54 AM Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank" rel="noreferrer">jed@jedbrown.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Why do you want it to be an initial guess for the linear problem rather<br>
than for the nonlinear problem?<br>
<br>
I think you can use SNESSetUpdate() and in that function,<br>
SNESGetSolutionUpdate() which you can set to whatever you want the<br>
initial guess to be.<br>
<br>
Derek Gaston <<a href="mailto:friedmud@gmail.com" target="_blank" rel="noreferrer">friedmud@gmail.com</a>> writes:<br>
<br>
> I'm interested in setting the initial guess for the first KSP solve in SNES<br>
> (used in a transient calculation) - and whether anyone thinks it could be a<br>
> good thing to do.<br>
><br>
> I see some previous discussion on this from Jed and Matt here:<br>
> <a href="https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2014-September/022779.html" rel="noreferrer noreferrer" target="_blank">https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2014-September/022779.html</a><br>
> <a href="https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2014-September/022780.html" rel="noreferrer noreferrer" target="_blank">https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2014-September/022780.html</a><br>
><br>
> I realize that the Newton solver is solving for the update... but that<br>
> doesn't necessarily mean that guessing 0 is the best plan.  For instance:<br>
> for fairly linear problems in time (or slightly nonlinear depending on how<br>
> you look at it!) it might be a good idea to guess the first update to be<br>
> the difference between the previous two time steps (or: more generally some<br>
> sort of "projected" update based on your time integration scheme).<br>
><br>
> Indeed - for a perfectly linear problem in time (with constant dt) this<br>
> would yield a "perfect" guess for the linear solver and it would return<br>
> immediately.<br>
><br>
> I suppose that if you use a "predictor" for predicting the guess for the<br>
> nonlinear system (which we often do - but not always)... then 0 for your<br>
> first update is probably a decent choice (what else would you choose?).<br>
> But if you're simply using the old timestep solution (which is what is<br>
> commonly done)... then that first update is more likely to look like the<br>
> difference between the last two timesteps than it looks like 0.<br>
><br>
> Thoughts?<br>
><br>
> Derek<br>
</blockquote></div>
</blockquote></div>