<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Good morning Hong,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thank you for working on this issue.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I tried a recent PETSc, the latest commit is from Sunday: <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
commit ebcb266d3a667e450268eb330045d5d1ecf6fdff (HEAD -> main, origin/main, origin/HEAD)
<div>Merge: 070a9a9987 6a144de774</div>
<div>Author: Satish Balay <balay@mcs.anl.gov></div>
<div>Date:   Sun Apr 4 09:49:59 2021 -0500</div>
<div><br>
</div>
<div>    Merge remote-tracking branch 'origin/release'</div>
<div><br>
</div>
<div><br>
</div>
<div>Adding the "-ts_event_post_event_step" option didn't seem to change the behavior of my code. I tried to use ex40 as before, where I change line 29 to "fvalue[0] = rand() % 20;" and the timestep is not set to the given value after detecting the event. Here
 is what I used to run the example: ./ex40 -ts_monitor -ts_event_monitor -ts_event_post_eventinterval_step 0.01 , and here is the output I get:</div>
<div>0 TS dt 0.1 time 0.
<div>1 TS dt 0.5 time 0.1</div>
<div>2 TS dt 0.5 time 0.6</div>
<div>3 TS dt 0.5 time 1.1</div>
<div>4 TS dt 0.5 time 1.6</div>
<div>5 TS dt 0.5 time 2.1</div>
<div>6 TS dt 0.5 time 2.6</div>
<div>7 TS dt 0.5 time 3.1</div>
<div>8 TS dt 0.5 time 3.6</div>
<div>9 TS dt 0.5 time 4.1</div>
<div>10 TS dt 0.5 time 4.6</div>
<div>11 TS dt 0.5 time 5.1</div>
<div>12 TS dt 0.5 time 5.6</div>
<div>13 TS dt 0.5 time 6.1</div>
<div>14 TS dt 0.5 time 6.6</div>
<div>15 TS dt 0.5 time 7.1</div>
<div>TSEvent: iter 0 - Event 0 interval detected [7.1 - 7.6]</div>
<div>TSEvent: Event 0 zero crossing at time 7.6 located in 0 iterations</div>
<div>Ball hit the ground at t =  7.60 seconds</div>
<div>16 TS dt 0.5 time 7.6</div>
<div>17 TS dt 0.5 time 8.1</div>
<div>18 TS dt 0.5 time 8.6</div>
<div>19 TS dt 0.5 time 9.1</div>
<div>20 TS dt 0.5 time 9.6</div>
<div>21 TS dt 0.5 time 10.1</div>
<div>22 TS dt 0.5 time 10.6</div>
<div>23 TS dt 0.5 time 11.1</div>
<div>24 TS dt 0.5 time 11.6</div>
<div>25 TS dt 0.5 time 12.1</div>
<div>26 TS dt 0.5 time 12.6</div>
<div>27 TS dt 0.5 time 13.1</div>
<div>28 TS dt 0.5 time 13.6</div>
<div>29 TS dt 0.5 time 14.1</div>
<div>30 TS dt 0.5 time 14.6</div>
<div>31 TS dt 0.5 time 15.1</div>
<div>32 TS dt 0.5 time 15.6</div>
<div>33 TS dt 0.5 time 16.1</div>
<div>34 TS dt 0.5 time 16.6</div>
<div>35 TS dt 0.5 time 17.1</div>
<div>36 TS dt 0.5 time 17.6</div>
<div>37 TS dt 0.5 time 18.1</div>
<div>38 TS dt 0.5 time 18.6</div>
<div>39 TS dt 0.5 time 19.1</div>
<div>40 TS dt 0.5 time 19.6</div>
<div>41 TS dt 0.5 time 20.1</div>
<div>42 TS dt 0.5 time 20.6</div>
<div>43 TS dt 0.5 time 21.1</div>
<div>44 TS dt 0.5 time 21.6</div>
<div>45 TS dt 0.5 time 22.1</div>
<div>46 TS dt 0.5 time 22.6</div>
<div>47 TS dt 0.5 time 23.1</div>
<div>48 TS dt 0.5 time 23.6</div>
<div>49 TS dt 0.5 time 24.1</div>
<div>50 TS dt 0.5 time 24.6</div>
<div>51 TS dt 0.5 time 25.1</div>
<div>TSEvent: iter 0 - Event 0 interval detected [25.1 - 25.6]</div>
<div>TSEvent: Event 0 zero crossing at time 25.6 located in 0 iterations</div>
<div>Ball hit the ground at t = 25.60 seconds</div>
<div>52 TS dt 0.5 time 25.6</div>
<div>53 TS dt 0.5 time 26.1</div>
<div>54 TS dt 0.5 time 26.6</div>
<div>55 TS dt 0.5 time 27.1</div>
<div>56 TS dt 0.5 time 27.6</div>
<div>57 TS dt 0.5 time 28.1</div>
<div>58 TS dt 0.5 time 28.6</div>
<div>59 TS dt 0.5 time 29.1</div>
<div>60 TS dt 0.5 time 29.6</div>
<div>61 TS dt 0.5 time 30.1</div>
</div>
<div><br>
</div>
<div>Let me know if I am using the options incorrectly.</div>
<div><br>
</div>
<div>Cheers,</div>
<div><br>
</div>
<div>Sophie<br>
</div>
<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Zhang, Hong <hongzhang@anl.gov><br>
<b>Sent:</b> Saturday, April 3, 2021 14:47<br>
<b>To:</b> Blondel, Sophie <sblondel@utk.edu><br>
<b>Cc:</b> Barry Smith <bsmith@petsc.dev>; Matthew Knepley <knepley@gmail.com>; petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov>; xolotl-psi-development@lists.sourceforge.net <xolotl-psi-development@lists.sourceforge.net><br>
<b>Subject:</b> Re: [petsc-users] TSSetEventHandler and TSSetPostEventIntervalStep</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hi Sophie,<br>
<br>
TSSetPostEventIntervalStep() was designed to reset the step size after an event interval. For example, suppose there is an event at 0.16, TS may identify it when integrating over a time step from 0.1 to 0.2. After the event, the next step size would be 0.04
 to reach the end of this event interval ([0.1,0.2]). After the event interval, the step size would be set to the value you specified with TSSetPostEventIntervalStep(). However, TSSetPostEventIntervalStep() will take no effect if the event occurs at exactly
 0.2 instead of somewhere inside the interval. I am not sure about the original intention of this design. But I have added an option -ts_event_post_event_step for you to hard reset the step size immediately after an event. Please try the latest main branch
 to see if it helps.<br>
