@@ -2934,12 +2934,12 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
2934
2934
elseif sys isa ODESystem
2935
2935
rules = todict (map (r -> Symbolics. unwrap (r[1 ]) => Symbolics. unwrap (r[2 ]),
2936
2936
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)
2939
2939
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))
2941
2941
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))
2943
2943
subsys = map (s -> substitute (s, rules), get_systems (sys))
2944
2944
ODESystem (eqs, get_iv (sys); name = nameof (sys), defaults = defs,
2945
2945
guesses = guess, parameter_dependencies = pdeps, systems = subsys)
@@ -2948,14 +2948,34 @@ function Symbolics.substitute(sys::AbstractSystem, rules::Union{Vector{<:Pair},
2948
2948
end
2949
2949
end
2950
2950
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
+
2951
2963
function process_parameter_dependencies (pdeps, ps)
2952
2964
if pdeps === nothing || isempty (pdeps)
2953
2965
return Equation[], ps
2954
- elseif eltype (pdeps) <: Pair
2955
- pdeps = [lhs ~ rhs for (lhs, rhs) in pdeps]
2956
2966
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]
2959
2979
end
2960
2980
lhss = BasicSymbolic[]
2961
2981
for p in pdeps
0 commit comments