FEM-Course-Matlab/15.温度应力问题有限元编程/OutputResults.m

92 lines
3.4 KiB
Mathematica
Raw Normal View History

2024-01-28 16:46:36 +00:00
%%%%%%%%%%% һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>txt<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ) %%%%%%%%%%%
% OutputTXT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
% Nodes<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
% Elements<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>Ϣ
% D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>-Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
% Uλ<EFBFBD>ƾ<EFBFBD><EFBFBD><EFBFBD>
function OutputResults(OutputTXT,Nodes,Elements,D,U,epsilon0)
NodeCount = size(Nodes,1) ; % <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ElementCount= size(Elements,1);%<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ElementNodeCount=8;% ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>
Dof=3;
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD>ڵ<EFBFBD>Ӧ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ֵ
[NodeStrain,NodeStress,GaussStrain,GaussStress]=CalculateStrainAndStress(U,D,Nodes,Elements,epsilon0);
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MISESӦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MISES=zeros(1,ElementCount*ElementNodeCount);
for I=1:ElementCount*ElementNodeCount
MISES(I)=sqrt(0.5)*sqrt((NodeStress(1,I)-NodeStress(2,I))^2+(NodeStress(1,I)-NodeStress(3,I))^2+....
(NodeStress(2,I)-NodeStress(3,I))^2+6*(NodeStress(4,I)^2+NodeStress(5,I)^2+NodeStress(6,I)^2));
end
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Umagλ<EFBFBD>ƾ<EFBFBD><EFBFBD><EFBFBD>
Umag=zeros(NodeCount,1);
for i=1:NodeCount
Umag(i)=sqrt(U(3*i-2)^2+U(3*i-1)^2+U(3*i)^2);
end
%<EFBFBD><EFBFBD><EFBFBD>Ľڵ<EFBFBD>λ<EFBFBD>ơ<EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>TXT<EFBFBD><EFBFBD>
fprintf(OutputTXT,'\r\n Node U1 U2 U3');
for I=1:NodeCount
II=Dof*(I-1);
fprintf(OutputTXT,'\r\n%5d %11.3e %11.3e %11.3e',I,U(II+1:II+3)+0);
end
fprintf(OutputTXT,'\r\n\r\nElement GaussStrain\r\n');
fprintf(OutputTXT,'\r\n E11 E22 E33 E12 E23 E13');
for I=1:ElementCount
fprintf(OutputTXT,'\r\nElement %5d',I);
II=(I-1)*8;
fprintf(OutputTXT,'\r\n%11.3e %11.3e %11.3e %11.3e %11.3e %11.3e',GaussStrain(1:6,II+1:II+8));
end
fprintf(OutputTXT,'\r\n\r\nElement GaussStress\r\n');
fprintf(OutputTXT,'\r\n S11 S22 S33 S12 S23 S13');
for I=1:ElementCount
fprintf(OutputTXT,'\r\nElement %5d',I);
II=(I-1)*8;
fprintf(OutputTXT,'\r\n%11.3e %11.3e %11.3e %11.3e %11.3e %11.3e',GaussStress(1:6,II+1:II+8));
end
fprintf(OutputTXT,'\r\n\r\n');
fprintf(1,'\t\t *** Successful end of program ***\n');
%<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i=1:1:size(Elements,1)
points=Nodes(Elements(i,:),:);
mesh=1:1:8;%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vertices_matrix = [points(mesh(1,:),1),points(mesh(1,:),2),points(mesh(1,:),3)];
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD>˳<EFBFBD><EFBFBD>
faces_matrix= [1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8; 1 2 3 4; 5 6 7 8];%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
patch('vertices', vertices_matrix,'faces',faces_matrix,'facecolor','g');
view(3);hold on%<EFBFBD><EFBFBD>ͼ
end
axis equal
alpha(1);
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ơ<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
for i=1:Dof %<EFBFBD><EFBFBD><EFBFBD><EFBFBD>U1-U3
PlotContour(Nodes,Elements,U,U(i:3:size(U,1)))
title(['U',num2str(i)]);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
end
for i=1:size(NodeStress,1)
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ S11-S33<EFBFBD><EFBFBD>E11-E33
if i<4
PlotContour(Nodes,Elements,U,NodeStrain(i,:))
title(['E',num2str(i),num2str(i)])
PlotContour(Nodes,Elements,U,NodeStress(i,:))
title(['S',num2str(i),num2str(i)])
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>S12 S23 E12 E23<EFBFBD><EFBFBD>ͼ
elseif i<6
PlotContour(Nodes,Elements,U,NodeStrain(i,:))
title(['E',num2str(i-3),num2str(i-2)])
PlotContour(Nodes,Elements,U,NodeStress(i,:))
title(['S',num2str(i-3),num2str(i-2)])
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>S13 E13<EFBFBD><EFBFBD>ͼ
else
PlotContour(Nodes,Elements,U,NodeStrain(i,:))
title(['E',num2str(i-5),num2str(i-3)])
PlotContour(Nodes,Elements,U,NodeStress(i,:))
title(['S',num2str(i-5),num2str(i-3)])
end
end
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Umag<EFBFBD><EFBFBD>ͼ
PlotContour(Nodes,Elements,U,Umag)
title('Umag')
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MISES<EFBFBD><EFBFBD>ͼ
PlotContour(Nodes,Elements,U,MISES)
title('MISES')
end