Skip to content

Commit adf3b44

Browse files
committed
refactor: renamespace parameter dependencies
1 parent 09bc118 commit adf3b44

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[]
@@ -976,13 +981,29 @@ end
976981

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

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

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

10501073
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
@@ -115,8 +115,8 @@ function IndexCache(sys::AbstractSystem)
115115
end
116116
end
117117

118-
if has_parameter_dependencies(sys) &&
119-
(pdeps = get_parameter_dependencies(sys)) !== nothing
118+
if has_parameter_dependencies(sys)
119+
pdeps = parameter_dependencies(sys)
120120
for (sym, value) in pdeps
121121
sym = unwrap(sym)
122122
insert_by_type!(dependent_buffers, sym)

0 commit comments

Comments
 (0)