Skip to content

Commit 2f2e625

Browse files
feat: enable creating InitializationProblem for non-AbstractODESystems
1 parent 39bb59c commit 2f2e625

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,23 +1247,23 @@ Generates a NonlinearProblem or NonlinearLeastSquaresProblem from an ODESystem
12471247
which represents the initialization, i.e. the calculation of the consistent
12481248
initial conditions for the given DAE.
12491249
"""
1250-
function InitializationProblem(sys::AbstractODESystem, args...; kwargs...)
1250+
function InitializationProblem(sys::AbstractSystem, args...; kwargs...)
12511251
InitializationProblem{true}(sys, args...; kwargs...)
12521252
end
12531253

1254-
function InitializationProblem(sys::AbstractODESystem, t,
1254+
function InitializationProblem(sys::AbstractSystem, t,
12551255
u0map::StaticArray,
12561256
args...;
12571257
kwargs...)
12581258
InitializationProblem{false, SciMLBase.FullSpecialize}(
12591259
sys, t, u0map, args...; kwargs...)
12601260
end
12611261

1262-
function InitializationProblem{true}(sys::AbstractODESystem, args...; kwargs...)
1262+
function InitializationProblem{true}(sys::AbstractSystem, args...; kwargs...)
12631263
InitializationProblem{true, SciMLBase.AutoSpecialize}(sys, args...; kwargs...)
12641264
end
12651265

1266-
function InitializationProblem{false}(sys::AbstractODESystem, args...; kwargs...)
1266+
function InitializationProblem{false}(sys::AbstractSystem, args...; kwargs...)
12671267
InitializationProblem{false, SciMLBase.FullSpecialize}(sys, args...; kwargs...)
12681268
end
12691269

@@ -1282,8 +1282,8 @@ function Base.showerror(io::IO, e::IncompleteInitializationError)
12821282
println(io, e.uninit)
12831283
end
12841284

1285-
function InitializationProblem{iip, specialize}(sys::AbstractODESystem,
1286-
t::Number, u0map = [],
1285+
function InitializationProblem{iip, specialize}(sys::AbstractSystem,
1286+
t, u0map = [],
12871287
parammap = DiffEqBase.NullParameters();
12881288
guesses = [],
12891289
check_length = true,
@@ -1347,13 +1347,13 @@ function InitializationProblem{iip, specialize}(sys::AbstractODESystem,
13471347
@warn "Initialization system is underdetermined. $neqs equations for $nunknown unknowns. Initialization will default to using least squares. $(scc_message)To suppress this warning pass warn_initialize_determined = false. To make this warning into an error, pass fully_determined = true"
13481348
end
13491349

1350-
parammap = parammap isa DiffEqBase.NullParameters || isempty(parammap) ?
1351-
[get_iv(sys) => t] :
1352-
merge(todict(parammap), Dict(get_iv(sys) => t))
1353-
parammap = Dict(k => v for (k, v) in parammap if v !== missing)
1354-
if isempty(u0map)
1355-
u0map = Dict()
1350+
parammap = recursive_unwrap(anydict(parammap))
1351+
if t !== nothing
1352+
parammap[get_iv(sys)] = t
13561353
end
1354+
filter!(kvp -> kvp[2] !== missing, parammap)
1355+
1356+
u0map = to_varmap(u0map, unknowns(sys))
13571357
if isempty(guesses)
13581358
guesses = Dict()
13591359
end

0 commit comments

Comments
 (0)