Skip to content

Commit 67ef30c

Browse files
fix: remove early exit in late_binding_update_u0_p when u0 === missing
1 parent b57833a commit 67ef30c

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/systems/nonlinear/initializesystem.jl

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -588,19 +588,22 @@ end
588588
function SciMLBase.late_binding_update_u0_p(
589589
prob, sys::AbstractSystem, u0, p, t0, newu0, newp)
590590
supports_initialization(sys) || return newu0, newp
591-
u0 === missing && return newu0, (p === missing ? copy(newp) : newp)
592591
# If the user passes `p` to `remake` but not `u0` and `u0` isn't empty,
593592
# and if the system supports initialization (so it has initial parameters),
594593
# and if the initialization solves for `u0`,
595594
# THEN copy the values of `Initial`s to `newu0`.
596-
if u0 === missing && newu0 !== nothing && p !== missing && supports_initialization(sys) && prob.f.initialization_data !== nothing && prob.f.initialization_data.initializeprobmap !== nothing
597-
if ArrayInterface.ismutable(newu0)
598-
copyto!(newu0, getu(sys, Initial.(unknowns(sys)))(newp))
599-
else
600-
T = StaticArrays.similar_type(newu0)
601-
newu0 = T(getu(sys, Initial.(unknowns(sys)))(newp))
595+
if u0 === missing
596+
if newu0 !== nothing && p !== missing && supports_initialization(sys) && prob.f.initialization_data !== nothing && prob.f.initialization_data.initializeprobmap !== nothing
597+
if ArrayInterface.ismutable(newu0)
598+
copyto!(newu0, getu(sys, Initial.(unknowns(sys)))(newp))
599+
else
600+
T = StaticArrays.similar_type(newu0)
601+
newu0 = T(getu(sys, Initial.(unknowns(sys)))(newp))
602+
end
602603
end
604+
return newu0, newp
603605
end
606+
604607
# non-symbolic u0 updates initials...
605608
if !(eltype(u0) <: Pair)
606609
# if `p` is not provided or is symbolic

0 commit comments

Comments
 (0)