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.