Matlab Code to Produce the ABD Matrix for Composite
Material Laminate
This code has been written as a homework for the Mechanics of
Composite Materials Class
The Code can be used with acknowledgement of the developers:
Mohammad A. Al-Qaralleh
Moath H. Al-Safasfeh
Key words: Fiber Reinforcement Polymers (FRP), Lamina, Constitutive relationship,
Stress tensor, Strain tensor,
%% input the material properties
%% E1,E2,V12,G12
fprintf('please insert the material properties \n');
promptE1 = 'please insert E1 ';
promptE2 = 'please insert E2 ';
promptV12 = 'please insert V12 ';
promptG12 = 'please insert G12 ';
E1=input(promptE1);E2=input(promptE2);V12=input(promptV12);G12=input(promptG1
2);V21=E2*V12/E1;
prompt_thickness='please insert the ply thickness ';
t=input(prompt_thickness);
promptK = 'please insert number of plies';
K=input(promptK);
orientation=zeros(1,K);
fprintf('please insert the plies orientation form bottom to top \n')
%%%%%%%Orientation Matrix
for i= 1:K
fprintf('please insert the material properties theta %i \n',i);
prompt_theta = '';
theta=input(prompt_theta);
orientation(1,i)=theta;
end
%disp(orientation);
%%%%%%%%%% Q matrix elements
Q11= E1/(1-V12*V21); Q22= E2/(1-V12*V21); Q12=(V12*E2)/(1-
V12*V21);Q21=(V12*E2)/(1-V12*V21);
Q66= G12;
Q=[Q11 Q12 0; Q21 Q22 0; 0 0 Q66];
R=[1 0 0;0 1 0; 0 0 2];
Rinv=[1 0 0;0 1 0; 0 0 0.5];
%%%%%%%%%% for looop starting for different layers
M = cell(K, 1) ;
for n= 1:K
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%Calculate the vlues of m & n
c=cosd(orientation(1,n));%% degree
s=sind(orientation(1,n));%% degree
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Transformation Matrix
a11=c.^2; a12=s.^2; a13=2*c*s;
a21=s.^2; a22=c.^2; a23=(-2*c*s);
a31=(-c*s); a32=c*s; a33=c.^2-s.^2;
T=[a11 a12 a13;a21 a22 a23;a31 a32 a33];
Q_bar=inv(T)*Q*R*T*Rinv;
%Q_bar=R*inv(T)*Rinv*Q*T;
%disp(Q_bar);
M{n}=Q_bar;
end
%%%%%%%%% Z loop
Z=zeros(1,(K+1));
h=K*t;
for j=1:K+1
Z(1,j)=h/2-t*(j-1);
end
%disp(Z);
%%%%%%%%%%%%% end of for layers
aa=0;
bb=0;
dd=0;
A=zeros(3,3);
B=zeros(3,3);
D=zeros(3,3);
for yy=1:3
for zz= 1:3
for xx= 1:n
aa= aa+(M{xx}(yy,zz))*(Z(1,(xx))-Z(1,xx+1));
bb=(bb+(M{xx}(yy,zz))*(Z(1,(xx+1))^2-(Z(1,xx))^2));
dd=(dd+(M{xx}(yy,zz))*(Z(1,(xx))^3-(Z(1,xx+1))^3));
end
A(zz,yy)=aa;
B(zz,yy)=0.5*bb;
D(zz,yy)=(1/3)*dd;
aa=0;
bb=0;
dd=0;
end%%% for zz
end%%%for yy
fprintf('Matrix A = \n'); disp (A);
fprintf('Matrix B = \n'); disp (B);
fprintf('Matrix D = \n'); disp (D);
ABBD=zeros(6,6);
ABBD=[A(1,1) A(1,2) A(1,3) B(1,1) B(1,2) B(1,3);
A(2,1) A(2,2) A(2,3) B(2,1) B(2,2) B(2,3);
A(3,1) A(3,2) A(3,3) B(3,1) B(3,2) B(3,3);
B(1,1) B(1,2) B(1,3) D(1,1) D(1,2) D(1,3);
B(2,1) B(2,2) B(2,3) D(2,1) D(2,2) D(2,3);
B(3,1) B(3,2) B(3,3) D(3,1) D(3,2) D(3,3)];
fprintf('Matrix ABBD = \n'); disp (ABBD);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%