@@ -591,27 +591,6 @@ function SciMLBase.late_binding_update_u0_p(
591591
592592 initdata = prob. f. initialization_data
593593 meta = initdata === nothing ? nothing : initdata. metadata
594- # If the user passes `p` to `remake` but not `u0` and `u0` isn't empty,
595- # and if the system supports initialization (so it has initial parameters),
596- # and if the initialization solves for `u0`,
597- # THEN copy the values of `Initial`s to `newu0`.
598- if u0 === missing
599- if newu0 != = nothing && p != = missing && supports_initialization (sys) &&
600- initdata != = nothing && initdata. initializeprobmap != = nothing
601- getter = if meta isa InitializationMetadata
602- meta. get_initial_unknowns
603- else
604- getu (sys, Initial .(unknowns (sys)))
605- end
606- if ArrayInterface. ismutable (newu0)
607- copyto! (newu0, getter (newp))
608- else
609- T = StaticArrays. similar_type (newu0)
610- newu0 = T (getter (newp))
611- end
612- end
613- return newu0, newp
614- end
615594
616595 # non-symbolic u0 updates initials...
617596 if ! (eltype (u0) <: Pair )
@@ -665,6 +644,40 @@ function SciMLBase.late_binding_update_u0_p(
665644 return newu0, newp
666645end
667646
647+ function DiffEqBase. get_updated_symbolic_problem (sys:: AbstractSystem , prob; kw... )
648+ supports_initialization (sys) || return prob
649+ initdata = prob. f. initialization_data
650+ initdata === nothing && return prob
651+
652+ u0 = state_values (prob)
653+ u0 === nothing && return prob
654+
655+ p = parameter_values (prob)
656+ t0 = is_time_dependent (prob) ? current_time (prob) : nothing
657+ meta = initdata. metadata
658+
659+ getter = if meta isa InitializationMetadata
660+ meta. get_initial_unknowns
661+ else
662+ getu (sys, Initial .(unknowns (sys)))
663+ end
664+
665+ if p isa MTKParameters
666+ buffer = p. initials
667+ else
668+ buffer = p
669+ end
670+
671+ u0 = DiffEqBase. promote_u0 (u0, buffer, t0)
672+
673+ if ArrayInterface. ismutable (u0)
674+ T = typeof (u0)
675+ else
676+ T = StaticArrays. similar_type (u0)
677+ end
678+ return remake (prob; u0 = T (getter (p)))
679+ end
680+
668681"""
669682 $(TYPEDSIGNATURES)
670683
0 commit comments