# Index in position 3 exceeds array bounds (must not exceed 1).

5 views (last 30 days)
Taylor Davis on 25 Feb 2020
Answered: Vimal Rathod on 28 Feb 2020
I'm currently changing a 2D Truss program to 3D and im not sure how to change line 22. The excel file is attatched if needed

Sindar on 25 Feb 2020
Actually, I'll teach you an easier trick. Run this in the command line:
dbstop if error
then, run your code as before. As soon as it reaches that error, it will stop and enter debug mode. Then, run these lines in the command window and copy the output here:
ksize=size(k)
Ksize=size(K)
Tsize=size(T)
IDsize=size(ID)
Ssize=size(S)
In debug mode, you can also mouse over variables in the function to see their values (or sizes, for larger arrays). This is an invaluable tool for cases like this where the issue is that the size of different variables are not compatible with what you're trying to do with them.
Taylor Davis on 25 Feb 2020
Ok this is what came up when I did that
Sindar on 25 Feb 2020
Ok, lots of thoughts:
Most likely, K and S(ID,ID,ID) should be 6x6x6.
So, it seems like ID should be 1x6, so that S(ID,ID,ID) is 6x6x6. This implies that either NID gain a third element, or there is another element in the ID pattern from NID(1) and NID(2). I couldn't immediately tell you which, but
NID=MEMBERS(i,1:3)
is easy to implement. Then you can check the sizes of everything again and see if they make sense (and, whether the code errors)

Vimal Rathod on 28 Feb 2020
Going through the comments it is evident that when calling
S(ID,ID,ID) = S(ID,ID,ID) + K;
The size of S(ID,ID,ID) is 4*4*4 and size of K is 6*6 which doesn't match and thus you will be getting a error as:
Array dimensions must match for binary array op.
You must change your code accordingly making sure that the dimensions match.