Hello,
I have created a MWE where the indexing of symbolic arrays begins to fail when I provide an initial guess for the variables as data for MTK. If I remove the guess, the indexing works fine.
Edit, more info: if the guess is provided as a scalar this works properly.
function testsymarray()
@variables begin
b(t)[1:10, 1:10, 1:10], [guess = fill(0.0, 10, 10, 10), irreducible=true]
end
var_tuple = (b = b,)
eqs = Equation[]
append!(eqs, somefunction(var_tuple))
end
function somefunction(var_tuple)
(; b) = var_tuple
b_first = b[1:end,1,1]
return Symbolics.scalarize(b_first .~ 0.0)
end
testsymarray()
ERROR: ArgumentError: invalid index: i of type SymbolicUtils.BasicSymbolic{Int64}
Stacktrace:
[1] to_index(i::SymbolicUtils.BasicSymbolic{Int64})
@ Base ./indices.jl:315
[2] to_index(A::Array{Float64, 3}, i::SymbolicUtils.BasicSymbolic{Int64})
@ Base ./indices.jl:292
[3] to_indices
@ ./indices.jl:368 [inlined]
[4] to_indices
@ ./indices.jl:359 [inlined]
[5] getindex(::Array{Float64, 3}, ::SymbolicUtils.BasicSymbolic{Int64}, ::Int64, ::Int64)
@ Base ./abstractarray.jl:1312
[6] (::Symbolics.var"#229#231"{…})(::SymbolicUtils.BasicSymbolic{…}, ::SymbolicUtils.BasicSymbolic{…}, ::SymbolicUtils.BasicSymbolic{…}, ::Vararg{…})
@ Symbolics ~/.julia/packages/Symbolics/B6Z8m/src/variable.jl:39
[7] (::Symbolics.var"#329#330"{…})(::SymbolicUtils.BasicSymbolic{…}, ::SymbolicUtils.BasicSymbolic{…}, ::Vararg{…})
@ Symbolics ~/.julia/packages/Symbolics/B6Z8m/src/array-lib.jl:12
[8] getindex(::SymbolicUtils.BasicSymbolic{Array{Real, 3}}, ::SymbolicUtils.BasicSymbolic{Int64}, ::Int64, ::Int64)
@ Symbolics ~/.julia/packages/Symbolics/B6Z8m/src/array-lib.jl:86
[9] getindex(::SymbolicUtils.BasicSymbolic{Array{Real, 3}}, ::UnitRange{Int64}, ::Int64, ::Int64)
@ Symbolics ~/.julia/packages/Symbolics/B6Z8m/src/array-lib.jl:76
[10] getindex(::Symbolics.Arr{Num, 3}, ::UnitRange{Int64}, ::Int64, ::Int64)
@ Symbolics ~/.julia/packages/Symbolics/B6Z8m/src/array-lib.jl:94