@@ -595,27 +595,6 @@ function SciMLBase.late_binding_update_u0_p(
595595
596596    initdata =  prob. f. initialization_data
597597    meta =  initdata ===  nothing  ?  nothing  :  initdata. metadata
598-     #  If the user passes `p` to `remake` but not `u0` and `u0` isn't empty,
599-     #  and if the system supports initialization (so it has initial parameters),
600-     #  and if the initialization solves for `u0`,
601-     #  THEN copy the values of `Initial`s to `newu0`.
602-     if  u0 ===  missing 
603-         if  newu0 != =  nothing  &&  p != =  missing  &&  supports_initialization (sys) && 
604-            initdata != =  nothing  &&  initdata. initializeprobmap != =  nothing 
605-             getter =  if  meta isa  InitializationMetadata
606-                 meta. get_initial_unknowns
607-             else 
608-                 getu (sys, Initial .(unknowns (sys)))
609-             end 
610-             if  ArrayInterface. ismutable (newu0)
611-                 copyto! (newu0, getter (newp))
612-             else 
613-                 T =  StaticArrays. similar_type (newu0)
614-                 newu0 =  T (getter (newp))
615-             end 
616-         end 
617-         return  newu0, newp
618-     end 
619598
620599    #  non-symbolic u0 updates initials...
621600    if  ! (eltype (u0) <:  Pair )
@@ -669,6 +648,40 @@ function SciMLBase.late_binding_update_u0_p(
669648    return  newu0, newp
670649end 
671650
651+ function  DiffEqBase. get_updated_symbolic_problem (sys:: AbstractSystem , prob; kw... )
652+     supports_initialization (sys) ||  return  prob
653+     initdata =  prob. f. initialization_data
654+     initdata ===  nothing  &&  return  prob
655+ 
656+     u0 =  state_values (prob)
657+     u0 ===  nothing  &&  return  prob
658+ 
659+     p =  parameter_values (prob)
660+     t0 =  is_time_dependent (prob) ?  current_time (prob) :  nothing 
661+     meta =  initdata. metadata
662+ 
663+     getter =  if  meta isa  InitializationMetadata
664+         meta. get_initial_unknowns
665+     else 
666+         getu (sys, Initial .(unknowns (sys)))
667+     end 
668+ 
669+     if  p isa  MTKParameters
670+         buffer =  p. initials
671+     else 
672+         buffer =  p
673+     end 
674+ 
675+     u0 =  DiffEqBase. promote_u0 (u0, buffer, t0)
676+ 
677+     if  ArrayInterface. ismutable (u0)
678+         T =  typeof (u0)
679+     else 
680+         T =  StaticArrays. similar_type (u0)
681+     end 
682+     return  remake (prob; u0 =  T (getter (p)))
683+ end 
684+ 
672685""" 
673686    $(TYPEDSIGNATURES)  
674687
0 commit comments