-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Handles restarting problem of adaptive time integration methods #1565
Conversation
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## main #1565 +/- ##
==========================================
- Coverage 92.21% 85.61% -6.60%
==========================================
Files 418 418
Lines 34223 34203 -20
==========================================
- Hits 31558 29281 -2277
- Misses 2665 4922 +2257
Flags with carried forward coverage won't be shown. Click here to find out more.
☔ View full report in Codecov by Sentry. |
General concept is, that we have to save some data for integrator.controller, to obtain exactly the same solution as without restart. So I added additional functions that saves them in As was said in a discussion in trixi_students I tested that implementation for these solvers for serial and parallel execution:
And some with adaptive timestep from Low storage methods:
All of tested methods works correctly with new callback, and works either with some additional L_inf, L2 error or unstable without it. |
@SimonCan, what do you think about this idea? Example of using new callback you can find above. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great.
Could you add example elixirs like the ones in your comments? I was thinking of asimilar design as in examples/structured_2d_dgsem/elixir_advection_restart.jl
where they call first call elixir_advection_extended.jl
and then load the data for a restart.
Co-authored-by: Michael Schlottke-Lakemper <[email protected]>
Co-authored-by: Michael Schlottke-Lakemper <[email protected]>
Co-authored-by: Michael Schlottke-Lakemper <[email protected]>
Co-authored-by: Michael Schlottke-Lakemper <[email protected]>
Co-authored-by: Michael Schlottke-Lakemper <[email protected]>
Michael, @sloede, may be you have some quick ideas or already saw such problem, why this error could appear? Something wrong with allocations. But error appeared first time when I added only some comments, without changing a code, strange, I'm completely at a loss. |
Co-authored-by: Hendrik Ranocha <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! It would be good to also get a review from @ranocha
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you add a test using a PIDController
?
Yes, in test_mpi_tree.jl with |
If time integration method uses time step controller like PID controller, than to obtain an exact solution after restarting the computation we have to save some additional data in SaveRestartCallback. This is a first shot.