Skip to content

Commit 994b2db

Browse files
fix: fix timeseries_parameter_index for array symbolics
1 parent 8781223 commit 994b2db

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/systems/index_cache.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,14 +404,16 @@ function SymbolicIndexingInterface.timeseries_parameter_index(ic::IndexCache, sy
404404
sym = get(ic.symbol_to_variable, sym, nothing)
405405
sym === nothing && return nothing
406406
end
407+
sym = unwrap(sym)
407408
idx = check_index_map(ic.discrete_idx, sym)
408409
idx === nothing ||
409410
return ParameterTimeseriesIndex(idx.clock_idx, (idx.buffer_idx, idx.idx_in_clock))
410411
iscall(sym) && operation(sym) == getindex || return nothing
411412
args = arguments(sym)
412413
idx = timeseries_parameter_index(ic, args[1])
413414
idx === nothing && return nothing
414-
ParameterIndex(idx.portion, (idx.idx..., args[2:end]...), idx.validate_size)
415+
return ParameterTimeseriesIndex(
416+
idx.timeseries_idx, (idx.parameter_idx..., args[2:end]...))
415417
end
416418

417419
function check_index_map(idxmap, sym)

test/symbolic_indexing_interface.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,3 +224,14 @@ end
224224
end
225225
@test isempty(get_all_timeseries_indexes(sys, a))
226226
end
227+
228+
@testset "`timeseries_parameter_index` on unwrapped scalarized timeseries parameter" begin
229+
@variables x(t)[1:2]
230+
@parameters p(t)[1:2, 1:2]
231+
ev = [x[1] ~ 2.0] => [p ~ -ones(2, 2)]
232+
@mtkbuild sys = ODESystem(D(x) ~ p * x, t; continuous_events = [ev])
233+
p = ModelingToolkit.unwrap(p)
234+
@test timeseries_parameter_index(sys, p) === ParameterTimeseriesIndex(1, (1, 1))
235+
@test timeseries_parameter_index(sys, p[1, 1]) ===
236+
ParameterTimeseriesIndex(1, (1, 1, 1, 1))
237+
end

0 commit comments

Comments
 (0)