@@ -257,18 +257,9 @@ function remake(prob::ODEProblem; f = missing,
257
257
ODEProblem {iip} (f, newu0, tspan, newp, prob. problem_type; kwargs... )
258
258
end
259
259
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
272
263
273
264
return prob
274
265
end
@@ -453,18 +444,10 @@ function remake(prob::SDEProblem;
453
444
else
454
445
SDEProblem {iip} (f, newu0, tspan, newp; noise, noise_rate_prototype, seed, kwargs... )
455
446
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
468
451
469
452
return prob
470
453
end
@@ -520,18 +503,10 @@ function remake(prob::DDEProblem; f = missing, h = missing, u0 = missing,
520
503
DDEProblem {iip} (f, newu0, h, tspan, newp; constant_lags, dependent_lags,
521
504
order_discontinuity_t0, neutral, kwargs... )
522
505
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
535
510
536
511
return prob
537
512
end
@@ -619,18 +594,9 @@ function remake(prob::SDDEProblem;
619
594
dependent_lags, order_discontinuity_t0, neutral, kwargs... )
620
595
end
621
596
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
634
600
635
601
return prob
636
602
end
@@ -741,18 +707,9 @@ function remake(prob::NonlinearProblem;
741
707
problem_type = problem_type; kwargs... )
742
708
end
743
709
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
756
713
757
714
return prob
758
715
end
@@ -792,18 +749,9 @@ function remake(prob::NonlinearLeastSquaresProblem; f = missing, u0 = missing, p
792
749
f, u0 = newu0, p = newp, kwargs... )
793
750
end
794
751
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
807
755
808
756
return prob
809
757
end
@@ -1134,6 +1082,23 @@ function process_p_u0_symbolic(prob, p, u0)
1134
1082
end
1135
1083
end
1136
1084
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
+
1137
1102
function remake (thing:: AbstractJumpProblem ; kwargs... )
1138
1103
parameterless_type (thing)(remake (thing. prob; kwargs... ))
1139
1104
end
0 commit comments