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

📄 plot_results_brick.m

📁 FEM tools for caculation of nonlinear problems
💻 M
字号:
function plot_results_brick ( in_data, resp, dof_, SIG_main) 


NF =2;
figure(NF);
axis equal; axis off; hold on; view(3);
title('Displacements from static loads');
warning off
 
% -----------------------------------------------------------------
maxX = max(in_data.ND(:,2));   minX = min(in_data.ND(:,2));
maxY = max(in_data.ND(:,3));   minY = min(in_data.ND(:,3));
maxZ = max(in_data.ND(:,4));   minZ = min(in_data.ND(:,4));
labx = (maxX / 11); laby = (maxY / 11); labz = (maxZ / 11);
labx = min([labx laby labz]); laby = labx;  labz=labx;

deN = max([max(abs(resp.static.D(1:3:dof_(1)))) max(abs(resp.static.D(2:3:dof_(1)))) ...
        max(abs(resp.static.D(3:3:dof_(1))))]);
dx = labx *resp.static.D(1:3:dof_(1)) /deN;
dy = laby *resp.static.D(2:3:dof_(1)) /deN;
dz = labz *resp.static.D(3:3:dof_(1)) /deN;

ND_d = in_data.ND;
ND_d(:,2) = in_data.ND(:,2)+dx';
ND_d(:,3) = in_data.ND(:,3)+dy';
ND_d(:,4) = in_data.ND(:,4)+dz';

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));
    node3 = find(in_data.ND(:,1)==in_data.EL(i,5));
    node4 = find(in_data.ND(:,1)==in_data.EL(i,6));
    node5 = find(in_data.ND(:,1)==in_data.EL(i,7));
    node6 = find(in_data.ND(:,1)==in_data.EL(i,8));
    node7 = find(in_data.ND(:,1)==in_data.EL(i,9));
    node8 = find(in_data.ND(:,1)==in_data.EL(i,10));
    patch([ND_d(node1,2) ND_d(node2,2) ND_d(node6,2) ND_d(node5,2)],...
       [ND_d(node1,3) ND_d(node2,3) ND_d(node6,3) ND_d(node5,3)],...
       [ND_d(node1,4) ND_d(node2,4) ND_d(node6,4) ND_d(node5,4) ],...
          [.8 .8 .8]);
    
    patch([ND_d(node4,2) ND_d(node3,2) ND_d(node7,2) ND_d(node8,2) ],...
       [ND_d(node4,3) ND_d(node3,3) ND_d(node7,3) ND_d(node8,3) ],...
       [ND_d(node4,4) ND_d(node3,4) ND_d(node7,4) ND_d(node8,4) ],...
         [.8 .8 .8]);%,'LineWidth',1);
     
    patch([ND_d(node1,2) ND_d(node4,2) ND_d(node8,2) ND_d(node5,2) ],...
       [ND_d(node1,3) ND_d(node4,3) ND_d(node8,3) ND_d(node5,3) ],...
       [ND_d(node1,4) ND_d(node4,4) ND_d(node8,4) ND_d(node5,4) ],...
         [.8 .8 .8]);%,'LineWidth',1);
     
    patch([ND_d(node2,2) ND_d(node3,2) ND_d(node7,2) ND_d(node6,2) ],...
       [ND_d(node2,3) ND_d(node3,3) ND_d(node7,3) ND_d(node6,3) ],...
       [ND_d(node2,4) ND_d(node3,4) ND_d(node7,4) ND_d(node6,4) ],...
         [.8 .8 .8]);%,'LineWidth',1);
     
    patch([ND_d(node5,2) ND_d(node6,2) ND_d(node7,2) ND_d(node8,2) ],...
       [ND_d(node5,3) ND_d(node6,3) ND_d(node7,3) ND_d(node8,3) ],...
       [ND_d(node5,4) ND_d(node6,4) ND_d(node7,4) ND_d(node8,4) ],...
         [.8 .8 .8]);%,'LineWidth',1);
     
    patch([ND_d(node1,2) ND_d(node2,2) ND_d(node3,2) ND_d(node4,2) ],...
       [ND_d(node1,3) ND_d(node2,3) ND_d(node3,3) ND_d(node4,3) ],...
       [ND_d(node1,4) ND_d(node2,4) ND_d(node3,4) ND_d(node4,4) ],...
         [.8 .8 .8]);
end;

hold on; material dull; view(3); colormap(hsv);
       camlight; lighting gouraud; % shading interp;
set(NF,'name',['  Deformed shape. MAX(x) = '  num2str(max(ND_d(:,2))) ...
      '   MAX(y) = ' num2str(max(ND_d(:,3))) '   MAX(z) = ' num2str(max(ND_d(:,4)))],'NumberTitle','off');
