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

📄 plot_bend_tri.m

📁 结构力学中的有限元例子,包含了7个分类文件夹
💻 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 + -