Skip to content

Commit 28aae11

Browse files
Merge pull request #583 from prbzrg/add-enum
use `EnumX`
2 parents 79552a4 + 0995b68 commit 28aae11

10 files changed

+78
-73
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Random = "1.6"
5050
RandomNumbers = "1.5.3"
5151
RecursiveArrayTools = "2, 3"
5252
Reexport = "0.2, 1.0"
53-
SciMLBase = "2.0.6"
53+
SciMLBase = "2.51"
5454
SciMLOperators = "0.2.9, 0.3"
5555
SparseArrays = "1.6"
5656
SparseDiffTools = "2"

src/alg_utils.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -133,22 +133,22 @@ beta1_default(alg::Union{StochasticDiffEqAlgorithm,StochasticDiffEqRODEAlgorithm
133133

134134
isdtchangeable(alg::Union{StochasticDiffEqAlgorithm,StochasticDiffEqRODEAlgorithm}) = true
135135

136-
SciMLBase.alg_interpretation(alg::StochasticDiffEqAlgorithm) = :Ito
137-
SciMLBase.alg_interpretation(alg::EulerHeun) = :Stratonovich
138-
SciMLBase.alg_interpretation(alg::LambaEulerHeun) = :Stratonovich
139-
SciMLBase.alg_interpretation(alg::KomBurSROCK2) = :Stratonovich
136+
SciMLBase.alg_interpretation(alg::StochasticDiffEqAlgorithm) = SciMLBase.AlgorithmInterpretation.Ito
137+
SciMLBase.alg_interpretation(alg::EulerHeun) = SciMLBase.AlgorithmInterpretation.Stratonovich
138+
SciMLBase.alg_interpretation(alg::LambaEulerHeun) = SciMLBase.AlgorithmInterpretation.Stratonovich
139+
SciMLBase.alg_interpretation(alg::KomBurSROCK2) = SciMLBase.AlgorithmInterpretation.Stratonovich
140140
SciMLBase.alg_interpretation(alg::RKMil{interpretation}) where {interpretation} = interpretation
141141
SciMLBase.alg_interpretation(alg::SROCK1{interpretation,E}) where {interpretation,E} = interpretation
142142
SciMLBase.alg_interpretation(alg::RKMilCommute) = alg.interpretation
143143
SciMLBase.alg_interpretation(alg::RKMilGeneral) = alg.interpretation
144144
SciMLBase.alg_interpretation(alg::ImplicitRKMil{CS,AD,F,P,FDT,ST,CJ,N,T2,Controller,interpretation}) where {CS,AD,F,P,FDT,ST,CJ,N,T2,Controller,interpretation} = interpretation
145145

146-
SciMLBase.alg_interpretation(alg::RS1) = :Stratonovich
147-
SciMLBase.alg_interpretation(alg::RS2) = :Stratonovich
146+
SciMLBase.alg_interpretation(alg::RS1) = SciMLBase.AlgorithmInterpretation.Stratonovich
147+
SciMLBase.alg_interpretation(alg::RS2) = SciMLBase.AlgorithmInterpretation.Stratonovich
148148

149-
SciMLBase.alg_interpretation(alg::NON) = :Stratonovich
150-
SciMLBase.alg_interpretation(alg::COM) = :Stratonovich
151-
SciMLBase.alg_interpretation(alg::NON2) = :Stratonovich
149+
SciMLBase.alg_interpretation(alg::NON) = SciMLBase.AlgorithmInterpretation.Stratonovich
150+
SciMLBase.alg_interpretation(alg::COM) = SciMLBase.AlgorithmInterpretation.Stratonovich
151+
SciMLBase.alg_interpretation(alg::NON2) = SciMLBase.AlgorithmInterpretation.Stratonovich
152152

153153
alg_compatible(prob, alg::Union{StochasticDiffEqAlgorithm,StochasticDiffEqRODEAlgorithm}) = true
154154
alg_compatible(prob, alg::StochasticDiffEqAlgorithm) = false

src/algorithms.jl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,49 +77,49 @@ Springer. Berlin Heidelberg (2011)
7777
7878
RKMil: Nonstiff Method
7979
An explicit Runge-Kutta discretization of the strong order 1.0 Milstein method.
80-
Defaults to solving the Ito problem, but RKMil(interpretation=:Stratonovich) makes it solve the Stratonovich problem.
80+
Defaults to solving the Ito problem, but RKMil(interpretation=SciMLBase.AlgorithmInterpretation.Stratonovich) makes it solve the Stratonovich problem.
8181
Only handles scalar and diagonal noise.
8282
"""
8383
struct RKMil{interpretation} <: StochasticDiffEqAdaptiveAlgorithm end
84-
RKMil(;interpretation=:Ito) = RKMil{interpretation}()
84+
RKMil(;interpretation=SciMLBase.AlgorithmInterpretation.Ito) = RKMil{interpretation}()
8585

8686
"""
8787
Kloeden, P.E., Platen, E., Numerical Solution of Stochastic Differential Equations.
8888
Springer. Berlin Heidelberg (2011)
8989
9090
RKMilCommute: Nonstiff Method
9191
An explicit Runge-Kutta discretization of the strong order 1.0 Milstein method for commutative noise problems.
92-
Defaults to solving the Ito problem, but RKMilCommute(interpretation=:Stratonovich) makes it solve the Stratonovich problem.
92+
Defaults to solving the Ito problem, but RKMilCommute(interpretation=SciMLBase.AlgorithmInterpretation.Stratonovich) makes it solve the Stratonovich problem.
9393
Uses a 1.5/2.0 error estimate for adaptive time stepping.
9494
Default: ii_approx=IICommutative() does not approximate the Levy area.
9595
"""
9696
struct RKMilCommute{T} <: StochasticDiffEqAdaptiveAlgorithm
97-
interpretation::Symbol
97+
interpretation::SciMLBase.AlgorithmInterpretation.T
9898
ii_approx::T
9999
end
100-
RKMilCommute(;interpretation=:Ito, ii_approx=IICommutative()) = RKMilCommute(interpretation,ii_approx)
100+
RKMilCommute(;interpretation=SciMLBase.AlgorithmInterpretation.Ito, ii_approx=IICommutative()) = RKMilCommute(interpretation,ii_approx)
101101

102102
"""
103103
Kloeden, P.E., Platen, E., Numerical Solution of Stochastic Differential Equations.
104104
Springer. Berlin Heidelberg (2011)
105105
106106
RKMilGeneral: Nonstiff Method
107-
RKMilGeneral(;interpretation=:Ito, ii_approx=IILevyArea()
107+
RKMilGeneral(;interpretation=SciMLBase.AlgorithmInterpretation.Ito, ii_approx=IILevyArea()
108108
An explicit Runge-Kutta discretization of the strong order 1.0 Milstein method for general non-commutative noise problems.
109-
Allows for a choice of interpretation between :Ito and :Stratonovich.
109+
Allows for a choice of interpretation between SciMLBase.AlgorithmInterpretation.Ito and SciMLBase.AlgorithmInterpretation.Stratonovich.
110110
Allows for a choice of iterated integral approximation.
111111
Default: ii_approx=IILevyArea() uses LevyArea.jl to choose optimal algorithm. See
112112
Kastner, F. and Rößler, A., arXiv: 2201.08424
113113
Kastner, F. and Rößler, A., LevyArea.jl, 10.5281/ZENODO.5883748, https://github.com/stochastics-uni-luebeck/LevyArea.jl
114114
"""
115115
struct RKMilGeneral{T, TruncationType} <: StochasticDiffEqAdaptiveAlgorithm
116-
interpretation::Symbol
116+
interpretation::SciMLBase.AlgorithmInterpretation.T
117117
ii_approx::T
118118
c::Int
119119
p::TruncationType
120120
end
121121

122-
function RKMilGeneral(;interpretation=:Ito,ii_approx=IILevyArea(), c=1, p=nothing, dt=nothing)
122+
function RKMilGeneral(;interpretation=SciMLBase.AlgorithmInterpretation.Ito,ii_approx=IILevyArea(), c=1, p=nothing, dt=nothing)
123123
γ = 1//1
124124
p==true && (p = Int(floor(c*dt^(1//1-2//1*γ)) + 1))
125125
RKMilGeneral{typeof(ii_approx), typeof(p)}(interpretation, ii_approx, c, p)
@@ -160,13 +160,13 @@ struct WangLi3SMil_F <: StochasticDiffEqAlgorithm end
160160
"""
161161
SROCK1: S-ROCK Method
162162
Is a fixed step size stabilized explicit method for stiff problems.
163-
Defaults to solving th Ito problem but SROCK1(interpretation=:Stratonovich) can make it solve the Stratonovich problem.
163+
Defaults to solving th Ito problem but SROCK1(interpretation=SciMLBase.AlgorithmInterpretation.Stratonovich) can make it solve the Stratonovich problem.
164164
Strong order of convergence is 0.5 and weak order 1, but is optimised to get order 1 in case os scalar/diagonal noise.
165165
"""
166166
struct SROCK1{interpretation,E} <: StochasticDiffEqAlgorithm
167167
eigen_est::E
168168
end
169-
SROCK1(;interpretation=:Ito,eigen_est=nothing) = SROCK1{interpretation,typeof(eigen_est)}(eigen_est)
169+
SROCK1(;interpretation=SciMLBase.AlgorithmInterpretation.Ito,eigen_est=nothing) = SROCK1{interpretation,typeof(eigen_est)}(eigen_est)
170170

171171
# Weak Order 2
172172
for Alg in [:SROCK2, :KomBurSROCK2, :SROCKC2]
@@ -701,7 +701,7 @@ ImplicitEulerHeun(;chunk_size=0,autodiff=true,diff_type=Val{:central},
701701
ImplicitRKMil: Stiff Method
702702
An order 1.0 drift-implicit method.
703703
This is a theta method which defaults to theta=1 or the Trapezoid method on the drift term.
704-
Defaults to solving the Ito problem, but ImplicitRKMil(interpretation=:Stratonovich) makes it solve the Stratonovich problem.
704+
Defaults to solving the Ito problem, but ImplicitRKMil(interpretation=SciMLBase.AlgorithmInterpretation.Stratonovich) makes it solve the Stratonovich problem.
705705
This method defaults to symplectic=false, but when true and theta=1/2 this is the implicit Midpoint method on the drift term and is symplectic in distribution.
706706
Handles diagonal and scalar noise. Uses a 1.5/2.0 heuristic for adaptive time stepping.
707707
"""
@@ -721,7 +721,7 @@ ImplicitRKMil(;chunk_size=0,autodiff=true,diff_type=Val{:central},
721721
extrapolant=:constant,
722722
theta = 1,symplectic = false,
723723
new_jac_conv_bound = 1e-3,
724-
controller = :Predictive,interpretation=:Ito) =
724+
controller = :Predictive,interpretation=SciMLBase.AlgorithmInterpretation.Ito) =
725725
ImplicitRKMil{chunk_size,autodiff,
726726
typeof(linsolve),typeof(precs),diff_type,
727727
OrdinaryDiffEq._unwrap_val(standardtag),

src/perform_step/SROCK_perform_step.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
cosh_inv = log(ω₀ + Sqrt_ω) # arcosh(ω₀)
1515
ω₁ = (Sqrt_ω*cosh(mdeg*cosh_inv))/(mdeg*sinh(mdeg*cosh_inv))
1616

17-
if SciMLBase.alg_interpretation(integrator.alg) == :Stratonovich
17+
if SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Stratonovich
1818
α = cosh(mdeg*cosh_inv)/(2*ω₀*cosh((mdeg-1)*cosh_inv))
1919
γ = 1/(2*α)
2020
β = -γ
@@ -42,7 +42,7 @@
4242
k = integrator.f(uᵢ₋₁,p,tᵢ₋₁)
4343

4444
u = dt*μ*k + ν*uᵢ₋₁ + κ*uᵢ₋₂
45-
if (i > mdeg - 2) && SciMLBase.alg_interpretation(integrator.alg) == :Stratonovich
45+
if (i > mdeg - 2) && SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Stratonovich
4646
if i == mdeg - 1
4747
gₘ₋₂ = integrator.g(uᵢ₋₁,p,tᵢ₋₁)
4848
if W.dW isa Number || !is_diagonal_noise(integrator.sol.prob)
@@ -58,7 +58,7 @@
5858
u .+=.* gₘ₋₂ .+ γ .* gₘ₋₁) .* W.dW
5959
end
6060
end
61-
elseif (i == mdeg) && SciMLBase.alg_interpretation(integrator.alg) == :Ito
61+
elseif (i == mdeg) && SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito
6262
if W.dW isa Number
6363
gₘ₋₂ = integrator.g(uᵢ₋₁,p,tᵢ₋₁)
6464
uᵢ₋₂ = uᵢ₋₁ + sqrt(abs(dt))*gₘ₋₂
@@ -105,7 +105,7 @@ end
105105
cosh_inv = log(ω₀ + Sqrt_ω) # arcosh(ω₀)
106106
ω₁ = (Sqrt_ω*cosh(mdeg*cosh_inv))/(mdeg*sinh(mdeg*cosh_inv))
107107

108-
if SciMLBase.alg_interpretation(integrator.alg) == :Stratonovich
108+
if SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Stratonovich
109109
α = cosh(mdeg*cosh_inv)/(2*ω₀*cosh((mdeg-1)*cosh_inv))
110110
γ = 1/(2*α)
111111
β = -γ
@@ -132,7 +132,7 @@ end
132132
κ = - Tᵢ₋₂/Tᵢ
133133
integrator.f(k,uᵢ₋₁,p,tᵢ₋₁)
134134
@.. u = dt*μ*k + ν*uᵢ₋₁ + κ*uᵢ₋₂
135-
if (i > mdeg - 2) && SciMLBase.alg_interpretation(integrator.alg) == :Stratonovich
135+
if (i > mdeg - 2) && SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Stratonovich
136136
if i == mdeg - 1
137137
integrator.g(gₘ₋₂,uᵢ₋₁,p,tᵢ₋₁)
138138
if W.dW isa Number || is_diagonal_noise(integrator.sol.prob)
@@ -152,7 +152,7 @@ end
152152
@.. u += γ*k
153153
end
154154
end
155-
elseif (i == mdeg) && SciMLBase.alg_interpretation(integrator.alg) == :Ito
155+
elseif (i == mdeg) && SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito
156156
if W.dW isa Number || is_diagonal_noise(integrator.sol.prob)
157157
integrator.g(gₘ₋₂,uᵢ₋₁,p,tᵢ₋₁)
158158
@.. uᵢ₋₂ = uᵢ₋₁ + sqrt(abs(dt))*gₘ₋₂

src/perform_step/low_order.jl

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -208,16 +208,16 @@ end
208208
K = @.. uprev + dt * du1
209209
L = integrator.g(uprev,p,t)
210210
mil_correction = zero(u)
211-
if SciMLBase.alg_interpretation(integrator.alg) == :Ito
211+
if SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito
212212
utilde = K + L*integrator.sqdt
213213
ggprime = (integrator.g(utilde,p,t).-L)./(integrator.sqdt)
214214
mil_correction = ggprime.*(W.dW.^2 .- abs(dt))./2
215-
elseif SciMLBase.alg_interpretation(integrator.alg) == :Stratonovich
215+
elseif SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Stratonovich
216216
utilde = uprev + L*integrator.sqdt
217217
ggprime = (integrator.g(utilde,p,t).-L)./(integrator.sqdt)
218218
mil_correction = ggprime.*(W.dW.^2)./2
219219
else
220-
error("Alg interpretation invalid. Use either :Ito or :Stratonovich")
220+
error("Algorithm interpretation invalid. Use either SciMLBase.AlgorithmInterpretation.Ito or SciMLBase.AlgorithmInterpretation.Stratonovich")
221221
end
222222
u = K+L.*W.dW+mil_correction
223223

@@ -241,16 +241,16 @@ end
241241
integrator.g(L,uprev,p,t)
242242
@.. K = uprev + dt * du1
243243
@.. du2 = zero(eltype(u)) # This makes it safe to re-use the array
244-
if SciMLBase.alg_interpretation(integrator.alg) == :Ito
244+
if SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito
245245
@.. tmp = K + integrator.sqdt * L
246246
integrator.g(du2,tmp,p,t)
247247
@.. tmp = (du2-L)/(2integrator.sqdt)*(W.dW.^2 - abs(dt))
248-
elseif SciMLBase.alg_interpretation(integrator.alg) == :Stratonovich
248+
elseif SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Stratonovich
249249
@.. tmp = uprev + integrator.sqdt * L
250250
integrator.g(du2,tmp,p,t)
251251
@.. tmp = (du2-L)/(2integrator.sqdt)*(W.dW.^2)
252252
else
253-
error("Alg interpretation invalid. Use either :Ito or :Stratonovich")
253+
error("Algorithm interpretation invalid. Use either SciMLBase.AlgorithmInterpretation.Ito or SciMLBase.AlgorithmInterpretation.Stratonovich")
254254
end
255255
@.. u = K+L*W.dW + tmp
256256
if integrator.opts.adaptive
@@ -275,7 +275,7 @@ end
275275
J = get_iterated_I(dt, dW, W.dZ, Jalg)
276276

277277
mil_correction = zero(u)
278-
if SciMLBase.alg_interpretation(integrator.alg) == :Ito
278+
if SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito
279279
if dW isa Number || is_diagonal_noise(integrator.sol.prob)
280280
J = J .- 1//2 .* abs(dt)
281281
else
@@ -289,7 +289,7 @@ end
289289
K = uprev + dt*du1
290290

291291
if is_diagonal_noise(integrator.sol.prob)
292-
tmp = (SciMLBase.alg_interpretation(integrator.alg) == :Ito ? K : uprev) .+ integrator.sqdt .* L
292+
tmp = (SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito ? K : uprev) .+ integrator.sqdt .* L
293293
gtmp = integrator.g(tmp,p,t)
294294
Dgj = (gtmp - L)/sqdt
295295
ggprime_norm = integrator.opts.internalnorm(Dgj,t)
@@ -343,7 +343,7 @@ end
343343
J = Jalg.J
344344

345345
@.. mil_correction = zero(u)
346-
if SciMLBase.alg_interpretation(integrator.alg) == :Ito
346+
if SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito
347347
if dW isa Number || is_diagonal_noise(integrator.sol.prob)
348348
@.. J -= 1 // 2 * abs(dt)
349349
else
@@ -357,7 +357,7 @@ end
357357
@.. K = uprev + dt*du1
358358

359359
if is_diagonal_noise(integrator.sol.prob)
360-
tmp .= (SciMLBase.alg_interpretation(integrator.alg) == :Ito ? K : uprev) .+ integrator.sqdt .* L
360+
tmp .= (SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito ? K : uprev) .+ integrator.sqdt .* L
361361
integrator.g(gtmp,tmp,p,t)
362362
@.. Dgj = (gtmp - L)/sqdt
363363
ggprime_norm = integrator.opts.internalnorm(Dgj,t)
@@ -397,7 +397,7 @@ end
397397

398398
J = get_iterated_I(dt, dW, W.dZ, Jalg, integrator.alg.p, integrator.alg.c, alg_order(integrator.alg))
399399

400-
if SciMLBase.alg_interpretation(integrator.alg) == :Ito
400+
if SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito
401401
if dW isa Number || is_diagonal_noise(integrator.sol.prob)
402402
J = J .- 1//2 .* abs(dt)
403403
else
@@ -413,7 +413,7 @@ end
413413

414414
if dW isa Number || is_diagonal_noise(integrator.sol.prob)
415415
K = @.. uprev + dt*du₁
416-
utilde = (SciMLBase.alg_interpretation(integrator.alg) == :Ito ? K : uprev) + L*integrator.sqdt
416+
utilde = (SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito ? K : uprev) + L*integrator.sqdt
417417
ggprime = (integrator.g(utilde,p,t) .- L) ./ (integrator.sqdt)
418418
mil_correction = ggprime .* J
419419
u = K + L .* dW + mil_correction
@@ -467,7 +467,7 @@ end
467467
@.. mil_correction = zero(eltype(u))
468468
ggprime_norm = zero(eltype(ggprime))
469469

470-
if SciMLBase.alg_interpretation(integrator.alg) == :Ito
470+
if SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito
471471
if dW isa Number || is_diagonal_noise(integrator.sol.prob)
472472
@.. J -= 1 // 2 * abs(dt)
473473
else
@@ -478,7 +478,7 @@ end
478478
if dW isa Number || is_diagonal_noise(integrator.sol.prob)
479479
@.. K = uprev + dt*du₁
480480
@.. du₂ = zero(eltype(u))
481-
tmp .= (SciMLBase.alg_interpretation(integrator.alg) == :Ito ? K : uprev) .+ integrator.sqdt .* L
481+
tmp .= (SciMLBase.alg_interpretation(integrator.alg) == SciMLBase.AlgorithmInterpretation.Ito ? K : uprev) .+ integrator.sqdt .* L
482482
integrator.g(du₂,tmp,p,t)
483483
@.. ggprime = (du₂ - L)/sqdt
484484
ggprime_norm = integrator.opts.internalnorm(ggprime,t)

src/perform_step/sdirk.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,21 @@
2424
end
2525

2626
if cache isa ImplicitRKMilConstantCache || integrator.opts.adaptive == true
27-
if SciMLBase.alg_interpretation(alg) == :Ito ||
27+
if SciMLBase.alg_interpretation(alg) == SciMLBase.AlgorithmInterpretation.Ito ||
2828
cache isa ImplicitEMConstantCache
2929
K = @.. uprev + dt * ftmp
3030
utilde = K + L*integrator.sqdt
3131
ggprime = (integrator.g(utilde,p,t).-L)./(integrator.sqdt)
3232
mil_correction = ggprime .* (integrator.W.dW.^2 .- abs(dt))./2
3333
gtmp += mil_correction
34-
elseif SciMLBase.alg_interpretation(alg) == :Stratonovich ||
34+
elseif SciMLBase.alg_interpretation(alg) == SciMLBase.AlgorithmInterpretation.Stratonovich ||
3535
cache isa ImplicitEulerHeunConstantCache
3636
utilde = uprev + L*integrator.sqdt
3737
ggprime = (integrator.g(utilde,p,t).-L)./(integrator.sqdt)
3838
mil_correction = ggprime.*(integrator.W.dW.^2)./2
3939
gtmp += mil_correction
4040
else
41-
error("Alg interpretation invalid. Use either :Ito or :Stratonovich")
41+
error("Algorithm interpretation invalid. Use either SciMLBase.AlgorithmInterpretation.Ito or SciMLBase.AlgorithmInterpretation.Stratonovich")
4242
end
4343
end
4444

@@ -154,18 +154,18 @@ end
154154

155155
if cache isa ImplicitRKMilCache
156156
gtmp3 = cache.gtmp3
157-
if SciMLBase.alg_interpretation(alg) == :Ito
157+
if SciMLBase.alg_interpretation(alg) == SciMLBase.AlgorithmInterpretation.Ito
158158
@.. z = uprev + dt * tmp + integrator.sqdt * gtmp
159159
integrator.g(gtmp3,z,p,t)
160160
@.. gtmp3 = (gtmp3-gtmp)/(integrator.sqdt) # ggprime approximation
161161
@.. gtmp2 += gtmp3*(dW.^2 - abs(dt))/2
162-
elseif SciMLBase.alg_interpretation(alg) == :Stratonovich
162+
elseif SciMLBase.alg_interpretation(alg) == SciMLBase.AlgorithmInterpretation.Stratonovich
163163
@.. z = uprev + integrator.sqdt * gtmp
164164
integrator.g(gtmp3,z,p,t)
165165
@.. gtmp3 = (gtmp3-gtmp)/(integrator.sqdt) # ggprime approximation
166166
@.. gtmp2 += gtmp3*(dW.^2)/2
167167
else
168-
error("Alg interpretation invalid. Use either :Ito or :Stratonovich")
168+
error("Algorithm interpretation invalid. Use either SciMLBase.AlgorithmInterpretation.Ito or SciMLBase.AlgorithmInterpretation.Stratonovich")
169169
end
170170
end
171171

0 commit comments

Comments
 (0)