Skip to content

Commit cb575ce

Browse files
authored
Merge branch 'master' into rode_solver
2 parents d949ca1 + 41400cc commit cb575ce

File tree

11 files changed

+251
-115
lines changed

11 files changed

+251
-115
lines changed

Project.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "StochasticDiffEq"
22
uuid = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
33
authors = ["Chris Rackauckas <accounts@chrisrackauckas.com>"]
4-
version = "6.51.0"
4+
version = "6.52.0"
55

66
[deps]
77
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
@@ -60,11 +60,12 @@ DiffEqDevTools = "f3b72e0c-5b89-59e1-b016-84e28bfd966d"
6060
DiffEqOperators = "9fdde737-9c7f-55bf-ade8-46b3f136cc48"
6161
DiffEqProblemLibrary = "a077e3f3-b75c-5d7f-a0c6-6bc4c8ec64a9"
6262
LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
63+
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
6364
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
6465
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
6566
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
6667
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
6768
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
6869

6970
[targets]
70-
test = ["DiffEqCallbacks", "DiffEqDevTools", "DiffEqOperators", "DiffEqProblemLibrary", "LinearSolve", "Pkg", "SafeTestsets", "SparseArrays", "Statistics", "Test"]
71+
test = ["DiffEqCallbacks", "DiffEqDevTools", "DiffEqOperators", "DiffEqProblemLibrary", "LinearSolve", "ModelingToolkit", "Pkg", "SafeTestsets", "SparseArrays", "Statistics", "Test"]

src/caches/SROCK_caches.jl

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,13 @@ function alg_cache(alg::SROCK2,prob,u,ΔW,ΔZ,p,rate_prototype,noise_rate_protot
7979
uᵢ₋₂ = zero(u)
8080
Gₛ = zero(noise_rate_prototype)
8181
Gₛ₁ = zero(noise_rate_prototype)
82-
WikRange = false .* vec(ΔW)
83-
vec_χ = false .* vec(ΔW)
82+
if typeof(ΔW) <: Union{SArray,Number}
83+
WikRange = copy(ΔW)
84+
vec_χ = copy(ΔW)
85+
else
86+
WikRange = false .* vec(ΔW)
87+
vec_χ = false .* vec(ΔW)
88+
end
8489
tmp = uᵢ₋₂ # these 2 variables are dummied to use same memory
8590
fsalfirst = k
8691
atmp = zero(rate_prototype)
@@ -125,7 +130,11 @@ function alg_cache(alg::SROCKEM,prob,u,ΔW,ΔZ,p,rate_prototype,noise_rate_proto
125130
else
126131
Gₛ₁ = zero(noise_rate_prototype)
127132
end
128-
WikRange = false .* vec(ΔW)
133+
if typeof(ΔW) <: Union{SArray,Number}
134+
WikRange = copy(ΔW)
135+
else
136+
WikRange = false .* vec(ΔW)
137+
end
129138
tmp = zero(u) # these 3 variables are dummied to use same memory
130139
fsalfirst = k
131140
atmp = zero(rate_prototype)
@@ -164,7 +173,11 @@ function alg_cache(alg::SKSROCK,prob,u,ΔW,ΔZ,p,rate_prototype,noise_rate_proto
164173
Gₛ = zero(noise_rate_prototype)
165174
tmp = uᵢ₋₂ # Dummmy variables
166175
fsalfirst = k
167-
WikRange = false .* vec(ΔW)
176+
if typeof(ΔW) <: Union{SArray,Number}
177+
WikRange = copy(ΔW)
178+
else
179+
WikRange = false .* vec(ΔW)
180+
end
168181
atmp = zero(rate_prototype)
169182
constantcache = SKSROCKConstantCache{typeof(t)}(u)
170183
SKSROCKCache(u,uprev,uᵢ₋₁,uᵢ₋₂,Gₛ,tmp,k,fsalfirst,WikRange,atmp,constantcache)

src/integrators/integrator_utils.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ end
4141
modify_dtnew_for_tstops!(integrator)
4242
reject_step!(integrator)
4343
integrator.dt = integrator.dtnew
44-
integrator.sqdt = sqrt(abs(integrator.dt))
44+
integrator.sqdt = integrator.tdir * sqrt(abs(integrator.dt))
4545
end
4646
end
4747

@@ -292,7 +292,7 @@ end
292292

293293
# Allow RSWM1 on Wiener Process to change dt
294294
!isnothing(integrator.W) && (integrator.dt = integrator.W.dt)
295-
integrator.sqdt = @fastmath sqrt(abs(integrator.dt)) # It can change dt, like in RSwM1
295+
integrator.sqdt = @fastmath integrator.tdir*sqrt(abs(integrator.dt)) # It can change dt, like in RSwM1
296296
end
297297

298298
@inline function handle_tstop!(integrator)

0 commit comments

Comments
 (0)