Skip to content

Commit 9b23e84

Browse files
committed
Rollback erroring out at higher order derivatives
1 parent 3617e0e commit 9b23e84

File tree

2 files changed

+20
-26
lines changed

2 files changed

+20
-26
lines changed

src/solutions/ode_solutions.jl

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,54 +18,50 @@ end
1818
(sol::ODESolution)(t,deriv::Type=Val{0};idxs=nothing,continuity=:left) = sol(t,deriv,idxs,continuity)
1919
(sol::ODESolution)(v,t,deriv::Type=Val{0};idxs=nothing,continuity=:left) = sol.interp(v,t,idxs,deriv,sol.prob.p,continuity)
2020

21-
function (sol::ODESolution)(t::Real,::Type{Val{0}},idxs::Nothing,continuity)
22-
sol.interp(t,idxs,Val{0},sol.prob.p,continuity)
21+
function (sol::ODESolution)(t::Real,deriv,idxs::Nothing,continuity)
22+
sol.interp(t,idxs,deriv,sol.prob.p,continuity)
2323
end
2424

25-
function (sol::ODESolution)(t::AbstractVector{<:Real},::Type{Val{0}},idxs::Nothing,continuity)
26-
augment(sol.interp(t,idxs,Val{0},sol.prob.p,continuity), sol)
25+
function (sol::ODESolution)(t::AbstractVector{<:Real},deriv,idxs::Nothing,continuity)
26+
augment(sol.interp(t,idxs,deriv,sol.prob.p,continuity), sol)
2727
end
2828

29-
function (sol::ODESolution)(t::Real,::Type{Val{0}},idxs::Integer,continuity)
30-
sol.interp(t,idxs,Val{0},sol.prob.p,continuity)
29+
function (sol::ODESolution)(t::Real,deriv,idxs::Integer,continuity)
30+
sol.interp(t,idxs,deriv,sol.prob.p,continuity)
3131
end
32-
function (sol::ODESolution)(t::Real,::Type{Val{0}},idxs::AbstractVector{<:Integer},continuity)
33-
sol.interp(t,idxs,Val{0},sol.prob.p,continuity)
32+
function (sol::ODESolution)(t::Real,deriv,idxs::AbstractVector{<:Integer},continuity)
33+
sol.interp(t,idxs,deriv,sol.prob.p,continuity)
3434
end
35-
function (sol::ODESolution)(t::AbstractVector{<:Real},::Type{Val{0}},idxs::Integer,continuity)
36-
sol.interp(t,idxs,Val{0},sol.prob.p,continuity)
35+
function (sol::ODESolution)(t::AbstractVector{<:Real},deriv,idxs::Integer,continuity)
36+
sol.interp(t,idxs,deriv,sol.prob.p,continuity)
3737
end
38-
function (sol::ODESolution)(t::AbstractVector{<:Real},::Type{Val{0}},idxs::AbstractVector{<:Integer},continuity)
39-
sol.interp(t,idxs,Val{0},sol.prob.p,continuity)
38+
function (sol::ODESolution)(t::AbstractVector{<:Real},deriv,idxs::AbstractVector{<:Integer},continuity)
39+
sol.interp(t,idxs,deriv,sol.prob.p,continuity)
4040
end
4141

42-
function (sol::ODESolution)(t::Real,::Type{Val{0}},idxs,continuity)
42+
function (sol::ODESolution)(t::Real,deriv,idxs,continuity)
4343
issymbollike(idxs) || error("Incorrect specification of `idxs`")
44-
augment(sol.interp([t],nothing,Val{0},sol.prob.p,continuity), sol)[idxs][1]
44+
augment(sol.interp([t],nothing,deriv,sol.prob.p,continuity), sol)[idxs][1]
4545
end
4646

47-
function (sol::ODESolution)(t::Real,::Type{Val{0}},idxs::AbstractVector,continuity)
47+
function (sol::ODESolution)(t::Real,deriv,idxs::AbstractVector,continuity)
4848
all(issymbollike.(idxs)) || error("Incorrect specification of `idxs`")
49-
interp_sol = augment(sol.interp([t],nothing,Val{0},sol.prob.p,continuity), sol)
49+
interp_sol = augment(sol.interp([t],nothing,deriv,sol.prob.p,continuity), sol)
5050
[first(interp_sol[idx]) for idx in idxs]
5151
end
5252

53-
function (sol::ODESolution)(t::AbstractVector{<:Real},::Type{Val{0}},idxs,continuity)
53+
function (sol::ODESolution)(t::AbstractVector{<:Real},deriv,idxs,continuity)
5454
issymbollike(idxs) || error("Incorrect specification of `idxs`")
55-
interp_sol = augment(sol.interp(t,nothing,Val{0},sol.prob.p,continuity), sol)
55+
interp_sol = augment(sol.interp(t,nothing,deriv,sol.prob.p,continuity), sol)
5656
DiffEqArray(interp_sol[idxs], t)
5757
end
5858

59-
function (sol::ODESolution)(t::AbstractVector{<:Real},::Type{Val{0}},idxs::AbstractVector,continuity)
59+
function (sol::ODESolution)(t::AbstractVector{<:Real},deriv,idxs::AbstractVector,continuity)
6060
all(issymbollike.(idxs)) || error("Incorrect specification of `idxs`")
61-
interp_sol = augment(sol.interp(t,nothing,Val{0},sol.prob.p,continuity), sol)
61+
interp_sol = augment(sol.interp(t,nothing,deriv,sol.prob.p,continuity), sol)
6262
DiffEqArray([[interp_sol[idx][i] for idx in idxs] for i in 1:length(t)], t)
6363
end
6464

65-
function (sol::ODESolution)(t,::Type{Val{N}},idxs,continuity) where N
66-
N == 0 || error("Higher-order interpolation is not implemented.")
67-
end
68-
6965
function build_solution(
7066
prob::Union{AbstractODEProblem,AbstractDDEProblem},
7167
alg,t,u;timeseries_errors=length(u)>2,

test/downstream/symbol_indexing.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ sol9 = sol(0.0:1.0:10.0, idxs=2)
110110
sol10 = sol(0.1, idxs=2)
111111
@test sol10 isa Real
112112

113-
@test_throws ErrorException sol(0.1, Val{1})
114-
@test_throws ErrorException sol([0.0:0.1:1.0], Val{2})
115113

116114
#=
117115
using Plots

0 commit comments

Comments
 (0)