SciML / DifferentialEquations.jl

Multi-language suite for high-performance solvers of differential equations and scientific machine learning (SciML) components. Ordinary differential equations (ODEs), stochastic differential equations (SDEs), delay differential equations (DDEs), differential-algebraic equations (DAEs), and more in Julia.
https://docs.sciml.ai/DiffEqDocs/stable/
Other
2.86k stars 230 forks source link

Incorrect cache types for stiff solvers #849

Closed jonniedie closed 2 years ago

jonniedie commented 2 years ago

One of the tests I run for ComponentArrays to make sure we're in line with LabelledArrays for stiff solvers looks like this:

using ComponentArrays
using DifferentialEquations
using LabelledArrays

function f1(du,u,p,t)
   du.x .= -1 .* u.x .* u.y .* p[1]
   du.y .= -1 .* u.y .* p[2]
end

const n = 100

p = [0.1,0.1]

lu_0 = @LArray fill(1000.0,2*n) (x=(1:n), y=(n+1:2*n))
cu_0 = ComponentArray(x=fill(1000.0, n), y=fill(1000.0, n))

lprob1 = ODEProblem(f1,lu_0,(0,100.0),p)
cprob1 = ODEProblem(f1,cu_0,(0,100.0),p)

lsol = solve(lprob1, Rodas5());
lsol = solve(lprob1, Rodas5(autodiff=false));
csol = solve(cprob1, Rodas5());
csol = solve(cprob1, Rodas5(autodiff=false));

This is now failing for both LabelledArrays and ComponentArrays (albeit at different places).

For LabelledArrays, the du cache is created at some point to just be a plain Vector type instead of a LArray. The call in the error stacktrace looks like:

f1(du::Vector{Float64}, u::LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, p::Vector{Float64}, t::Float64)

For ComponentArrays, it looks like the problem might be a missing conversion method for LinearSolve.LinearCache. This is what's causing https://github.com/jonniedie/ComponentArrays.jl/issues/119.

I'm not sure the two problems are actually related, but I thought maybe the ComponentArrays one will hit the same issue that LabelledArrays does once the LinearCache thing is cleared up (the only reason ComponentArrays hits this problem and LabelledArrays doesn't is that ComponentArrays keep their ComponentArrayness through outer product expansion). Let me know if you want me to open a separate issue on for the LinearCache thing.

jonniedie commented 2 years ago

Full stacktrace for the LabelledArrays one:

