[petsc-users] Solution "jumps" after setting timestep

Stefano Zampini stefano.zampini at gmail.com
Fri Dec 14 11:17:04 CST 2018


I believe you need TSEvent
https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/TS/TSSetEventHandler.html

Il giorno Ven 14 Dic 2018, 20:15 Zhang, Hong via petsc-users <
petsc-users at mcs.anl.gov> ha scritto:

>
>
> > On Dec 14, 2018, at 10:28 AM, Moritz.Huck at isea.rwth-aachen.de wrote:
> >
> > Hello,
> > thank you  this seems to be a reasonable explanation.
> > I will try this for my "steady" phases.
> > I have also phases where my Neumann boundary conditions change with time
> (in my real application, here I uses constant conditions), in this time I
> also need the results at exact time points.
> > Can I get these without setting explicit end times?
>
> Are you asking how to terminate the time integration during TSSolve()? If
> so, one thing you can try is to call TSSetConvergedReason() in your
> TSPostStep() when certain criteria is met.
>
> Hong
>
>
>
> > Best Regards,
> > Moritz
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: Zhang, Hong <hongzhang at anl.gov>
> > Gesendet: Freitag, 14. Dezember 2018 17:13
> > An: Huck, Moritz <Moritz.Huck at isea.rwth-aachen.de>
> > Cc: petsc-users <petsc-users at mcs.anl.gov>
> > Betreff: Re: [petsc-users] Solution "jumps" after setting timestep
> >
> >
> >
> >> On Dec 14, 2018, at 5:16 AM, Moritz.Huck at isea.rwth-aachen.de wrote:
> >>
> >> Correction.
> >> Not exactly more like this
> >> While t<2
> >>      t=TSGetTime
> >>      h=TSGetTimeStep
> >>      TSSetMaxTime(min(t+h,2)
> >>      TSSolve
> >> t=TSGetTime
> >> TSSetMaxTime(t+1e-3)
> >> TSSolve
> >> While t<10
> >>      t=TSGetTime
> >>      h=TSGetTimeStep
> >>      TSSetMaxTime(min(t+h,10)
> >>      TSSolve
> >>
> >> @Hong
> >> No did not reset the time. Shouldn’t the time  already 2 in this case?
> >
> > My mistake. The time looks fine. Now I understand what your code does.
> >
> > You might want to use TSSetTimeStep() to change the step size and there
> is no need to have loops. You can define a TSPostStep function and call
> TSSolve() just once. When solving a DAE, each call to TSSolve() would
> trigger a restart step internally to calculate an initial slope for the
> DAE. I suspect that the jump was caused by these restart steps.
> >
> > Hong
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: petsc-users <petsc-users-bounces at mcs.anl.gov> Im Auftrag von
> >> Moritz.Huck--- via petsc-users
> >> Gesendet: Freitag, 14. Dezember 2018 12:06
> >> An: Emil Constantinescu <emconsta at mcs.anl.gov>; Zhang, Hong
> >> <hongzhang at anl.gov>
> >> Cc: petsc-users <petsc-users at mcs.anl.gov>
> >> Betreff: Re: [petsc-users] Solution "jumps" after setting timestep
> >>
> >> In this example yes.
> >>
> >> -----Ursprüngliche Nachricht-----
> >> Von: Emil Constantinescu <emconsta at mcs.anl.gov>
> >> Gesendet: Donnerstag, 13. Dezember 2018 20:21
> >> An: Zhang, Hong <hongzhang at anl.gov>; Huck, Moritz
> >> <Moritz.Huck at isea.rwth-aachen.de>
> >> Cc: petsc-users <petsc-users at mcs.anl.gov>
> >> Betreff: Re: [petsc-users] Solution "jumps" after setting timestep
> >>
> >> Okay, so you start your integration with "TSSetMaxTime and then call
> TSSolve (TSSetExactFinalTime is set to TS_EXACTFINALTIME_MATCHSTEP)"
> >>
> >> Then after it's done at t=2 you tell TS that TSSetTimeStep(ts,1e-3) and
> call TSSolve again?
> >>
> >> Emil
> >>
> >>
> >>
> >> On 12/13/18 11:36 AM, Zhang, Hong via petsc-users wrote:
> >>> Please make sure your messages go to petsc-users when replying.
> >>>
> >>>> On Dec 13, 2018, at 11:25 AM, Moritz.Huck at isea.rwth-aachen.de
> >>>> <mailto:Moritz.Huck at isea.rwth-aachen.de> wrote:
> >>>>
> >>>> The first solve to 1e-3
> >>>>   TSAdapt basic arkimex 0:1bee step   0 rejected t=0          +
> >>>> 1.000e-03 dt=1.000e-04  wlte=  102  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:1bee step   0 rejected t=0          +
> >>>> 1.000e-04 dt=1.000e-05  wlte=  127  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:1bee step   0 rejected t=0          +
> >>>> 1.000e-05 dt=1.995e-06  wlte= 5.09  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:1bee step   0 accepted t=0          +
> >>>> 1.995e-06 dt=3.232e-06  wlte=0.309  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step   1 accepted t=1.99488e-06+
> >>>> 3.232e-06 dt=3.232e-05  wlte=1.65e-06  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step   2 accepted t=5.22663e-06+
> >>>> 3.232e-05 dt=3.232e-04  wlte=3.96e-05  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step   3 accepted t=3.75441e-05+
> >>>> 3.232e-04 dt=6.393e-04  wlte=0.000973  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step   4 accepted t=0.000360719+
> >>>> 6.393e-04 dt=2.962e-03  wlte=0.00142  wltea=   -1 wlter=   -1 the
> >>>> solve steps afterwards:
> >>>>   TSAdapt basic arkimex 0:4 step   5 accepted t=0.001      +
> >>>> 2.962e-03 dt=7.110e-03  wlte=0.0197  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step   6 accepted t=0.00396151 +
> >>>> 7.110e-03 dt=2.489e-02  wlte=0.00437  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step   7 accepted t=0.0110717  +
> >>>> 2.489e-02 dt=7.079e-02  wlte= 0.01  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step   8 accepted t=0.03596    +
> >>>> 7.079e-02 dt=9.672e-02  wlte=0.188  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step   9 accepted t=0.106753   +
> >>>> 9.672e-02 dt=1.329e-01  wlte=0.184  wltea=   -1 wlter=   -1 around
> >>>> here it reaches a steady state
> >>>>   TSAdapt basic arkimex 0:4 step  10 accepted t=0.203478   +
> >>>> 1.329e-01 dt=2.432e-01  wlte=0.0586  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step  11 accepted t=0.336424   +
> >>>> 2.432e-01 dt=4.536e-01  wlte=0.0542  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step  12 accepted t=0.579616   +
> >>>> 4.536e-01 dt=1.112e+00  wlte=0.0182  wltea=   -1 wlter=   -1
> >>>>   TSAdapt basic arkimex 0:4 step  13 accepted t=1.03324    +
> >>>> 9.668e-01 dt=3.286e+00  wlte=0.00492  wltea=   -1 wlter=   -1 here I
> >>>> set the timestep to 1e-3 artificially and the solution deviates from
> >>>> the steady state solution
> >>>
> >>> The TS time jumps between step 13 and step 14, which is probably the
> >>> cause of the jump in the solution.
> >>> Did you reset the time to t=2 by calling TSSetTime() after step 13?
> >>>
> >>> Hong
> >>>
> >>>>     TSAdapt basic arkimex 0:4 step  14 accepted t=2          +
> >>>> 1.000e-03 dt=3.845e-03  wlte=0.003  wltea=   -1 wlter=   -1
> >>>>     TSAdapt basic arkimex 0:4 step  15 accepted t=2.001      +
> >>>> 3.845e-03 dt=3.845e-02  wlte=6.95e-06  wltea=   -1 wlter=   -1
> >>>>     TSAdapt basic arkimex 0:4 step  16 accepted t=2.00485    +
> >>>> 3.845e-02 dt=3.845e-01  wlte=4.31e-05  wltea=   -1 wlter=   -1
> >>>>     TSAdapt basic arkimex 0:4 step  17 accepted t=2.0433     +
> >>>> 3.845e-01 dt=2.473e+00  wlte=0.000384  wltea=   -1 wlter=   -1
> >>>>     TSAdapt basic arkimex 0:4 step  18 accepted t=2.42784    +
> >>>> 2.473e+00 dt=4.540e+00  wlte=0.0578  wltea=   -1 wlter=   -1 this
> >>>> point is "back on track"
> >>>>     TSAdapt basic arkimex 0:4 step  19 accepted t=4.90058    +
> >>>> 4.540e+00 dt=4.649e+00  wlte=0.596  wltea=   -1 wlter=   -1
> >>>> *Von:*Zhang, Hong <hongzhang at anl.gov <mailto:hongzhang at anl.gov>>
> >>>> *Gesendet:*Donnerstag, 13. Dezember 2018 17:39 *An:*Huck, Moritz
> >>>> <Moritz.Huck at isea.rwth-aachen.de
> >>>> <mailto:Moritz.Huck at isea.rwth-aachen.de>>
> >>>> *Cc:*petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>
> >>>> *Betreff:*Re: [petsc-users] Solution "jumps" after setting timestep
> >>>> Can you show the outputs of -ts_monitor for both cases (one with
> >>>> oscillations and one without)?
> >>>> Thanks,
> >>>> Hong
> >>>>
> >>>>
> >>>>   On Dec 13, 2018, at 9:48 AM,Moritz.Huck at isea.rwth-aachen.de
> >>>>   <mailto:Moritz.Huck at isea.rwth-aachen.de>wrote:
> >>>>   Hi,
> >>>>   Sure after reaching a steady state it looks like this:
> >>>>       0 SNES Function norm 3.767377637168e-03
> >>>>       1 SNES Function norm 2.529971638368e-05
> >>>>       2 SNES Function norm 4.433873358247e-09
> >>>>       3 SNES Function norm 4.535675922104e-11
> >>>>       0 SNES Function norm 9.898938706929e-04
> >>>>       1 SNES Function norm 1.322473621975e-05
> >>>>       2 SNES Function norm 1.672724799379e-09
> >>>>       3 SNES Function norm 1.338501638801e-11
> >>>>       0 SNES Function norm 1.624500221071e-03
> >>>>       1 SNES Function norm 2.448515345247e-05
> >>>>       2 SNES Function norm 6.225549426481e-09
> >>>>       3 SNES Function norm 1.062516222150e-10
> >>>>       4 SNES Function norm 6.493758120241e-13
> >>>>       0 SNES Function norm 1.106311709708e-03
> >>>>       1 SNES Function norm 2.475673243430e-05
> >>>>       2 SNES Function norm 9.969586735411e-09
> >>>>       3 SNES Function norm 2.479591395229e-10
> >>>>       4 SNES Function norm 1.542689576708e-12
> >>>>       0 SNES Function norm 6.070943996748e-04
> >>>>       1 SNES Function norm 1.648134285171e-05
> >>>>       2 SNES Function norm 8.461078655420e-09
> >>>>       3 SNES Function norm 2.480863447790e-10
> >>>>       4 SNES Function norm 1.513977618851e-12
> >>>>         TSAdapt basic arkimex 0:4 step  15 accepted t=5.67201    +
> >>>>   4.328e+00 dt=4.687e+00  wlte$
> >>>>   0.477  wltea=   -1 wlter=   -1
> >>>>   If I set the next target time (in tssolve) to be tlast+1e-3 it
> >>>>   looks like this:
> >>>>       0 SNES Function norm 4.734802409365e-03
> >>>>       1 SNES Function norm 6.173939866359e-13
> >>>>       0 SNES Function norm 5.633294284900e-04
> >>>>       1 SNES Function norm 3.575533754564e-13
> >>>>       0 SNES Function norm 9.651618110271e-04
> >>>>       1 SNES Function norm 6.863177319359e-13
> >>>>       0 SNES Function norm 7.706102281617e-04
> >>>>       1 SNES Function norm 8.490865565002e-13
> >>>>       0 SNES Function norm 5.028108294534e-04
> >>>>       1 SNES Function norm 6.905750968862e-13
> >>>>         TSAdapt basic arkimex 0:4 step  16 accepted t=10         +
> >>>>   1.000e-03 dt=2.612e-03  wlte$
> >>>>   0.0141  wltea=   -1 wlter=   -1
> >>>>   The SNES solver has a atoll of 1e-10, setting the atoll to lower
> >>>>   values does not change the result.
> >>>>   Thank you,
> >>>>   Moritz
> >>>>   *Von:*Zhang, Hong <hongzhang at anl.gov <mailto:hongzhang at anl.gov>>
> >>>>   *Gesendet:*Donnerstag, 13. Dezember 2018 16:42
> >>>>   *An:*Huck, Moritz <Moritz.Huck at isea.rwth-aachen.de
> >>>>   <mailto:Moritz.Huck at isea.rwth-aachen.de>>
> >>>>   *Cc:*petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>
> >>>>   *Betreff:*Re: [petsc-users] Solution "jumps" after setting timestep
> >>>>   Can you please add command line options -ts_monitor -snes_monitor
> >>>>   and show us the outputs?
> >>>>   Thanks,
> >>>>   Hong (Mr.)
> >>>>
> >>>>
> >>>>
> >>>>       On Nov 4, 2018, at 6:19 AM, Moritz.Huck--- via petsc-users
> >>>>       <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>>
> wrote:
> >>>>       Hi,
> >>>>
> >>>>       I using the basic adaptor.
> >>>>       If I let the adaptor handle everything it does not oscillates.
> >>>>       I don’t mean setting the timestep at the start (which does not
> >>>>       produces the
> >>>>       problem),
> >>>>       I need to set during runtime between two steps.
> >>>>
> >>>>       Best Regards,
> >>>>
> >>>>       Moritz
> >>>>
> >>>>       -----Ursprüngliche Nachricht-----
> >>>>       Von: Constantinescu, Emil M. <emconsta at anl.gov
> >>>>       <mailto:emconsta at anl.gov>>
> >>>>       Gesendet: Samstag, 3. November 2018 15:43
> >>>>       An: Huck, Moritz <Moritz.Huck at isea.rwth-aachen.de
> >>>>       <mailto:Moritz.Huck at isea.rwth-aachen.de>>;
> petsc-users at mcs.anl.gov
> >>>>       <mailto:petsc-users at mcs.anl.gov>
> >>>>       Betreff: Re: [petsc-users] Solution "jumps" after setting
> >>>> timestep
> >>>>
> >>>>       On 11/3/18 4:56 AM, Moritz.Huck--- via petsc-users wrote:
> >>>>
> >>>>
> >>>>           Hi,
> >>>>
> >>>>           I am using the IMEX Runge Kutta to solve an implicit DAE
> >>>>           (G=0).
> >>>>
> >>>>           When I manually set the time step (TSSetTimestep) my
> >>>>           solution jumps.
> >>>>
> >>>>
> >>>>       When you don't set the time step, does it still oscillates? If
> >>>>       not, can you
> >>>>       check if it oscillates when reducing the fixed initial time
> step?
> >>>>       Did you turn the adaptivity off (-ts_adapt_type none)?
> >>>>
> >>>>       Emil
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>           If I go from  a steady state to the  same state, it
> >>>>           oscillates a few
> >>>>           time and comes back to the steady solution.
> >>>>
> >>>>           Can this be prevented?
> >>>>
> >>>>           Thank you,
> >>>>
> >>>>           Moritz
> >>>>
> >>>
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20181214/beb532c7/attachment-0001.html>


More information about the petsc-users mailing list