-
-
Notifications
You must be signed in to change notification settings - Fork 232
Closed
Description
The example below throws an exception when supplying default_u0
but not without
using ModelingToolkit, ControlSystems
using ControlSystems: ssdata, AbstractStateSpace, Continuous, nstates, noutputs, ninputs
import ModelingToolkit: ODESystem
function ODESystem(sys::AbstractStateSpace{Continuous}; name::Symbol)
A,B,C,D = ssdata(sys)
nx,ny,nu = nstates(sys), noutputs(sys), ninputs(sys)
@parameters t
@variables x[1:nx](t) y[1:ny](t) u[1:nu](t)
Dₜ = Differential(t)
eqs = [
Dₜ.(x) .~ A*x .+ B*u
y .~ C*x .+ D*u
]
ODESystem(eqs; name, default_u0 = zeros(nx)) # errors
# ODESystem(eqs; name) # works
end
sys = ControlSystems.DemoSystems.resonant()
linearsys = ODESystem(sys; name=:Linearsys)
julia> linearsys = ODESystem(sys; name=:Linearsys)
ERROR: ArgumentError: Dict(kv): kv needs to be an iterator of tuples or pairs
Stacktrace:
[1] Dict(kv::Vector{Float64})
@ Base ./dict.jl:132
[2] ODESystem(deqs::Vector{Equation}, iv::Sym{ModelingToolkit.Parameter{Real}, Nothing}, dvs::Vector{Any}, ps::OrderedCollections.OrderedSet{Any}; observed::Vector{Num}, systems::Vector{ODESystem}, name::Symbol, default_u0::Vector{Float64}, default_p::Dict{Any, Any})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/DQzuf/src/systems/diffeqs/odesystem.jl:92
[3] ODESystem(eqs::Vector{Equation}, iv::Nothing; kwargs::Base.Iterators.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:name, :default_u0), Tuple{Symbol, Vector{Float64}}}})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/DQzuf/src/systems/diffeqs/odesystem.jl:174
[4] ODESystem(sys::StateSpace{Continuous, Float64}; name::Symbol)
@ Main ~/.julia/dev/ControlSystems/src/modelingtoolkit.jl:15
[5] top-level scope
@ REPL[35]:1
Metadata
Metadata
Assignees
Labels
No labels