@@ -2683,22 +2683,27 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
2683
2683
elseif sys isa System
2684
2684
rules = todict (map (r -> Symbolics. unwrap (r[1 ]) => Symbolics. unwrap (r[2 ]),
2685
2685
collect (rules)))
2686
- eqs = fast_substitute (get_eqs (sys), rules)
2687
- pdeps = fast_substitute (get_parameter_dependencies (sys), rules)
2688
- defs = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
2686
+ newsys = @set sys. eqs = fast_substitute (get_eqs (sys), rules)
2687
+ @set! newsys. unknowns = map (get_unknowns (sys)) do var
2688
+ get (rules, var, var)
2689
+ end
2690
+ @set! newsys. ps = map (get_ps (sys)) do var
2691
+ get (rules, var, var)
2692
+ end
2693
+ @set! newsys. parameter_dependencies = fast_substitute (
2694
+ get_parameter_dependencies (sys), rules)
2695
+ @set! newsys. defaults = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
2689
2696
for (k, v) in get_defaults (sys))
2690
- guess = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
2697
+ @set! newsys . guesses = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
2691
2698
for (k, v) in get_guesses (sys))
2692
- noise_eqs = fast_substitute (get_noise_eqs (sys), rules)
2693
- costs = fast_substitute (get_costs (sys), rules)
2694
- observed = fast_substitute (get_observed (sys), rules)
2695
- initialization_eqs = fast_substitute (get_initialization_eqs (sys), rules)
2696
- cstrs = fast_substitute (get_constraints (sys), rules)
2697
- subsys = map (s -> substitute (s, rules), get_systems (sys))
2698
- newsys = System (eqs, get_iv (sys); name = nameof (sys), defaults = defs,
2699
- guesses = guess, systems = subsys, noise_eqs,
2700
- observed, initialization_eqs, constraints = cstrs)
2701
- @set! newsys. parameter_dependencies = pdeps
2699
+ @set! newsys. noise_eqs = fast_substitute (get_noise_eqs (sys), rules)
2700
+ @set! newsys. costs = Vector {Union{Real, BasicSymbolic}} (fast_substitute (
2701
+ get_costs (sys), rules))
2702
+ @set! newsys. observed = fast_substitute (get_observed (sys), rules)
2703
+ @set! newsys. initialization_eqs = fast_substitute (
2704
+ get_initialization_eqs (sys), rules)
2705
+ @set! newsys. constraints = fast_substitute (get_constraints (sys), rules)
2706
+ @set! newsys. systems = map (s -> substitute (s, rules), get_systems (sys))
2702
2707
else
2703
2708
error (" substituting symbols is not supported for $(typeof (sys)) " )
2704
2709
end
0 commit comments