-
Notifications
You must be signed in to change notification settings - Fork 37
Description
We have diagonally implicit and explicit Runge-Kutta methods implemented for comparison between SDC and other algorithms.
If anyone ever feels bored, I think it would be nice to implement multistep methods as well.
I believe this can be more or less easily done by writing a new sweeper which replaces the SDC functionality with functions that are called at the appropriate time, but which instead do a different thing from what their name is.
For instance, the sweeper is based on a collocation problem, but multistep methods don't do collocation. They do something that looks quite similar, though. Instead of generating solutions at intermediate collocation nodes and updating all of them from each other, multistep methods update the solution at the current step from solutions at previous time points.
So, to generate a multistep method interface, we need to do:
predict: Filluandfin the levels with the values from previous time stepsupdate_nodes: Compute the solution to the current step from the previous solutions, no loop over "nodes"compute_end_point: Return the solution at the last "node"compute_residual: We don't need to compute the residual at all, so do nothing.
Then, we would need to write some actual methods that only need to implement the update_nodes function to compute the solution to the current step.
And, we would need to profile this to make sure it is not doing any unnecessary work!
Again, this is not desperately needed! But I think it would be nice to have something in the interface of pySDC that does other methods in the language of SDC. If you feel like implementing this, please go ahead!
Please remember to test your methods. Ideally, you would test that they
- have the expected order of accuracy,
- are as stable as expected,
- and perform exactly as many right hand side evaluations as needed.
But feel free to deviate from this.