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

📄 plot_results_tri.m

📁 结构力学中的有限元例子,包含了7个分类文件夹
💻 M
📖 第 1 页 / 共 2 页
字号:
   xlabel(fg);
end;

% 'Stress field - MAX (blue - tension)';
fg2 = ['max: ' num2str(maxSIGmax) '    ' 'min: ' num2str(minSIGmax)];

%SF_ = zeros(size(in_data.EL,1), 3);
%SF_(1:size(in_data.EL,1),1)=[1:size(in_data.EL,1)]';
%  for i=1:size(in_data.EL,1)
      % disp([ sprintf('\t %d\t %1.7f\t %1.7f\t %0.4g ',i, MAX_SIG(i),MIN_SIG(i),ANm(i)  ) ]);
%      SF_(i,2:end) = [SIGsys(i*2-(2-1):i*2)]';
%  end;
%save STRESS_FEM.txt SF_ -ascii;  
%  disp(['max: ' num2str(maxSIGmax) '   min:  ' num2str(minSIGmin)]);
% plot XX/YY stresses ==========================================================

figure(NF+1); hold on;

max_D_x = max(abs(resp.static.D(1:2:dof(1))));
max_D_y = max(abs(resp.static.D(2:2:dof(1))));

ND_d = in_data.ND;

deN = max([max_D_x  max_D_y]);
ND_d(:,2) = in_data.ND(:,2)+(resp.static.D(1:2:dof(1))'./deN)*labx;
ND_d(:,3) = in_data.ND(:,3)+(resp.static.D(2:2:dof(1))'./deN)*laby;

maxXd = max(ND_d(:,2)); minXd = min(ND_d(:,2));
maxYd = max(ND_d(:,3)); minYd = min(ND_d(:,3));
%labx = (maxX / 6); laby = (maxY / 6);



maxSIGxx = max(SIGsys(1:3:length(SIGsys)));
minSIGxx = min(SIGsys(1:3:length(SIGsys)));

maxSIGyy = max(SIGsys(2:3:length(SIGsys)));
minSIGyy = min(SIGsys(2:3:length(SIGsys)));

maxSIGxy = max(SIGsys(3:3:length(SIGsys)));
minSIGxy = min(SIGsys(3:3:length(SIGsys)));

% plot XX stresses field in colors --------------------

subplot(121); plot(in_data.ND(:,2),in_data.ND(:,3),'b.','MarkerSize',4);
axis equal; axis off; hold on;
axis([(minX-labx) (maxX+labx) (minY-laby) (maxY+laby)]);
for i=1:size(in_data.EL)
   yy = (SIGsys(i*3-2) - minSIGxx)*1/(maxSIGxx - minSIGxx); % depth of black 
   if in_data.EL(i,2)==4  % "4" - CST element (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));
      fill([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)],[yy yy yy]);
   end;
   if in_data.EL(i,2)==5  % "5" - CST element (quadrilateral) 
      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));
      fill([in_data.ND(node1,2) in_data.ND(node2,2) in_data.ND(node3,2) in_data.ND(node4,2) in_data.ND(node1,2)], ...
         [in_data.ND(node1,3) in_data.ND(node2,3) in_data.ND(node3,3) in_data.ND(node4,3) in_data.ND(node1,3)],[yy yy yy]);
   end;
end;
title('Stress field - XX');

% plot XX stresses field in colors --------------------

subplot(122); plot(in_data.ND(:,2),in_data.ND(:,3),'b.','MarkerSize',4);
axis equal; axis off; hold on;
axis([(minX-labx) (maxX+labx) (minY-laby) (maxY+laby)]);
for i=1:size(in_data.EL)
   yy = (SIGsys(i*3-1) - minSIGyy)*1/(maxSIGyy - minSIGyy); % depth of black 
   if in_data.EL(i,2)==4  % "4" - CST element (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));
      fill([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)],[yy yy yy]);
   end;
   if in_data.EL(i,2)==5  % "5" - CST element (quadrilateral) 
      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));
      fill([in_data.ND(node1,2) in_data.ND(node2,2) in_data.ND(node3,2) in_data.ND(node4,2) in_data.ND(node1,2)], ...
         [in_data.ND(node1,3) in_data.ND(node2,3) in_data.ND(node3,3) in_data.ND(node4,3) in_data.ND(node1,3)],[yy yy yy]);
   end;
end;
title('Stress field - YY');

% plot deformed ================================================================

subplot(121); plot(ND_d(:,2),ND_d(:,3),'r.','MarkerSize',4); 
axis equal; axis off; hold on;
%axis([(minX-labx) (maxX+labx) (minY-laby) (maxY+laby)]);

for i=1:size(in_data.EL)
   if in_data.EL(i,2)==4  % "4" - CST element (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));
      plot([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)],'r-');
   end;
   if in_data.EL(i,2)==5  % "5" - CSQ element (quadrilateral) 
      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));
      plot([ND_d(node1,2) ND_d(node2,2) ND_d(node3,2) ND_d(node4,2) ND_d(node1,2)],...
       [ND_d(node1,3) ND_d(node2,3) ND_d(node3,3) ND_d(node4,3) ND_d(node1,3)],'r-');
   end;
end;


subplot(122); plot(ND_d(:,2),ND_d(:,3),'r.','MarkerSize',4);
axis equal; axis off; hold on;
%axis([(minX-labx) (maxX+labx) (minY-laby) (maxY+laby)]);

for i=1:size(in_data.EL)
   if in_data.EL(i,2)==4  % "4" - CST element (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));
      plot([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)],'r-');
   end;
   if in_data.EL(i,2)==5  % "5" - CSQ element (quadrilateral) 
      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));
      plot([ND_d(node1,2) ND_d(node2,2) ND_d(node3,2) ND_d(node4,2) ND_d(node1,2)],...
       [ND_d(node1,3) ND_d(node2,3) ND_d(node3,3) ND_d(node4,3) ND_d(node1,3)],'r-');
 end;
end;
% plot loads ===================================================================
if 0
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,2)~=0 & in_data.LOAD_(i,2)>0
      subplot(121); 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',4); hold on;
      subplot(122); 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',4); hold on;
   end;
   if in_data.LOAD_(i,2)~=0 & in_data.LOAD_(i,2)<0
      subplot(121); 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',4); hold on;
      subplot(122); 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',4); hold on;
   end;
   if in_data.LOAD_(i,3)~=0 & in_data.LOAD_(i,3)>0
      subplot(121); 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',4); hold on;
      subplot(122); 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',4); hold on;
   end;
   if in_data.LOAD_(i,3)~=0 & in_data.LOAD_(i,3)<0
      subplot(121); 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',4); hold on;
      subplot(122); 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',4); hold on;
   end;
end;
end; % IF 0
% plot constrains ==============================================================
if 1
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
      subplot(121); 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;
      subplot(122); 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
      subplot(121); 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;
      subplot(122); 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;
end;
end; % IF 0/1
end; % % -- end if NF > 100

%   maxX = max(ND_d(:,2));
%   minX = min(ND_d(:,2));
%   maxY = max(ND_d(:,3));
%   minY = min(ND_d(:,3));
   
%   axis([(minX-labx) (maxX+labx) (minY-laby) (maxY+laby)]);
   
% ===========================================================================END

⌨️ 快捷键说明

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