<br>
Hong (Mr.)<br>
<br>
On Jan 19, 2021, at 10:13 AM, Blondel, Sophie via petsc-users <petsc-users@mcs.anl.gov> wrote:<br>
<br>
Hi Barry and Matt and happy new year,<br>
<br>
I wanted to check again if there was anything new with the TSSetEventHandler and TSSetPostEventIntervalStep. If you think there could be an alternative way to obtain the behavior I want in PETSc I'd be happy to try it.<br>
<br>
Cheers,<br>
<br>
Sophie<br>
From: Blondel, Sophie <sblondel@utk.edu><br>
Sent: Tuesday, December 1, 2020 16:14<br>
To: Barry Smith <bsmith@petsc.dev>; Matthew Knepley <knepley@gmail.com><br>
Cc: petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov>; xolotl-psi-development@lists.sourceforge.net <xolotl-psi-development@lists.sourceforge.net><br>
Subject: Re: [petsc-users] TSSetEventHandler and TSSetPostEventIntervalStep<br>
 <br>
Hi again Barry and Matt,<br>
<br>
Just wanted to check the status for the TSSetEventHandler. Let me know if I can help in any way.<br>
<br>
Cheers,<br>
<br>
Sophie<br>
From: Blondel, Sophie <sblondel@utk.edu><br>
Sent: Monday, November 16, 2020 11:38<br>
To: Barry Smith <bsmith@petsc.dev>; Matthew Knepley <knepley@gmail.com><br>
Cc: petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov>; xolotl-psi-development@lists.sourceforge.net <xolotl-psi-development@lists.sourceforge.net><br>
Subject: Re: [petsc-users] TSSetEventHandler and TSSetPostEventIntervalStep<br>
 <br>
Hi Matt and Barry,<br>
<br>
I wanted to check if you wanted me to test anything with the branch from Barry, it was not clear from the previous emails.<br>
<br>
Cheers,<br>
<br>
Sophie<br>
From: Barry Smith <bsmith@petsc.dev><br>
Sent: Tuesday, October 27, 2020 17:01<br>
To: Matthew Knepley <knepley@gmail.com><br>
Cc: Blondel, Sophie <sblondel@utk.edu>; petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov>; xolotl-psi-development@lists.sourceforge.net <xolotl-psi-development@lists.sourceforge.net><br>
Subject: Re: [petsc-users] TSSetEventHandler and TSSetPostEventIntervalStep<br>
 <br>
<br>
  Pushed<br>
