Skip to content

Commit f0f1da9

Browse files
fix: disable discovering defaults from metadata in flatten(::ODESystem)
1 parent db2ae7b commit f0f1da9

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

src/systems/diffeqs/odesystem.jl

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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
380389
end
381390

0 commit comments

Comments
 (0)