@@ -245,7 +245,8 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
245245 metadata = nothing ,
246246 gui_metadata = nothing ,
247247 is_dde = nothing ,
248- tstops = [])
248+ tstops = [],
249+ discover_from_metadata = true )
249250 name === nothing &&
250251 throw (ArgumentError (" The `name` keyword must be provided. Please consider using the `@named` macro" ))
251252 @assert all (control -> any (isequal .(control, ps)), controls) " All controls must also be parameters."
@@ -264,12 +265,16 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
264265 defaults = Dict {Any, Any} (todict (defaults))
265266 guesses = Dict {Any, Any} (todict (guesses))
266267 var_to_name = Dict ()
267- process_variables! (var_to_name, defaults, guesses, dvs′)
268- process_variables! (var_to_name, defaults, guesses, ps′)
269- process_variables! (
270- var_to_name, defaults, guesses, [eq. lhs for eq in parameter_dependencies])
271- process_variables! (
272- var_to_name, defaults, guesses, [eq. rhs for eq in parameter_dependencies])
268+ let defaults = discover_from_metadata ? defaults : Dict (),
269+ guesses = discover_from_metadata ? guesses : Dict ()
270+
271+ process_variables! (var_to_name, defaults, guesses, dvs′)
272+ process_variables! (var_to_name, defaults, guesses, ps′)
273+ process_variables! (
274+ var_to_name, defaults, guesses, [eq. lhs for eq in parameter_dependencies])
275+ process_variables! (
276+ var_to_name, defaults, guesses, [eq. rhs for eq in parameter_dependencies])
277+ end
273278 defaults = Dict {Any, Any} (value (k) => value (v)
274279 for (k, v) in pairs (defaults) if v != = nothing )
275280 guesses = Dict {Any, Any} (value (k) => value (v)
@@ -375,7 +380,11 @@ function flatten(sys::ODESystem, noeqs = false)
375380 is_dde = is_dde (sys),
376381 tstops = symbolic_tstops (sys),
377382 metadata = get_metadata (sys),
378- checks = false )
383+ checks = false ,
384+ # without this, any defaults/guesses obtained from metadata that were
385+ # later removed by the user will be re-added. Right now, we just want to
386+ # retain `defaults(sys)` as-is.
387+ discover_from_metadata = false )
379388 end
380389end
381390
0 commit comments