你必须让calfem工具箱能够运行这段代码,所以我希望有人这样做!
我已经编写了一些代码来尝试显示位移,来自应用udls
,我已经使用过了
uu = extract(Edof,UU);
但他们没有在我的身影上显示,有人能弄明白为什么吗?
addpath ([cd, '/fem']);
% Constants
E = 180e9;
AB = 39.7e2; IB = 4413e4;
AC = 110e2; IC = 9449e4;
q1 = -15e3; w1 = -10e3; w2 = 5e3;
LX1 = 5; LX2 = 10; LX3 = 15; LX4 = 20;
LY1 = 5; LY2 = 8; LY3 = 9;
% Specify Node Coordinates
nodes = [ 0, 0;
0, LY1;
LX1, LY2;
LX2, LY1;
LX2, LY3;
LX3, LY2;
LX4, LY1;
LX4, 0];
% Specify Elements Nodes
conn = [1,2;
2,3;
2,4;
3,4;
3,5;
4,5;
4,6;
4,7;
5,6;
6,7;
7,8];
Nelem = length(conn);
% Initialise Structural Force/Stiffness Matrices
KK = zeros(8*3);
FF = zeros(8*3,1);
% Define Column and Beam Properties
Cprop = [E, AC, IC];
Bprop = [E, AB, IB];
% Initialise system properties
Edof = zeros(Nelem, 1+6);
Ex = zeros(Nelem, 2);
Ey = zeros(Nelem, 2);
Eq = zeros(Nelem, 2);
Eprop = zeros(Nelem,3);
for ii = 1:Nelem
% Look up nodes of element
node1 = conn(ii,1); node2 = conn(ii,2);
% Work out dof based on node number
dof1 = node1*3 + [-2,-1,0];
dof2 = node2*3 + [-2,-1,0];
% Assign to Edof
Edof(ii,:) = [ii, dof1, dof2];
% Look up coordinate based on node
x1 = nodes(node1,1); y1=nodes(node1,2);
x2 = nodes(node2,1); y2=nodes(node2,2);
% Assign to Ex and Ey
Ex(ii,:) = [x1,x2];
Ey(ii,:) = [y1,y2];
% Decide if the element is column or not
if ii==1||11;
Eprop(ii,:) = Cprop;
elseif ii==2;
Eprop(ii,:) = Bprop;
Eq(ii,:) = [0.515*w1, 0.857*w1];
elseif ii==5;
Eprop(ii,:) = Bprop;
Eq(ii,:) = [0.196*w1, 0.98*w1];
elseif ii==3||8;
Eprop(ii,:) = Bprop;
Eq(ii,:) = [0, q1];
elseif ii==9;
Eprop(ii,:) = Bprop;
Eq(ii,:) = [0.196*w2, 0.98*w2];
elseif ii==10;
Eprop(ii,:) = Bprop;
Eq(ii,:) = [0.515*w1, 0.857*w1];
else
Eprop(ii,:) = Bprop;
end
% assemble system
[KE,FE] = beam2e(Ex(ii,:), Ey(ii,:), Eprop(ii,:), Eq(ii,:));
% Combine structural Stiffness forces
[KK,FF] = assem(Edof(ii,:), KK, KE, FF,FE);
end
% Apply Boundary Conditions
bc = [1,0; 2,0; 3,0; 22,0; 23,0; 24,0];
% Solve System
[UU,RR] = solveq(KK,FF,bc);
figure(1)
% Undisplaced Shape
eldraw2(Ex,Ey,[1,1,1])
% Extract Local Displacements
uu = extract(Edof,UU);
% Plot Displaced Shape
scale = 1e2;
eldisp2(Ex,Ey, uu, [1,2,1], scale);
% Add Scale Bar for 10mm
pltscalb2(scale,[1e-2,6,6],[2]);
% Tidy up Graph
axis([-2,22,0,10])
axis equal
xlabel('X, m'); ylabel('Y, m')
title('Simple Portal Frame - Displacement')