-
Notifications
You must be signed in to change notification settings - Fork 143
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 Runge Kutta 56 integrator to coefficient list + Unit test #22
Conversation
Add test case from Fehlberg1968.
Hi @Reneh107, thanks a lot for the pull request. The RKF56 has been "disabled" because it lacks a proper unit test. With your work we come a long way. I do have a couple of remarks:
Anyway, thanks again. I hope you find these useful. Looking forward to your reaction. |
Added extra test that compares with results of Fehlberg and with an analytical solution
I processed the comments and updated the unit test. It was observed that the accuracy of the RK56 numerical integrator depends on the initial stepsize. For some initial stepsizes, a large error was observed, In the order of 0.01. This could mean that there is something wrong with the Error control. However, it could also be an inherent problem of the RK56 integrator if these initial stepsizes correspond to the unstable region of the RK56 integrator. The same test was also added to the RK78 integrator and it was observed that the accuracy also depends on the initial stepsize. RK5(6): RK7(8): Conclusion:
|
I updated the unit test such that it agrees with the tudat coding style. I propose that (after code check) we merge this pull request into tudat and open an issue to improve the unit test to verify that the integrator is indeed a RK56 integrator. The current unit test only proves that the integrator works correctly. Tests have shown that the obtained stepsize with this integrator is in between the stepsize that the 45 and the 78 generate. Therefore, one can assume that this integrator is indeed a correctly implemented 56 integrator. |
Thanks for making an effort. This code will be very useful for others and unit testing wise this is as complete as we'll get it now. The idea of opening an issue about this is indeed much more practical. I went through your code and made a few changes:
I have just made a pull request on your branch. Please accept it such that the changes are reflected here. Then I will merge the code into Tudat! |
Codecheck feedback
Thank you for the feedback! I will use this in my upcoming pull requests. I merged your changes into my branch, so you can merge it in Tudat. I will open an issue after you've merged the code. |
A unit test is written that performs three tests comparing the results of the RK78 and the RK56 integrator.
The RK56 integrator is added to the lists such that it can be included.
Code check required...
Note: Solution was sensitive to integrator settings. Possible due to unstable behavior of ODEs.