Skip to content

Commit b43ad3d

Browse files
fix: enable unscalarized array observed without individual observed elements
1 parent 1b0aef5 commit b43ad3d

2 files changed

Lines changed: 8 additions & 1 deletion

File tree

lib/ModelingToolkitBase/src/utils.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1243,9 +1243,10 @@ function observed_equations_used_by(
12431243
obsidxs = BitSet()
12441244
for sym in involved_vars
12451245
sym in available_vars && continue
1246-
arrsym = iscall(sym) && operation(sym) === getindex ? arguments(sym)[1] : nothing
1246+
arrsym = split_indexed_var(sym)[1]
12471247
idx = @something(
12481248
get(obsvar_to_idx, sym, nothing),
1249+
get(obsvar_to_idx, arrsym, nothing),
12491250
Some(nothing)
12501251
)
12511252
idx === nothing && continue

lib/ModelingToolkitBase/test/code_generation.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,3 +152,9 @@ end
152152
ps = MTKParameters(sys, nothing)
153153
@test fn([1.0], ps, 1.5) 4.0
154154
end
155+
156+
@testset "Non-scalarized array observed without individual elements being unknowns/observables" begin
157+
@variables x(t)[1:3] y(t)
158+
@mtkcomplete sys = System([D(y) ~ 2y + sum(x)], t, [y], []; observed = [x ~ [y, y + 1, y + 2]])
159+
@test ModelingToolkitBase.observed_equations_used_by(sys, [x[1]]) == [1]
160+
end

0 commit comments

Comments
 (0)