<br>
On Oct 27, 2020, at 3:41 PM, Matthew Knepley <knepley@gmail.com> wrote:<br>
<br>
On Tue, Oct 27, 2020 at 4:24 PM Barry Smith <bsmith@petsc.dev> wrote:<br>
<br>
  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.<br>
<br>
  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<br>
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<br>
<br>
Barry, I do not see this branch on gitlab. Can you give a URL?<br>
<br>
  Thanks,<br>
<br>
     Matt<br>
 <br>
  Barry<br>
<br>
<br>
<br>
On Oct 27, 2020, at 3:02 PM, Blondel, Sophie via petsc-users <petsc-users@mcs.anl.gov> wrote:<br>
<br>
Hi Matt,<br>
<br>
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":<br>
0 TS dt 0.1 time 0.<br>
1 TS dt 0.5 time 0.1<br>
2 TS dt 0.5 time 0.6<br>
3 TS dt 0.5 time 1.1<br>
4 TS dt 0.5 time 1.6<br>
5 TS dt 0.5 time 2.1<br>
6 TS dt 0.5 time 2.6<br>
7 TS dt 0.5 time 3.1<br>
8 TS dt 0.5 time 3.6<br>
9 TS dt 0.5 time 4.1<br>
10 TS dt 0.5 time 4.6<br>
11 TS dt 0.5 time 5.1<br>
12 TS dt 0.5 time 5.6<br>
13 TS dt 0.5 time 6.1<br>
14 TS dt 0.5 time 6.6<br>
15 TS dt 0.5 time 7.1<br>
TSEvent: Event 0 zero crossing at time 7.6 located in 0 iterations<br>
Ball hit the ground at t =  7.60 seconds<br>
16 TS dt 0.5 time 7.6<br>
17 TS dt 0.5 time 8.1<br>
18 TS dt 0.5 time 8.6<br>
19 TS dt 0.5 time 9.1<br>
20 TS dt 0.5 time 9.6<br>
21 TS dt 0.5 time 10.1<br>
22 TS dt 0.5 time 10.6<br>
23 TS dt 0.5 time 11.1<br>
24 TS dt 0.5 time 11.6<br>
25 TS dt 0.5 time 12.1<br>
26 TS dt 0.5 time 12.6<br>
27 TS dt 0.5 time 13.1<br>
28 TS dt 0.5 time 13.6<br>
29 TS dt 0.5 time 14.1<br>
30 TS dt 0.5 time 14.6<br>
31 TS dt 0.5 time 15.1<br>
32 TS dt 0.5 time 15.6<br>
33 TS dt 0.5 time 16.1<br>
34 TS dt 0.5 time 16.6<br>
35 TS dt 0.5 time 17.1<br>
36 TS dt 0.5 time 17.6<br>
37 TS dt 0.5 time 18.1<br>
38 TS dt 0.5 time 18.6<br>
39 TS dt 0.5 time 19.1<br>
40 TS dt 0.5 time 19.6<br>
41 TS dt 0.5 time 20.1<br>
42 TS dt 0.5 time 20.6<br>
43 TS dt 0.5 time 21.1<br>
44 TS dt 0.5 time 21.6<br>
45 TS dt 0.5 time 22.1<br>
46 TS dt 0.5 time 22.6<br>
47 TS dt 0.5 time 23.1<br>
48 TS dt 0.5 time 23.6<br>
49 TS dt 0.5 time 24.1<br>
50 TS dt 0.5 time 24.6<br>
51 TS dt 0.5 time 25.1<br>
TSEvent: Event 0 zero crossing at time 25.6 located in 0 iterations<br>
Ball hit the ground at t = 25.60 seconds<br>
52 TS dt 0.5 time 25.6<br>
53 TS dt 0.5 time 26.1<br>
54 TS dt 0.5 time 26.6<br>
55 TS dt 0.5 time 27.1<br>
56 TS dt 0.5 time 27.6<br>
57 TS dt 0.5 time 28.1<br>
58 TS dt 0.5 time 28.6<br>
59 TS dt 0.5 time 29.1<br>
60 TS dt 0.5 time 29.6<br>
61 TS dt 0.5 time 30.1<br>
0 TS dt 0.1 time 0.<br>
1 TS dt 0.5 time 0.1<br>
2 TS dt 0.5 time 0.6<br>
3 TS dt 0.5 time 1.1<br>
4 TS dt 0.5 time 1.6<br>
5 TS dt 0.5 time 2.1<br>
6 TS dt 0.5 time 2.6<br>
7 TS dt 0.5 time 3.1<br>
8 TS dt 0.5 time 3.6<br>
9 TS dt 0.5 time 4.1<br>
10 TS dt 0.5 time 4.6<br>
11 TS dt 0.5 time 5.1<br>
12 TS dt 0.5 time 5.6<br>
13 TS dt 0.5 time 6.1<br>
14 TS dt 0.5 time 6.6<br>
15 TS dt 0.5 time 7.1<br>
16 TS dt 0.5 time 7.6<br>
17 TS dt 0.5 time 8.1<br>
18 TS dt 0.5 time 8.6<br>
19 TS dt 0.5 time 9.1<br>
20 TS dt 0.5 time 9.6<br>
21 TS dt 0.5 time 10.1<br>
22 TS dt 0.5 time 10.6<br>
23 TS dt 0.5 time 11.1<br>
24 TS dt 0.5 time 11.6<br>
25 TS dt 0.5 time 12.1<br>
26 TS dt 0.5 time 12.6<br>
TSEvent: Event 0 zero crossing at time 13.1 located in 0 iterations<br>
Ball hit the ground at t = 13.10 seconds<br>
27 TS dt 0.5 time 13.1<br>
28 TS dt 0.5 time 13.6<br>
29 TS dt 0.5 time 14.1<br>
30 TS dt 0.5 time 14.6<br>
31 TS dt 0.5 time 15.1<br>
32 TS dt 0.5 time 15.6<br>
33 TS dt 0.5 time 16.1<br>
34 TS dt 0.5 time 16.6<br>
35 TS dt 0.5 time 17.1<br>
36 TS dt 0.5 time 17.6<br>
37 TS dt 0.5 time 18.1<br>
38 TS dt 0.5 time 18.6<br>
39 TS dt 0.5 time 19.1<br>
40 TS dt 0.5 time 19.6<br>
41 TS dt 0.5 time 20.1<br>
42 TS dt 0.5 time 20.6<br>
43 TS dt 0.5 time 21.1<br>
44 TS dt 0.5 time 21.6<br>
45 TS dt 0.5 time 22.1<br>
46 TS dt 0.5 time 22.6<br>
47 TS dt 0.5 time 23.1<br>
TSEvent: Event 0 zero crossing at time 23.6 located in 0 iterations<br>
Ball hit the ground at t = 23.60 seconds<br>
48 TS dt 0.5 time 23.6<br>
49 TS dt 0.5 time 24.1<br>
50 TS dt 0.5 time 24.6<br>
51 TS dt 0.5 time 25.1<br>
52 TS dt 0.5 time 25.6<br>
53 TS dt 0.5 time 26.1<br>
TSEvent: Event 0 zero crossing at time 26.6 located in 0 iterations<br>
Ball hit the ground at t = 26.60 seconds<br>
54 TS dt 0.5 time 26.6<br>
55 TS dt 0.5 time 27.1<br>
56 TS dt 0.5 time 27.6<br>
57 TS dt 0.5 time 28.1<br>
58 TS dt 0.5 time 28.6<br>
59 TS dt 0.5 time 29.1<br>
60 TS dt 0.5 time 29.6<br>
61 TS dt 0. time 30.1<br>
<br>
I don't see the 0.001 timestep here, do you get a different behavior?<br>
<br>
Thank you,<br>
<br>
Sophie<br>
From: Matthew Knepley <knepley@gmail.com><br>
Sent: Tuesday, October 27, 2020 15:34<br>
To: Blondel, Sophie <sblondel@utk.edu><br>
Cc: petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov>; xolotl-psi-development@lists.sourceforge.net <xolotl-psi-development@lists.sourceforge.net><br>
Subject: Re: [petsc-users] TSSetEventHandler and TSSetPostEventIntervalStep<br>
 <br>
[External Email]<br>
On Tue, Oct 27, 2020 at 3:09 PM Blondel, Sophie via petsc-users <petsc-users@mcs.anl.gov> wrote:<br>
Hi,<br>
<br>
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.<br>
<br>
 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?<br>
<br>
  Thanks,<br>
<br>
     Matt<br>
 <br>
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.<br>
<br>
Best,<br>
<br>
Sophie<br>
<br>
<br>
-- <br>
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>
<br>
<a href="https://www.cse.buffalo.edu/~knepley/">https://www.cse.buffalo.edu/~knepley/</a><br>
<br>
<br>
<br>
-- <br>
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>
<br>
<a href="https://www.cse.buffalo.edu/~knepley/">https://www.cse.buffalo.edu/~knepley/</a><br>
<br>
</div>
</span></font></div>
</body>
</html>