@@ -1295,22 +1295,35 @@ function InitializationProblem{iip, specialize}(sys::AbstractSystem,
12951295 check_units = true ,
12961296 use_scc = true ,
12971297 allow_incomplete = false ,
1298+ force_time_independent = false ,
12981299 kwargs... ) where {iip, specialize}
12991300 if ! iscomplete (sys)
13001301 error (" A completed system is required. Call `complete` or `structural_simplify` on the system before creating an `ODEProblem`" )
13011302 end
13021303 if isempty (u0map) && get_initializesystem (sys) != = nothing
13031304 isys = get_initializesystem (sys; initialization_eqs, check_units)
1305+ simplify_system = false
13041306 elseif isempty (u0map) && get_initializesystem (sys) === nothing
1305- isys = structural_simplify (
1306- generate_initializesystem (
1307+ isys = generate_initializesystem (
13071308 sys; initialization_eqs, check_units, pmap = parammap,
1308- guesses, extra_metadata = (; use_scc)); fully_determined)
1309+ guesses, extra_metadata = (; use_scc))
1310+ simplify_system = true
13091311 else
1310- isys = structural_simplify (
1311- generate_initializesystem (
1312+ isys = generate_initializesystem (
13121313 sys; u0map, initialization_eqs, check_units,
1313- pmap = parammap, guesses, extra_metadata = (; use_scc)); fully_determined)
1314+ pmap = parammap, guesses, extra_metadata = (; use_scc))
1315+ simplify_system = true
1316+ end
1317+
1318+ # useful for `SteadyStateProblem` since `f` has to be autonomous and the
1319+ # initialization should be too
1320+ if force_time_independent
1321+ idx = findfirst (isequal (get_iv (sys)), get_ps (isys))
1322+ idx === nothing || deleteat! (get_ps (isys), idx)
1323+ end
1324+
1325+ if simplify_system
1326+ isys = structural_simplify (isys; fully_determined)
13141327 end
13151328
13161329 meta = get_metadata (isys)
0 commit comments