@@ -66,6 +66,7 @@ function DiffEqBase.__init(prob::DiffEqBase.AbstractDDEProblem,
6666 discontinuity_interp_points:: Int = 10 ,
6767 discontinuity_abstol = eltype (prob. tspan)(1 // Int64 (10 )^ 12 ),
6868 discontinuity_reltol = 0 ,
69+ initializealg = DDEDefaultInit (),
6970 kwargs... )
7071 if haskey (kwargs, :initial_order )
7172 @warn " initial_order has been deprecated. Please specify order_discontinuity_t0 in the DDEProblem instead."
@@ -350,7 +351,7 @@ function DiffEqBase.__init(prob::DiffEqBase.AbstractDDEProblem,
350351 typeof (d_discontinuities_propagated),
351352 typeof (fsalfirst),
352353 typeof (last_event_error), typeof (callback_cache),
353- typeof (differential_vars)}(sol, u, k,
354+ typeof (differential_vars), typeof (initializealg) }(sol, u, k,
354355 t0,
355356 tType (dt),
356357 f_with_history,
@@ -402,10 +403,11 @@ function DiffEqBase.__init(prob::DiffEqBase.AbstractDDEProblem,
402403 stats,
403404 history,
404405 differential_vars,
405- ode_integrator, fsalfirst, fsallast)
406+ ode_integrator, fsalfirst, fsallast, initializealg )
406407
407408 # initialize DDE integrator
408409 if initialize_integrator
410+ DiffEqBase. initialize_dae! (integrator)
409411 initialize_solution! (integrator)
410412 OrdinaryDiffEqCore. initialize_callbacks! (integrator, initialize_save)
411413 OrdinaryDiffEqCore. initialize! (integrator)
@@ -538,3 +540,18 @@ function initialize_tstops_d_discontinuities_propagated(::Type{T}, tstops,
538540
539541 return tstops_propagated, d_discontinuities_propagated
540542end
543+
544+ struct DDEDefaultInit <: DiffEqBase.DAEInitializationAlgorithm end
545+
546+ function DiffEqBase. initialize_dae! (integrator:: DDEIntegrator , initializealg = integrator. initializealg)
547+ OrdinaryDiffEqCore. _initialize_dae! (integrator, integrator. sol. prob, initializealg,
548+ Val (DiffEqBase. isinplace (integrator. sol. prob)))
549+ end
550+
551+ function OrdinaryDiffEqCore. _initialize_dae! (integrator:: DDEIntegrator , prob, :: DDEDefaultInit , isinplace)
552+ if SciMLBase. has_initializeprob (prob. f)
553+ OrdinaryDiffEqCore. _initialize_dae! (integrator, prob, SciMLBase. OverrideInit (), isinplace)
554+ else
555+ OrdinaryDiffEqCore. _initialize_dae! (integrator, prob, SciMLBase. CheckInit (), isinplace)
556+ end
557+ end
0 commit comments