[petsc-users] Solution "jumps" after setting timestep
Zhang, Hong
hongzhang at anl.gov
Fri Dec 14 11:14:53 CST 2018
> 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
>>>>
>>>
>
More information about the petsc-users
mailing list