@@ -257,18 +257,9 @@ function remake(prob::ODEProblem; f = missing,
257257 ODEProblem {iip} (f, newu0, tspan, newp, prob. problem_type; kwargs... )
258258 end
259259
260- if lazy_initialization === nothing
261- lazy_initialization = ! is_trivial_initialization (initialization_data)
262- end
263- if initialization_data != = nothing && ! lazy_initialization
264- u0, p, _ = get_initial_values (
265- prob, prob, prob. f, OverrideInit (), Val (isinplace (prob)))
266- if u0 != = nothing && eltype (u0) == Any && isempty (u0)
267- u0 = nothing
268- end
269- @reset prob. u0 = u0
270- @reset prob. p = p
271- end
260+ u0, p = maybe_eager_initialize_problem (prob, initialization_data, lazy_initialization)
261+ @reset prob. u0 = u0
262+ @reset prob. p = p
272263
273264 return prob
274265end
@@ -453,18 +444,10 @@ function remake(prob::SDEProblem;
453444 else
454445 SDEProblem {iip} (f, newu0, tspan, newp; noise, noise_rate_prototype, seed, kwargs... )
455446 end
456- if lazy_initialization === nothing
457- lazy_initialization = ! is_trivial_initialization (initialization_data)
458- end
459- if initialization_data != = nothing && ! lazy_initialization
460- u0, p, _ = get_initial_values (
461- prob, prob, prob. f, OverrideInit (), Val (isinplace (prob)))
462- if u0 != = nothing && eltype (u0) == Any && isempty (u0)
463- u0 = nothing
464- end
465- @reset prob. u0 = u0
466- @reset prob. p = p
467- end
447+
448+ u0, p = maybe_eager_initialize_problem (prob, initialization_data, lazy_initialization)
449+ @reset prob. u0 = u0
450+ @reset prob. p = p
468451
469452 return prob
470453end
@@ -520,18 +503,10 @@ function remake(prob::DDEProblem; f = missing, h = missing, u0 = missing,
520503 DDEProblem {iip} (f, newu0, h, tspan, newp; constant_lags, dependent_lags,
521504 order_discontinuity_t0, neutral, kwargs... )
522505 end
523- if lazy_initialization === nothing
524- lazy_initialization = ! is_trivial_initialization (initialization_data)
525- end
526- if initialization_data != = nothing && ! lazy_initialization
527- u0, p, _ = get_initial_values (
528- prob, prob, prob. f, OverrideInit (), Val (isinplace (prob)))
529- if u0 != = nothing && eltype (u0) == Any && isempty (u0)
530- u0 = nothing
531- end
532- @reset prob. u0 = u0
533- @reset prob. p = p
534- end
506+
507+ u0, p = maybe_eager_initialize_problem (prob, initialization_data, lazy_initialization)
508+ @reset prob. u0 = u0
509+ @reset prob. p = p
535510
536511 return prob
537512end
@@ -619,18 +594,9 @@ function remake(prob::SDDEProblem;
619594 dependent_lags, order_discontinuity_t0, neutral, kwargs... )
620595 end
621596
622- if lazy_initialization === nothing
623- lazy_initialization = ! is_trivial_initialization (initialization_data)
624- end
625- if initialization_data != = nothing && ! lazy_initialization
626- u0, p, _ = get_initial_values (
627- prob, prob, prob. f, OverrideInit (), Val (isinplace (prob)))
628- if u0 != = nothing && eltype (u0) == Any && isempty (u0)
629- u0 = nothing
630- end
631- @reset prob. u0 = u0
632- @reset prob. p = p
633- end
597+ u0, p = maybe_eager_initialize_problem (prob, initialization_data, lazy_initialization)
598+ @reset prob. u0 = u0
599+ @reset prob. p = p
634600
635601 return prob
636602end
@@ -741,18 +707,9 @@ function remake(prob::NonlinearProblem;
741707 problem_type = problem_type; kwargs... )
742708 end
743709
744- if lazy_initialization === nothing
745- lazy_initialization = ! is_trivial_initialization (initialization_data)
746- end
747- if initialization_data != = nothing && ! lazy_initialization
748- u0, p, _ = get_initial_values (
749- prob, prob, prob. f, OverrideInit (), Val (isinplace (prob)))
750- if u0 != = nothing && eltype (u0) == Any && isempty (u0)
751- u0 = nothing
752- end
753- @reset prob. u0 = u0
754- @reset prob. p = p
755- end
710+ u0, p = maybe_eager_initialize_problem (prob, initialization_data, lazy_initialization)
711+ @reset prob. u0 = u0
712+ @reset prob. p = p
756713
757714 return prob
758715end
@@ -792,18 +749,9 @@ function remake(prob::NonlinearLeastSquaresProblem; f = missing, u0 = missing, p
792749 f, u0 = newu0, p = newp, kwargs... )
793750 end
794751
795- if lazy_initialization === nothing
796- lazy_initialization = ! is_trivial_initialization (initialization_data)
797- end
798- if initialization_data != = nothing && ! lazy_initialization
799- u0, p, _ = get_initial_values (
800- prob, prob, prob. f, OverrideInit (), Val (isinplace (prob)))
801- if u0 != = nothing && eltype (u0) == Any && isempty (u0)
802- u0 = nothing
803- end
804- @reset prob. u0 = u0
805- @reset prob. p = p
806- end
752+ u0, p = maybe_eager_initialize_problem (prob, initialization_data, lazy_initialization)
753+ @reset prob. u0 = u0
754+ @reset prob. p = p
807755
808756 return prob
809757end
@@ -1134,6 +1082,23 @@ function process_p_u0_symbolic(prob, p, u0)
11341082 end
11351083end
11361084
1085+ function maybe_eager_initialize_problem (prob:: AbstractSciMLProblem , initialization_data, lazy_initialization:: Union{Nothing, Bool} )
1086+ if lazy_initialization === nothing
1087+ lazy_initialization = ! is_trivial_initialization (initialization_data)
1088+ end
1089+ if initialization_data != = nothing && ! lazy_initialization && (! is_time_dependent (prob) || current_time (prob) != = nothing )
1090+ u0, p, _ = get_initial_values (
1091+ prob, prob, prob. f, OverrideInit (), Val (isinplace (prob)))
1092+ if u0 != = nothing && eltype (u0) == Any && isempty (u0)
1093+ u0 = nothing
1094+ end
1095+ else
1096+ u0 = state_values (prob)
1097+ p = parameter_values (prob)
1098+ end
1099+ return u0, p
1100+ end
1101+
11371102function remake (thing:: AbstractJumpProblem ; kwargs... )
11381103 parameterless_type (thing)(remake (thing. prob; kwargs... ))
11391104end
0 commit comments