Closed
Description
Example
using ModelingToolkit
function sum_terms(A)
s = 0
for a in A
s += a
end
return s
end
@register sum_terms(A)
function submodel(;name)
@variables t y(t)
@parameters A[1:5]
D = Differential(t)
ODESystem(D(y) ~ sum_terms(A) * y)
end
# Buid system
@named sys1 = submodel()
@named sys2 = submodel()
# this is okay
display(sys1)
@variables t
sys = ODESystem([0 ~ sys1.y + sys2.y ], t; systems=[sys1, sys2]);
# This fails
display(sys)
Output:
Model ##ODESystem#275 with 1 equations
States (1):
y(t)
Parameters (5):
A[5]
A[4]
A[3]
A[2]
A[1]
Model ##ODESystem#277 with 3 equations
States (2):
var"##ODESystem#276₊y"(t)
var"##ODESystem#275₊y"(t)
ERROR: LoadError: Cannot get name of A[5]
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:33
[2] getname(t::Term{Real, Base.ImmutableDict{DataType, Any}})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:136
[3] renamespace(namespace::Symbol, x::Term{Real, Base.ImmutableDict{DataType, Any}}, name::Nothing)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:318
[4] renamespace
@ ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:314 [inlined]
[5] states
@ ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:409 [inlined]
[6] parameters(sys::ODESystem, v::Term{Real, Base.ImmutableDict{DataType, Any}})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:410
[7] #60
@ ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:412 [inlined]
[8] iterate
@ ./generator.jl:47 [inlined]
[9] _collect(c::Vector{Term{Real, Base.ImmutableDict{DataType, Any}}}, itr::Base.Generator{Vector{Term{Real, Base.ImmutableDict{DataType, Any}}}, ModelingToolkit.var"#60#61"{ODESystem}}, #unused#::Base.EltypeUnknown, isz::Base.HasShape{1})
@ Base ./array.jl:691
[10] collect_similar
@ ./array.jl:606 [inlined]
[11] map
@ ./abstractarray.jl:2294 [inlined]
[12] parameters(sys::ODESystem, vs::Vector{Term{Real, Base.ImmutableDict{DataType, Any}}})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:412
[13] namespace_parameters(sys::ODESystem)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:331
[14] _broadcast_getindex_evalf
@ ./broadcast.jl:648 [inlined]
[15] _broadcast_getindex
@ ./broadcast.jl:621 [inlined]
[16] getindex
@ ./broadcast.jl:575 [inlined]
[17] copy
@ ./broadcast.jl:922 [inlined]
[18] materialize
@ ./broadcast.jl:883 [inlined]
[19] parameters(sys::ODESystem)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:382
[20] show(io::IOContext{Base.TTY}, #unused#::MIME{Symbol("text/plain")}, sys::ODESystem)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/yGWxM/src/systems/abstractsystem.jl:585
[21] (::REPL.var"#38#39"{REPL.REPLDisplay{REPL.LineEditREPL}, MIME{Symbol("text/plain")}, Base.RefValue{Any}})(io::Any)
@ REPL /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:220
[22] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
@ REPL /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:462
[23] display(d::REPL.REPLDisplay, mime::MIME{Symbol("text/plain")}, x::Any)
@ REPL /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:213
[24] display(d::REPL.REPLDisplay, x::Any)
@ REPL /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:225
[25] display(x::Any)
@ Base.Multimedia ./multimedia.jl:328
[26] top-level scope
@ ~/Documents/EEG/NeuralCellFit/src/mtk_vectors.jl:30
[27] include(fname::String)
@ Base.MainInclude ./client.jl:444
[28] top-level scope
@ REPL[66]:1
in expression starting at /Users/alexwadell/Documents/EEG/NeuralCellFit/src/mtk_vectors.jl:30
Oddly enough sum_terms
does work while sum
(#1165 ) does not
Metadata
Metadata
Assignees
Labels
No labels