Skip to content

Commit 2552417

Browse files
Merge pull request #37 from SciML/dw/discontinuity
Remove `Discontinuity`
2 parents 6bcbd6c + 4a1e156 commit 2552417

File tree

7 files changed

+16
-56
lines changed

7 files changed

+16
-56
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "StochasticDelayDiffEq"
22
uuid = "29a0d76e-afc8-11e9-03a4-eda52ae4b960"
33
authors = ["Henrik Sykora <[email protected]>"]
4-
version = "0.2.7"
4+
version = "0.2.8"
55

66
[deps]
77
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
@@ -21,7 +21,7 @@ UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed"
2121

2222
[compat]
2323
DataStructures = "0.18"
24-
DelayDiffEq = "5.28.2"
24+
DelayDiffEq = "5.28.3"
2525
DiffEqBase = "6.29"
2626
DiffEqNoiseProcess = "5"
2727
RandomNumbers = "1"

src/StochasticDelayDiffEq.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ using DiffEqBase: AbstractSDDEProblem, AbstractSDDEAlgorithm, AbstractRODESoluti
1616
import DelayDiffEq: constant_extrapolant!, constant_extrapolant, AbstractMethodOfStepsAlgorithm, iscomposite, MethodOfSteps
1717
using DiffEqNoiseProcess
1818

19-
using DelayDiffEq: HistoryFunction
19+
using DelayDiffEq: Discontinuity, HistoryFunction
2020

2121
import RandomNumbers: Xorshifts
2222
using Random
@@ -27,7 +27,6 @@ import Base: convert
2727
# #########################################################
2828
# #########################################################
2929

30-
include("discontinuity_type.jl")
3130
include("integrators/type.jl")
3231
include("integrators/interface.jl")
3332
include("integrators/utils.jl")

