I get an error
TypeError: in setfield!, expected
Tuple{LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}, Base.RefValue{Int64}}
, got a value of typeTuple{LinearAlgebra.LU{Float64, StaticArraysCore.MMatrix{4, 4, Float64, 16}, Vector{Int64}}, Base.RefValue{Int64}}
(difference is Matrix vs MMatrix)
while calling OrdinaryDiffEq’s solve
with algorithm AutoTsit5(Rodas4P())
or Rodas4P(autodiff=false)
. Minimal (non-)working example:
using OrdinaryDiffEq, StaticArrays
function mwe_rule!(out, u, p, t)
out .= -u
nothing
end
# ↓ this will work
u0 = zeros(4)
# ↓ this will throw the error
#u0 = @MVector(zeros(4))
p = ODEProblem(mwe_rule!, u0, (0., 12.))
sol = solve(p, Rodas4P(autodiff=false))
This was weird to find, because in my case I am working with disturbed systems and the error only occurs with very small disturbance strengths. Happens on OrdinaryDiffEq v6.58.0
Edit: Seems this is fixed by an upgrade to OrdinaryDiffEq v6.59.0, possibly related to #2052