⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plot_dyn_2dbeam.m

📁 结构力学中的有限元例子,包含了7个分类文件夹
💻 M
字号:
function plot_dyn_2Dbeam (in_data,resp,ind,dof, XXX,YYY, NF)

% plot 2D-FRAME dynamic displacements

D = resp.dynamic.DYN_D(ind,:);

dof = size(in_data.ND,1)*3; % total dof
figure(NF)
plot(in_data.ND(:,2),in_data.ND(:,3),'k.');
axis equal; axis off; hold on; view(2);
title('Displacements from static loads');
for i=1:size(in_data.EL)
   node1 = find(in_data.ND(:,1)==in_data.EL(i,3));
   node2 = find(in_data.ND(:,1)==in_data.EL(i,4));
   plot([in_data.ND(node1,2) in_data.ND(node2,2)], [in_data.ND(node1,3) in_data.ND(node2,3)],'k-','LineWidth',1);
end;
% plot deformed -----------------------------------------------------------------
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;

deN = max([XXX  YYY]);
dx = labx *D(1:3:dof(1)) /deN;
dy = laby *D(2:3:dof(1)) /deN;

plot(in_data.ND(:,2)+dx',in_data.ND(:,3)+dy','r.'); hold on;
ND_d = in_data.ND;
ND_d(:,2) = in_data.ND(:,2)+dx';
ND_d(:,3) = in_data.ND(:,3)+dy';
for i=1:size(in_data.EL)
   node1 = find(ND_d(:,1)==in_data.EL(i,3));
   node2 = find(ND_d(:,1)==in_data.EL(i,4));
   plot([ND_d(node1,2) ND_d(node2,2)], [ND_d(node1,3) ND_d(node2,3)],'r-');
end;

if 0
% plot loads --------------------------------------------------------------------
maxX = max(in_data.ND(:,2));
maxY = max(in_data.ND(:,3));
labx = (maxX / 10); laby = (maxY / 10);
for i=1:size(in_data.LOAD_)
   node_i = find(in_data.ND(:,1)==in_data.LOAD_(i,1));
   if in_data.LOAD_(i,2)~=0 & in_data.LOAD_(i,2)>0
      plot([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)],'r-',...
         'LineWidth',3); hold on;
   end;
   if in_data.LOAD_(i,2)~=0 & in_data.LOAD_(i,2)<0
      plot([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)],'r-',...
         'LineWidth',3); hold on;
   end;
   if in_data.LOAD_(i,3)~=0 & in_data.LOAD_(i,3)>0
      plot([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],'r-',...
         'LineWidth',3); hold on;
   end;
   if in_data.LOAD_(i,3)~=0 & in_data.LOAD_(i,3)<0
      plot([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],'r-',...
         'LineWidth',3); 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,2)==0
      plot([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)],'b-',...
         'LineWidth',3); hold on;
   end;
   if in_data.CON(i,3)==0
      plot([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],'b-',...
         'LineWidth',3); hold on;
   end;
   if in_data.CON(i,4)==0
      plot([in_data.ND(node_i,2) in_data.ND(node_i,2)],[in_data.ND(node_i,3) in_data.ND(node_i,3)],'bs',...
         'LineWidth',3); hold on;
   end;
end;

end; % end IF 0

axis([(minX-labx) (maxX+labx) (minY-laby) (maxY+laby)]); % plot scale

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -