Hi, I am trying to implement from scratch some 3D multibody dynamics with ModelingToolkit.jl. When I define my connector (Frame) using arrays:
using ModelingToolkit
using LinearAlgebra
using ModelingToolkit: t_nounits as t, D_nounits as D
@connector Frame begin
r(t)[1:3]
q(t)[1:4]
f(t)[1:3], [connect=Flow]
τ(t)[1:3], [connect=Flow]
end
@named f = Frame()
I get the following error:
ERROR: MethodError: no method matching CartesianIndices(::Tuple{SubArray{Any, 1, Vector{Any}, Tuple{UnitRange{Int64}}, true}})
The type `CartesianIndices` exists, but no method is defined for this combination of argument types when trying to construct it.
Closest candidates are:
CartesianIndices(::Tuple{})
@ Base multidimensional.jl:271
CartesianIndices(::RecursiveArrayTools.AbstractVectorOfArray)
@ RecursiveArrayTools C:\Users\francesco capolupo\.julia\packages\RecursiveArrayTools\DX3HL\src\vector_of_array.jl:684
CartesianIndices(::AbstractArray)
@ Base multidimensional.jl:281
...
Stacktrace:
[1] eachindex(A::Symbolics.Arr{Num, 1})
@ Symbolics C:\Users\francesco capolupo\.julia\packages\Symbolics\YbNrd\src\arrays.jl:589
[2] iterate(A::Symbolics.Arr{Num, 1})
@ Base .\abstractarray.jl:1207
[3]
@ Main .\none:0
[4] __Frame__
@ .\none:0 [inlined]
[5] #_#441
@ C:\Users\francesco capolupo\.julia\packages\ModelingToolkit\0O7FS\src\systems\model_parsing.jl:25 [inlined]
[6] top-level scope
@ C:\Users\francesco capolupo\.julia\packages\ModelingToolkit\0O7FS\src\systems\abstractsystem.jl:2113
Some type information was truncated. Use `show(err)` to see complete types.
Everything works fine if, instead of using arrays, I use scalar components:
@connector Frame2 begin
x(t)
y(t)
z(t)
qs(t)
qx(t)
qy(t)
qz(t)
fx(t), [connect=Flow]
fy(t), [connect=Flow]
fz(t), [connect=Flow]
τx(t), [connect=Flow]
τy(t), [connect=Flow]
τz(t), [connect=Flow]
end
@named f2 = Frame2()
┌ Warning: f2 contains 6 flow variables, yet 7 regular (non-flow, non-stream, non-input, non-output) variables. This could lead to imbalanced model that are difficult to debug. Consider marking some of the regular variables as input/output variables.
└ @ ModelingToolkit C:\Users\francesco capolupo\.julia\packages\ModelingToolkit\0O7FS\src\systems\connectors.jl:54
Model f2:
Equations (13):
13 connecting: see equations(expand_connections(f2))
Unknowns (13): see unknowns(f2)
x(t)
y(t)
z(t)
qs(t)
qx(t)
qy(t)
⋮
Am I doing something wrong with the arrays? Thanks!