[petsc-users] TSSetEventHandler and TSSetPostEventIntervalStep

Barry Smith bsmith at petsc.dev
Tue Oct 27 16:01:29 CDT 2020


  Pushed

> On Oct 27, 2020, at 3:41 PM, Matthew Knepley <knepley at gmail.com> wrote:
> 
> On Tue, Oct 27, 2020 at 4:24 PM Barry Smith <bsmith at petsc.dev <mailto:bsmith at petsc.dev>> wrote:
> 
>   I'm sorry the code is still fundamentally broken, I know I promised a long time ago to fix it all up but it is actually pretty hard to get right.
> 
>   It detects the zero by finding a small value when it should detect it by find a small region where it changes sign but surprising it is so hardwired
> to the size test that fixing it and testing the new code has been very difficult to me.  My branch is barry/2019-08-18/fix-tsevent-posteventdt
> 
> Barry, I do not see this branch on gitlab. Can you give a URL?
> 
>   Thanks,
> 
>      Matt
>  
>   Barry
> 
> 
> 
>> On Oct 27, 2020, at 3:02 PM, Blondel, Sophie via petsc-users <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>> wrote:
>> 
>> Hi Matt,
>> 
>> With the ex40 I attached in my previous email here is what I get printed on screen when running "./ex40 -ts_monitor -ts_event_monitor":
>> 0 TS dt 0.1 time 0.
>> 1 TS dt 0.5 time 0.1
>> 2 TS dt 0.5 time 0.6
>> 3 TS dt 0.5 time 1.1
>> 4 TS dt 0.5 time 1.6
>> 5 TS dt 0.5 time 2.1
>> 6 TS dt 0.5 time 2.6
>> 7 TS dt 0.5 time 3.1
>> 8 TS dt 0.5 time 3.6
>> 9 TS dt 0.5 time 4.1
>> 10 TS dt 0.5 time 4.6
>> 11 TS dt 0.5 time 5.1
>> 12 TS dt 0.5 time 5.6
>> 13 TS dt 0.5 time 6.1
>> 14 TS dt 0.5 time 6.6
>> 15 TS dt 0.5 time 7.1
>> TSEvent: Event 0 zero crossing at time 7.6 located in 0 iterations
>> Ball hit the ground at t =  7.60 seconds
>> 16 TS dt 0.5 time 7.6
>> 17 TS dt 0.5 time 8.1
>> 18 TS dt 0.5 time 8.6
>> 19 TS dt 0.5 time 9.1
>> 20 TS dt 0.5 time 9.6
>> 21 TS dt 0.5 time 10.1
>> 22 TS dt 0.5 time 10.6
>> 23 TS dt 0.5 time 11.1
>> 24 TS dt 0.5 time 11.6
>> 25 TS dt 0.5 time 12.1
>> 26 TS dt 0.5 time 12.6
>> 27 TS dt 0.5 time 13.1
>> 28 TS dt 0.5 time 13.6
>> 29 TS dt 0.5 time 14.1
>> 30 TS dt 0.5 time 14.6
>> 31 TS dt 0.5 time 15.1
>> 32 TS dt 0.5 time 15.6
>> 33 TS dt 0.5 time 16.1
>> 34 TS dt 0.5 time 16.6
>> 35 TS dt 0.5 time 17.1
>> 36 TS dt 0.5 time 17.6
>> 37 TS dt 0.5 time 18.1
>> 38 TS dt 0.5 time 18.6
>> 39 TS dt 0.5 time 19.1
>> 40 TS dt 0.5 time 19.6
>> 41 TS dt 0.5 time 20.1
>> 42 TS dt 0.5 time 20.6
>> 43 TS dt 0.5 time 21.1
>> 44 TS dt 0.5 time 21.6
>> 45 TS dt 0.5 time 22.1
>> 46 TS dt 0.5 time 22.6
>> 47 TS dt 0.5 time 23.1
>> 48 TS dt 0.5 time 23.6
>> 49 TS dt 0.5 time 24.1
>> 50 TS dt 0.5 time 24.6
>> 51 TS dt 0.5 time 25.1
>> TSEvent: Event 0 zero crossing at time 25.6 located in 0 iterations
>> Ball hit the ground at t = 25.60 seconds
>> 52 TS dt 0.5 time 25.6
>> 53 TS dt 0.5 time 26.1
>> 54 TS dt 0.5 time 26.6
>> 55 TS dt 0.5 time 27.1
>> 56 TS dt 0.5 time 27.6
>> 57 TS dt 0.5 time 28.1
>> 58 TS dt 0.5 time 28.6
>> 59 TS dt 0.5 time 29.1
>> 60 TS dt 0.5 time 29.6
>> 61 TS dt 0.5 time 30.1
>> 0 TS dt 0.1 time 0.
>> 1 TS dt 0.5 time 0.1
>> 2 TS dt 0.5 time 0.6
>> 3 TS dt 0.5 time 1.1
>> 4 TS dt 0.5 time 1.6
>> 5 TS dt 0.5 time 2.1
>> 6 TS dt 0.5 time 2.6
>> 7 TS dt 0.5 time 3.1
>> 8 TS dt 0.5 time 3.6
>> 9 TS dt 0.5 time 4.1
>> 10 TS dt 0.5 time 4.6
>> 11 TS dt 0.5 time 5.1
>> 12 TS dt 0.5 time 5.6
>> 13 TS dt 0.5 time 6.1
>> 14 TS dt 0.5 time 6.6
>> 15 TS dt 0.5 time 7.1
>> 16 TS dt 0.5 time 7.6
>> 17 TS dt 0.5 time 8.1
>> 18 TS dt 0.5 time 8.6
>> 19 TS dt 0.5 time 9.1
>> 20 TS dt 0.5 time 9.6
>> 21 TS dt 0.5 time 10.1
>> 22 TS dt 0.5 time 10.6
>> 23 TS dt 0.5 time 11.1
>> 24 TS dt 0.5 time 11.6
>> 25 TS dt 0.5 time 12.1
>> 26 TS dt 0.5 time 12.6
>> TSEvent: Event 0 zero crossing at time 13.1 located in 0 iterations
>> Ball hit the ground at t = 13.10 seconds
>> 27 TS dt 0.5 time 13.1
>> 28 TS dt 0.5 time 13.6
>> 29 TS dt 0.5 time 14.1
>> 30 TS dt 0.5 time 14.6
>> 31 TS dt 0.5 time 15.1
>> 32 TS dt 0.5 time 15.6
>> 33 TS dt 0.5 time 16.1
>> 34 TS dt 0.5 time 16.6
>> 35 TS dt 0.5 time 17.1
>> 36 TS dt 0.5 time 17.6
>> 37 TS dt 0.5 time 18.1
>> 38 TS dt 0.5 time 18.6
>> 39 TS dt 0.5 time 19.1
>> 40 TS dt 0.5 time 19.6
>> 41 TS dt 0.5 time 20.1
>> 42 TS dt 0.5 time 20.6
>> 43 TS dt 0.5 time 21.1
>> 44 TS dt 0.5 time 21.6
>> 45 TS dt 0.5 time 22.1
>> 46 TS dt 0.5 time 22.6
>> 47 TS dt 0.5 time 23.1
>> TSEvent: Event 0 zero crossing at time 23.6 located in 0 iterations
>> Ball hit the ground at t = 23.60 seconds
>> 48 TS dt 0.5 time 23.6
>> 49 TS dt 0.5 time 24.1
>> 50 TS dt 0.5 time 24.6
>> 51 TS dt 0.5 time 25.1
>> 52 TS dt 0.5 time 25.6
>> 53 TS dt 0.5 time 26.1
>> TSEvent: Event 0 zero crossing at time 26.6 located in 0 iterations
>> Ball hit the ground at t = 26.60 seconds
>> 54 TS dt 0.5 time 26.6
>> 55 TS dt 0.5 time 27.1
>> 56 TS dt 0.5 time 27.6
>> 57 TS dt 0.5 time 28.1
>> 58 TS dt 0.5 time 28.6
>> 59 TS dt 0.5 time 29.1
>> 60 TS dt 0.5 time 29.6
>> 61 TS dt 0. time 30.1
>> 
>> I don't see the 0.001 timestep here, do you get a different behavior?
>> 
>> Thank you,
>> 
>> Sophie
>> From: Matthew Knepley <knepley at gmail.com <mailto:knepley at gmail.com>>
>> Sent: Tuesday, October 27, 2020 15:34
>> To: Blondel, Sophie <sblondel at utk.edu <mailto:sblondel at utk.edu>>
>> Cc: petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov> <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>>; xolotl-psi-development at lists.sourceforge.net <mailto:xolotl-psi-development at lists.sourceforge.net> <xolotl-psi-development at lists.sourceforge.net <mailto:xolotl-psi-development at lists.sourceforge.net>>
>> Subject: Re: [petsc-users] TSSetEventHandler and TSSetPostEventIntervalStep
>>  
>> [External Email]
>> 
>> On Tue, Oct 27, 2020 at 3:09 PM Blondel, Sophie via petsc-users <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>> wrote:
>> Hi,
>> 
>> I am currently using TSSetEventHandler in my code to detect a random event where the solution vector gets modified during the event. Ideally, after the event happens I want the solver to use a much smaller timestep using TSSetPostEventIntervalStep. However, when I use TSSetPostEventIntervalStep the solver doesn't use the set value. I managed to reproduce the behavior by modifying ex40.c as attached.
>> 
>>  I stepped through ex40, and it does indeed change the timestep to 0.001. Can you be more specific, perhaps with monitors, about what you think is wrong?
>> 
>>   Thanks,
>> 
>>      Matt
>>  
>> I think the issue is related to the fact that the fvalue is not technically "approaching" 0 with a random event, it is more of a step function instead. Do you have any recommendation on how to implement the behavior I'm looking for? Let me know if I can provide additional information.
>> 
>> Best,
>> 
>> Sophie
>> 
>> 
>> -- 
>> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
>> -- Norbert Wiener
>> 
>> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
> 
> 
> 
> -- 
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener
> 
> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20201027/de364263/attachment.html>


More information about the petsc-users mailing list