Skip to content

Commit 23d22cb

Browse files
fix: store and propagate initialization_eqs provided to Problem
1 parent 6831ab9 commit 23d22cb

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

@@ -297,6 +299,7 @@ function SciMLBase.remake_initialization_data(
297299
defs = defaults(sys)
298300
cmap, cs = get_cmap(sys)
299301
use_scc = true
302+
initialization_eqs = Equation[]
300303

301304
if SciMLBase.has_initializeprob(odefn)
302305
oldsys = odefn.initialization_data.initializeprob.f.sys
@@ -306,6 +309,7 @@ function SciMLBase.remake_initialization_data(
306309
pmap = merge(meta.pmap, pmap)
307310
merge!(guesses, meta.additional_guesses)
308311
use_scc = get(meta.extra_metadata, :use_scc, true)
312+
initialization_eqs = meta.additional_initialization_eqs
309313
end
310314
else
311315
# there is no initializeprob, so the original problem construction
@@ -346,7 +350,7 @@ function SciMLBase.remake_initialization_data(
346350
op, missing_unknowns, missing_pars = build_operating_point(
347351
u0map, pmap, defs, cmap, dvs, ps)
348352
kws = maybe_build_initialization_problem(
349-
sys, op, u0map, pmap, t0, defs, guesses, missing_unknowns; use_scc)
353+
sys, op, u0map, pmap, t0, defs, guesses, missing_unknowns; use_scc, initialization_eqs)
350354
return get(kws, :initialization_data, nothing)
351355
end
352356

0 commit comments

Comments
 (0)