The Aarseth (1985) timestep criterion is incorrectly implemented
WalterDehnen opened this issue · 1 comments
Environment
version 4.3.2, C code, MacOS
Describe the bug
src/integrator_ias15.c line 591 reads
timescale2 = (sqrt(y2*y4)+y3) / (sqrt(y3*y5)+y4); // A85
but correct is
(equation 6 of Pham, Rein, Spiegel 2024), i.e.
timescale2 = sqrt((y2*y4+y3*y3) / (y3*y5+y4*y4)); // Aarseth (1985)
To Reproduce
The bug is subtle and will not cause a crash, but may explain some behaviour seen in Fig.7 of Pham et al. (2024).
Moreover, it only features in with a non-default time-step criterion for IAS15.
Thanks for opening an issue on this. It is a bit subtle indeed. First, just to avoid confusing, note that all the quantities involved in this line are squared (timescale2
is the timescale squared, y3
is the third derivative squared, etc, see here). So I believe we are talking about the difference between
and
I agree that they are not the same, but the difference is similar to choosing a different norm, which mathematically and for any physical scaling argument shouldn't make a difference. We comment a bit on this in the paper at the end of Section 2. We've tried out various different norms as well as the two different equations above to combine the derivatives into one scalar quantity. We did not notice any systematic difference. Re-running the test shown in Fig 7 for both of the above equations shows the same: both equations give the very similar results. It is not obvious to me why one would be preferred over the other.