Stitching together matrices/ indexing matrices
5 ビュー (過去 30 日間)
古いコメントを表示
Hi there any help would be appreciated...
I am a mech engineer working with rotor dynamics and am being asked to do FEA on matlab. I have the following formula for the stiffness matrix for each element: K = ( E * A / Le) * [1 -1; -1 1]. What I would like to is compute the values of these matricies for 4 elements, the soln should be 4 K matricies... and my question regarding this is how do I index these 2x2 K matricies to be K1, K2, K3, K4? When I try to do this using a For Loop, I code the following:
%noel is number of elements which is 4
for i = 1: noel
K{i} = ( E * A / Le) * [1 -1; -1 1];
end
-doing this I get an error saying theres an issue with usijng { }, I have tried [] and () and had no luck either.
(I understand it says ask one question per post but I want to include my second one for a little more context to the overall problem)
The next step I need to do is to stitch the matricies together diagonally. What I mean by this is if you consider the 2x2 to be [A B;C D] for each K value, I need to produce one final matrix consisting of adding the first and last elements of each K matrix together. EX: if K1 = [A B; C D] and K2 = [E F; G H] I want to merge them such as K_system = [A B 0; C (d+E) F; 0 G H]. I need to do this for K1-4.
Sorry for the multiple question post, do not feel obliged to answer both, I can post them separately. The dual question is for sake of context.
Thanks,
Kyle
2 件のコメント
Asad (Mehrzad) Khoddam
2020 年 10 月 15 日
In FEM, you need to fine local stiffness matrix then assemble it to the global stiffness matrix.
The location of each k_ij in K depends on the location of members and connection between them
回答 (1 件)
Asad (Mehrzad) Khoddam
2020 年 10 月 15 日
For each k, you should know the connectivity array, for example if the first element is connected to the following degrees of freedom:
cArray=[1, 2, 5, 6]
Then
K(cArray, cArray) = K(cArray, cArray) + k;
Where k is the local stiffness matrix
6 件のコメント
Asad (Mehrzad) Khoddam
2020 年 10 月 16 日
You can use this instead:
K(1,1) = k(1,1);
for i=2:9
K(i,i)=k(1,1)+k(2,2);
K(i-1,i) = k(1,2);
K(i,i-1) = k(2,1);
end
K(9,10) = k(1,2);
k(10,9) = k(2,1);
K(10,10) = k(2,2);
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!