Skip to content

Commit bbcbc4e

Browse files
committed
refactor: renamespace parameter dependencies
1 parent 38b2c7a commit bbcbc4e

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
@@ -870,6 +870,11 @@ function namespace_guesses(sys)
870870
Dict(unknowns(sys, k) => namespace_expr(v, sys) for (k, v) in guess)
871871
end
872872

873+
function namespace_parameter_dependencies(sys)
874+
pdeps = get_parameter_dependencies(sys)
875+
Dict(dependent_parameters(sys, k) => namespace_expr(v, sys) for (k, v) in pdeps)
876+
end
877+
873878
function namespace_equations(sys::AbstractSystem, ivs = independent_variables(sys))
874879
eqs = equations(sys)
875880
isempty(eqs) && return Equation[]
@@ -967,13 +972,29 @@ end
967972

968973
function dependent_parameters(sys::AbstractSystem)
969974
if has_parameter_dependencies(sys) &&
970-
(pdeps = get_parameter_dependencies(sys)) !== nothing
971-
collect(keys(pdeps))
975+
!isempty(parameter_dependencies(sys))
976+
collect(keys(parameter_dependencies(sys)))
972977
else
973978
[]
974979
end
975980
end
976981

982+
function parameter_dependencies(sys::AbstractSystem)
983+
pdeps = get_parameter_dependencies(sys)
984+
if isnothing(pdeps)
985+
pdeps = Dict()
986+
end
987+
systems = get_systems(sys)
988+
isempty(systems) && return pdeps
989+
for subsys in systems
990+
isnothing(get_parameter_dependencies(subsys)) && continue
991+
992+
pdeps = merge(pdeps, namespace_parameter_dependencies(subsys))
993+
end
994+
# @info pdeps
995+
return pdeps
996+
end
997+
977998
function full_parameters(sys::AbstractSystem)
978999
vcat(parameters(sys), dependent_parameters(sys))
9791000
end
@@ -1028,6 +1049,8 @@ for f in [:unknowns, :parameters]
10281049
end
10291050
end
10301051

1052+
dependent_parameters(sys::Union{AbstractSystem, Nothing}, v) = renamespace(sys, v)
1053+
10311054
flatten(sys::AbstractSystem, args...) = sys
10321055

10331056
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
@@ -104,8 +104,8 @@ function IndexCache(sys::AbstractSystem)
104104
end
105105
end
106106

107-
if has_parameter_dependencies(sys) &&
108-
(pdeps = get_parameter_dependencies(sys)) !== nothing
107+
if has_parameter_dependencies(sys)
108+
pdeps = parameter_dependencies(sys)
109109
for (sym, value) in pdeps
110110
sym = unwrap(sym)
111111
insert_by_type!(dependent_buffers, sym)

0 commit comments

Comments
 (0)