@@ -853,6 +853,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
853853 t = nothing ,
854854 warn_initialize_determined = true ,
855855 build_initializeprob = true ,
856+ initialization_eqs = [],
856857 kwargs... )
857858 eqs = equations (sys)
858859 dvs = unknowns (sys)
@@ -925,7 +926,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
925926 u0map = Dict ()
926927 end
927928 initializeprob = ModelingToolkit. InitializationProblem (
928- sys, t, u0map, parammap; guesses, warn_initialize_determined)
929+ sys, t, u0map, parammap; guesses, warn_initialize_determined, initialization_eqs )
929930 initializeprobmap = getu (initializeprob, unknowns (sys))
930931
931932 zerovars = Dict (setdiff (unknowns (sys), keys (defaults (sys))) .=> 0.0 )
@@ -1555,6 +1556,7 @@ InitializationProblem{iip}(sys::AbstractODESystem, u0map, tspan,
15551556 checkbounds = false, sparse = false,
15561557 simplify = false,
15571558 linenumbers = true, parallel = SerialForm(),
1559+ initialization_eqs = [],
15581560 kwargs...) where {iip}
15591561```
15601562
@@ -1603,17 +1605,19 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem,
16031605 guesses = [],
16041606 check_length = true ,
16051607 warn_initialize_determined = true ,
1608+ initialization_eqs = [],
16061609 kwargs... ) where {iip, specialize}
16071610 if ! iscomplete (sys)
16081611 error (" A completed system is required. Call `complete` or `structural_simplify` on the system before creating an `ODEProblem`" )
16091612 end
16101613 if isempty (u0map) && get_initializesystem (sys) != = nothing
1611- isys = get_initializesystem (sys)
1614+ isys = get_initializesystem (sys; initialization_eqs )
16121615 elseif isempty (u0map) && get_initializesystem (sys) === nothing
1613- isys = structural_simplify (generate_initializesystem (sys); fully_determined = false )
1616+ isys = structural_simplify (
1617+ generate_initializesystem (sys; initialization_eqs); fully_determined = false )
16141618 else
16151619 isys = structural_simplify (
1616- generate_initializesystem (sys; u0map); fully_determined = false )
1620+ generate_initializesystem (sys; u0map, initialization_eqs ); fully_determined = false )
16171621 end
16181622
16191623 uninit = setdiff (unknowns (sys), [unknowns (isys); getfield .(observed (isys), :lhs )])
0 commit comments