Skip to content

Commit faed5d6

Browse files
Merge pull request #2772 from AayushSabharwal/as/vecobs
fix: fix `build_explicit_observed_function` for array parameter expressions
2 parents d4967ac + 4eb7925 commit faed5d6

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/systems/diffeqs/odesystem.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,10 @@ function build_explicit_observed_function(sys, ts;
420420
subs = Dict()
421421
maxidx = 0
422422
for s in dep_vars
423-
if s in param_set || s in param_set_ns
423+
if s in param_set || s in param_set_ns ||
424+
iscall(s) &&
425+
operation(s) === getindex &&
426+
(arguments(s)[1] in param_set || arguments(s)[1] in param_set_ns)
424427
continue
425428
end
426429
idx = get(observed_idx, s, nothing)

test/symbolic_indexing_interface.jl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,19 @@ analytic_function = (ps, t, x) -> -ps[1] * x * (x - 1) * sin(x) * exp(-2 * ps[1]
8585
@test isequal(pdesys.ps, [h])
8686
@test isequal(parameter_symbols(pdesys), [h])
8787
@test isequal(parameters(pdesys), [h])
88+
89+
# Issue#2767
90+
using ModelingToolkit
91+
using ModelingToolkit: t_nounits as t, D_nounits as D
92+
using SymbolicIndexingInterface
93+
94+
@parameters p1[1:2]=[1.0, 2.0] p2[1:2]=[0.0, 0.0]
95+
@variables x(t) = 0
96+
97+
@named sys = ODESystem(
98+
[D(x) ~ sum(p1) * t + sum(p2)],
99+
t;
100+
)
101+
prob = ODEProblem(complete(sys))
102+
get_dep = @test_nowarn getu(prob, 2p1)
103+
@test get_dep(prob) == [2.0, 4.0]

0 commit comments

Comments
 (0)