[petsc-users] How to set an initial guess for TS

Jed Brown jed at jedbrown.org
Fri Apr 3 17:29:49 CDT 2020


Oh, you just want an initial guess for SNES?  Does it work to pull out the SNES and SNESSetComputeInitialGuess?

Fande Kong <fdkong.jd at gmail.com> writes:

> No. I am working on a transient loosely coupled multiphysics simulation.
> Assume there are two physics problems: problem A and problem B. During each
> time step, there is a Picard iteration between problem A and problem B.
> During each Picard step, you solve problem A (or B) with the solution
> (U_{n-1}) of the previous time step as the initial condition. In the Picard
> solve stage, I know the solution (\bar{U}_{n}) of the current time step but
> from the previous Picard iteration. Use \bar{U}_{n}) instead of U_{n-1} as
> the initial guess for SNES will have a better convergence for me.
>
> Thanks,
>
> Fande,
>
>
> On Fri, Apr 3, 2020 at 1:10 PM Jed Brown <jed at jedbrown.org> wrote:
>
>> This sounds like you're talking about a starting procedure for a DAE (or
>> near-singular ODE)?
>>
>> Fande Kong <fdkong.jd at gmail.com> writes:
>>
>> > Hi All,
>> >
>> > TSSetSolution will set an initial condition for the current TSSolve().
>> What
>> > should I do if I want to set an initial guess for the current solution
>> that
>> > is different from the initial condition?  The initial guess is supposed
>> to
>> > be really close to the current solution, and then will accelerate my
>> solver.
>> >
>> > In other words, TSSetSolution will set "U_{n-1}", and now we call TSSolve
>> > to figure out "U_{n}". If I know something about "U_{n}", and I want to
>> set
>> > "\bar{U}_{n}" as the initial guess of "U_{n}" when computing "U_{n}".
>> >
>> >
>> > Thanks,
>> >
>> > Fande,
>>


More information about the petsc-users mailing list