@@ -2835,15 +2835,20 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
28352835 elseif sys isa ODESystem
28362836 rules = todict (map (r -> Symbolics. unwrap (r[1 ]) => Symbolics. unwrap (r[2 ]),
28372837 collect (rules)))
2838- eqs = fast_substitute (get_eqs (sys), rules)
2839- pdeps = fast_substitute (get_parameter_dependencies (sys), rules)
2840- defs = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
2838+ newsys = @set sys. eqs = fast_substitute (get_eqs (sys), rules)
2839+ @set! sys. unknowns = map (get_unknowns (sys)) do var
2840+ get (rules, var, var)
2841+ end
2842+ @set! sys. ps = map (get_ps (sys)) do var
2843+ get (rules, var, var)
2844+ end
2845+ @set! newsys. parameter_dependencies = fast_substitute (
2846+ get_parameter_dependencies (sys), rules)
2847+ @set! newsys. defaults = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
28412848 for (k, v) in get_defaults (sys))
2842- guess = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
2849+ @set! newsys . guesses = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
28432850 for (k, v) in get_guesses (sys))
2844- subsys = map (s -> substitute (s, rules), get_systems (sys))
2845- ODESystem (eqs, get_iv (sys); name = nameof (sys), defaults = defs,
2846- guesses = guess, parameter_dependencies = pdeps, systems = subsys)
2851+ @set! newsys. systems = map (s -> substitute (s, rules), get_systems (sys))
28472852 else
28482853 error (" substituting symbols is not supported for $(typeof (sys)) " )
28492854 end
0 commit comments