Skip to content

Commit 55bc266

Browse files
fix: handle nothing passed as u0 to ODEProblem
1 parent 9aadc71 commit 55bc266

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/systems/diffeqs/abstractodesystem.jl

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -811,17 +811,18 @@ function process_DEProblem(constructor, sys::AbstractODESystem, u0map, parammap;
811811
end
812812
end
813813

814+
if eltype(u0map) <: Number
815+
u0map = unknowns(sys) .=> u0map
816+
end
817+
if u0map === nothing || isempty(u0map)
818+
u0map = Dict()
819+
end
820+
814821
# ModelingToolkit.get_tearing_state(sys) !== nothing => Requires structural_simplify first
815822
if sys isa ODESystem && build_initializeprob &&
816823
(((implicit_dae || !isempty(missingvars) || !isempty(setobserved)) &&
817824
ModelingToolkit.get_tearing_state(sys) !== nothing) ||
818825
!isempty(initialization_equations(sys))) && t !== nothing
819-
if eltype(u0map) <: Number
820-
u0map = unknowns(sys) .=> u0map
821-
end
822-
if isempty(u0map)
823-
u0map = Dict()
824-
end
825826
initializeprob = ModelingToolkit.InitializationProblem(
826827
sys, t, u0map, parammap; guesses, warn_initialize_determined,
827828
initialization_eqs, eval_expression, eval_module, fully_determined, check_units)

test/odesystem.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,3 +1387,10 @@ end
13871387

13881388
@test obsfn(ones(2), 2ones(2), 3ones(4), 4.0) == 6ones(2)
13891389
end
1390+
1391+
@testset "Passing `nothing` to `u0`" begin
1392+
@variables x(t) = 1
1393+
@mtkbuild sys = ODEProblem(D(x) ~ t, t)
1394+
prob = @test_nowarn ODEProblem(sys, nothing, (0.0, 1.0))
1395+
@test_nowarn solve(prob)
1396+
end

0 commit comments

Comments
 (0)