@@ -62,6 +62,7 @@ function DiffEqBase.__init(prob::DiffEqBase.AbstractDDEProblem,
6262 allow_extrapolation = OrdinaryDiffEqCore. alg_extrapolates (alg),
6363 initialize_integrator = true ,
6464 alias_u0 = false ,
65+ alias = DDEAliasSpecifier (),
6566 # keyword arguments for DDEs
6667 discontinuity_interp_points:: Int = 10 ,
6768 discontinuity_abstol = eltype (prob. tspan)(1 // Int64 (10 )^ 12 ),
@@ -107,6 +108,42 @@ function DiffEqBase.__init(prob::DiffEqBase.AbstractDDEProblem,
107108 # unpack problem
108109 @unpack f, u0, h, tspan, p, neutral, constant_lags, dependent_lags = prob
109110
111+ use_old_kwargs = haskey (kwargs, :alias_u0 )
112+
113+ if haskey (kwargs, :alias_u0 )
114+ aliases = DDEAliasSpecifier ()
115+ message = " `alias_u0` keyword argument is deprecated, to set `alias_u0`,
116+ please use an ODEAliasSpecifier, e.g. `solve(prob, alias = ODEAliasSpecifier(alias_u0 = true))"
117+ Base. depwarn (message, :init )
118+ Base. depwarn (message, :solve )
119+ aliases = DDEAliasSpecifier (alias_u0 = values (kwargs). alias_u0)
120+ else
121+ # If alias isa Bool, all fields of ODEAliases set to alias
122+ if alias isa Bool
123+ aliases = DDEAliasSpecifier (alias = alias)
124+ elseif alias isa DDEAliasSpecifier
125+ aliases = alias
126+ end
127+ end
128+
129+ if isnothing (aliases. alias_f) || aliases. alias_f
130+ f = f
131+ else
132+ f = deepcopy (f)
133+ end
134+
135+ if isnothing (aliases. alias_p) || aliases. alias_p
136+ p = p
137+ else
138+ p = recursivecopy (p)
139+ end
140+
141+ if ! isnothing (aliases. alias_u0) && aliases. alias_u0
142+ u = prob. u0
143+ else
144+ u = recursivecopy (prob. u0)
145+ end
146+
110147 # determine type and direction of time
111148 tType = eltype (tspan)
112149 t0 = first (tspan)
@@ -131,7 +168,7 @@ function DiffEqBase.__init(prob::DiffEqBase.AbstractDDEProblem,
131168
132169 # get states (possibly different from the ODE integrator!)
133170 u, uprev, uprev2 = u_uprev_uprev2 (u0, alg;
134- alias_u0 = alias_u0,
171+ alias_u0 = aliases . alias_u0,
135172 adaptive = adaptive,
136173 allow_extrapolation = allow_extrapolation,
137174 calck = calck)
0 commit comments