Error with ODE Tableaus by DiffEqDevTools

I am having errors with the tableau methods for explicitRK using DiffEqDevTools listed in
tableau-methods-list

The code

using DiffEqBase
using DiffEqDevTools
using OrdinaryDiffEq
using ODEInterfaceDiffEq
using SciMLBase

tspan = (0.0, 1.0)
prob = ODEProblem(f!, u, tspan);

alg = ExplicitRK(tableau = constructEuler())
solution = solve(prob, alg, dt=0.2)

EXCEPT for the default tableau method constructDormandPrince(), all of the other explicit tableau methods listed in Tableau-methods break with the bound error below:

   inputs[:ode_solver] = ExplicitRK(; tableau = DiffEqBase.ExplicitRKTableau{Matrix{Float64}, Vector{Float64}, Float64}([0.0;;], [0.0], [1.0], Float64[], Float64[], 1, 1, 0, false, 2.0),)
│   inputs[:tinit] = 0.0
│   inputs[:tend] = 150
└   inputs[:Δt] = 0.3
ERROR: LoadError: BoundsError: attempt to access 0-element Vector{Float64} at index [1]
Stacktrace:
  [1] getindex
    @ ./array.jl:924 [inlined]
  [2] maybeview
    @ ./views.jl:147 [inlined]
  [3] dotview
    @ ./broadcast.jl:1201 [inlined]
  [4] macro expansion
    @ ~/.julia/packages/OrdinaryDiffEq/Kxv5a/src/perform_step/explicit_rk_perform_step.jl:0 [inlined]
  [5] accumulate_EEst!
    @ ~/.julia/packages/OrdinaryDiffEq/Kxv5a/src/perform_step/explicit_rk_perform_step.jl:106 [inlined]
  [6] runtime_split_EEst!(tmp::Vector{Float64}, αEEst::Vector{Float64}, utilde::Vector{Float64}, kk::Vector{Vector{Float64}}, dt::Float64, stages::Int64)
    @ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/Kxv5a/src/perform_step/explicit_rk_perform_step.jl:199

Notice that the standard ODE solvers listed in SCIML explicit solvers work correctly (for example Tsit5(), SSPRK54(), etc.)

Are there specific data structure requirements on u and f to use the tableau methods that cause the bound error?

Notice: f! is the function that build the RHS of du/dt = RHS and if built elsewhere.

I just tested master and it seems to run fine: Test master by ChrisRackauckas · Pull Request #112 · SciML/DiffEqDevTools.jl · GitHub

What version of DiffEqDevTools are you running with what OrdinaryDiffEq?

hello @ChrisRackauckas thanks for looking into this.

DiffEqDevTools v2.35.0
OrdinaryDiffEq v6.54.0

Does running the DiffEqDevTools test work for you?

What happens if you manually set adaptive=false in solve?

@ChrisRackauckas
setting adaptive=false in solve solved the problem. Fantastic, thank you!

FYI: this is the setup that works correctly:
ExplicitRK(; tableau = DiffEqBase.ExplicitRKTableau{Matrix{Float64}, Vector{Float64}, Float64}([0.0;;], [0.0], [1.0], Float64[], Float64[], 1, 1, 0, false, 2.0),)

Yeah I see, after a recent update it’s not flipping adaptive=false automatically on non-adaptive tableaus. I can look into that.