66 lines
2.7 KiB
Mathematica
66 lines
2.7 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><EFBFBD> %%%%%%%%%%%
|
|||
|
|
% NodeStrain<EFBFBD>ڵ<EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
|
% NodeStress<EFBFBD>ڵ<EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
|
% GaussStrain<EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
|
% GaussStress<EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
|
% Uλ<EFBFBD>ƾ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
% D<EFBFBD>ߵ<EFBFBD><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>Ϣ
|
|||
|
|
function [NodeStrain,NodeStress,GaussStrain,GaussStress]=CalculateStrainAndStress(U,D,Nodes,Elements,epsilon0)
|
|||
|
|
ElementCount= size(Elements,1); %<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GaussCoordinate=[-0.57735026918963D0, 0.57735026918963D0]; %<EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GaussWeight=[1.00000000000000D0, 1.00000000000000D0]; %<EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ȩ<EFBFBD><EFBFBD>
|
|||
|
|
GaussPointNumber=0;%<EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
INODE=0;% <EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Dof=3;
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD> <EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|||
|
|
GaussStrain=zeros(6,ElementCount*8);
|
|||
|
|
GaussStress=zeros(6,ElementCount*8);
|
|||
|
|
NodeStrain=zeros(6,ElementCount*8);
|
|||
|
|
NodeStress=zeros(6,ElementCount*8);
|
|||
|
|
%ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ܸ<EFBFBD>
|
|||
|
|
for I=1:ElementCount
|
|||
|
|
% <EFBFBD><EFBFBD>Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ElementNodeCoordinate=Nodes(Elements(I,:),:);
|
|||
|
|
% <EFBFBD><EFBFBD><EFBFBD>㵥Ԫ<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶȱ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ElementNodeDOF=zeros(1,24);
|
|||
|
|
for J=1:8
|
|||
|
|
II=(J-1)*Dof+1;
|
|||
|
|
ElementNodeDOF(II:II+2)=(Elements(I,J)-1)*Dof+1:(Elements(I,J)-1)*Dof+3;
|
|||
|
|
end
|
|||
|
|
K=1;
|
|||
|
|
InterpolationMatrix=zeros(8,8);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>Ӧ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
%ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD>
|
|||
|
|
for X=1:2
|
|||
|
|
for Y=1:2
|
|||
|
|
for Z=1:2
|
|||
|
|
E1=GaussCoordinate(X); E2=GaussCoordinate(Y); E3=GaussCoordinate(Z);
|
|||
|
|
GaussPointNumber = GaussPointNumber + 1;
|
|||
|
|
% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
[N,NDerivative, ~] = ShapeFunction([E1 E2 E3], ElementNodeCoordinate);
|
|||
|
|
ElementNodeDisplacement=U(ElementNodeDOF);
|
|||
|
|
ElementNodeDisplacement=reshape(ElementNodeDisplacement,Dof,8);
|
|||
|
|
% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD> GausspointStrain3_3 3*3<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GausspointStrain3_3=ElementNodeDisplacement*NDerivative';
|
|||
|
|
%<EFBFBD>Ѹ<EFBFBD>˹<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>6*1
|
|||
|
|
GausspointStrain=[GausspointStrain3_3(1,1) GausspointStrain3_3(2,2) GausspointStrain3_3(3,3) ...
|
|||
|
|
GausspointStrain3_3(1,2)+GausspointStrain3_3(2,1)....
|
|||
|
|
GausspointStrain3_3(2,3)+GausspointStrain3_3(3,2) GausspointStrain3_3(1,3)+GausspointStrain3_3(3,1)]';
|
|||
|
|
% <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
|
GausspointStress = D*GausspointStrain-D*epsilon0;%<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>-<EFBFBD>¶<EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
|
GaussStrain(:,GaussPointNumber)=GausspointStrain;
|
|||
|
|
GaussStress(:,GaussPointNumber)=GausspointStress;
|
|||
|
|
InterpolationMatrix(K,:)=N;
|
|||
|
|
K=K+1;
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD>ýڵ<EFBFBD>Ӧ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>
|
|||
|
|
Temp1=InterpolationMatrix\(GaussStrain(1:6,GaussPointNumber-7:GaussPointNumber)');
|
|||
|
|
NodeStrain(1:6,INODE+1:INODE+8)=Temp1';
|
|||
|
|
Temp2=InterpolationMatrix\(GaussStress(1:6,GaussPointNumber-7:GaussPointNumber)');
|
|||
|
|
NodeStress(1:6,INODE+1:INODE+8)=Temp2';
|
|||
|
|
INODE=INODE+8;
|
|||
|
|
end
|
|||
|
|
end
|