Stitching together matrices/ indexing matrices
이전 댓글 표시
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
Kyle McLaughlin
2020년 10월 15일
답변 (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
Kyle McLaughlin
2020년 10월 15일
Kyle McLaughlin
2020년 10월 15일
Asad (Mehrzad) Khoddam
2020년 10월 16일
So the connectivity array of the first element is:
% element 1
%[1, 2, 3, 4]
% element 2
%[3, 4, 5, 6]
% element 3
%[5, 6 , 7, 8]
% and element 4:
%[7, 8, 9, 10]
cArray = [1:4];
K(cArray, cArray) = K(cArray, cArray) + k;
cArray = [3:6];
K(cArray, cArray) = K(cArray, cArray) + k;
cArray = [5:8];
K(cArray, cArray) = K(cArray, cArray) + k;
cArray = [7:10];
K(cArray, cArray) = K(cArray, cArray) + k;
Kyle McLaughlin
2020년 10월 16일
편집: Kyle McLaughlin
2020년 10월 16일
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);
Kyle McLaughlin
2020년 10월 19일
카테고리
도움말 센터 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!