SciML / OrdinaryDiffEq.jl

High performance ordinary differential equation (ODE) and differential-algebraic equation (DAE) solvers, including neural ordinary differential equations (neural ODEs) and scientific machine learning (SciML)
https://diffeq.sciml.ai/latest/
Other
536 stars 205 forks source link

New Rosenbrock-type methods of Sandu that favor positivity for chemical reactions #2089

Open ranocha opened 9 months ago

ranocha commented 9 months ago

See Sandu (2000) Time stepping methods that favor positivity for atmospheric chemistry modeling. There are four methods

cwittens commented 7 months ago

any successions of how one should name the methods when implementing? Just Sandu2A, Sandau2B, ...?

cwittens commented 7 months ago

I just realized that Methods A-C don't have an embedded method. Does it still make sense to implement them? And method D has an embedded method, but it took ~2000 steps to solve u' = 1.01u between (0,1)

After some changing btilde from [8/3, 1, 1, -1/3] to [0, 0, 0, 1] (originally to check for an potential error/bug), I got it down to 15 steps, but this change seems quite arbitrary. Besides from checking again for potential errors in the implementation, I am not sure how to proceed.

And ROS2 is also given in this paper and it has the same coefficients as in https://github.com/SciML/OrdinaryDiffEq.jl/issues/2112 (and with this the same as in KPP), only the embedded methods is different from the one in KPP. I am thinking of implementing both and checking if both give reasonable solutions.

ChrisRackauckas commented 7 months ago

It's fine, those ones just won't be adaptive.

ranocha commented 7 months ago

Thanks, that would be nice 👍