# ODE solver takes 10x more steps without tstops

**URL:** <https://discourse.julialang.org/t/ode-solver-takes-10x-more-steps-without-tstops/131682>\
**Category:** Modelling & Simulations\
**Tags:** sciml, differentialequation\
**Created:** [August 18, 2025, 3:46pm UTC](https://discourse.julialang.org/t/ode-solver-takes-10x-more-steps-without-tstops/131682 "2025-08-18T15:46:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mleseach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mleseach/32/202840_2.png) [@mleseach](https://discourse.julialang.org/u/mleseach)\
**Post date:** [August 18, 2025, 3:46pm UTC](https://discourse.julialang.org/t/ode-solver-takes-10x-more-steps-without-tstops/131682/1 "2025-08-18T15:46:47Z")

</div>

Hi everyone,

I’m experiencing what seems like counterintuitive performance behavior with `RDPK3Sp35()` and I’m wondering if this is expected or worth investigating as a potential bug.

I’m solving the same ODE with `RDPK3Sp35()`, `reltol = 1.0e-12`, and `saveat = range(2010.0, 2015.0, 50)`. What’s confuses me is that when I set `tstops` to the same points as `saveat`, the solver takes way fewer steps than when I leave `tstops` empty.

Unfortunately I can’t easily provide a MWE, but here is the logs from my experiments:

```julia-auto
┌ Info: Solver parameters
│ solver = RDPK3Sp35(; stage_limiter! = trivial_limiter!, step_limiter! = trivial_limiter!, thread = static(false),)
│ reltol = 1.0e-12
│ saveat = Float64[]
│ save_everystep = true
│ tstops = Float64[]
└ maxiters = 100000
[ Info: SciMLBase.DEStats(1212, 0, 0, 0, 0, 0, 0, 0, 0, 236, 236, 6, 0.0)

┌ Info: Solver parameters
│ solver = RDPK3Sp35(; stage_limiter! = trivial_limiter!, step_limiter! = trivial_limiter!, thread = static(false),)
│ reltol = 1.0e-12
│ saveat =
│ 50-element Vector{Float64}:
│ 2010.0
│ 2010.1020408163265
│ ⋮
│ 2015.0
│ save_everystep = true
│ tstops =
│ 50-element Vector{Float64}:
│ 2010.0
│ 2010.1020408163265
│ ⋮
│ 2015.0
└ maxiters = 100000
[ Info: SciMLBase.DEStats(1472, 0, 0, 0, 0, 0, 0, 0, 0, 289, 289, 5, 0.0)

┌ Info: Solver parameters
│ solver = RDPK3Sp35(; stage_limiter! = trivial_limiter!, step_limiter! = trivial_limiter!, thread = static(false),)
│ reltol = 1.0e-12
│ saveat =
│ 50-element Vector{Float64}:
│ 2010.0
│ 2010.1020408163265
│ ⋮
│ 2015.0
│ save_everystep = false
│ tstops =
│ 50-element Vector{Float64}:
│ 2010.0
│ 2010.1020408163265
│ ⋮
│ 2015.0
└ maxiters = 100000
[ Info: SciMLBase.DEStats(1472, 0, 0, 0, 0, 0, 0, 0, 0, 289, 289, 5, 0.0)

┌ Info: Solver parameters
│ solver = RDPK3Sp35(; stage_limiter! = trivial_limiter!, step_limiter! = trivial_limiter!, thread = static(false),)
│ reltol = 1.0e-12
│ saveat =
│ 50-element Vector{Float64}:
│ 2010.0
│ 2010.1020408163265
│ ⋮
│ 2015.0
│ save_everystep = true
│ tstops = Float64[]
└ maxiters = 100000
[ Info: SciMLBase.DEStats(11182, 0, 0, 0, 0, 0, 0, 0, 0, 2221, 2221, 15, 0.0)

┌ Info: Solver parameters
│ solver = RDPK3Sp35(; stage_limiter! = trivial_limiter!, step_limiter! = trivial_limiter!, thread = static(false),)
│ reltol = 1.0e-12
│ saveat =
│ 50-element Vector{Float64}:
│ 2010.0
│ 2010.1020408163265
│ ⋮
│ 2015.0
│ save_everystep = false
│ tstops = Float64[]
└ maxiters = 100000
[ Info: SciMLBase.DEStats(25137, 0, 0, 0, 0, 0, 0, 0, 0, 5016, 5016, 11, 0.0)

```

As you can see, going from 1472 to 25137 function evaluations when removing tstops seems quite unexpected. Has anyone encountered similar behavior or have ideas about what might be causing this?

Any insights would be appreciated!

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 18, 2025, 10:30pm UTC](https://discourse.julialang.org/t/ode-solver-takes-10x-more-steps-without-tstops/131682/2 "2025-08-18T22:30:16Z")

</div>

> [@mleseach](#):
>
> Unfortunately I can’t easily provide a MWE, but here is the logs from my experiments:
> 
> ```julia-auto
> 
> ```

Definitely odd. Would need an MWE to investigate.

---

<div class="post-metadata">

**Author:** ![mleseach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mleseach/32/202840_2.png) [@mleseach](https://discourse.julialang.org/u/mleseach)\
**Post date:** [August 19, 2025, 10:28am UTC](https://discourse.julialang.org/t/ode-solver-takes-10x-more-steps-without-tstops/131682/3 "2025-08-19T10:28:21Z")

</div>

Ok, I’ll try to create a MWE when I have some time to isolate the issue.
