SciML / SciMLSensitivity.jl

A component of the DiffEq ecosystem for enabling sensitivity analysis for scientific machine learning (SciML). Optimize-then-discretize, discretize-then-optimize, adjoint methods, and more for ODEs, SDEs, DDEs, DAEs, etc.
https://docs.sciml.ai/SciMLSensitivity/stable/
Other
330 stars 70 forks source link

Adjoint issues with Zygote with ArrayPartitions of ArrayPartitions #339

Closed samuela closed 4 years ago

samuela commented 4 years ago

Potentially related to https://github.com/SciML/DifferentialEquations.jl/issues/679, but I think it's its own thing. Basically ArrayPartitions, DynamicalODEProblems, and DiffEqSensitivity.jl is an explosive combination. I've come across two types of errors so far, listed in the dyn_x function.

import DifferentialEquations
import DiffEqBase: DynamicalODEProblem
import DiffEqSensitivity:
    solve,
    ODEProblem,
    ODEAdjointProblem,
    InterpolatingAdjoint,
    ZygoteVJP,
    ReverseDiffVJP
import RecursiveArrayTools: ArrayPartition

dyn_v(v_ap, x_ap, p, t) = ArrayPartition(zeros(), [0.0])
# Originally, I imagined that this may be a bug in Zygote, and it still may be, but I tried doing a pullback on this 
# function on its own and didn't have any trouble with that. So I'm led to believe that it has something to do with 
# how DiffEqSensitivity is invoking Zygote. At least this was as far as I was able to simplify the reproduction.
dyn_x(v_ap, x_ap, p, t) = begin
    # ERROR: LoadError: MethodError: no method matching ndims(::Type{NamedTuple{(:x,),Tuple{Tuple{Nothing,Array{Float64,1}}}}})
    v = v_ap.x[2]

    # ERROR: LoadError: type Nothing has no field x
    # v = [0.0]
    ArrayPartition(zeros(), v)
end

v0 = [-1.0]
x0 = [0.75]

sol = solve(
    DynamicalODEProblem(
        dyn_v,
        dyn_x,
        ArrayPartition(zeros(), v0),
        ArrayPartition(zeros(), x0),
        (0.0, 1.0),
        zeros()
    ),
    # Without setting parameters, we end up with https://github.com/SciML/DifferentialEquations.jl/issues/679 again.
    p = zeros()
)

g = ArrayPartition(ArrayPartition(zeros(), zero(v0)), ArrayPartition(zeros(), zero(x0)))
bwd_sol = solve(
    ODEAdjointProblem(
        sol,
        InterpolatingAdjoint(autojacvec=ZygoteVJP()),
        # Also fails, but due to a different bug:
        # InterpolatingAdjoint(autojacvec=ReverseDiffVJP()),
        (out, x, p, t, i) -> (out[:] = g),
        [sol.t[end]],
    ),
)

gives me

julia> include("difftaichi/zygote_bug.jl")
ERROR: LoadError: MethodError: no method matching ndims(::Type{NamedTuple{(:x,),Tuple{Tuple{Nothing,Array{Float64,1}}}}})
Closest candidates are:
  ndims(::Base.Generator) at generator.jl:53
  ndims(::Number) at number.jl:67
  ndims(::Type{var"#s91"} where var"#s91"<:Number) at number.jl:68
  ...
