Skip to content

Commit eb37a14

Browse files
fix: remove early exit in late_binding_update_u0_p when u0 === missing
1 parent 2de171c commit eb37a14

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
@@ -592,19 +592,22 @@ end
592592
function SciMLBase.late_binding_update_u0_p(
593593
prob, sys::AbstractSystem, u0, p, t0, newu0, newp)
594594
supports_initialization(sys) || return newu0, newp
595-
u0 === missing && return newu0, (p === missing ? copy(newp) : newp)
596595
# If the user passes `p` to `remake` but not `u0` and `u0` isn't empty,
597596
# and if the system supports initialization (so it has initial parameters),
598597
# and if the initialization solves for `u0`,
599598
# THEN copy the values of `Initial`s to `newu0`.
600-
if u0 === missing && newu0 !== nothing && p !== missing && supports_initialization(sys) && prob.f.initialization_data !== nothing && prob.f.initialization_data.initializeprobmap !== nothing
601-
if ArrayInterface.ismutable(newu0)
602-
copyto!(newu0, getu(sys, Initial.(unknowns(sys)))(newp))
603-
else
604-
T = StaticArrays.similar_type(newu0)
605-
newu0 = T(getu(sys, Initial.(unknowns(sys)))(newp))
599+
if u0 === missing
600+
if newu0 !== nothing && p !== missing && supports_initialization(sys) && prob.f.initialization_data !== nothing && prob.f.initialization_data.initializeprobmap !== nothing
601+
if ArrayInterface.ismutable(newu0)
602+
copyto!(newu0, getu(sys, Initial.(unknowns(sys)))(newp))
603+
else
604+
T = StaticArrays.similar_type(newu0)
605+
newu0 = T(getu(sys, Initial.(unknowns(sys)))(newp))
606+
end
606607
end
608+
return newu0, newp
607609
end
610+
608611
# non-symbolic u0 updates initials...
609612
if !(eltype(u0) <: Pair)
610613
# if `p` is not provided or is symbolic

0 commit comments

Comments
 (0)