@@ -245,7 +245,8 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
245
245
metadata = nothing ,
246
246
gui_metadata = nothing ,
247
247
is_dde = nothing ,
248
- tstops = [])
248
+ tstops = [],
249
+ discover_from_metadata = true )
249
250
name === nothing &&
250
251
throw (ArgumentError (" The `name` keyword must be provided. Please consider using the `@named` macro" ))
251
252
@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;
264
265
defaults = Dict {Any, Any} (todict (defaults))
265
266
guesses = Dict {Any, Any} (todict (guesses))
266
267
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
273
278
defaults = Dict {Any, Any} (value (k) => value (v)
274
279
for (k, v) in pairs (defaults) if v != = nothing )
275
280
guesses = Dict {Any, Any} (value (k) => value (v)
@@ -375,7 +380,11 @@ function flatten(sys::ODESystem, noeqs = false)
375
380
is_dde = is_dde (sys),
376
381
tstops = symbolic_tstops (sys),
377
382
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 )
379
388
end
380
389
end
381
390
0 commit comments