Skip to content

Commit 51eeeeb

Browse files
fix: store and propagate initialization_eqs provided to Problem
1 parent 9987da0 commit 51eeeeb

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/systems/nonlinear/initializesystem.jl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ function generate_initializesystem(sys::AbstractSystem;
2121
eqs_ics = Equation[]
2222
defs = copy(defaults(sys)) # copy so we don't modify sys.defaults
2323
additional_guesses = anydict(guesses)
24+
additional_initialization_eqs = Vector{Equation}(initialization_eqs)
2425
guesses = merge(get_guesses(sys), additional_guesses)
2526
idxs_diff = isdiffeq.(eqs)
2627

@@ -191,7 +192,7 @@ function generate_initializesystem(sys::AbstractSystem;
191192
defs[k] = substitute(defs[k], paramsubs)
192193
end
193194
meta = InitializationSystemMetadata(
194-
anydict(u0map), anydict(pmap), additional_guesses, extra_metadata)
195+
anydict(u0map), anydict(pmap), additional_guesses, additional_initialization_eqs, extra_metadata)
195196
return NonlinearSystem(eqs_ics,
196197
vars,
197198
pars;
@@ -207,6 +208,7 @@ struct InitializationSystemMetadata
207208
u0map::Dict{Any, Any}
208209
pmap::Dict{Any, Any}
209210
additional_guesses::Dict{Any, Any}
211+
additional_initialization_eqs::Vector{Equation}
210212
extra_metadata::NamedTuple
211213
end
212214

@@ -299,6 +301,7 @@ function SciMLBase.remake_initialization_data(
299301
defs = defaults(sys)
300302
cmap, cs = get_cmap(sys)
301303
use_scc = true
304+
initialization_eqs = Equation[]
302305

303306
if SciMLBase.has_initializeprob(odefn)
304307
oldsys = odefn.initialization_data.initializeprob.f.sys
@@ -308,6 +311,7 @@ function SciMLBase.remake_initialization_data(
308311
pmap = merge(meta.pmap, pmap)
309312
merge!(guesses, meta.additional_guesses)
310313
use_scc = get(meta.extra_metadata, :use_scc, true)
314+
initialization_eqs = meta.additional_initialization_eqs
311315
end
312316
else
313317
# there is no initializeprob, so the original problem construction
@@ -348,7 +352,7 @@ function SciMLBase.remake_initialization_data(
348352
op, missing_unknowns, missing_pars = build_operating_point(
349353
u0map, pmap, defs, cmap, dvs, ps)
350354
kws = maybe_build_initialization_problem(
351-
sys, op, u0map, pmap, t0, defs, guesses, missing_unknowns; use_scc)
355+
sys, op, u0map, pmap, t0, defs, guesses, missing_unknowns; use_scc, initialization_eqs)
352356
return get(kws, :initialization_data, nothing)
353357
end
354358

0 commit comments

Comments
 (0)