Hi, I was using ComponentArrays.jl to solve the ODE problem in the README and got an error.
using ComponentArrays
using OrdinaryDiffEq
using SimpleUnPack: @unpack
tspan = (0.0, 20.0)
function lorenz!(D, u, p, t; f=0.0)
@unpack σ, ρ, β = p
@unpack x, y, z = u
D.x = σ*(y - x)
D.y = x*(ρ - z) - y - f
D.z = x*y - β*z
return nothing
end
lorenz_p = ComponentVector(σ=10.0, ρ=28.0, β=8/3)
lorenz_ic = ComponentVector(x=1.0, y=0.0, z=0.0)
lorenz_prob = ODEProblem(lorenz!, lorenz_ic, tspan, lorenz_p)
lorenz_sol = solve(lorenz_prob) # Method error here
The error was
ERROR: MethodError: no method matching reshape(::UnitRange{Int64}, ::Tuple{ComponentArrays.CombinedAxis{Axis{(x = 1, y = 2, z = 3)}, Base.OneTo{Int64}}})
The function `reshape` exists, but no method is defined for this combination of argument types.
Closest candidates are:
reshape(::AbstractArray, ::Tuple{Vararg{Union{Colon, Int64}}})
@ Base reshapedarray.jl:129
reshape(::AbstractArray, ::NTuple{N, Int64} where N)
@ Base reshapedarray.jl:122
reshape(::AbstractArray, ::Tuple{Union{Integer, Base.OneTo}, Vararg{Union{Integer, Base.OneTo}}})
@ Base reshapedarray.jl:121
...
Stacktrace:
[1] reshape(parent::UnitRange{Int64}, dims::ComponentArrays.CombinedAxis{Axis{(x = 1, y = 2, z = 3)}, Base.OneTo{Int64}})
@ Base .\reshapedarray.jl:120
[2] finite_difference_jacobian!(J::Matrix{…}, f::SciMLBase.UJacobianWrapper{…}, x::ComponentVector{…}, cache::FiniteDiff.JacobianCache{…}, f_in::ComponentVector{…}; relstep::Float64, absstep::Float64, colorvec::UnitRange{…}, sparsity::Nothing, dir::Int64)
@ FiniteDiff E:\.julia\packages\FiniteDiff\EBPBu\src\jacobians.jl:419
[3] jacobian_finitediff_forward!(J::Matrix{…}, f::Function, x::ComponentVector{…}, jac_config::FiniteDiff.JacobianCache{…}, forwardcache::ComponentVector{…}, integrator::OrdinaryDiffEqCore.ODEIntegrator{…})
@ OrdinaryDiffEqDifferentiation E:\.julia\packages\OrdinaryDiffEqDifferentiation\6Bzim\src\derivative_wrappers.jl:219
[4] jacobian!(J::Matrix{…}, f::SciMLBase.UJacobianWrapper{…}, x::ComponentVector{…}, fx::ComponentVector{…}, integrator::OrdinaryDiffEqCore.ODEIntegrator{…}, jac_config::FiniteDiff.JacobianCache{…})
@ OrdinaryDiffEqDifferentiation E:\.julia\packages\OrdinaryDiffEqDifferentiation\6Bzim\src\derivative_wrappers.jl:250
[5] calc_J!(J::Matrix{…}, integrator::OrdinaryDiffEqCore.ODEIntegrator{…}, cache::OrdinaryDiffEqRosenbrock.Rosenbrock23Cache{…}, next_step::Bool)
@ OrdinaryDiffEqDifferentiation E:\.julia\packages\OrdinaryDiffEqDifferentiation\6Bzim\src\derivative_utils.jl:152
[6] calc_W!
@ E:\.julia\packages\OrdinaryDiffEqDifferentiation\6Bzim\src\derivative_utils.jl:557 [inlined]
[7] calc_W!
@ E:\.julia\packages\OrdinaryDiffEqDifferentiation\6Bzim\src\derivative_utils.jl:495 [inlined]
[8] calc_rosenbrock_differentiation!
@ E:\.julia\packages\OrdinaryDiffEqDifferentiation\6Bzim\src\derivative_utils.jl:631 [inlined]
[9] perform_step!(integrator::OrdinaryDiffEqCore.ODEIntegrator{…}, cache::OrdinaryDiffEqRosenbrock.Rosenbrock23Cache{…}, repeat_step::Bool)
@ OrdinaryDiffEqRosenbrock E:\.julia\packages\OrdinaryDiffEqRosenbrock\0G2ZF\src\rosenbrock_perform_step.jl:46
[10] perform_step!(integrator::OrdinaryDiffEqCore.ODEIntegrator{…}, cache::OrdinaryDiffEqCore.DefaultCache{…}, repeat_step::Bool)
@ OrdinaryDiffEqCore E:\.julia\packages\OrdinaryDiffEqCore\yTEch\src\perform_step\composite_perform_step.jl:145
[11] perform_step!
@ E:\.julia\packages\OrdinaryDiffEqCore\yTEch\src\perform_step\composite_perform_step.jl:138 [inlined]
[12] solve!(integrator::OrdinaryDiffEqCore.ODEIntegrator{…})
@ OrdinaryDiffEqCore E:\.julia\packages\OrdinaryDiffEqCore\yTEch\src\solve.jl:620
[13] __solve(::ODEProblem{…}, ::CompositeAlgorithm{…}; kwargs::@Kwargs{…})
@ OrdinaryDiffEqCore E:\.julia\packages\OrdinaryDiffEqCore\yTEch\src\solve.jl:7
[14] __solve
@ E:\.julia\packages\OrdinaryDiffEqCore\yTEch\src\solve.jl:1 [inlined]
[15] #solve_call#35
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:635 [inlined]
[16] solve_call
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:592 [inlined]
[17] #solve_up#44
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1128 [inlined]
[18] solve_up
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1106 [inlined]
[19] #solve#42
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1045 [inlined]
[20] solve
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1033 [inlined]
[21] #__solve#3
@ E:\.julia\packages\OrdinaryDiffEqDefault\kOV75\src\default_alg.jl:48 [inlined]
[22] __solve
@ E:\.julia\packages\OrdinaryDiffEqDefault\kOV75\src\default_alg.jl:47 [inlined]
[23] #__solve#63
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1437 [inlined]
[24] __solve
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1428 [inlined]
[25] #solve_call#35
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:635 [inlined]
[26] solve_call
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:592 [inlined]
[27] #solve_up#44
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1112 [inlined]
[28] solve_up
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1106 [inlined]
[29] #solve#42
@ E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1043 [inlined]
[30] solve(::ODEProblem{…})
@ DiffEqBase E:\.julia\packages\DiffEqBase\HGITF\src\solve.jl:1033
[31] top-level scope
@ d:\github\ca-ode\mwe.jl:21
Some type information was truncated. Use `show(err)` to see complete types.
Packages:
(ca-ode) pkg> st
Status `D:\github\ca-ode\Project.toml`
[b0b7db55] ComponentArrays v0.15.24
[1dea7af3] OrdinaryDiffEq v6.91.0
[ce78b400] SimpleUnPack v1.1.0
System: Julia version 1.11.3, Windows 11 24H2