diff --git a/src/concrete_solve.jl b/src/concrete_solve.jl index aeb85ad6f..0b35fc76c 100644 --- a/src/concrete_solve.jl +++ b/src/concrete_solve.jl @@ -372,11 +372,6 @@ function DiffEqBase._concrete_solve_adjoint( saveat = eltype(prob.tspan)[], save_idxs = nothing, kwargs...) - if !(sensealg isa GaussAdjoint) && - !(p isa Union{Nothing, SciMLBase.NullParameters, AbstractArray}) || - (p isa AbstractArray && !Base.isconcretetype(eltype(p))) - throw(AdjointSensitivityParameterCompatibilityError()) - end if p === nothing || p isa SciMLBase.NullParameters tunables, repack = p, identity diff --git a/src/parameters_handling.jl b/src/parameters_handling.jl index e30ddb232..4d1f4eddf 100644 --- a/src/parameters_handling.jl +++ b/src/parameters_handling.jl @@ -9,6 +9,7 @@ recursive_copyto!(y::AbstractArray, x::AbstractArray) = copyto!(y, x) recursive_copyto!(y::AbstractArray, x::Number) = y .= x recursive_copyto!(y::Tuple, x::Tuple) = map(recursive_copyto!, y, x) +recursive_copyto!(y::AbstractArray, x::Tuple) = recursive_copyto!(y, only(x)) function recursive_copyto!(y::NamedTuple{F}, x::NamedTuple{F}) where {F} map(recursive_copyto!, values(y), values(x)) end diff --git a/src/sensitivity_interface.jl b/src/sensitivity_interface.jl index 84321f067..7769e562b 100644 --- a/src/sensitivity_interface.jl +++ b/src/sensitivity_interface.jl @@ -413,10 +413,7 @@ function _adjoint_sensitivities(sol, sensealg, alg; callback = nothing, kwargs...) mtkp = SymbolicIndexingInterface.parameter_values(sol) - if !(mtkp isa Union{Nothing, SciMLBase.NullParameters, AbstractArray}) || - (mtkp isa AbstractArray && !Base.isconcretetype(eltype(mtkp))) - throw(AdjointSensitivityParameterCompatibilityError()) - end + rcb = nothing if sol.prob isa ODEProblem adj_prob, rcb = ODEAdjointProblem(sol, sensealg, alg, t, dgdu_discrete,