@@ -2934,12 +2934,12 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
29342934 elseif sys isa ODESystem
29352935 rules = todict (map (r -> Symbolics. unwrap (r[1 ]) => Symbolics. unwrap (r[2 ]),
29362936 collect (rules)))
2937- eqs = fast_substitute (equations (sys), rules)
2938- pdeps = fast_substitute (parameter_dependencies (sys), rules)
2937+ eqs = fast_substitute (get_eqs (sys), rules)
2938+ pdeps = fast_substitute (get_parameter_dependencies (sys), rules)
29392939 defs = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
2940- for (k, v) in defaults (sys))
2940+ for (k, v) in get_defaults (sys))
29412941 guess = Dict (fast_substitute (k, rules) => fast_substitute (v, rules)
2942- for (k, v) in guesses (sys))
2942+ for (k, v) in get_guesses (sys))
29432943 subsys = map (s -> substitute (s, rules), get_systems (sys))
29442944 ODESystem (eqs, get_iv (sys); name = nameof (sys), defaults = defs,
29452945 guesses = guess, parameter_dependencies = pdeps, systems = subsys)
@@ -2948,14 +2948,34 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
29482948 end
29492949end
29502950
2951+ struct InvalidParameterDependenciesType
2952+ got:: Any
2953+ end
2954+
2955+ function Base. showerror (io:: IO , err:: InvalidParameterDependenciesType )
2956+ print (
2957+ io, " Parameter dependencies must be a `Dict`, or an array of `Pair` or `Equation`." )
2958+ if err. got != = nothing
2959+ print (io, " Got " , err. got)
2960+ end
2961+ end
2962+
29512963function process_parameter_dependencies (pdeps, ps)
29522964 if pdeps === nothing || isempty (pdeps)
29532965 return Equation[], ps
2954- elseif eltype (pdeps) <: Pair
2955- pdeps = [lhs ~ rhs for (lhs, rhs) in pdeps]
29562966 end
2957- if ! (eltype (pdeps) <: Equation )
2958- error (" Parameter dependencies must be a `Dict`, `Vector{Pair}` or `Vector{Equation}`" )
2967+ if pdeps isa Dict
2968+ pdeps = [k ~ v for (k, v) in pdeps]
2969+ else
2970+ pdeps isa AbstractArray || throw (InvalidParameterDependenciesType (pdeps))
2971+ pdeps = [if p isa Pair
2972+ p[1 ] ~ p[2 ]
2973+ elseif p isa Equation
2974+ p
2975+ else
2976+ error (" Parameter dependencies must be a `Dict`, `Vector{Pair}` or `Vector{Equation}`" )
2977+ end
2978+ for p in pdeps]
29592979 end
29602980 lhss = BasicSymbolic[]
29612981 for p in pdeps
0 commit comments