92 lines
3.4 KiB
Mathematica
92 lines
3.4 KiB
Mathematica
|
|
%%%%%%%%%%% һ<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
|