Stacktrace:
 [1] Base.Broadcast.BroadcastStyle(::Type{NamedTuple{(:x,),Tuple{Tuple{Nothing,Array{Float64,1}}}}}) at ./broadcast.jl:103
 [2] combine_styles at /home/samuela/.julia/packages/RecursiveArrayTools/Wte2p/src/array_partition.jl:245 [inlined]
 [3] Base.Broadcast.BroadcastStyle(::Type{ArrayPartition{Any,Tuple{NamedTuple{(:x,),Tuple{Tuple{Nothing,Array{Float64,1}}}},Nothing}}}) at /home/samuela/.julia/packages/RecursiveArrayTools/Wte2p/src/array_partition.jl:249
 [4] combine_styles(::ArrayPartition{Any,Tuple{NamedTuple{(:x,),Tuple{Tuple{Nothing,Array{Float64,1}}}},Nothing}}) at ./broadcast.jl:420
 [5] broadcasted at ./broadcast.jl:1257 [inlined]
 [6] _vecjacobian!(::SubArray{Float64,1,Array{Float64,1},Tuple{UnitRange{Int64}},true}, ::ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}}, ::SubArray{Float64,1,Array{Float64,1},Tuple{UnitRange{Int64}},true}, ::Array{Float64,0}, ::Float64, ::DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}}, ::ZygoteVJP, ::SubArray{Float64,1,Array{Float64,1},Tuple{UnitRange{Int64}},true}, ::Nothing) at /home/samuela/.julia/packages/DiffEqSensitivity/KAqHk/src/local_sensitivity/derivative_wrappers.jl:295
 [7] #vecjacobian!#20 at /home/samuela/.julia/packages/DiffEqSensitivity/KAqHk/src/local_sensitivity/derivative_wrappers.jl:147 [inlined]
 [8] (::DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}})(::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,0}, ::Float64) at /home/samuela/.julia/packages/DiffEqSensitivity/KAqHk/src/local_sensitivity/interpolating_adjoint.jl:145
 [9] ODEFunction at /home/samuela/.julia/packages/DiffEqBase/kRzKx/src/diffeqfunction.jl:248 [inlined]
 [10] initialize!(::OrdinaryDiffEq.ODEIntegrator{OrdinaryDiffEq.CompositeAlgorithm{Tuple{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}},true,Array{Float64,1},Nothing,Float64,Array{Float64,0},Float64,Float64,Float64,Array{Array{Float64,1},1},OrdinaryDiffEq.ODECompositeSolution{Float64,2,Array{Array{Float64,1},1},Nothing,Nothing,Array{Float64,1},Array{Array{Array{Float64,1},1},1},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,0},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Symbol,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},Tuple{Symbol},NamedTuple{(:callback,),Tuple{DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.CompositeAlgorithm{Tuple{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}},OrdinaryDiffEq.CompositeInterpolationData{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{Array{Float64,1},1},Array{Float64,1},Array{Array{Array{Float64,1},1},1},OrdinaryDiffEq.CompositeCache{Tuple{OrdinaryDiffEq.Tsit5Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}},OrdinaryDiffEq.Rosenbrock23Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},Array{Float64,2},Array{Float64,2},OrdinaryDiffEq.Rosenbrock23Tableau{Float64},DiffEqBase.TimeGradientWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{Float64,1},Array{Float64,0}},DiffEqBase.UJacobianWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Float64,0}},DiffEqBase.DefaultLinSolve,FiniteDiff.JacobianCache{Array{Float64,1},Array{Float64,1},Array{Float64,1},UnitRange{Int64},Nothing,Val{:forward}(),Float64},FiniteDiff.GradientCache{Nothing,Array{Float64,1},Array{Float64,1},Float64,Val{:forward}(),Float64,Val{true}()}}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}}},DiffEqBase.DEStats},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},OrdinaryDiffEq.CompositeCache{Tuple{OrdinaryDiffEq.Tsit5Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}},OrdinaryDiffEq.Rosenbrock23Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},Array{Float64,2},Array{Float64,2},OrdinaryDiffEq.Rosenbrock23Tableau{Float64},DiffEqBase.TimeGradientWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{Float64,1},Array{Float64,0}},DiffEqBase.UJacobianWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Float64,0}},DiffEqBase.DefaultLinSolve,FiniteDiff.JacobianCache{Array{Float64,1},Array{Float64,1},Array{Float64,1},UnitRange{Int64},Nothing,Val{:forward}(),Float64},FiniteDiff.GradientCache{Nothing,Array{Float64,1},Array{Float64,1},Float64,Val{:forward}(),Float64,Val{true}()}}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}},OrdinaryDiffEq.DEOptions{Float64,Float64,Float64,Float64,typeof(DiffEqBase.ODE_DEFAULT_NORM),typeof(LinearAlgebra.opnorm),DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN),typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE),typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK),DataStructures.BinaryHeap{Float64,Base.Order.ForwardOrdering},DataStructures.BinaryHeap{Float64,Base.Order.ForwardOrdering},Nothing,Nothing,Int64,Tuple{},Tuple{},Tuple{}},Array{Float64,1},Float64,Nothing,OrdinaryDiffEq.DefaultInit}, ::OrdinaryDiffEq.Tsit5Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}}) at /home/samuela/.julia/packages/OrdinaryDiffEq/7uPDi/src/perform_step/low_order_rk_perform_step.jl:623
 [11] initialize!(::OrdinaryDiffEq.ODEIntegrator{OrdinaryDiffEq.CompositeAlgorithm{Tuple{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}},true,Array{Float64,1},Nothing,Float64,Array{Float64,0},Float64,Float64,Float64,Array{Array{Float64,1},1},OrdinaryDiffEq.ODECompositeSolution{Float64,2,Array{Array{Float64,1},1},Nothing,Nothing,Array{Float64,1},Array{Array{Array{Float64,1},1},1},ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,0},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Symbol,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},Tuple{Symbol},NamedTuple{(:callback,),Tuple{DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.CompositeAlgorithm{Tuple{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}},OrdinaryDiffEq.CompositeInterpolationData{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{Array{Float64,1},1},Array{Float64,1},Array{Array{Array{Float64,1},1},1},OrdinaryDiffEq.CompositeCache{Tuple{OrdinaryDiffEq.Tsit5Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}},OrdinaryDiffEq.Rosenbrock23Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},Array{Float64,2},Array{Float64,2},OrdinaryDiffEq.Rosenbrock23Tableau{Float64},DiffEqBase.TimeGradientWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{Float64,1},Array{Float64,0}},DiffEqBase.UJacobianWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Float64,0}},DiffEqBase.DefaultLinSolve,FiniteDiff.JacobianCache{Array{Float64,1},Array{Float64,1},Array{Float64,1},UnitRange{Int64},Nothing,Val{:forward}(),Float64},FiniteDiff.GradientCache{Nothing,Array{Float64,1},Array{Float64,1},Float64,Val{:forward}(),Float64,Val{true}()}}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}}},DiffEqBase.DEStats},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},OrdinaryDiffEq.CompositeCache{Tuple{OrdinaryDiffEq.Tsit5Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}},OrdinaryDiffEq.Rosenbrock23Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},Array{Float64,2},Array{Float64,2},OrdinaryDiffEq.Rosenbrock23Tableau{Float64},DiffEqBase.TimeGradientWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{Float64,1},Array{Float64,0}},DiffEqBase.UJacobianWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Float64,0}},DiffEqBase.DefaultLinSolve,FiniteDiff.JacobianCache{Array{Float64,1},Array{Float64,1},Array{Float64,1},UnitRange{Int64},Nothing,Val{:forward}(),Float64},FiniteDiff.GradientCache{Nothing,Array{Float64,1},Array{Float64,1},Float64,Val{:forward}(),Float64,Val{true}()}}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}},OrdinaryDiffEq.DEOptions{Float64,Float64,Float64,Float64,typeof(DiffEqBase.ODE_DEFAULT_NORM),typeof(LinearAlgebra.opnorm),DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN),typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE),typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK),DataStructures.BinaryHeap{Float64,Base.Order.ForwardOrdering},DataStructures.BinaryHeap{Float64,Base.Order.ForwardOrdering},Nothing,Nothing,Int64,Tuple{},Tuple{},Tuple{}},Array{Float64,1},Float64,Nothing,OrdinaryDiffEq.DefaultInit}, ::OrdinaryDiffEq.CompositeCache{Tuple{OrdinaryDiffEq.Tsit5Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},OrdinaryDiffEq.Tsit5ConstantCache{Float64,Float64}},OrdinaryDiffEq.Rosenbrock23Cache{Array{Float64,1},Array{Float64,1},Array{Float64,1},Array{Float64,2},Array{Float64,2},OrdinaryDiffEq.Rosenbrock23Tableau{Float64},DiffEqBase.TimeGradientWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{Float64,1},Array{Float64,0}},DiffEqBase.UJacobianWrapper{DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Float64,Array{Float64,0}},DiffEqBase.DefaultLinSolve,FiniteDiff.JacobianCache{Array{Float64,1},Array{Float64,1},Array{Float64,1},UnitRange{Int64},Nothing,Val{:forward}(),Float64},FiniteDiff.GradientCache{Nothing,Array{Float64,1},Array{Float64,1},Float64,Val{:forward}(),Float64,Val{true}()}}},OrdinaryDiffEq.AutoSwitchCache{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}}) at /home/samuela/.julia/packages/OrdinaryDiffEq/7uPDi/src/perform_step/composite_perform_step.jl:39
 [12] __init(::ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,0},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Symbol,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},Tuple{Symbol},NamedTuple{(:callback,),Tuple{DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}},DiffEqBase.StandardODEProblem}, ::OrdinaryDiffEq.CompositeAlgorithm{Tuple{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType}},OrdinaryDiffEq.AutoSwitch{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}}, ::Tuple{}, ::Tuple{}, ::Tuple{}, ::Type{Val{true}}; saveat::Tuple{}, tstops::Tuple{}, d_discontinuities::Tuple{}, save_idxs::Nothing, save_everystep::Bool, save_on::Bool, save_start::Bool, save_end::Bool, callback::DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}, dense::Bool, calck::Bool, dt::Float64, dtmin::Nothing, dtmax::Float64, force_dtmin::Bool, adaptive::Bool, gamma::Rational{Int64}, abstol::Nothing, reltol::Nothing, qmin::Rational{Int64}, qmax::Int64, qsteady_min::Int64, qsteady_max::Int64, qoldinit::Rational{Int64}, fullnormalize::Bool, failfactor::Int64, beta1::Nothing, beta2::Nothing, maxiters::Int64, internalnorm::typeof(DiffEqBase.ODE_DEFAULT_NORM), internalopnorm::typeof(LinearAlgebra.opnorm), isoutofdomain::typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), unstable_check::typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), verbose::Bool, timeseries_errors::Bool, dense_errors::Bool, advance_to_tstop::Bool, stop_at_next_tstop::Bool, initialize_save::Bool, progress::Bool, progress_steps::Int64, progress_name::String, progress_message::typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), userdata::Nothing, allow_extrapolation::Bool, initialize_integrator::Bool, alias_u0::Bool, alias_du0::Bool, initializealg::OrdinaryDiffEq.DefaultInit, kwargs::Base.Iterators.Pairs{Symbol,Bool,Tuple{Symbol,Symbol},NamedTuple{(:default_set, :second_time),Tuple{Bool,Bool}}}) at /home/samuela/.julia/packages/OrdinaryDiffEq/7uPDi/src/solve.jl:428
 [13] __solve(::ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,0},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Symbol,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},Tuple{Symbol},NamedTuple{(:callback,),Tuple{DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}},DiffEqBase.StandardODEProblem}, ::OrdinaryDiffEq.CompositeAlgorithm{Tuple{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType}},OrdinaryDiffEq.AutoSwitch{OrdinaryDiffEq.Tsit5,OrdinaryDiffEq.Rosenbrock23{0,false,DiffEqBase.DefaultLinSolve,DataType},Rational{Int64},Int64}}; kwargs::Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol,Symbol},NamedTuple{(:default_set, :second_time, :callback),Tuple{Bool,Bool,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}}) at /home/samuela/.julia/packages/OrdinaryDiffEq/7uPDi/src/solve.jl:4
 [14] __solve(::ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,0},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Symbol,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},Tuple{Symbol},NamedTuple{(:callback,),Tuple{DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}},DiffEqBase.StandardODEProblem}, ::Nothing; default_set::Bool, kwargs::Base.Iterators.Pairs{Symbol,Any,Tuple{Symbol,Symbol},NamedTuple{(:second_time, :callback),Tuple{Bool,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}}) at /home/samuela/.julia/packages/DifferentialEquations/fpohE/src/default_solve.jl:7
 [15] #__solve#468 at /home/samuela/.julia/packages/DiffEqBase/kRzKx/src/solve.jl:230 [inlined]
 [16] solve_call(::ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,0},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Symbol,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},Tuple{Symbol},NamedTuple{(:callback,),Tuple{DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}},DiffEqBase.StandardODEProblem}; merge_callbacks::Bool, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at /home/samuela/.julia/packages/DiffEqBase/kRzKx/src/solve.jl:65
 [17] solve_call at /home/samuela/.julia/packages/DiffEqBase/kRzKx/src/solve.jl:52 [inlined]
 [18] #solve_up#458 at /home/samuela/.julia/packages/DiffEqBase/kRzKx/src/solve.jl:89 [inlined]
 [19] solve_up at /home/samuela/.julia/packages/DiffEqBase/kRzKx/src/solve.jl:79 [inlined]
 [20] #solve#457 at /home/samuela/.julia/packages/DiffEqBase/kRzKx/src/solve.jl:74 [inlined]
 [21] solve(::ODEProblem{Array{Float64,1},Tuple{Float64,Float64},true,Array{Float64,0},DiffEqBase.ODEFunction{true,DiffEqSensitivity.ODEInterpolatingAdjointSensitivityFunction{DiffEqSensitivity.AdjointDiffCache{Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool}},InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},DiffEqBase.ODESolution{Float64,2,Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Nothing,Nothing,Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},OrdinaryDiffEq.DPRKN6,OrdinaryDiffEq.InterpolationData{DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},Array{Float64,1},Array{Array{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},1},1},OrdinaryDiffEq.DPRKN6ConstantCache{Float64,Float64}},DiffEqBase.DEStats},Nothing,ODEProblem{ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Tuple{Float64,Float64},false,Array{Float64,0},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}},DiffEqBase.StandardODEProblem},DiffEqBase.DynamicalODEFunction{false,DiffEqBase.ODEFunction{false,typeof(dyn_v),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},DiffEqBase.ODEFunction{false,typeof(dyn_x),LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing}},LinearAlgebra.UniformScaling{Bool},Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing,Nothing},Base.Iterators.Pairs{Symbol,DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}},Tuple{Symbol},NamedTuple{(:callback,),Tuple{DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCallbacks.var"#33#38"{Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}},DiffEqCallbacks.var"#35#40"{Bool,DiffEqCallbacks.var"#37#42"{Bool},DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},Base.RefValue{Union{Nothing, Float64}},DiffEqCallbacks.var"#34#39"{DiffEqSensitivity.var"#94#96"{Base.RefValue{Int64},Array{Float64,1}},DiffEqSensitivity.var"#95#97"{var"#5#6",InterpolatingAdjoint{0,true,Val{:central},ZygoteVJP,Bool},Base.OneTo{Int64},UnitRange{Int64},LinearAlgebra.UniformScaling{Bool},Bool,Nothing,Nothing,Nothing,Nothing,Bool,Array{Float64,1},Array{Float64,1},ArrayPartition{Float64,Tuple{ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}},ArrayPartition{Float64,Tuple{Array{Float64,0},Array{Float64,1}}}}},Base.RefValue{Int64},Int64,LinearAlgebra.UniformScaling{Bool}},Base.RefValue{Union{Nothing, Float64}}}}}}}}}},DiffEqBase.StandardODEProblem}) at /home/samuela/.julia/packages/DiffEqBase/kRzKx/src/solve.jl:72
 [22] top-level scope at /home/samuela/dev/research/julia/odecontrol/difftaichi/zygote_bug.jl:42
 [23] include(::String) at ./client.jl:457
 [24] top-level scope at REPL[1]:1
