@@ -67,8 +67,7 @@ function DiffEqBase.__init(
6767 userdata = nothing ,
6868 allow_extrapolation = alg_extrapolates (alg),
6969 initialize_integrator = true ,
70- alias_u0 = false ,
71- alias_du0 = false ,
70+ alias = ODEAliasSpecifier (),
7271 initializealg = DefaultInit (),
7372 kwargs... ) where {recompile_flag}
7473 if prob isa DiffEqBase. AbstractDAEProblem && alg isa OrdinaryDiffEqAlgorithm
@@ -156,19 +155,62 @@ function DiffEqBase.__init(
156155 else
157156 _alg = alg
158157 end
159- f = prob. f
160- p = prob. p
161158
162- # Get the control variables
159+ use_old_kwargs = haskey (kwargs, :alias_u0 ) || haskey (kwargs, :alias_du0 )
163160
164- if alias_u0
161+ if use_old_kwargs
162+ aliases = ODEAliasSpecifier ()
163+ if haskey (kwargs, :alias_u0 )
164+ message = " `alias_u0` keyword argument is deprecated, to set `alias_u0`,
165+ please use an ODEAliasSpecifier, e.g. `solve(prob, alias = ODEAliasSpecifier(alias_u0 = true))"
166+ Base. depwarn (message, :init )
167+ Base. depwarn (message, :solve )
168+ aliases = ODEAliasSpecifier (alias_u0 = values (kwargs). alias_u0)
169+ else
170+ aliases = ODEAliasSpecifier (alias_u0 = nothing )
171+ end
172+
173+ if haskey (kwargs, :alias_du0 )
174+ message = " `alias_du0` keyword argument is deprecated, to set `alias_du0`,
175+ please use an ODEAliasSpecifier, e.g. `solve(prob, alias = ODEAliasSpecifier(alias_du0 = true))"
176+ Base. depwarn (message, :init )
177+ Base. depwarn (message, :solve )
178+ aliases = ODEAliasSpecifier (alias_u0 = aliases. alias_u0, alias_du0 = values (kwargs). alias_du0)
179+ else
180+ aliases = ODEAliasSpecifier (alias_u0 = aliases. alias_u0, alias_du0 = nothing )
181+ end
182+
183+ aliases
184+
185+ else
186+ # If alias isa Bool, all fields of ODEAliases set to alias
187+ if alias isa Bool
188+ aliases = ODEAliasSpecifier (alias = alias)
189+ elseif alias isa ODEAliasSpecifier
190+ aliases = alias
191+ end
192+ end
193+
194+ if isnothing (aliases. alias_f) || aliases. alias_f
195+ f = prob. f
196+ else
197+ f = deepcopy (prob. f)
198+ end
199+
200+ if isnothing (aliases. alias_p) || aliases. alias_p
201+ p = prob. p
202+ else
203+ p = recursivecopy (prob. p)
204+ end
205+
206+ if ! isnothing (aliases. alias_u0) && aliases. alias_u0
165207 u = prob. u0
166208 else
167209 u = recursivecopy (prob. u0)
168210 end
169211
170212 if _alg isa DAEAlgorithm
171- if alias_du0
213+ if ! isnothing (aliases . alias_du0) && aliases . alias_du0
172214 du = prob. du0
173215 else
174216 du = recursivecopy (prob. du0)
@@ -240,6 +282,12 @@ function DiffEqBase.__init(
240282 resType = typeof (res_prototype)
241283 end
242284
285+ if isnothing (aliases. alias_tstops) || aliases. alias_tstops
286+ tstops = tstops
287+ else
288+ tstops = recursivecopy (tstops)
289+ end
290+
243291 if tstops isa AbstractArray || tstops isa Tuple || tstops isa Number
244292 _tstops = nothing
245293 else
0 commit comments