Closed moble closed 2 months ago
Good catch! this code is really easy to typo. You are right about the error occuring when it switches to stiff. I should be able to get a much simpler reproducer.
This was fixed by #2280, but a syntax issue meant it didn't get auto-closed.
Thanks Oscar!!!
Describe the bug 🐞
With very particular conditions, using the default ODE solver, when I try to use
get_du
, I get anUndefRefError
that appears to come from this line. Turns outcache.cache5
doesn't exist, as I discovered by inserting@show
statements. If I change the tolerance or the initial conditions even slightly, I get success. This happens very late in the evolution, where the physics becomes problematic, so I'm guessing that the integrator has switched to stiff handling??? If I specifyVern9
, I don't run into the problem.So, unfortunately, I haven't been able to find a simpler ODE system for which this works. The MRE below is at least visually simple enough. And while it does rely on
PostNewtonian.jl
to supply the right-hand side, I really don't think that's the problem per se — it's just the only thing I've found that triggers the error. The post-Newtonian equations being integrated are a bit weird, in that they are approximations describing a system that's heading out of the regime where the equations can possibly be correct (merging black holes getting close to the speed of light), so I just have to keep integrating until I find things going bad, which means I need various termination criteria. I've narrowed the problem down to one that needsget_du
.I also saw #785 had a similar error message from
get_du
, and the suggestion to useintegrator(t,Val{1})
, but I get the same error from the same place.Expected behavior
I expected success, of course! :)
Minimal Reproducible Example 👇
Error & Stacktrace ⚠️
Github won't let me include the entire error stacktrace because it's over the maximum of 65536 characters, so I'll leave in the first crazy type, but cut out the rest.
Environment (please complete the following information):
using Pkg; Pkg.status()
using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)
versioninfo()
Also tried it (with the same result) on