@@ -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