@@ -853,6 +853,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
853
853
t = nothing ,
854
854
warn_initialize_determined = true ,
855
855
build_initializeprob = true ,
856
+ initialization_eqs = [],
856
857
kwargs... )
857
858
eqs = equations (sys)
858
859
dvs = unknowns (sys)
@@ -925,7 +926,7 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
925
926
u0map = Dict ()
926
927
end
927
928
initializeprob = ModelingToolkit. InitializationProblem (
928
- sys, t, u0map, parammap; guesses, warn_initialize_determined)
929
+ sys, t, u0map, parammap; guesses, warn_initialize_determined, initialization_eqs )
929
930
initializeprobmap = getu (initializeprob, unknowns (sys))
930
931
931
932
zerovars = Dict (setdiff (unknowns (sys), keys (defaults (sys))) .=> 0.0 )
@@ -1555,6 +1556,7 @@ InitializationProblem{iip}(sys::AbstractODESystem, u0map, tspan,
1555
1556
checkbounds = false, sparse = false,
1556
1557
simplify = false,
1557
1558
linenumbers = true, parallel = SerialForm(),
1559
+ initialization_eqs = [],
1558
1560
kwargs...) where {iip}
1559
1561
```
1560
1562
@@ -1603,17 +1605,19 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem,
1603
1605
guesses = [],
1604
1606
check_length = true ,
1605
1607
warn_initialize_determined = true ,
1608
+ initialization_eqs = [],
1606
1609
kwargs... ) where {iip, specialize}
1607
1610
if ! iscomplete (sys)
1608
1611
error (" A completed system is required. Call `complete` or `structural_simplify` on the system before creating an `ODEProblem`" )
1609
1612
end
1610
1613
if isempty (u0map) && get_initializesystem (sys) != = nothing
1611
- isys = get_initializesystem (sys)
1614
+ isys = get_initializesystem (sys; initialization_eqs )
1612
1615
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 )
1614
1618
else
1615
1619
isys = structural_simplify (
1616
- generate_initializesystem (sys; u0map); fully_determined = false )
1620
+ generate_initializesystem (sys; u0map, initialization_eqs ); fully_determined = false )
1617
1621
end
1618
1622
1619
1623
uninit = setdiff (unknowns (sys), [unknowns (isys); getfield .(observed (isys), :lhs )])
0 commit comments