in expression starting at /home/samuela/dev/research/julia/odecontrol/difftaichi/zygote_bug.jl:42
ChrisRackauckas commented 4 years ago

ArrayPartitions as u0 work, and that's tested in https://github.com/SciML/DiffEqSensitivity.jl/blob/master/test/local_sensitivity/second_order_odes.jl since second order ODEs solve an ODEProblem defined with a u0 that is an ArrayPartition. So this issue is specific to ArrayPartition{ArrayPartition}, and it's specifically a Zygote issue. ReverseDiff.jl doesn't support custom array types at all, so it's not really the issue other than the fact that it has a hard limitation that it won't work 🤷 , so we'll stick to Zygote here.

And it's a bug because Zygote's type handling for abstract array types is incorrect. Essentially, when it sees AbstractArrays, it thinks it has license to change those to Array or CuArray, which is does implicitly inside of its adapt calls, but it doesn't and it shouldn't. How is ArrayPartition supported then? Well, because it's common enough in DiffEq, I specifically worked around this bug here:

https://github.com/SciML/DiffEqSensitivity.jl/blob/master/src/local_sensitivity/derivative_wrappers.jl#L294-L298

However, given that there are infinitely many types, I don't think doing the ArrayPartition{ArrayPartition} case is going to be viable, so I think I'll call in @DhairyaLGandhi that we need a better solution to this. This is a very good MWE of what I'd say is a direct consequence of incorrect decisions made when defining the interface in https://fluxml.ai/Zygote.jl/dev/adjoints/#Custom-Types-1 . Specifically, @adjoint width(p::Point) = p.x, x̄ -> (Point(x̄, 0),) is not a good or composable idea because there are cases where you cannot just replace other values in a type with 0: that type might require the field to be non-numeric, or here, it might need to be sized in a way that you cannot easily define in the adjoint. Because of this sizing issue, there does not exist a completely usable definition for ArrayPartition's adjoints in the Zygote system, hence this hack to make this case work. Another case where this shows up is in Dual numbers, where dual numbers should support multi-partial duals, but exactly this same issue happens: you cannot correctly define adjoints of multi-partial duals in the current system. This is the reason why the current support:

