From 5e2fee6b319f08350c05c7e61c074b3354cf15ad Mon Sep 17 00:00:00 2001 From: Aayush Sabharwal Date: Mon, 23 Sep 2024 18:02:34 +0530 Subject: [PATCH] fix: allow accessing parameter dependencies via `Symbol` names --- src/systems/index_cache.jl | 11 ++++++++++- test/symbolic_indexing_interface.jl | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/systems/index_cache.jl b/src/systems/index_cache.jl index 82a17d01e9..8e5235245c 100644 --- a/src/systems/index_cache.jl +++ b/src/systems/index_cache.jl @@ -277,7 +277,16 @@ function IndexCache(sys::AbstractSystem) dependent_pars = Set{BasicSymbolic}() for eq in parameter_dependencies(sys) - push!(dependent_pars, eq.lhs) + sym = eq.lhs + ttsym = default_toterm(sym) + rsym = renamespace(sys, sym) + rttsym = renamespace(sys, ttsym) + for s in [sym, ttsym, rsym, rttsym] + push!(dependent_pars, s) + if hasname(s) && (!iscall(s) || operation(s) != getindex) + symbol_to_variable[getname(s)] = sym + end + end end return IndexCache( diff --git a/test/symbolic_indexing_interface.jl b/test/symbolic_indexing_interface.jl index 2531f4eef4..1eb114a08c 100644 --- a/test/symbolic_indexing_interface.jl +++ b/test/symbolic_indexing_interface.jl @@ -185,3 +185,12 @@ get_dep = @test_nowarn getu(prob, 2p1) @test getu(prob, p1)(prob) == getu(prob, :p1)(prob) @test getu(prob, p2)(prob) == getu(prob, :p2)(prob) end + +@testset "Parameter dependencies as symbols" begin + @variables x(t) = 1.0 + @parameters a = 1 b + @named model = ODESystem(D(x) ~ x + a - b, t, parameter_dependencies = [b ~ a + 1]) + sys = complete(model) + prob = ODEProblem(sys, [], (0.0, 1.0)) + @test prob.ps[b] == prob.ps[:b] +end