Skip to content

Commit 79552a4

Browse files
Merge pull request #582 from prbzrg/trait2-1096
`alg_interpretation` from SciMLBase
2 parents e02a78b + dbfbb77 commit 79552a4

File tree

4 files changed

+38
-38
lines changed

4 files changed

+38
-38
lines changed

src/alg_utils.jl

Lines changed: 16 additions & 16 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-
alg_interpretation(alg::StochasticDiffEqAlgorithm) = :Ito
137-
alg_interpretation(alg::EulerHeun) = :Stratonovich
138-
alg_interpretation(alg::LambaEulerHeun) = :Stratonovich
139-
alg_interpretation(alg::KomBurSROCK2) = :Stratonovich
140-
alg_interpretation(alg::RKMil{interpretation}) where {interpretation} = interpretation
141-
alg_interpretation(alg::SROCK1{interpretation,E}) where {interpretation,E} = interpretation
142-
alg_interpretation(alg::RKMilCommute) = alg.interpretation
143-
alg_interpretation(alg::RKMilGeneral) = alg.interpretation
144-
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
145-
146-
alg_interpretation(alg::RS1) = :Stratonovich
147-
alg_interpretation(alg::RS2) = :Stratonovich
148-
149-
alg_interpretation(alg::NON) = :Stratonovich
150-
alg_interpretation(alg::COM) = :Stratonovich
151-
alg_interpretation(alg::NON2) = :Stratonovich
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
140+
SciMLBase.alg_interpretation(alg::RKMil{interpretation}) where {interpretation} = interpretation
141+
SciMLBase.alg_interpretation(alg::SROCK1{interpretation,E}) where {interpretation,E} = interpretation
142+
SciMLBase.alg_interpretation(alg::RKMilCommute) = alg.interpretation
143+
SciMLBase.alg_interpretation(alg::RKMilGeneral) = alg.interpretation
144+
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
145+
146+
SciMLBase.alg_interpretation(alg::RS1) = :Stratonovich
147+
SciMLBase.alg_interpretation(alg::RS2) = :Stratonovich
148+
149+
SciMLBase.alg_interpretation(alg::NON) = :Stratonovich
150+
SciMLBase.alg_interpretation(alg::COM) = :Stratonovich
151+
SciMLBase.alg_interpretation(alg::NON2) = :Stratonovich
152152

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

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 alg_interpretation(integrator.alg) == :Stratonovich
17+
if SciMLBase.alg_interpretation(integrator.alg) == :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) && alg_interpretation(integrator.alg) == :Stratonovich
45+
if (i > mdeg - 2) && SciMLBase.alg_interpretation(integrator.alg) == :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) && alg_interpretation(integrator.alg) == :Ito
61+
elseif (i == mdeg) && SciMLBase.alg_interpretation(integrator.alg) == :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 alg_interpretation(integrator.alg) == :Stratonovich
108+
if SciMLBase.alg_interpretation(integrator.alg) == :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) && alg_interpretation(integrator.alg) == :Stratonovich
135+
if (i > mdeg - 2) && SciMLBase.alg_interpretation(integrator.alg) == :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) && alg_interpretation(integrator.alg) == :Ito
155+
elseif (i == mdeg) && SciMLBase.alg_interpretation(integrator.alg) == :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: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -208,11 +208,11 @@ end
208208
K = @.. uprev + dt * du1
209209
L = integrator.g(uprev,p,t)
210210
mil_correction = zero(u)
211-
if alg_interpretation(integrator.alg) == :Ito
211+
if SciMLBase.alg_interpretation(integrator.alg) == :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 alg_interpretation(integrator.alg) == :Stratonovich
215+
elseif SciMLBase.alg_interpretation(integrator.alg) == :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
@@ -241,11 +241,11 @@ 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 alg_interpretation(integrator.alg) == :Ito
244+
if SciMLBase.alg_interpretation(integrator.alg) == :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 alg_interpretation(integrator.alg) == :Stratonovich
248+
elseif SciMLBase.alg_interpretation(integrator.alg) == :Stratonovich
249249
@.. tmp = uprev + integrator.sqdt * L
250250
integrator.g(du2,tmp,p,t)
251251
@.. tmp = (du2-L)/(2integrator.sqdt)*(W.dW.^2)
@@ -275,7 +275,7 @@ end
275275
J = get_iterated_I(dt, dW, W.dZ, Jalg)
276276

277277
mil_correction = zero(u)
278-
if alg_interpretation(integrator.alg) == :Ito
278+
if SciMLBase.alg_interpretation(integrator.alg) == :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 = (alg_interpretation(integrator.alg) == :Ito ? K : uprev) .+ integrator.sqdt .* L
292+
tmp = (SciMLBase.alg_interpretation(integrator.alg) == :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 alg_interpretation(integrator.alg) == :Ito
346+
if SciMLBase.alg_interpretation(integrator.alg) == :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 .= (alg_interpretation(integrator.alg) == :Ito ? K : uprev) .+ integrator.sqdt .* L
360+
tmp .= (SciMLBase.alg_interpretation(integrator.alg) == :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 alg_interpretation(integrator.alg) == :Ito
400+
if SciMLBase.alg_interpretation(integrator.alg) == :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 = (alg_interpretation(integrator.alg) == :Ito ? K : uprev) + L*integrator.sqdt
416+
utilde = (SciMLBase.alg_interpretation(integrator.alg) == :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 alg_interpretation(integrator.alg) == :Ito
470+
if SciMLBase.alg_interpretation(integrator.alg) == :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 .= (alg_interpretation(integrator.alg) == :Ito ? K : uprev) .+ integrator.sqdt .* L
481+
tmp .= (SciMLBase.alg_interpretation(integrator.alg) == :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: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
end
2525

2626
if cache isa ImplicitRKMilConstantCache || integrator.opts.adaptive == true
27-
if alg_interpretation(alg) == :Ito ||
27+
if SciMLBase.alg_interpretation(alg) == :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 alg_interpretation(alg) == :Stratonovich ||
34+
elseif SciMLBase.alg_interpretation(alg) == :Stratonovich ||
3535
cache isa ImplicitEulerHeunConstantCache
3636
utilde = uprev + L*integrator.sqdt
3737
ggprime = (integrator.g(utilde,p,t).-L)./(integrator.sqdt)
@@ -154,12 +154,12 @@ end
154154

155155
if cache isa ImplicitRKMilCache
156156
gtmp3 = cache.gtmp3
157-
if alg_interpretation(alg) == :Ito
157+
if SciMLBase.alg_interpretation(alg) == :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 alg_interpretation(alg) == :Stratonovich
162+
elseif SciMLBase.alg_interpretation(alg) == :Stratonovich
163163
@.. z = uprev + integrator.sqdt * gtmp
164164
integrator.g(gtmp3,z,p,t)
165165
@.. gtmp3 = (gtmp3-gtmp)/(integrator.sqdt) # ggprime approximation

0 commit comments

Comments
 (0)