https://github.com/SciML/DiffEqFlux.jl/blob/master/src/DiffEqFlux.jl#L57-L68

only handles single partial dual numbers (and asserts this). And then, because the pullback is wants to give a Dual number (which is the root of all of the problems IMO), the derivative a function that builds and uses a dual will be a dual number. Or in another way of writing it: the derivative of a real input function with a real output which has an intermediate portion that is a dual number will give the gradient as a dual number (???), violating all of the standard Zygote usage assumptions. You then have to work around it:

https://github.com/SciML/DiffEqFlux.jl/blob/master/src/DiffEqFlux.jl#L57-L68

This is what was mentioned in https://github.com/FluxML/Zygote.jl/pull/510#issuecomment-593116576 .

What these examples are really demonstrating is that not all array or number types can actually be supported in the current interface for defining adjoints of constructors, so IMO this is probably the main thing to fix in Zygote since it is the root of a lot of compatability issues. Since it would be necessarily breaking (since it would break adjoint definitions), it may be good to line up a change here with @keno's major AD change. We should discuss this on one of the next community calls, but dual numbers are a good example of a number type that can't really be handled here and ArrayPartition is an example of an Array, where exactly this problem of nesting ArrayPartition{ArrayPartition} comes in because you cannot necessarily define zero just from type information (which is true for a lot of array and number types!)