diff --git a/src/common_interface/solve.jl b/src/common_interface/solve.jl index f5ea33f..e07aa70 100644 --- a/src/common_interface/solve.jl +++ b/src/common_interface/solve.jl @@ -1415,9 +1415,7 @@ function DiffEqBase.solve!(integrator::AbstractSundialsIntegrator; early_free = integrator.userfun.p = integrator.p solver_step(integrator, tstop) integrator.t = first(integrator.tout) - if integrator.t == integrator.tprev - integrator.flag = -3 - end + # NB: CVode, ARKode may warn and then recover if integrator.t == integrator.tprev so don't flag this as an error integrator.flag < 0 && break handle_callbacks!(integrator) # this also updates the interpolation integrator.flag < 0 && break diff --git a/test/common_interface/ida.jl b/test/common_interface/ida.jl index 3a8dcb0..e6b7e61 100644 --- a/test/common_interface/ida.jl +++ b/test/common_interface/ida.jl @@ -120,7 +120,7 @@ isapprox(only(sol.u[end]), exp(1), rtol = 1e-3) f_noconverge(out, du, u, p, t) = out .= [du[1] + u[1] / (t - 1)] prob = DAEProblem(f_noconverge, [1.0], [1.0], (0, 2); differential_vars = [true]) sol = solve(prob, IDA()) -@test !(sol.retcode in (ReturnCode.Success, ReturnCode.MaxIters)) +@test !(sol.retcode in (ReturnCode.Success, )) # Test that we're saving the correct initial data for du function f_inital_data(du, u, p, t)