Skip to content

Commit a858b8a

Browse files
committed
use ODEAliasSpecifier
1 parent 5134fe2 commit a858b8a

File tree

1 file changed

+34
-14
lines changed

1 file changed

+34
-14
lines changed

lib/OrdinaryDiffEqCore/src/solve.jl

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)