Hi,
I am trying to understand the internal of JuliaDiffEq package. I have encountered many files names sth_cache.jl. Can anyone explain to me what do these files do and why we need it? I tried to find the explanations in the document but I came up with nothing.
It is documented very briefly here. The gist is that one can allocate all the cache arrays only once and put them into a mutable cache, so when the integrator performs the stepping, it won’t have any memory allocatation. For instance, the RK4 mutable cache has fsalfirst(k1), k2, k3, k4 and k for derivatives, tmp for temporary evaluations, and atmp for the error estimation.
However, sometimes users may not want to mutate the cache arrays (e.g. one might use SVector or a scalar in the out-of-place form of the derivative function u' = f(u,p,t)), hence the constant cache.
Hopefully, this clears some confusions that you have.
2 Likes