ERROR: Hermite interpolation is not defined in this case. The Hermite interpolation
fallback only supports diagonal mass matrices. If you have a DAE with a
non-diagonal mass matrix, then the dense output is not supported with this
ODE solver. Either use a method which has a specialized interpolation,
such as Rodas5P, or use `dense=false`
You can find the list of available DAE solvers with their documented interpolations at:
https://docs.sciml.ai/DiffEqDocs/stable/solvers/dae_solve/
Some of the types have been truncated in the stacktrace for improved reading. To emit complete information
in the stack trace, evaluate `TruncatedStacktraces.VERBOSE[] = true` and re-run the code.
Stacktrace:
[1] _ode_interpolant!(out::Vector{…}, Θ::Float64, dt::Float64, y₀::Vector{…}, y₁::Vector{…}, k::Vector{…}, cache::OrdinaryDiffEq.ImplicitEulerCache{…}, idxs::Nothing, T::Type{…}, differential_vars::OrdinaryDiffEq.DifferentialVarsUndefined)
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/dense/generic_dense.jl:672
[2] ode_interpolant(Θ::Float64, dt::Float64, y₀::Vector{…}, y₁::Vector{…}, k::Vector{…}, cache::OrdinaryDiffEq.ImplicitEulerCache{…}, idxs::Nothing, T::Type{…}, differential_vars::OrdinaryDiffEq.DifferentialVarsUndefined)
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/dense/generic_dense.jl:602
[3] ode_interpolant
@ ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/dense/generic_dense.jl:114 [inlined]
[4] _savevalues!(integrator::OrdinaryDiffEq.ODEIntegrator{…}, force_save::Bool, reduce_size::Bool)
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/integrators/integrator_utils.jl:73
[5] savevalues! (repeats 2 times)
@ ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/integrators/integrator_utils.jl:58 [inlined]
[6] handle_callbacks!
@ ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/integrators/integrator_utils.jl:353 [inlined]
[7] _loopfooter!(integrator::OrdinaryDiffEq.ODEIntegrator{…})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/integrators/integrator_utils.jl:254
[8] loopfooter!
@ ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/integrators/integrator_utils.jl:207 [inlined]
[9] solve!(integrator::OrdinaryDiffEq.ODEIntegrator{…})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/solve.jl:545
[10] __solve(::ODEProblem{…}, ::ImplicitEuler{…}; kwargs::@Kwargs{…})
@ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/solve.jl:7
[11] __solve
@ ~/.julia/packages/OrdinaryDiffEq/AfyyB/src/solve.jl:1 [inlined]
[12] solve_call(_prob::ODEProblem{…}, args::ImplicitEuler{…}; merge_callbacks::Bool, kwargshandle::Nothing, kwargs::@Kwargs{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/WyGjp/src/solve.jl:612
[13] solve_up(prob::ODEProblem{…}, sensealg::Nothing, u0::Vector{…}, p::RHSparams, args::ImplicitEuler{…}; kwargs::@Kwargs{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/WyGjp/src/solve.jl:1080
[14] solve_up
@ ~/.julia/packages/DiffEqBase/WyGjp/src/solve.jl:1066 [inlined]
[15] solve(prob::ODEProblem{…}, args::ImplicitEuler{…}; sensealg::Nothing, u0::Nothing, p::Nothing, wrap::Val{…}, kwargs::@Kwargs{…})
@ DiffEqBase ~/.julia/packages/DiffEqBase/WyGjp/src/solve.jl:1003
[16] top-level scope
@ REPL[99]:1
Environment (please complete the following information):
Describe the bug 🐞
Solver chooses unsupported interpolation (Hermite) when mass matrix is not diagonal.
Expected behavior
The solver should either fall back to a supported interpolation (e.g. linear interpolation)
Also, users should be able to specify the used interpolator manually.
Minimal Reproducible Example 👇
Error & Stacktrace ⚠️
Environment (please complete the following information):
using Pkg; Pkg.status()