rotate3d(gca); set(gcf,'Pointer','arrow');

  
figure(NF+1);
axis equal; axis off; hold on; view(3);
title('Stress field');
KL = size(in_data.EL,1);
com = 2; 
ts = 3; 
   for i=1:KL
      if in_data.EL(i,2)==6  
         
          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));
          node4 = find(in_data.ND(:,1)==in_data.EL(i,6));
          node5 = find(in_data.ND(:,1)==in_data.EL(i,7));
          node6 = find(in_data.ND(:,1)==in_data.EL(i,8));
          node7 = find(in_data.ND(:,1)==in_data.EL(i,9));
          node8 = find(in_data.ND(:,1)==in_data.EL(i,10));
         
          patch([ND_d(node1,2) ND_d(node2,2) ND_d(node6,2) ND_d(node5,2)],...
              [ND_d(node1,3) ND_d(node2,3) ND_d(node6,3) ND_d(node5,3)],...
              [ND_d(node1,4) ND_d(node2,4) ND_d(node6,4) ND_d(node5,4) ],...
              [SIG_main(node1,ts-com) SIG_main(node2,ts-com) SIG_main(node6,ts-com) SIG_main(node5,ts-com)]);
    
          patch([ND_d(node4,2) ND_d(node3,2) ND_d(node7,2) ND_d(node8,2) ],...
              [ND_d(node4,3) ND_d(node3,3) ND_d(node7,3) ND_d(node8,3) ],...
              [ND_d(node4,4) ND_d(node3,4) ND_d(node7,4) ND_d(node8,4) ],...
              [SIG_main(node4,ts-com) SIG_main(node3,ts-com) SIG_main(node7,ts-com) SIG_main(node8,ts-com)]);
     
          patch([ND_d(node1,2) ND_d(node4,2) ND_d(node8,2) ND_d(node5,2) ],...
              [ND_d(node1,3) ND_d(node4,3) ND_d(node8,3) ND_d(node5,3) ],...
              [ND_d(node1,4) ND_d(node4,4) ND_d(node8,4) ND_d(node5,4) ],...
              [SIG_main(node1,ts-com) SIG_main(node4,ts-com) SIG_main(node8,ts-com) SIG_main(node5,ts-com)]);
     
          patch([ND_d(node2,2) ND_d(node3,2) ND_d(node7,2) ND_d(node6,2) ],...
              [ND_d(node2,3) ND_d(node3,3) ND_d(node7,3) ND_d(node6,3) ],...
              [ND_d(node2,4) ND_d(node3,4) ND_d(node7,4) ND_d(node6,4) ],...
              [SIG_main(node2,ts-com) SIG_main(node3,ts-com) SIG_main(node7,ts-com) SIG_main(node6,ts-com)]);
     
          patch([ND_d(node5,2) ND_d(node6,2) ND_d(node7,2) ND_d(node8,2) ],...
              [ND_d(node5,3) ND_d(node6,3) ND_d(node7,3) ND_d(node8,3) ],...
              [ND_d(node5,4) ND_d(node6,4) ND_d(node7,4) ND_d(node8,4) ],...
              [SIG_main(node5,ts-com) SIG_main(node6,ts-com) SIG_main(node7,ts-com) SIG_main(node8,ts-com)]);
     
          patch([ND_d(node1,2) ND_d(node2,2) ND_d(node3,2) ND_d(node4,2) ],...
              [ND_d(node1,3) ND_d(node2,3) ND_d(node3,3) ND_d(node4,3) ],...
              [ND_d(node1,4) ND_d(node2,4) ND_d(node3,4) ND_d(node4,4) ],...
              [SIG_main(node1,ts-com) SIG_main(node2,ts-com) SIG_main(node3,ts-com) SIG_main(node4,ts-com)]);
      end;
  end;
   
hold on; material dull; view(3); colormap(hsv);
[Smax,i] = max(SIG_main(:,1)); [Smin,k] = min(SIG_main(:,1));
set(NF+1,'name',['  Max - node ' num2str(i) ': '  num2str(Smax) ...
      '/' num2str(max(SIG_main(i,2))) '/' num2str(max(SIG_main(i,3))) '. Min - node '...
      num2str(k) ': '  num2str(Smin) '/' num2str(max(SIG_main(k,2))) '/' ...
      num2str(max(SIG_main(k,3)))],'NumberTitle','off');
colorbar('vert');

% --------------------------------------------------------------------
if 0
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
      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)],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)],'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)-labx],[in_data.ND(node_i,3) in_data.ND(node_i,3)],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)],'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)],[in_data.ND(node_i,3) in_data.ND(node_i,3)+laby],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)],'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)],[in_data.ND(node_i,3) in_data.ND(node_i,3)-laby],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)],'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)],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)+labz],'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)],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)-labz],'r-','LineWidth',4); hold on;
   end;
end;
end % END if 0
% --------------------------------------------------------------
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
      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)],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)],'k-','LineWidth',2); hold on;
   end;
   if in_data.CON(i,3)==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],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)],'k-','LineWidth',2); 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)],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)-labz],'k-','LineWidth',2); hold on;
   end;
   if in_data.CON(i,4)==0 | in_data.CON(i,5)==0 | in_data.CON(i,6)==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)],...
         [in_data.ND(node_i,4) in_data.ND(node_i,4)],'ks','LineWidth',2); hold on;
   end;
end;

% ===========================================================================END
axis([(minX-labx) (maxX+labx) (minY-laby) (maxY+laby) (minZ-labz) (maxZ+labz)]);
rotate3d(gca); set(gcf,'Pointer','arrow');
warning on

⌨️ 快捷键说明

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