<div dir="auto">Dear Ilya<div dir="auto"><br></div><div dir="auto">Thanks for your willing to contribute back to PETSc. Please submit a PR from the main branch. We do not allow API changes from minor patch versions.  </div><div dir="auto"><br></div><div dir="auto">Thanks </div><div dir="auto">Stefano</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 17, 2023, 16:55 Ilya Fursov <<a href="mailto:ilya.foursov.7bd@gmail.com">ilya.foursov.7bd@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Dear to whom is may concern,<div><br></div><div>A while ago I tried to use TS events in my time stepping code, and I found erroneous behaviour of the event resolution algorithm. For that particular example it resulted in long series of extremely small time steps. After examining the TSEvent handler code, I found some places with obvious errors, but in general it was difficult to figure out exactly what was going on, and whether there were other errors.</div><div><br></div><div>I decided to try and fix that stuff myself, and my choice was to refactor the code from scratch. I abandoned the current (in my opinion, obscure) code design of TSEventHandler, and wrote my own version, however using some ideas from the original code. The refactoring mostly affected the algorithmic part in tsevent.c source file. The original constructors/destructors, setters/getters have almost not changed. Also, some tiny changes occurred in ts.c and tsadapt.c, where interaction with events took place.</div><div><br></div><div>I've made a number of tests, ensuring the new code runs smoothly. These tests also revealed the current/old petsc code results in lots of errors. I didn't take notes on the exact numbers, but from my impression, the old code failed in 70%-90% of my tests. </div><div><br></div><div>So, I would like to contribute to the project what I've done. Well, I've never done such thing before, I hope the process goes smoothly.</div><div>I've read the instructions on submitting the code, and one thing I wanted to ask -</div><div>Do I need to start a feature branch from "release" integration branch?</div><div>On one hand, I only did bug fixing. On the other hand, I've replaced one public API function (plus a runtime option), albeit a very small one, which didn't work well with the logic of the new code.</div><div><br></div><div>Please advise if there might be any other things to consider while submitting the code.</div><div><br></div><div>Best Regards,</div><div>Ilya</div></div>
</blockquote></div>