@@ -2683,22 +2683,27 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
26832683 elseif sys isa System
26842684 rules = todict (map (r -> Symbolics. unwrap (r[1 ]) => Symbolics. unwrap (r[2 ]),
26852685 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)
26892696 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)
26912698 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))
27022707 else
27032708 error (" substituting symbols is not supported for $(typeof (sys)) " )
27042709 end
0 commit comments