-
Notifications
You must be signed in to change notification settings - Fork 6
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
Add Generic Rosenbrock Algorithm #61
base: main
Are you sure you want to change the base?
Conversation
|
||
struct RosenbrockTableau{N, RT, N²} |
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.
Wait, we already had a Rosenbrock time stepper? How is what was added different? Can this please be elaborated in the description? The previous implementation (that it looks like @simonbyrne implemented?) looks much simpler
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.
I have a similar question, perhaps phrased slightly differently: Why does enabling limiters necessitate this much more complexity than the straightforward Rosenbrock implementation in the older code?
PULL REQUEST
Purpose and Content
This PR adds Rosenbrock methods to ClimaTimeSteppers. Some of these methods can work with limiters (depending on the method coefficients), but that requires specifying
multiply!
andset_Δtγ!
in addition tolinsolve!
. The Rosenbrock methods support updating the Jacobian once per timestep, or once every n timesteps (the latter is not possible with OrdinaryDiffEq).Benefits and Risks
This PR will allow us to compare the performance of our Rosenbrock23 implementation to that of OrdinaryDiffEq's. The new methods have been tested with convergence unit tests on a simple linear problem (those that support the increment formulation in addition to the tendency formulation have been tested with
ForwardEulerODEFunction
as well). This PR also involves adding some new tests from ARKode, as requested by Tapio, but those are not properly working yet.PR Checklist