Professional Documents
Culture Documents
convertc=char(ANSWER);
prec=str2num(convertc);
h=prec;
%%%%%%%%%%%%%%%%%%%%
%Compliance matrix %
%%%%%%%%%%%%%%%%%%%%
S=[1/E1, -v12/E1, 0 ; -v12/E1, 1/E2, 0 ; 0, 0, 1/G12];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Calculating the stiffness matrix %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Q=inv(S);
theta_r=deg2rad(theta);
dh1=zeros(length(theta):1);
dh2=zeros(length(theta):1);
dh3=zeros(length(theta):1);
for H=2:length(h)
dh1(H-1)=h(H-1)-h(H);
dh2(H-1)=(h(H-1))^2-(h(H))^2;
dh3(H-1)=(h(H-1))^3-(h(H))^3;
end
%Thickness of laminate
thickness=abs(dh1);
thickness=sum(thickness);
%Stress and Strain Transformation matrices
for i=1:length(theta)
m=cos(theta_r(i));
n=sin(theta_r(i));
Ttheta{i}=[m^2, n^2, 2*m*n ; n^2, m^2, -2*m*n ; -m*n, m*n, ((m^2)-(n^2))];
Tepsilon{i}=[m^2, n^2, m*n ; n^2, m^2, -m*n ; -2*m*n, 2*m*n, ((m^2)-(n^2))];
end
%Overall stiffness and Compliance matrices
for j=1:length(theta)
Qtheta{j}=inv(Ttheta{j})*Q*Tepsilon{j};
Stheta{j}=inv(Qtheta{j});
end
%Laminate stiffness matrix
A=zeros(3,3);
B=zeros(3,3);
D=zeros(3,3);
for k=1:3
for l=1:3
for o=1:length(theta)
Adummy=Qtheta{o}(k,l)*dh1(o);
A(k,l)=A(k,l)+Adummy;
end
end
end
for k=1:3
for l=1:3
for o=1:length(theta)
Bdummy=Qtheta{o}(k,l)*dh2(o);
B(k,l)=B(k,l)+1/2*Bdummy;
end
end
end
for k=1:3
for l=1:3
for o=1:length(theta)
Ddummy=Qtheta{o}(k,l)*dh3(o);
D(k,l)=D(k,l)+1/3*Ddummy;
end
end
end
if symmetric==1
a=inv(A);
b=inv(B);
c=inv(B);
d=inv(D);
else
Bs=-((inv(A))*B);
Cs=B*(inv(A));
Ds=D-((B*(inv(A)))*B);
a=(inv(A))-(((Bs)*((inv(Ds))))*Cs)
b=-Bs*(inv(Ds))
c=(inv(Ds))*Cs
d=inv(Ds)
end
ABD_Matrix=[A,B;B,D];
abcd_Matrix=[a,b;c,d];
small_cri=10e-5;
small_cri2=10e-15;
large_cri=10e8;
if ~issparse(ABD_Matrix);
id=abs(ABD_Matrix)<=small_cri;
ABD_Matrix(id)=0;
end
if ~issparse(abcd_Matrix);
id=abs(abcd_Matrix)>=large_cri;
abcd_Matrix(id)=0;
end
if ~issparse(abcd_Matrix);
id=abs(abcd_Matrix)<=small_cri2;
abcd_Matrix(id)=0;
end
%Laminate properties in x-y axes in extension
Ex=1/(a(1,1)*thickness);
Ey=1/(a(2,2)*thickness);
Gxy=1/(a(3,3)*thickness);
vxy=-a(2,1)/a(1,1);
vyx=-a(1,2)/a(2,2);
n31=a(1,3)/a(3,3);
n23=a(3,2)/a(2,2);
f = figure('Position',[300 600 600 90]);
data=[Ex Ey Gxy vxy vyx n31 n23];
SigmaxT(i)=StressT{i}(1);
SigmaxB(i)=StressB{i}(1);
Sigma1T(i)=Stress1T{i}(1);
Sigma1B(i)=Stress1B{i}(1);
SigmayT(i)=StressT{i}(2);
SigmayB(i)=StressB{i}(2);
Sigma2T(i)=Stress1T{i}(2);
Sigma2B(i)=Stress1B{i}(2);
TauxyT(i)=StressT{i}(3);
TauxyB(i)=StressB{i}(3);
Tau12T(i)=Stress1T{i}(3);
Tau12B(i)=Stress1B{i}(3);
end
%Transposing the Sigma arrays
SigmaxT=SigmaxT';
SigmaxB=SigmaxB';
Sigma1T=Sigma1T';
Sigma1B=Sigma1B';
SigmayT=SigmayT';
SigmayB=SigmayB';
Sigma2T=Sigma2T';
Sigma2B=Sigma2B';
TauxyT=TauxyT';
TauxyB=TauxyB';
Tau12T=Tau12T';
Tau12B=Tau12B';
f5 = figure('Position',[400 400 1140 400]);
data=[SigmaxT SigmaxB SigmayT SigmayB TauxyT TauxyB Sigma1T Sigma1B Sigma2T Sigm
a2B Tau12T Tau12B];
cnames = {'Sigma x (Top)', 'Sigma x (Bottom)','Sigma y (Top)', 'Sigma y (Bottom)
','Tau xy (Top)','Tau xy (Bottom)','Sigma 1 (Top)', 'Sigma 1 (Bottom)','Sigma 2
(Top)', 'Sigma 2 (Bottom)','Tau 12 (Top)','Tau 12 (Bottom)'};
t = uitable('Parent',f5,'Data',data,'ColumnName',cnames,'RowName',theta,'Positio
n',[20 20 1100 360]);
set(f5,'Name','Stresses in each ply');
prompt={'Sigma 1T [N/m^2]','Sigma 2T [N/m^2]','Sigma 1C [N/m^2]','Sigma 2C [N/m^
2]','Tau 12 [N/m^2]'};
def={'2280e6','57e6','1440e6','228e6','71e6'};
TITLE='Ultimate Stress Values';
ANSWER=inputdlg(prompt,TITLE,1,def,options);
convertc=char(ANSWER);
prec=str2num(convertc);
US1T=prec(1);
US2T=prec(2);
US1C=prec(3);
US2C=prec(4);
US12=prec(5);
Failure=[Sigma1T, Sigma1B, Sigma2T, Sigma2B, Tau12T, Tau12B];
for i=1:2
for j=1:length(theta)
if abs(Failure(j,i))>=US1T | abs(Failure(j:i))>=US1C
Check{j,i}='Fail';
else
if Failure(j,i)>0
Percent=100*Failure(j,i)/US1T;
else
Percent=-100*Failure(j,i)/US1C;
end
Check{j,i}=Percent;
end
end
end
for i=3:4
for j=1:length(theta)
if abs(Failure(j,i))>=US2T | abs(Failure(j:i))>=US2C
Check{j,i}='Fail';
else
if Failure(j,i)>0
Percent=100*Failure(j,i)/US2T;
else
Percent=-100*Failure(j,i)/US2C;
end
Check{j,i}=Percent;
end
end
end
for i=5:6
for j=1:length(theta)
if abs(Failure(j,i))>=US12
Check{j,i}='Fail';
else
if Failure(j,i)>0
Percent=100*Failure(j,i)/US12;
else
Percent=-100*Failure(j,i)/US12;
end
Check{j,i}=Percent;
end
end
end
for i=1:2
for j=1:length(theta)
if abs(Failure(j,i))>=US1T | abs(Failure(j:i))>=US1C
Check{j,i}='Fail';
else
if Failure(j,i)>0
Percent=100*Failure(j,i)/US1T;
else
Percent=-100*Failure(j,i)/US1C;
end
Check{j,i}=Percent;
end
end
end
for i=3:4
for j=1:length(theta)
if abs(Failure(j,i))>=US2T | abs(Failure(j:i))>=US2C
Check{j,i}='Fail';
else
if Failure(j,i)>0
Percent=100*Failure(j,i)/US2T;
else
Percent=-100*Failure(j,i)/US2C;
end
Check{j,i}=Percent;
end
end
end
for i=5:6
for j=1:length(theta)
if abs(Failure(j,i))>=US12
Check{j,i}='Fail';
else
if Failure(j,i)>0
Percent=100*Failure(j,i)/US12;
else
Percent=-100*Failure(j,i)/US12;
end
Check{j,i}=Percent;
end
end
end
for j=1:length(theta)
if Sigma2T(j)<0
Tsai{j,1}=(Sigma1T(j)/US1C)^2 + (Sigma2T(j)/US2C)^2 + (Tau12T(j)/US12)^2
- (Sigma1T(j)/US1C)*(Sigma2T(j)/US1C);
else
Tsai{j,1}=(Sigma1T(j)/US1C)^2 + (Sigma2T(j)/US2T)^2 + (Tau12T(j)/US12)^2
- (Sigma1T(j)/US1C)*(Sigma2T(j)/US1C);
end
end
for j=1:length(theta)
if Sigma2T(j)<0
Tsai{j,2}=(Sigma1B(j)/US1C)^2 + (Sigma2B(j)/US2C)^2 + (Tau12B(j)/US12)^2
- (Sigma1B(j)/US1C)*(Sigma2B(j)/US1C);
else
Tsai{j,2}=(Sigma1B(j)/US1C)^2 + (Sigma2B(j)/US2T)^2 + (Tau12B(j)/US12)^2
- (Sigma1B(j)/US1C)*(Sigma2B(j)/US1C);
end
end
for i=1:length(theta)
if Tsai{i,1}>1 |Tsai{i,2}>1
Tsai{i,3}='Failed';
else
Tsai{i,3}='Pass';
end
end
f6 = figure('Position',[50 50 800 290]);
data=[Check];
cnames = {'Fibre Dir(% of UTS)','Fibre Dir(% of UTS)','Transverse Dir(% of UTS)'
,'Transverse Dir(% of UTS)','Shear (% of UTS)','Shear (% of UTS)'};
t = uitable('Parent',f6,'Data',data,'ColumnName',cnames,'RowName',theta,'Positio
n',[20 20 760 250]);
set(f6,'Name','Check for Failure using Maximum Stress Criterion (FPF located at
position of maximum stress)');
f7 = figure('Position',[870 50 380 290]);
data=Tsai;
cnames = {'Top of layer','Bottom of layer','Fail= >1'};
t = uitable('Parent',f7,'Data',data,'ColumnName',cnames,'RowName',theta,'Positio
n',[20 20 340 250]);
set(f7,'Name','Check for Failure using Tsai-Hill Theory');