ERROR: Invalid Tag object:
Expected ForwardDiff.Tag{ModelingToolkit.PFFun{ODEFunction{true, SciMLBase.AutoSpecialize, FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, MTKParameters{Vector{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, MTKParameters{Vector{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, MTKParameters{Vector{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, MTKParameters{Vector{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, FunctionWrappersWrappers.AllowNonIsBits, FunctionWrappersWrappers.SingleCacheStorage}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, ModelingToolkitBase.ObservedFunctionCache{System, Nothing}, Nothing, System, Union{Nothing, SciMLBase.OverrideInitData}, Union{Nothing, SciMLBase.ODENLStepData}}, SymbolicIndexingInterface.OOPSetter{false, System, Vector{Any}}}, SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymReal}},
Observed ForwardDiff.Tag{ModelingToolkit.PFFun{ODEFunction{true, SciMLBase.AutoSpecialize, FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, MTKParameters{Vector{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, MTKParameters{Vector{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, MTKParameters{Vector{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, MTKParameters{Vector{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, FunctionWrappersWrappers.AllowNonIsBits, FunctionWrappersWrappers.SingleCacheStorage}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, ModelingToolkitBase.ObservedFunctionCache{System, Nothing}, Nothing, System, Union{Nothing, SciMLBase.OverrideInitData}, Union{Nothing, SciMLBase.ODENLStepData}}, SymbolicIndexingInterface.OOPSetter{false, System, Vector{Any}}}, Any}.
Stacktrace:
[1] checktag(::Type{ForwardDiff.Tag{…}}, f::ModelingToolkit.PFFun{ODEFunction{…}, SymbolicIndexingInterface.OOPSetter{…}}, x::Vector{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{…}})
@ ForwardDiff D:\bamboo\.julia\packages\ForwardDiff\IleGP\src\config.jl:34
[2] checktag(::ForwardDiff.JacobianConfig{…}, f::ModelingToolkit.PFFun{…}, x::Vector{…})
@ ForwardDiff D:\bamboo\.julia\packages\ForwardDiff\IleGP\src\config.jl:191
[3] jacobian(::ModelingToolkit.PFFun{…}, ::Vector{…}, ::DifferentiationInterfaceForwardDiffExt.ForwardDiffTwoArgJacobianPrep{…}, ::AutoForwardDiff{…}, ::Vector{…}, ::DifferentiationInterface.Constant{…}, ::DifferentiationInterface.Constant{…}, ::DifferentiationInterface.Constant{…})
@ DifferentiationInterfaceForwardDiffExt D:\bamboo\.julia\packages\DifferentiationInterface\qwb0w\ext\DifferentiationInterfaceForwardDiffExt\twoarg.jl:469
[4] (::ModelingToolkit.PreparedJacobian{…})(::Vector{…}, ::Vararg{…})
@ ModelingToolkit D:\bamboo\.julia\packages\ModelingToolkit\GtdTx\src\linearization.jl:370
[5] (::ModelingToolkit.LinearizationFunction{…})(u::Vector{…}, p::MTKParameters{…}, t::Float64)
@ ModelingToolkit D:\bamboo\.julia\packages\ModelingToolkit\GtdTx\src\linearization.jl:520
[6] solve(prob::LinearizationProblem{ModelingToolkit.LinearizationFunction{…}, Float64}; allow_input_derivatives::Bool)
@ ModelingToolkit D:\bamboo\.julia\packages\ModelingToolkit\GtdTx\src\linearization.jl:664
[7] linearize(sys::System, lin_fun::ModelingToolkit.LinearizationFunction{…}; t::Float64, op::Dict{…}, allow_input_derivatives::Bool, p::SciMLBase.NullParameters)
@ ModelingToolkit D:\bamboo\.julia\packages\ModelingToolkit\GtdTx\src\linearization.jl:991
[8] linearize(sys::System, inputs::Vector{Any}, outputs::Vector{Any}; op::Dict{Any, Any}, t::Float64, allow_input_derivatives::Bool, zero_dummy_der::Bool, kwargs::@Kwargs{})
@ ModelingToolkit D:\bamboo\.julia\packages\ModelingToolkit\GtdTx\src\linearization.jl:1107
[9] linearize(sys::System, inputs::Vector{Any}, outputs::Vector{Any})
@ ModelingToolkit D:\bamboo\.julia\packages\ModelingToolkit\GtdTx\src\linearization.jl:1071
[10] top-level scope
@ REPL[104]:1
Some type information was truncated. Use `show(err)` to see complete types.
Add any other context about the problem here.
Describe the bug 🐞
Linearization of an MTK system fails due to an
Invalid Tag objectwhen no input or outputs are provided.This used to work on MTK v10, but I have no specific versions to report.
Expected behavior
A linearization call such as
linearize(model,[],[])should not fail, and return state-space matrices.Of course, since no input/output is provided, only the state matrix A should be non-empty.
Minimal Reproducible Example 👇
Error & Stacktrace⚠️
Environment (please complete the following information):
using Pkg; Pkg.status()using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)versioninfo()Additional context
Add any other context about the problem here.