Skip to content

Commit 7f079f0

Browse files
committed
refactor: renamespace parameter dependencies
1 parent 413153e commit 7f079f0

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

src/systems/abstractsystem.jl

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -878,6 +878,11 @@ function namespace_guesses(sys)
878878
Dict(unknowns(sys, k) => namespace_expr(v, sys) for (k, v) in guess)
879879
end
880880

881+
function namespace_parameter_dependencies(sys)
882+
pdeps = get_parameter_dependencies(sys)
883+
Dict(dependent_parameters(sys, k) => namespace_expr(v, sys) for (k, v) in pdeps)
884+
end
885+
881886
function namespace_equations(sys::AbstractSystem, ivs = independent_variables(sys))
882887
eqs = equations(sys)
883888
isempty(eqs) && return Equation[]
@@ -975,13 +980,29 @@ end
975980

976981
function dependent_parameters(sys::AbstractSystem)
977982
if has_parameter_dependencies(sys) &&
978-
(pdeps = get_parameter_dependencies(sys)) !== nothing
979-
collect(keys(pdeps))
983+
!isempty(parameter_dependencies(sys))
984+
collect(keys(parameter_dependencies(sys)))
980985
else
981986
[]
982987
end
983988
end
984989

990+
function parameter_dependencies(sys::AbstractSystem)
991+
pdeps = get_parameter_dependencies(sys)
992+
if isnothing(pdeps)
993+
pdeps = Dict()
994+
end
995+
systems = get_systems(sys)
996+
isempty(systems) && return pdeps
997+
for subsys in systems
998+
isnothing(get_parameter_dependencies(subsys)) && continue
999+
1000+
pdeps = merge(pdeps, namespace_parameter_dependencies(subsys))
1001+
end
1002+
# @info pdeps
1003+
return pdeps
1004+
end
1005+
9851006
function full_parameters(sys::AbstractSystem)
9861007
vcat(parameters(sys), dependent_parameters(sys))
9871008
end
@@ -1044,6 +1065,8 @@ for f in [:unknowns, :parameters]
10441065
end
10451066
end
10461067

1068+
dependent_parameters(sys::Union{AbstractSystem, Nothing}, v) = renamespace(sys, v)
1069+
10471070
flatten(sys::AbstractSystem, args...) = sys
10481071

10491072
function equations(sys::AbstractSystem)

src/systems/diffeqs/odesystem.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ function flatten(sys::ODESystem, noeqs = false)
355355
get_iv(sys),
356356
unknowns(sys),
357357
parameters(sys),
358-
parameter_dependencies = get_parameter_dependencies(sys),
358+
parameter_dependencies = parameter_dependencies(sys),
359359
guesses = guesses(sys),
360360
observed = observed(sys),
361361
continuous_events = continuous_events(sys),

src/systems/index_cache.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ function IndexCache(sys::AbstractSystem)
106106
end
107107
end
108108

109-
if has_parameter_dependencies(sys) &&
110-
(pdeps = get_parameter_dependencies(sys)) !== nothing
109+
if has_parameter_dependencies(sys)
110+
pdeps = parameter_dependencies(sys)
111111
for (sym, value) in pdeps
112112
sym = unwrap(sym)
113113
insert_by_type!(dependent_buffers, sym)

0 commit comments

Comments
 (0)