Skip to content

Commit

Permalink
add tests and fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
oscardssmith authored and ChrisRackauckas committed Jul 1, 2023
1 parent d15b0db commit f86eea7
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/common_interface/integrator_utils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ function DiffEqBase.savevalues!(integrator::AbstractSundialsIntegrator,

tmp = integrator(curt)
save_value!(integrator.sol.u, tmp, uType,
integrator.opts.save_idxs, Val{false})
integrator.opts.save_idxs, false)
push!(integrator.sol.t, curt)
if integrator.opts.dense
tmp = integrator(curt, Val{1})
save_value!(integrator.sol.interp.du, tmp, uType,
integrator.opts.save_idxs, Val{false})
integrator.opts.save_idxs, false)
end
end

Expand Down
25 changes: 25 additions & 0 deletions test/interpolation.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Sundials, Test, DiffEqBase
using ForwardDiff
import ODEProblemLibrary: prob_ode_linear, prob_ode_2Dlinear

function regression_test(alg, tol_ode_linear, tol_ode_2Dlinear)
sol = solve(prob_ode_linear, alg, dense = true, abstol=1e-8, reltol=1e-8)
@inferred sol(.5)
u0 = sol[1]
p = sol.prob.p
for t in 0.0:1/16:1.0
@test isapprox(u0 * exp(p*t), sol(t), rtol=tol_ode_linear)
end

sol = solve(prob_ode_2Dlinear, alg, dt = 1 / 2^(2), dense = true)
sol2 = solve(prob_ode_2Dlinear, alg, dense = true, abstol=1e-8, reltol=1e-8)
u0 = sol[1]
p = sol.prob.p
for t in 0.0:1/16:1.0
@test isapprox(u0 .* exp(p*t), sol(t), rtol=tol_ode_2Dlinear)
end
end

regression_test(ARKODE(), 1e-5, 1e-4)
regression_test(CVODE_BDF(), 1e-6, 1e-2)
regression_test(CVODE_Adams(), 1e-6, 1e-3)
2 changes: 2 additions & 0 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,5 @@ end
@testset "Mass Matrix" begin include("common_interface/mass_matrix.jl") end
@testset "Preconditioners" begin include("common_interface/precs.jl") end
end

@testset "Interpolation" begin include("interpolation.jl") end

0 comments on commit f86eea7

Please sign in to comment.