src/discontinuity_type.jl

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/integrators/interface.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ function DiffEqBase.reinit!(integrator::SDDEIntegrator,u0 = integrator.sol.prob.
175175

176176
if order_discontinuity_t0 maximum_order
177177
resize!(integrator.tracked_discontinuities, 1)
178-
integrator.tracked_discontinuities[1] = Discontinuity(integrator.tdir * integrator.t, order_discontinuity_t0)
178+
integrator.tracked_discontinuities[1] = Discontinuity(integrator.tdir * integrator.t, Rational{Int}(order_discontinuity_t0))
179179
else
180180
resize!(integrator.tracked_discontinuities, 0)
181181
end
@@ -237,7 +237,7 @@ function StochasticDiffEq.handle_callback_modifiers!(integrator::SDDEIntegrator)
237237

238238
# update heap of discontinuities
239239
# discontinuity is assumed to be of order 0, i.e. solution x is discontinuous
240-
push!(integrator.opts.d_discontinuities, Discontinuity(integrator.tdir * integrator.t, 0))
240+
push!(integrator.opts.d_discontinuities, Discontinuity(integrator.tdir * integrator.t, 0//1))
241241
end
242242

243243
function DiffEqBase.u_modified!(integrator::SDDEIntegrator, bool::Bool)

src/integrators/type.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ mutable struct SDDEIntegrator{algType,IIP,uType,uEltype,tType,P,eigenType,tTypeN
3333
# prev2_idx::Int - from DDEIntegrator TODO
3434
# fpsolver::FP - from DDEIntegrator TODO
3535
order_discontinuity_t0::Int #- from DDEIntegrator TODO
36-
tracked_discontinuities::Vector{Discontinuity{tType}}
36+
tracked_discontinuities::Vector{Discontinuity{tType,Rational{Int}}}
3737
# discontinuity_interp_points::Int #- from DDEIntegrator TODO
3838
# discontinuity_abstol::dAbsType #- from DDEIntegrator TODO
3939
# discontinuity_reltol::dRelType #- from DDEIntegrator TODO

src/integrators/utils.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,14 @@ than the order of the applied method or the problem is neutral.
8484
Discontinuities caused by constant delays are immediately calculated, and
8585
discontinuities caused by dependent delays are tracked by a callback.
8686
"""
87-
function add_next_discontinuities!(integrator, order, t = integrator.t)
87+
function add_next_discontinuities!(integrator, _order, t = integrator.t)
8888
neutral = integrator.sol.prob.neutral
89-
next_order = neutral ? order : order + oftype(order,1//2)
89+
order = Rational{Int}(_order)
90+
next_order = neutral ? order : order + 1//2
9091

9192
# only track discontinuities up to order of the applied method
9293
alg_order = StochasticDiffEq.alg_order(getalg(integrator.alg))
93-
next_order <= alg_order + oftype(alg_order,1//2) || return
94+
next_order <= alg_order + 1//2 || return
9495

9596
# discontinuities caused by constant lags
9697
if has_constant_lags(integrator)

src/solve.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ function DiffEqBase.__init(prob::AbstractSDDEProblem,# TODO DiffEqBasee.Abstract
1414
recompile::Type{Val{recompile_flag}} = Val{true};
1515
saveat = eltype(prob.tspan)[],
1616
tstops = eltype(prob.tspan)[],
17-
d_discontinuities = Discontinuity{eltype(prob.tspan)}[],
17+
d_discontinuities = Discontinuity{eltype(prob.tspan),Rational{Int}}[],
1818
save_idxs = nothing,
1919
save_everystep = isempty(saveat),
2020
save_noise = save_everystep && (typeof(prob.f) <: Tuple ?
@@ -215,9 +215,9 @@ function DiffEqBase.__init(prob::AbstractSDDEProblem,# TODO DiffEqBasee.Abstract
215215
order_discontinuity_t0, maximum_order,
216216
constant_lags, neutral)
217217

218-
tracked_discontinuities = Discontinuity{tType}[]
218+
tracked_discontinuities = Discontinuity{tType,Rational{Int}}[]
219219
if order_discontinuity_t0 maximum_order
220-
push!(tracked_discontinuities, Discontinuity(tdir * t, order_discontinuity_t0))
220+
push!(tracked_discontinuities, Discontinuity(tdir * t, Rational{Int}(order_discontinuity_t0)))
221221
end
222222

223223
callbacks_internal = CallbackSet(callback)
@@ -529,7 +529,7 @@ function tstop_saveat_disc_handling(tstops, saveat, d_discontinuities, tspan, or
529529
end
530530

531531
# discontinuities
532-
d_discontinuities_internal = BinaryMinHeap{Discontinuity{tType}}()
532+
d_discontinuities_internal = BinaryMinHeap{Discontinuity{tType,Rational{Int}}}()
533533
if add_propagated_constant_lags
534534
sizehint!(d_discontinuities_internal.valtree, length(d_discontinuities) + length(constant_lags))
535535
else
@@ -540,14 +540,14 @@ function tstop_saveat_disc_handling(tstops, saveat, d_discontinuities, tspan, or
540540
tdir_t = tdir * d.t
541541

542542
if tdir_t0 < tdir_t < tdir_tf && d.order alg_maximum_order + 1
543-
push!(d_discontinuities_internal, Discontinuity{tType}(tdir_t, d.order))
543+
push!(d_discontinuities_internal, Discontinuity{tType,Rational{Int}}(tdir_t, d.order))
544544
end
545545
end
546546

547547
if add_propagated_constant_lags
548548
for lag in constant_lags
549549
if tdir * lag < maxlag
550-
push!(d_discontinuities_internal, Discontinuity{tType}(tdir * (t0 + lag), next_order))
550+
push!(d_discontinuities_internal, Discontinuity{tType,Rational{Int}}(tdir * (t0 + lag), next_order))
551551
end
552552
end
553553
end

0 commit comments

Comments
 (0)