Can someone help me make a function for determining a global stiffness matrix for a truss?
23 次查看(过去 30 天)
显示 更早的评论
I am confused on where to start and I can't get function command to not have errors.
2 个评论
Geoff Hayes
2016-2-4
Benjamin - please clarify what you mean by I can't get function command to not have errors. If you have coded a function then please post it with the errors that you are observing so that we can try to help you understand where the problem is.
KSSV
2016-2-4
Are you using Finite element Method to get stiffness matrix of truss? You will not get a function inbuilt in MATLAB to get stiffness, you have to go through the equations and write you code depending on the numerical technique you are following.
回答(1 个)
Nagulavancha Sai Preetham
2022-6-18
clear
ne = input("No Of Elements : ");
n = input("No Of Nodes : ");
A = input("Enter A in m^2 : ");
E = input("Enter E kN/m^2 : ");
K(2*n, 2*n) = 0;
XY(n,2)=0;
for i = 1 : n
XY(i,1) = input("X Coordinates of Node " + i + " : ");
XY(i,2) = input("Y Coordinates of Node " + i + " : ");
end
Ele(ne, 4) = 0;
for i = 1 : ne
Ele(i,1) = input("Start Node of Element " + i + " : ");
Ele(i,2) = input("End Node of Element " + i + " : ");
Ele(i,3) = ((XY(Ele(i,1),1)-XY(Ele(i,2),1))^2 + (XY(Ele(i,1),2)-XY(Ele(i,2),2))^2 )^(1/2);
Ele(i,4) = atan((XY(Ele(i,1),2)-XY(Ele(i,2),2))/(XY(Ele(i,1),1)-XY(Ele(i,2),1)));
end
for i = 1 : ne
K(Ele(i,1)*2-1,Ele(i,1)*2-1) = K(Ele(i,1)*2-1,Ele(i,1)*2-1) + cos(Ele(i,4))^2*(A*E/Ele(i,3));
K(Ele(i,1)*2-1,Ele(i,1)*2) = K(Ele(i,1)*2-1,Ele(i,1)*2) + cos(Ele(i,4))*sin(Ele(i,4))*(A*E/Ele(i,3));
K(Ele(i,1)*2-1,Ele(i,2)*2-1) = K(Ele(i,1)*2-1,Ele(i,2)*2-1) - cos(Ele(i,4))^2*(A*E/Ele(i,3));
K(Ele(i,1)*2-1,Ele(i,2)*2) = K(Ele(i,1)*2-1,Ele(i,2)*2) - cos(Ele(i,4))*sin(Ele(i,4))*(A*E/Ele(i,3));
K(Ele(i,1)*2,Ele(i,1)*2-1) = K(Ele(i,1)*2,Ele(i,1)*2-1) + cos(Ele(i,4))*sin(Ele(i,4))*(A*E/Ele(i,3));
K(Ele(i,1)*2,Ele(i,1)*2) = K(Ele(i,1)*2,Ele(i,1)*2) + sin(Ele(i,4))^2*(A*E/Ele(i,3));
K(Ele(i,1)*2,Ele(i,2)*2-1) = K(Ele(i,1)*2,Ele(i,2)*2-1) - cos(Ele(i,4))*sin(Ele(i,4))*(A*E/Ele(i,3));
K(Ele(i,1)*2,Ele(i,2)*2) = K(Ele(i,1)*2,Ele(i,2)*2) - sin(Ele(i,4))^2*(A*E/Ele(i,3));
K(Ele(i,2)*2-1,Ele(i,1)*2-1) = K(Ele(i,2)*2-1,Ele(i,1)*2-1) - cos(Ele(i,4))^2*(A*E/Ele(i,3));
K(Ele(i,2)*2-1,Ele(i,1)*2) = K(Ele(i,2)*2-1,Ele(i,1)*2) - cos(Ele(i,4))*sin(Ele(i,4))*(A*E/Ele(i,3));
K(Ele(i,2)*2-1,Ele(i,2)*2-1) = K(Ele(i,2)*2-1,Ele(i,2)*2-1) + cos(Ele(i,4))^2*(A*E/Ele(i,3));
K(Ele(i,2)*2-1,Ele(i,2)*2) = K(Ele(i,2)*2-1,Ele(i,2)*2) + cos(Ele(i,4))*sin(Ele(i,4))*(A*E/Ele(i,3));
K(Ele(i,2)*2,Ele(i,1)*2-1) = K(Ele(i,2)*2,Ele(i,1)*2-1) - cos(Ele(i,4))*sin(Ele(i,4))*(A*E/Ele(i,3));
K(Ele(i,2)*2,Ele(i,1)*2) = K(Ele(i,2)*2,Ele(i,1)*2) - sin(Ele(i,4))^2*(A*E/Ele(i,3));
K(Ele(i,2)*2,Ele(i,2)*2-1) = K(Ele(i,2)*2,Ele(i,2)*2-1) + cos(Ele(i,4))*sin(Ele(i,4))*(A*E/Ele(i,3));
K(Ele(i,2)*2,Ele(i,2)*2) = K(Ele(i,2)*2,Ele(i,2)*2) + sin(Ele(i,4))^2*(A*E/Ele(i,3));
end
k = input("Enter Number of Q known : ");
Qk(k,1) = 0;
Dk(2*n-k,1) = 0;
Qu(2*n-k,1) = 0;
Du(k,1) = 0;
for i = 1 : k
Qk(i,1) = input("Enter known Q " + i + " in kN/m^2 : " );
end
for i = k+1 : 1 : 2*n
Dk(i,1) = input("Enter known D " + i + " in m : " );
end
k1 = K(1:k,1:k);
k2 = K(k+1:2*n,1:k);
Du = (k1^-1)*Qk;
Qu = k2*Du;
disp("ELement Information");
disp(Ele);
disp("Stiffness Matrix of System");
disp(K);
disp("D unknown in mm");
disp(1000*Du);
disp("Q unknown");
disp(Qu);
K is the Global Stiffness Matrix. Just make sure you number the nodes and members beforehand and enter the values in the right order. The code also returns the reaction forces and displacements aswell.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structural Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!