julia> lsol = solve(lprob1, Rodas5());
ERROR: type Array has no field x
Stacktrace:
  [1] getproperty
    @ .\Base.jl:42 [inlined]
  [2] dotgetproperty(x::Vector{Float64}, f::Symbol)
    @ Base .\Base.jl:45
  [3] f1(du::Vector{Float64}, u::LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, p::Vector{Float64}, t::Float64)
    @ Main C:\Users\jdiegelm\.julia\dev\ComponentArrays\issue_debug\Issue_36.jl:6
  [4] (::ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing})(::Vector{Float64}, ::Vararg{Any})
    @ SciMLBase C:\Users\jdiegelm\.julia\packages\SciMLBase\pr0Dt\src\scimlfunctions.jl:345
  [5] ode_determine_initdt(u0::LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, t::Float64, tdir::Float64, dtmax::Float64, abstol::Float64, reltol::Float64, internalnorm::typeof(DiffEqBase.ODE_DEFAULT_NORM), prob::ODEProblem{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, integrator::OrdinaryDiffEq.ODEIntegrator{Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, true, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Nothing, Float64, Vector{Float64}, Float64, Float64, Float64, Float64, Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, ODESolution{Float64, 2, Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}}, ODEProblem{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, Vector{Float64}, Vector{Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}}, OrdinaryDiffEq.Rosenbrock5Cache{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Matrix{Float64}, Matrix{Float64}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{Matrix{Float64}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}}, LinearAlgebra.Diagonal{Float64, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, Float64}, SparseDiffTools.ForwardColorJacCache{LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, (x = 1:100, y = 101:200)}, LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, (x = 1:100, y = 101:200)}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}}, DiffEqBase.DEStats}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, OrdinaryDiffEq.Rosenbrock5Cache{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Matrix{Float64}, Matrix{Float64}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{Matrix{Float64}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}}, LinearAlgebra.Diagonal{Float64, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, Float64}, SparseDiffTools.ForwardColorJacCache{LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, (x = 1:100, y = 101:200)}, LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, (x = 1:100, y = 101:200)}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, PIController{Rational{Int64}}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Float64, Nothing, OrdinaryDiffEq.DefaultInit})
    @ OrdinaryDiffEq C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\initdt.jl:49
  [6] auto_dt_reset!
    @ C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\integrators\integrator_interface.jl:346 [inlined]
  [7] handle_dt!(integrator::OrdinaryDiffEq.ODEIntegrator{Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, true, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Nothing, Float64, Vector{Float64}, Float64, Float64, Float64, Float64, Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, ODESolution{Float64, 2, Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, 
y = 101:200)}}}, ODEProblem{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, 
Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, Vector{Float64}, Vector{Vector{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}}, OrdinaryDiffEq.Rosenbrock5Cache{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Matrix{Float64}, Matrix{Float64}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{Matrix{Float64}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}}, LinearAlgebra.Diagonal{Float64, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, Float64}, SparseDiffTools.ForwardColorJacCache{LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, (x = 1:100, y = 101:200)}, LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, 
(x = 1:100, y = 101:200)}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, (x = 
1:100, y = 101:200)}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}}, DiffEqBase.DEStats}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, OrdinaryDiffEq.Rosenbrock5Cache{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Matrix{Float64}, Matrix{Float64}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{Matrix{Float64}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}}, LinearAlgebra.Diagonal{Float64, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}}, Float64}, SparseDiffTools.ForwardColorJacCache{LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, (x = 1:100, y = 101:200)}, LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, (x = 1:100, y = 101:200)}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, LArray{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, 1, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, (x = 1:100, y 
= 101:200)}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, PIController{Rational{Int64}}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, 
DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Float64, Nothing, OrdinaryDiffEq.DefaultInit})
    @ OrdinaryDiffEq C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\solve.jl:504
  [8] __init(prob::ODEProblem{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, alg::Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, timeseries_init::Tuple{}, ts_init::Tuple{}, ks_init::Tuple{}, recompile::Type{Val{true}}; saveat::Tuple{}, tstops::Tuple{}, d_discontinuities::Tuple{}, save_idxs::Nothing, save_everystep::Bool, save_on::Bool, save_start::Bool, save_end::Nothing, callback::Nothing, 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::Rational{Int64}, beta1::Nothing, beta2::Nothing, qoldinit::Rational{Int64}, controller::Nothing, fullnormalize::Bool, failfactor::Int64, 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.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ OrdinaryDiffEq C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\solve.jl:466
  [9] __init(prob::ODEProblem{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, alg::Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, timeseries_init::Tuple{}, ts_init::Tuple{}, ks_init::Tuple{}, recompile::Type{Val{true}}) (repeats 5 times)
    @ OrdinaryDiffEq C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\solve.jl:67
 [10] #__solve#499
    @ C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\solve.jl:4 [inlined]
 [11] __solve
    @ C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\solve.jl:4 [inlined]
 [12] #solve_call#37
    @ C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:61 [inlined]
 [13] solve_call(_prob::ODEProblem{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, args::Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing})
    @ DiffEqBase C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:48
 [14] solve_up(prob::ODEProblem{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, sensealg::Nothing, u0::LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, p::Vector{Float64}, args::Rodas5{0, true, Nothing, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ DiffEqBase C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:87
 [15] solve_up
    @ C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:78 [inlined]
 [16] #solve#38
    @ C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:73 [inlined]
 [17] solve(prob::ODEProblem{LArray{Float64, 1, Vector{Float64}, (x = 1:100, y = 101:200)}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, args::Rodas5{0, true, Nothing, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing})
    @ DiffEqBase C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:68
 [18] top-level scope
    @ REPL[14]:1

And for the ComponentArrays one:

julia> csol = solve(cprob1, Rodas5());
ERROR: MethodError: Cannot `convert` an object of type 
  LinearSolve.LinearCache{ComponentArray{Float64{},2,Array{Float64{},2},Tuple{Axis{(x = 1:100, y = 101:200)},Axis{(x = 1:100, y = 101:200)}}},ComponentArray{Float64{},1,Array{Float64{},1},Tuple{Axis{(x = 1:100, y = 101:200)}}},ComponentArray{Float64{},1,Array{Float64{},1},Tuple{Axis{(x = 1:100, y = 101:200)}}},SciMLBase.NullParameters{},LUFactorization{LinearAlgebra.RowMaximum{}},LinearAlgebra.LU{Float64{},ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}},LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64{},ComponentArray{Float64{},1,Array{Float64{},1},Tuple{Axis{(x = 1:100, y = 101:200)}}}}},LinearAlgebra.Diagonal{Float64{},ComponentArray{Float64{},1,Array{Float64{},1},Tuple{Axis{(x = 1:100, y = 101:200)}}}},Float64{}} to an object of type
  LinearSolve.LinearCache{ComponentArray{Float64{},2,Array{Float64{},2},Tuple{Axis{(x = 1:100, y = 101:200)},Axis{(x = 1:100, y = 101:200)}}},ComponentArray{Float64{},1,Array{Float64{},1},Tuple{Axis{(x = 1:100, y = 101:200)}}},ComponentArray{Float64{},1,Array{Float64{},1},Tuple{Axis{(x = 1:100, y = 101:200)}}},SciMLBase.NullParameters{},LUFactorization{LinearAlgebra.RowMaximum{}},LinearAlgebra.LU{Float64{},Matrix{Float64}},LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64{},ComponentArray{Float64{},1,Array{Float64{},1},Tuple{Axis{(x = 1:100, y = 101:200)}}}}},LinearAlgebra.Diagonal{Float64{},ComponentArray{Float64{},1,Array{Float64{},1},Tuple{Axis{(x = 1:100, y = 101:200)}}}},Float64{}}
Closest candidates are:
  convert(::Type{T}, ::T) where T at C:\Users\jdiegelm\AppData\Local\Programs\Julia\Julia-1.7.0\share\julia\base\essentials.jl:218
  LinearSolve.LinearCache{TA, Tb, Tu, Tp, Talg, Tc, Tl, Tr, Ttol}(::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any) where {TA, Tb, Tu, Tp, Talg, Tc, Tl, Tr, Ttol} at C:\Users\jdiegelm\.julia\packages\LinearSolve\7jCfY\src\common.jl:2
Stacktrace:
  [1] setproperty!(x::OrdinaryDiffEq.Rosenbrock5Cache{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Float64}, SparseDiffTools.ForwardColorJacCache{ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, 
Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, 
Float64, 1}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}, f::Symbol, v::LinearSolve.LinearCache{ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Float64})
    @ Base .\Base.jl:43
  [2] perform_step!(integrator::OrdinaryDiffEq.ODEIntegrator{Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, true, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Nothing, Float64, Vector{Float64}, Float64, Float64, Float64, Float64, Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, ODESolution{Float64, 2, Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, ODEProblem{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Vector{Float64}, Vector{Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, OrdinaryDiffEq.Rosenbrock5Cache{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Float64}, SparseDiffTools.ForwardColorJacCache{ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, 
Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}}, DiffEqBase.DEStats}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, OrdinaryDiffEq.Rosenbrock5Cache{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, 
Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Float64}, SparseDiffTools.ForwardColorJacCache{ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, PIController{Rational{Int64}}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Float64, Nothing, OrdinaryDiffEq.DefaultInit}, cache::OrdinaryDiffEq.Rosenbrock5Cache{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Float64}, SparseDiffTools.ForwardColorJacCache{ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}, repeat_step::Bool)
    @ OrdinaryDiffEq C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\perform_step\rosenbrock_perform_step.jl:1668
  [3] perform_step!
    @ C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\perform_step\rosenbrock_perform_step.jl:1468 [inlined]
  [4] solve!(integrator::OrdinaryDiffEq.ODEIntegrator{Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, true, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Nothing, Float64, Vector{Float64}, Float64, Float64, Float64, Float64, Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, ODESolution{Float64, 2, Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, ODEProblem{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Vector{Float64}, Vector{Vector{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, OrdinaryDiffEq.Rosenbrock5Cache{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Float64}, SparseDiffTools.ForwardColorJacCache{ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}}, DiffEqBase.DEStats}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, OrdinaryDiffEq.Rosenbrock5Cache{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, OrdinaryDiffEq.Rodas5Tableau{Float64, Float64}, SciMLBase.TimeGradientWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Float64}}, SciMLBase.UJacobianWrapper{ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Float64, Vector{Float64}}, LinearSolve.LinearCache{ComponentMatrix{Float64, Matrix{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}, Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, SciMLBase.NullParameters, LUFactorization{LinearAlgebra.RowMaximum}, LinearAlgebra.LU{Float64, Matrix{Float64}}, LinearSolve.InvPreconditioner{LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}}, LinearAlgebra.Diagonal{Float64, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}}, Float64}, SparseDiffTools.ForwardColorJacCache{ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 12}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Vector{Vector{NTuple{12, Float64}}}, UnitRange{Int64}, Nothing}, ComponentVector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{OrdinaryDiffEq.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, 
Float64, Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}}, OrdinaryDiffEq.DEOptions{Float64, Float64, Float64, Float64, PIController{Rational{Int64}}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}}, ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Float64, Nothing, OrdinaryDiffEq.DefaultInit})
    @ OrdinaryDiffEq C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\solve.jl:478
  [5] #__solve#499
    @ C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\solve.jl:5 [inlined]
  [6] __solve
    @ C:\Users\jdiegelm\.julia\packages\OrdinaryDiffEq\Op0Oq\src\solve.jl:4 [inlined]
  [7] #solve_call#37
    @ C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:61 [inlined]
  [8] solve_call(_prob::ODEProblem{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, args::Rodas5{12, true, LUFactorization{LinearAlgebra.RowMaximum}, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing})
    @ DiffEqBase C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:48
  [9] solve_up(prob::ODEProblem{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, sensealg::Nothing, u0::ComponentVector{Float64}, p::Vector{Float64}, args::Rodas5{0, true, Nothing, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ DiffEqBase C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:87
 [10] solve_up
    @ C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:78 [inlined]
 [11] #solve#38
    @ C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:73 [inlined]
 [12] solve(prob::ODEProblem{ComponentVector{Float64, Vector{Float64}, Tuple{Axis{(x = 1:100, y = 101:200)}}}, Tuple{Float64, Float64}, true, Vector{Float64}, ODEFunction{true, typeof(f1), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, args::Rodas5{0, true, Nothing, typeof(OrdinaryDiffEq.DEFAULT_PRECS), Val{:forward}, true, nothing})
    @ DiffEqBase C:\Users\jdiegelm\.julia\packages\DiffEqBase\Y5mGv\src\solve.jl:68
 [13] top-level scope
    @ REPL[15]:1
ChrisRackauckas commented 2 years ago

It seems like u .* u' now creates a ComponentMatrix which is not preserved by lu(J) operations. Fixing this is probably best done via an overload:

import ArrayInterface
ArrayInterface.zeromatrix(u::ComponentArray) = similar(u,length(u),length(u))
ChrisRackauckas commented 2 years ago

The reason for the LabelledArray issue is:

lu_0 ./ 1.0 # Vector

@yingboma how do we make that use the right broadcast similar? I thought constants would be handled?

https://github.com/SciML/LabelledArrays.jl/blob/master/src/larray.jl#L115-L128

YingboMa commented 2 years ago

Ah, sweet broadcast again... I will look into it.

YingboMa commented 2 years ago

It looks correct:

julia> x ./ 1
3-element LArray{Float64, 1, Vector{Float64}, (:a, :b, :c)}:
 :a => 1.0
 :b => 2.0
 :c => 3.0

Is there an MWE?

ChrisRackauckas commented 2 years ago
using LabelledArrays
const n = 100
lu_0 = @LArray fill(1000.0, 2 * n) (x = (1:n), y = (n+1:2*n))
lu_0 ./ 1.0 # Vector
YingboMa commented 2 years ago

I see. It only happens with the range version.

YingboMa commented 2 years ago

Fixed in https://github.com/SciML/LabelledArrays.jl/pull/114

ChrisRackauckas commented 2 years ago

The fix for component arrays is https://github.com/jonniedie/ComponentArrays.jl/pull/121