Skip to content

Commit ddc22ca

Browse files
fix: remove early exit in late_binding_update_u0_p when u0 === missing
1 parent 8a19a49 commit ddc22ca

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
@@ -658,19 +658,22 @@ end
658658
function SciMLBase.late_binding_update_u0_p(
659659
prob, sys::AbstractSystem, u0, p, t0, newu0, newp)
660660
supports_initialization(sys) || return newu0, newp
661-
u0 === missing && return newu0, (p === missing ? copy(newp) : newp)
662661
# If the user passes `p` to `remake` but not `u0` and `u0` isn't empty,
663662
# and if the system supports initialization (so it has initial parameters),
664663
# and if the initialization solves for `u0`,
665664
# THEN copy the values of `Initial`s to `newu0`.
666-
if u0 === missing && newu0 !== nothing && p !== missing && supports_initialization(sys) && prob.f.initialization_data !== nothing && prob.f.initialization_data.initializeprobmap !== nothing
667-
if ArrayInterface.ismutable(newu0)
668-
copyto!(newu0, getu(sys, Initial.(unknowns(sys)))(newp))
669-
else
670-
T = StaticArrays.similar_type(newu0)
671-
newu0 = T(getu(sys, Initial.(unknowns(sys)))(newp))
665+
if u0 === missing
666+
if newu0 !== nothing && p !== missing && supports_initialization(sys) && prob.f.initialization_data !== nothing && prob.f.initialization_data.initializeprobmap !== nothing
667+
if ArrayInterface.ismutable(newu0)
668+
copyto!(newu0, getu(sys, Initial.(unknowns(sys)))(newp))
669+
else
670+
T = StaticArrays.similar_type(newu0)
671+
newu0 = T(getu(sys, Initial.(unknowns(sys)))(newp))
672+
end
672673
end
674+
return newu0, newp
673675
end
676+
674677
# non-symbolic u0 updates initials...
675678
if !(eltype(u0) <: Pair)
676679
# if `p` is not provided or is symbolic

0 commit comments

Comments
 (0)