Open
Description
Describe the bug 🐞
A clear and concise description of what the bug is.
delete!(integrator, indxs)
should delete only entries at idxs
. Instead, delete!
is deleting several other entries as well.
A clear and concise description of what you expected to happen.
Only entries at idxs
are deleted.
Minimal Reproducible Example 👇
using DifferentialEquations
u0 = collect(range(1.0, 5.0))
test(u, t, integrator) = u[1] - 0.5
function action!(integrator)
@show integrator.u
deleteat!(integrator, 2)
@show integrator.u
end
cb = ContinuousCallback(test, action!)
rhs(du, u, p, t) = du .= -0.1 .* u
prob = ODEProblem(rhs, u0, (0, 100))
solve(prob, callback=cb)
Error & Stacktrace
integrator.u = [0.5000000000000004, 1.0000000000000009, 1.5000000000000007, 2.0000000000000018, 2.500000000000002]
integrator.u = [0.5000000000000004]
ERROR: DimensionMismatch: Some axes are not equal, or feature a dynamic broadcast!
Stacktrace:
[1] _fast_materialize!
@ ~/.julia/packages/FastBroadcast/wfdTr/src/FastBroadcast.jl:193 [inlined]
[2] fast_materialize!
@ ~/.julia/packages/FastBroadcast/wfdTr/src/FastBroadcast.jl:277 [inlined]
[3] _ode_addsteps!(k::Vector{…}, t::Float64, uprev::Vector{…}, u::Vector{…}, dt::Float64, f::ODEFunction{…}, p::SciMLBase.NullParameters, cache::OrdinaryDiffEqTsit5.Tsit5Cache{…}, always_calc_begin::Bool, allow_calc_end::Bool, force_calc_end::Bool)
@ OrdinaryDiffEqTsit5 ~/.julia/packages/OrdinaryDiffEqTsit5/DHYtz/src/tsit_perform_step.jl:9
[4] ode_addsteps!
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/dense/generic_dense.jl:87 [inlined]
[5] ode_addsteps!
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/dense/generic_dense.jl:61 [inlined]
[6] reeval_internals_due_to_modification!(integrator::OrdinaryDiffEqCore.ODEIntegrator{…}, continuous_modification::Bool)
@ OrdinaryDiffEqCore ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/integrators/integrator_interface.jl:51
[7] reeval_internals_due_to_modification!
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/integrators/integrator_interface.jl:40 [inlined]
[8] apply_callback!(integrator::OrdinaryDiffEqCore.ODEIntegrator{…}, callback::ContinuousCallback{…}, cb_time::Float64, prev_sign::Float64, event_idx::Int64)
@ DiffEqBase ~/.julia/packages/DiffEqBase/sCsah/src/callbacks.jl:591
[9] macro expansion
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/integrators/integrator_utils.jl:319 [inlined]
[10] apply_ith_callback!
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/integrators/integrator_utils.jl:305 [inlined]
[11] handle_callbacks!
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/integrators/integrator_utils.jl:344 [inlined]
[12] _loopfooter!(integrator::OrdinaryDiffEqCore.ODEIntegrator{…})
@ OrdinaryDiffEqCore ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/integrators/integrator_utils.jl:243
[13] loopfooter!
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/integrators/integrator_utils.jl:207 [inlined]
[14] solve!(integrator::OrdinaryDiffEqCore.ODEIntegrator{…})
@ OrdinaryDiffEqCore ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/solve.jl:552
[15] #__solve#62
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/solve.jl:7 [inlined]
[16] __solve
@ ~/.julia/packages/OrdinaryDiffEqCore/3Y2Xj/src/solve.jl:1 [inlined]
[17] solve_call(_prob::ODEProblem{…}, args::CompositeAlgorithm{…}; merge_callbacks::Bool, kwargshandle::Nothing, kwargs::@Kwargs{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:612
[18] solve_call
@ ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:569 [inlined]
[19] solve_up(prob::ODEProblem{…}, sensealg::Nothing, u0::Vector{…}, p::SciMLBase.NullParameters, args::CompositeAlgorithm{…}; kwargs::@Kwargs{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:1080
[20] solve_up
@ ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:1066 [inlined]
[21] #solve#51
@ ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:1003 [inlined]
[22] solve
@ ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:993 [inlined]
[23] #__solve#3
@ ~/.julia/packages/OrdinaryDiffEqDefault/2qVWT/src/default_alg.jl:46 [inlined]
[24] __solve
@ ~/.julia/packages/OrdinaryDiffEqDefault/2qVWT/src/default_alg.jl:45 [inlined]
[25] #__solve#72
@ ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:1394 [inlined]
[26] __solve
@ ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:1386 [inlined]
[27] solve_call(::ODEProblem{…}; merge_callbacks::Bool, kwargshandle::Nothing, kwargs::@Kwargs{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:612
[28] solve_up(::ODEProblem{…}, ::Nothing, ::Vector{…}, ::SciMLBase.NullParameters; kwargs::@Kwargs{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:1072
[29] solve_up
@ ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:1066 [inlined]
[30] solve(::ODEProblem{…}; sensealg::Nothing, u0::Nothing, p::Nothing, wrap::Val{…}, kwargs::@Kwargs{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/sCsah/src/solve.jl:1003
[31] top-level scope
@ ~/PycharmProjects/Odetest/b.jl:13
Some type information was truncated. Use `show(err)` to see complete types.
Environment (please complete the following information):
- Output of
using Pkg; Pkg.status()
julia> using Pkg; Pkg.status()
Project Odetest v0.1.0
Status `~/PycharmProjects/Odetest/Project.toml`
[0c46a032] DifferentialEquations v7.14.0
[961ee093] ModelingToolkit v9.36.0
[91a5bcdd] Plots v1.40.8
[d1185830] SymbolicUtils v3.5.0
[0c5d862f] Symbolics v6.5.0
- Output of
versioninfo()
julia> versioninfo()
Julia Version 1.10.1
Commit 7790d6f0641 (2024-02-13 20:41 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: macOS (arm64-apple-darwin22.4.0)
CPU: 10 × Apple M1 Pro
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1)
Threads: 8 default, 0 interactive, 4 GC (on 8 virtual cores)
Environment:
JULIA_EDITOR = code
Additional context
If I explicitly specifiy Tsit5()
or Rosenbrock23()
it works as expected.
Add any other context about the problem here.