📄 plot_bend_tri.m
字号:
function plot_bend_tri ( in_data, resp, dof, NF)
% PLOT STATIC DISPLACEMENTS FROM 'BCIZ' ELEMENT (BENDING)
% =============================================================================
% INPUT:
% in_data - structure with input data: ND, EL LOAD_, CON
% ND - nodes matrix
% EL - elements matrix
% LOAD_ - loads matrix
% CON - constrains matrix
% D - displacements vector
% dof - # of dof's
% NF - # of figure plot. For NF > 100 loads & stress values are plot !!!
% plot main stress =============================================================
if 1
figure(NF);
maxX = max(in_data.ND(:,2));
minX = min(in_data.ND(:,2));
maxY = max(in_data.ND(:,3));
minY = min(in_data.ND(:,3));
labx = (maxX / 6); laby = (maxY / 6);
labx = min(labx,laby); laby = labx;
SCz = labx*2; % Z deflection scale
labz = SCz/2;
% plot elements -------------------------------------
plot(in_data.ND(:,2),in_data.ND(:,3),'k.');
axis equal; axis off; hold on;
for i=1:size(in_data.EL)
if in_data.EL(i,2)==9 % "9" - BCIZ element (bending triangle)
node1 = find(in_data.ND(:,1)==in_data.EL(i,3));
node2 = find(in_data.ND(:,1)==in_data.EL(i,4));
node3 = find(in_data.ND(:,1)==in_data.EL(i,5));
plot3([in_data.ND(node1,2) in_data.ND(node2,2) in_data.ND(node3,2) in_data.ND(node1,2)], ...
[in_data.ND(node1,3) in_data.ND(node2,3) in_data.ND(node3,3) in_data.ND(node1,3)],...
[0 0 0 0],'k-');
end;
end;
title('Displacement shape');
xlabel('X'); ylabel('Y');
% axes('Position',[.1 .92 .06 .07]); fill([0 1 1 0],[0 0 1 1],'w');
% set(gca,'XTick',[]); set(gca,'YTick',[]); fg=num2str(maxSIGmax);text(.1,.5,fg);
% plot deformed ================================================================
max_D_z = max(abs(resp.static.D(1:3:dof(1))));
ND_d = in_data.ND;
ND_d(:,4) = (resp.static.D(1:3:dof(1))'./max_D_z)*0.5*SCz;
plot3(ND_d(:,2),ND_d(:,3),ND_d(:,4),'r.');
axis equal; axis off; view(3); hold on;
for i=1:size(in_data.EL)
if in_data.EL(i,2)==9 % "9" - BCIZ element (bending triangle)
node1 = find(ND_d(:,1)==in_data.EL(i,3));
node2 = find(ND_d(:,1)==in_data.EL(i,4));
node3 = find(ND_d(:,1)==in_data.EL(i,5));
plot3([ND_d(node1,2) ND_d(node2,2) ND_d(node3,2) ND_d(node1,2)], ...
[ND_d(node1,3) ND_d(node2,3) ND_d(node3,3) ND_d(node1,3)], ...
[ND_d(node1,4) ND_d(node2,4) ND_d(node3,4) ND_d(node1,4)],'r-');
end;
end;
if 1
% plot loads ===================================================================
if NF > 100
for i=1:size(in_data.LOAD_)
node_i = find(in_data.ND(:,1)==in_data.LOAD_(i,1));
if in_data.LOAD_(i,3)~=0 & in_data.LOAD_(i,3)>0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)+labx],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)],[0 0],'r-','LineWidth',4); hold on;
end;
if in_data.LOAD_(i,3)~=0 & in_data.LOAD_(i,3)<0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)-labx],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)],[0 0],'r-','LineWidth',4); hold on;
end;
if in_data.LOAD_(i,4)~=0 & in_data.LOAD_(i,4)>0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)+laby],[0 0],'r-','LineWidth',4); hold on;
end;
if in_data.LOAD_(i,4)~=0 & in_data.LOAD_(i,4)<0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)-laby],[0 0],'r-','LineWidth',4); hold on;
end;
if in_data.LOAD_(i,2)~=0 & in_data.LOAD_(i,2)>0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)],[0 labz],'r-','LineWidth',4); hold on;
end;
if in_data.LOAD_(i,2)~=0 & in_data.LOAD_(i,2)<0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)],[0 -labz],'r-','LineWidth',4); hold on;
end;
end;
% plot constrains ==============================================================
for i=1:size(in_data.CON)
node_i = find(in_data.ND(:,1)==in_data.CON(i,1));
if in_data.CON(i,3)==0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)-labx],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)], [0 0],'b-','LineWidth',3); hold on;
end;
if in_data.CON(i,4)==0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)-laby], [0 0],'b-','LineWidth',3); hold on;
end;
if in_data.CON(i,2)==0
plot3([in_data.ND(node_i,2) in_data.ND(node_i,2)],...
[in_data.ND(node_i,3) in_data.ND(node_i,3)], [0 labz],'b-','LineWidth',3); hold on;
end;
end;
end; % -- end if NF > 100
end;
% ===========================================================================END
axis([(minX-labx) (maxX+labx) (-minY-laby) (maxY+laby) (-SCz) (SCz)]);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -