Skip to content

Commit 0537715

Browse files
refactor: propagate use_scc to remake_initialization_data
1 parent 9943532 commit 0537715

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1311,11 +1311,13 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem,
13111311
elseif isempty(u0map) && get_initializesystem(sys) === nothing
13121312
isys = structural_simplify(
13131313
generate_initializesystem(
1314-
sys; initialization_eqs, check_units, pmap = parammap, guesses); fully_determined)
1314+
sys; initialization_eqs, check_units, pmap = parammap,
1315+
guesses, extra_metadata = (; use_scc)); fully_determined)
13151316
else
13161317
isys = structural_simplify(
13171318
generate_initializesystem(
1318-
sys; u0map, initialization_eqs, check_units, pmap = parammap, guesses); fully_determined)
1319+
sys; u0map, initialization_eqs, check_units,
1320+
pmap = parammap, guesses, extra_metadata = (; use_scc)); fully_determined)
13191321
end
13201322

13211323
ts = get_tearing_state(isys)

src/systems/nonlinear/initializesystem.jl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function generate_initializesystem(sys::ODESystem;
1111
default_dd_guess = 0.0,
1212
algebraic_only = false,
1313
check_units = true, check_defguess = false,
14-
name = nameof(sys), kwargs...)
14+
name = nameof(sys), extra_metadata = (;), kwargs...)
1515
trueobs, eqs = unhack_observed(observed(sys), equations(sys))
1616
vars = unique([unknowns(sys); getfield.(trueobs, :lhs)])
1717
vars_set = Set(vars) # for efficient in-lookup
@@ -179,7 +179,8 @@ function generate_initializesystem(sys::ODESystem;
179179
for k in keys(defs)
180180
defs[k] = substitute(defs[k], paramsubs)
181181
end
182-
meta = InitializationSystemMetadata(anydict(u0map), anydict(pmap), additional_guesses)
182+
meta = InitializationSystemMetadata(
183+
anydict(u0map), anydict(pmap), additional_guesses, extra_metadata)
183184
return NonlinearSystem(eqs_ics,
184185
vars,
185186
pars;
@@ -195,6 +196,7 @@ struct InitializationSystemMetadata
195196
u0map::Dict{Any, Any}
196197
pmap::Dict{Any, Any}
197198
additional_guesses::Dict{Any, Any}
199+
extra_metadata::NamedTuple
198200
end
199201

200202
function is_parameter_solvable(p, pmap, defs, guesses)
@@ -282,6 +284,7 @@ function SciMLBase.remake_initialization_data(sys::ODESystem, odefn, u0, t0, p,
282284
guesses = Dict()
283285
defs = defaults(sys)
284286
cmap, cs = get_cmap(sys)
287+
use_scc = true
285288

286289
if SciMLBase.has_initializeprob(odefn)
287290
oldsys = odefn.initializeprob.f.sys
@@ -290,6 +293,7 @@ function SciMLBase.remake_initialization_data(sys::ODESystem, odefn, u0, t0, p,
290293
u0map = merge(meta.u0map, u0map)
291294
pmap = merge(meta.pmap, pmap)
292295
merge!(guesses, meta.additional_guesses)
296+
use_scc = get(meta.extra_metadata, :use_scc, true)
293297
end
294298
else
295299
# there is no initializeprob, so the original problem construction
@@ -327,8 +331,10 @@ function SciMLBase.remake_initialization_data(sys::ODESystem, odefn, u0, t0, p,
327331
filter_missing_values!(u0map)
328332
filter_missing_values!(pmap)
329333

330-
op, missing_unknowns, missing_pars = build_operating_point(u0map, pmap, defs, cmap, dvs, ps)
331-
kws = maybe_build_initialization_problem(sys, op, u0map, pmap, t0, defs, guesses, missing_unknowns; use_scc = true)
334+
op, missing_unknowns, missing_pars = build_operating_point(
335+
u0map, pmap, defs, cmap, dvs, ps)
336+
kws = maybe_build_initialization_problem(
337+
sys, op, u0map, pmap, t0, defs, guesses, missing_unknowns; use_scc)
332338
initprob = get(kws, :initializeprob, nothing)
333339
if initprob === nothing
334340
return nothing

0 commit comments

Comments
 (0)