Skip to content

Commit 21ffc0d

Browse files
feat: add force_time_independent keyword to InitializationProblem
1 parent 2257393 commit 21ffc0d

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)