Skip to content
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

Adaptive Differential Equation Solvers #47

Closed
amartyabose opened this issue Nov 7, 2021 · 4 comments
Closed

Adaptive Differential Equation Solvers #47

amartyabose opened this issue Nov 7, 2021 · 4 comments

Comments

@amartyabose
Copy link

Hey,

Thanks for the wonderful library. Do you have plans of putting in adaptive solvers of differential equations? Would that require considerable changes to the current framework?

Best,
Amartya

@Axect
Copy link
Owner

Axect commented Nov 7, 2021

Hello.

Thank you for your interest. The bottom line is, yes, I want to implement adaptive differential equation solver algorithms such as Runge-Kutta-Fehlberg, Dormand-Prince and etc. And it does not require noticeable changes to current version. But unfortunately, I have devoted a lot of time to other research now, so it seems difficult to implement for the time being. At the earliest, it seems that I will be able to try implementations that have been delayed until early next year.
Of course, if anyone is interested in implementation, pull-requests are always welcome. 😄

@amartyabose
Copy link
Author

Hello,

That's really nice. The possible breadth of the library that you have designed is quite phenomenal. I would love to be able to contribute. I am new to Rust and still trying to wrap my head around the peroxide infrastructure in between my regular research. I might ask you a few questions and try to add little things to the framework for starters.

@Axect
Copy link
Owner

Axect commented Nov 7, 2021

Sure. Any questions are always welcome!

@Axect
Copy link
Owner

Axect commented Apr 11, 2024

Hello Amartya,

I apologize for the long delay in getting back to you. It's been three years since we discussed the implementation of adaptive solvers in Peroxide, and I'm happy to share that we now have some great news to share with you.

Starting from version 0.36.0, Peroxide now includes a variety of ODE integrators. Notably, the methods in the Embedded category, such as Bogacki-Shampine 2/3rd order (BS23), Runge-Kutta-Fehlberg 4/5th order (RKF45), Dormand-Prince 4/5th order (DP45), and Tsitouras 4/5th order (TSIT45), utilize adaptive step sizes to provide more efficient and accurate solutions to differential equations.

While adding adaptive solvers didn't require monumental changes to the existing framework, it did necessitate significant modifications to improve the overall design and efficiency of the ODE module. These changes took a considerable amount of time due to my involvement in other research projects. I truly appreciate your interest and patience.

Peroxide has undergone some major updates recently. Here are some highlights from the latest release notes:

  • A redesigned ODE module with a more modular and extensible architecture
    • ODEProblem: Trait for defining an ODE problem
    • ODEIntegrator: Trait for integrating ODEs (including RK4, RKF45, GL4, and the ability to implement custom integrators)
    • ODESolver: Trait for solving ODEs (including BasicODESolver and the ability to implement custom solvers)

You can find more information about the updated ODE module in the following link: docs for ode.rs

If you have any questions or suggestions while using Peroxide, especially regarding the adaptive solvers, please feel free to reach out. As always, Pull Requests are welcome!

I hope Peroxide continues to be helpful in your research. Thank you for your support and understanding.

Best regards,
Axect

@Axect Axect closed this as completed Apr 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants