From 08b3aec78136085074d637e2aa93d54050bebfb9 Mon Sep 17 00:00:00 2001 From: vyudu Date: Wed, 22 Oct 2025 16:10:27 -0400 Subject: [PATCH 1/3] fix: fix accessing discrete index --- src/systems/abstractsystem.jl | 2 +- test/symbolic_indexing_interface.jl | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/systems/abstractsystem.jl b/src/systems/abstractsystem.jl index 51a495e4ff..efa586fc87 100644 --- a/src/systems/abstractsystem.jl +++ b/src/systems/abstractsystem.jl @@ -235,7 +235,7 @@ function SymbolicIndexingInterface.parameter_index(sys::AbstractSystem, sym::Sym if has_index_cache(sys) && (ic = get_index_cache(sys)) !== nothing idx = parameter_index(ic, sym) if idx === nothing || - idx.portion isa SciMLStructures.Discrete && idx.idx[2] == idx.idx[3] == 0 + idx.portion isa SciMLStructures.Discrete && idx.idx[1] == idx.idx[2] == 0 return nothing else return idx diff --git a/test/symbolic_indexing_interface.jl b/test/symbolic_indexing_interface.jl index 89b6907f4b..054034a8fa 100644 --- a/test/symbolic_indexing_interface.jl +++ b/test/symbolic_indexing_interface.jl @@ -236,3 +236,14 @@ end @test timeseries_parameter_index(sys, p[1, 1]) === ParameterTimeseriesIndex(1, (1, 1, 1, 1)) end + +@testset "Indexing with symbols work for discrete parameters" begin + t = ModelingToolkit.t_nounits; D = ModelingToolkit.D_nounits + @variables x(t) = 1. + @parameters p(t) = 1. + ev = ModelingToolkit.SymbolicDiscreteCallback((t == 1) => [p ~ Pre(p)*2], discrete_parameters = p) + @mtkcompile sys = System([D(x) ~ p], t; discrete_events = ev) + prob = ODEProblem(sys, [], (0., 2.)) + sol = solve(prob, Tsit5()) + @test sol[p] == sol[:p] == sol.ps[p] == sol.ps[:p] +end From d09b0f55da234dffa8eaf142330dd234bf505331 Mon Sep 17 00:00:00 2001 From: vyudu Date: Thu, 23 Oct 2025 08:29:35 -0400 Subject: [PATCH 2/3] add OrdinaryDiffEq dep --- test/symbolic_indexing_interface.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/test/symbolic_indexing_interface.jl b/test/symbolic_indexing_interface.jl index 054034a8fa..e95aaa6d97 100644 --- a/test/symbolic_indexing_interface.jl +++ b/test/symbolic_indexing_interface.jl @@ -2,6 +2,7 @@ using ModelingToolkit, SymbolicIndexingInterface, SciMLBase using ModelingToolkit: t_nounits as t, D_nounits as D, ParameterIndex, SymbolicContinuousCallback using SciMLStructures: Tunable +using OrdinaryDiffEqTsit5 @testset "System" begin @parameters a b From a9bff98c18a0f5bd7b85f94f6fcaf7cb890bcdc1 Mon Sep 17 00:00:00 2001 From: vyudu Date: Thu, 23 Oct 2025 10:51:38 -0400 Subject: [PATCH 3/3] change Oo load OrdinaryDiffEq --- test/symbolic_indexing_interface.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/symbolic_indexing_interface.jl b/test/symbolic_indexing_interface.jl index e95aaa6d97..400ba1fa6c 100644 --- a/test/symbolic_indexing_interface.jl +++ b/test/symbolic_indexing_interface.jl @@ -2,7 +2,7 @@ using ModelingToolkit, SymbolicIndexingInterface, SciMLBase using ModelingToolkit: t_nounits as t, D_nounits as D, ParameterIndex, SymbolicContinuousCallback using SciMLStructures: Tunable -using OrdinaryDiffEqTsit5 +using OrdinaryDiffEq @testset "System" begin @parameters a b