@@ -69,9 +69,7 @@ function DiffEqBase.__init(
6969 userdata = nothing ,
7070 allow_extrapolation = alg_extrapolates (alg),
7171 initialize_integrator = true ,
72- alias_u0 = false ,
73- alias_du0 = false ,
74- alias = ODEAliases (),
72+ alias = ODEAliasSpecifier (),
7573 initializealg = DefaultInit (),
7674 kwargs... ) where {recompile_flag}
7775 if prob isa DiffEqBase. AbstractDAEProblem && alg isa OrdinaryDiffEqAlgorithm
@@ -120,10 +118,6 @@ function DiffEqBase.__init(
120118 @warn (" Dense output is incompatible with saveat. Please use the SavingCallback from the Callback Library to mix the two behaviors." )
121119 end
122120
123- if ! (alias isa ODEAliases)
124- error (" Keyword argument `alias` must be a `ODEAliases`." )
125- end
126-
127121 progress && @logmsg (LogLevel (- 1 ), progress_name, _id= progress_id, progress= 0 )
128122
129123 tType = eltype (prob. tspan)
@@ -166,21 +160,47 @@ function DiffEqBase.__init(
166160 f = prob. f
167161 p = prob. p
168162
169- # Get the control variables
170- # If alias kwarg is just default, use alias_u0, which is false by default, or is set by a kwarg to solve
171- # If alias_u0 is not nothing, use the alias_u0 provided by the user
172- if isnothing (alias. alias_u0)
173- alias = ODEAliases (alias_u0)
163+ use_old_kwargs = haskey (kwargs,:alias_u0 ) || haskey (kwargs,:alias_du0 )
164+
165+ if use_old_kwargs
166+ if haskey (kwargs, :alias_u0 )
167+ Base. depwarn (" alias_u0 keyword argument is deprecated, to set `alias_u0`,
168+ please use an ODEAliasSpecifier, e.g. `solve(prob, alias = ODEAliasSpecifier(alias_u0 = true))" , :alias_u0 )
169+ old_alias_u0 = values (kwargs). alias_u0
170+ else
171+ old_alias_u0 = false
172+
173+ end
174+
175+ if haskey (kwargs, :alias_du0 )
176+ Base. depwarn (" alias_du0 keyword argument is deprecated, to set `alias_du0`,
177+ please use an ODEAliasSpecifier, e.g. `solve(prob, alias = ODEAliasSpecifier(alias_du0 = true))" , :alias_du0 )
178+ old_alias_du0 = values (kwargs). alias_du0
179+ else
180+ old_alias_du0 = false
181+ end
182+
183+ aliases = ODEAliasSpecifier (alias_u0 = old_alias_u0, alias_du0 = old_alias_du0)
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+ else
192+ error (" Keyword argument `alias` must be a `Bool` or `ODEAliasSpecifier`." )
193+ end
174194 end
175195
176- if alias . alias_u0
196+ if aliases . alias_u0
177197 u = prob. u0
178198 else
179199 u = recursivecopy (prob. u0)
180200 end
181201
182202 if _alg isa DAEAlgorithm
183- if alias_du0
203+ if aliases . alias_du0
184204 du = prob. du0
185205 else
186206 du = recursivecopy (prob. du0)
0 commit comments