Skip to content

Commit bb1fbf7

Browse files
Harsh SinghHarsh Singh
authored andcommitted
Fixes
1 parent 87cf023 commit bb1fbf7

3 files changed

Lines changed: 21 additions & 20 deletions

File tree

lib/StochasticDiffEqROCK/src/StochasticDiffEqROCK.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ import SciMLBase
2222
using LinearAlgebra
2323
using StaticArrays
2424
using RecursiveArrayTools
25-
import DiffEqNoiseProcess
26-
using Random: rand!
2725

2826
include("algorithms.jl")
2927
include("alg_utils.jl")

lib/StochasticDiffEqROCK/src/caches/SROCK_caches.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ function alg_cache(
295295
uᵢ₋₁ = zero(u)
296296
uᵢ₋₂ = zero(u)
297297
Gₛ = zero(noise_rate_prototype)
298-
if ΔW isa Number || is_diagonal_noise(prob)
298+
if ΔW isa Number || is_diagonal_noise(prob)
299299
Gₛ₁ = Gₛ
300300
else
301301
Gₛ₁ = zero(noise_rate_prototype)
@@ -377,7 +377,7 @@ function alg_cache(
377377
Xₛ₋₃ = zero(noise_rate_prototype)
378378
vec_χ = false .* vec(ΔW)
379379
WikRange = false .* vec(ΔW)
380-
if ΔW isa Number || is_diagonal_noise(prob)
380+
if ΔW isa Number || is_diagonal_noise(prob)
381381
Gₛ = Xₛ₋₁
382382
SXₛ₋₁ = utmp
383383
SXₛ₋₂ = utmp

lib/StochasticDiffEqROCK/src/perform_step/SROCK_perform_step.jl

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ end
267267
# Now uᵢ₋₂ = uₛ₋₂, uᵢ₋₁ = uₛ₋₁, uᵢ = uₛ
268268
# Similarly tᵢ₋₂ = tₛ₋₂, tᵢ₋₁ = tₛ₋₁, tᵢ = tₛ
269269

270-
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
270+
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
271271
Gₛ = integrator.f.g(uᵢ₋₁, p, tᵢ₋₁)
272272
u += Gₛ .* W.dW
273273
Gₛ = integrator.f.g(uᵢ, p, tᵢ)
@@ -418,7 +418,7 @@ end
418418
# Now uᵢ₋₂ = uₛ₋₂, uᵢ₋₁ = uₛ₋₁, uᵢ = uₛ
419419
# Similarly tᵢ₋₂ = tₛ₋₂, tᵢ₋₁ = tₛ₋₁, tᵢ = tₛ
420420

421-
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
421+
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
422422
integrator.f.g(Gₛ, uᵢ₋₁, p, tᵢ₋₁)
423423
@.. u += Gₛ * W.dW
424424
integrator.f.g(Gₛ, uᵢ, p, tᵢ)
@@ -542,14 +542,14 @@ end
542542
end
543543

544544
Gₛ = integrator.f.g(u, p, tᵢ)
545-
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
545+
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
546546
u += Gₛ .* W.dW
547547
else
548548
u += Gₛ * W.dW
549549
end
550550

551551
if integrator.alg.strong_order_1
552-
if (W.dW isa Number) ||
552+
if (W.dW isa Number) ||
553553
(is_diagonal_noise(integrator.sol.prob))
554554
uᵢ₋₂ = @. 1 // 2 * Gₛ * (W.dW^2 - abs(dt))
555555
tmp = @. u + uᵢ₋₂
@@ -633,15 +633,15 @@ end
633633
end
634634

635635
integrator.f.g(Gₛ, u, p, tᵢ)
636-
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
636+
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
637637
@.. u += Gₛ * W.dW
638638
else
639639
mul!(uᵢ₋₁, Gₛ, W.dW)
640640
u += uᵢ₋₁
641641
end
642642

643643
if integrator.alg.strong_order_1
644-
if (W.dW isa Number) ||
644+
if (W.dW isa Number) ||
645645
(is_diagonal_noise(integrator.sol.prob))
646646
@.. uᵢ₋₂ = 1 // 2 * Gₛ * (W.dW^2 - abs(dt))
647647
@.. tmp = u + uᵢ₋₂
@@ -1168,7 +1168,7 @@ end
11681168
end
11691169
end
11701170

1171-
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
1171+
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
11721172
integrator.f.g(Gₛ, Û₁, p, t̂₁)
11731173
@.. uₓ += Gₛ * W.dW
11741174

@@ -1291,7 +1291,7 @@ end
12911291
tᵢ₋₁ += θₛ₋₃ * (tᵢ₋₁ - tᵢ₋₂)
12921292
tᵢ₋₂ = ttmp
12931293

1294-
if W.dW isa Number || is_diagonal_noise(integrator.sol.prob)
1294+
if W.dW isa Number || is_diagonal_noise(integrator.sol.prob)
12951295
# stage s-3
12961296
yₛ₋₃ = integrator.f(uᵢ₋₁, p, tᵢ₋₁)
12971297
utmp = uᵢ₋₁ + μₛ₋₃ * yₛ₋₃
@@ -1460,7 +1460,9 @@ end
14601460
τ = mτ[deg_index]
14611461

14621462
sqrt_dt = sqrt(abs(dt))
1463-
if gen_prob; init_χ!(vec_χ, W); end
1463+
if gen_prob
1464+
init_χ!(vec_χ, W)
1465+
end
14641466

14651467
tᵢ₋₂ = t
14661468
@.. uᵢ₋₂ = uprev
@@ -1503,7 +1505,7 @@ end
15031505
tᵢ₋₁ += θₛ₋₃ * (tᵢ₋₁ - tᵢ₋₂)
15041506
tᵢ₋₂ = ttmp
15051507

1506-
if W.dW isa Number || is_diagonal_noise(integrator.sol.prob)
1508+
if W.dW isa Number || is_diagonal_noise(integrator.sol.prob)
15071509
# stage s-3
15081510
integrator.f(yₛ₋₃, uᵢ₋₁, p, tᵢ₋₁)
15091511
@.. utmp = uᵢ₋₁ + μₛ₋₃ * yₛ₋₃
@@ -1714,7 +1716,7 @@ end
17141716
uᵢ₋₂ = integrator.f(uᵢ₋₂, p, tᵢ₋₂)
17151717
u += dt *+ τ) * uᵢ₋₂
17161718

1717-
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
1719+
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
17181720
Gₛ = integrator.f.g(uᵢ₋₁, p, tᵢ₋₁)
17191721
u += Gₛ .* W.dW
17201722

@@ -1809,7 +1811,7 @@ end
18091811
integrator.f(k, uᵢ₋₂, p, tᵢ₋₂)
18101812
@.. u += dt *+ τ) * k
18111813

1812-
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
1814+
if (W.dW isa Number) || is_diagonal_noise(integrator.sol.prob)
18131815
integrator.f.g(Gₛ, uᵢ₋₁, p, tᵢ₋₁)
18141816
@.. u += Gₛ * W.dW
18151817

@@ -1845,9 +1847,10 @@ end
18451847
end
18461848

18471849
function init_χ!(vec_χ, W)
1848-
rand!(rng(W), vec_χ)
1849-
@.. vec_χ = 2 * floor(vec_χ + 1 // 2) - 1
1850+
r = rng(W)
1851+
for i in eachindex(vec_χ)
1852+
vec_χ[i] = 2 * floor(rand(r) + 0.5) - 1
1853+
end
18501854
end
18511855

1852-
rng(W::DiffEqNoiseProcess.AbstractNoiseProcess) = W.rng
1853-
rng(W::DiffEqNoiseProcess.NoiseWrapper) = W.source.rng
1856+
rng(W) = hasfield(typeof(W), :rng) ? W.rng : W.source.rng

0 commit comments

Comments
 (0)