Skip to content

Commit d1cde76

Browse files
Merge pull request #3822 from SciML/as/fix-pdeps
fix: fix parameter dependencies dependent on scalarized array parameter
2 parents 4d65458 + 8a5d6a0 commit d1cde76

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/systems/abstractsystem.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2757,7 +2757,9 @@ function process_parameter_equations(sys::AbstractSystem)
27572757
is_parameter(sys, sym) ||
27582758
symbolic_type(sym) == ArraySymbolic() &&
27592759
is_sized_array_symbolic(sym) &&
2760-
all(Base.Fix1(is_parameter, sys), collect(sym))
2760+
all(Base.Fix1(is_parameter, sys), collect(sym)) ||
2761+
iscall(sym) &&
2762+
operation(sym) === getindex && is_parameter(sys, arguments(sym)[1])
27612763
end
27622764
# Everything in `varsbuf` is a parameter, so this is a cheap `is_parameter`
27632765
# check.

test/parameter_dependencies.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,3 +389,12 @@ end
389389
[x(k - 1) ~ x(k) + y(k) + p2, p2 ~ 2p1], t)
390390
@test is_parameter(sys, p1)
391391
end
392+
393+
@testset "Scalarized array as RHS of parameter dependency" begin
394+
@parameters p[1:2] p1 p2
395+
@variables x(t)
396+
@named sys = System([D(x) ~ x, p1 ~ p[1], p2 ~ p[2]], t)
397+
@test any(isequal(p), ModelingToolkit.get_ps(sys))
398+
sys = mtkcompile(sys)
399+
@test length(ModelingToolkit.parameter_dependencies(sys)) == 2
400+
end

0 commit comments

Comments
 (0)