% micro.
% fiber properties
EfL = 30.e6 ;
EfT = 2.e6 ;
nufLT = 0.22 ;
GfLT = 1.e6 ;
afL = -1.e-6 ;
afT = 6.e-6 ;
rhof = 0.065 ;
% matrix properties
Em = 0.5e6 ;
num = 0.35 ;
Gm = Em / (2 * (1 + num)) ;
am = 40.e-6 ;
rhom = 0.045 ;
% volume fractions
vf = 0.6 ; % fiber
vm = 1 - vf; % matrix
% ply properties calculated using rule of mixtures
E1 = EfL * vf + Em * vm
nu12 = nufLT * vf + num * vm
E2 = EfT * Em / (Em * vf + EfT * vm)
G12 = GfLT * Gm / (Gm * vf + GfLT * vm)
a1 = (EfL * afL * vf + Em * am * vm ) / E1
a2 = afT * vf + am * vm
% ply properties calculated using Halpin-Tsai
E1 = ( EfL * vf + Em * vm * 1) / (vf + vm * 1)
nu12 = ( nufLT * vf + num * vm * 1) / (vf + vm * 1)
E2 = (((1/EfT) * vf + (1/Em) * vm * 1/2) / (vf + vm * 1/2))^(-1)
G12 = (((1/GfLT) * vf + (1/Gm) * vm * 1/2) / (vf + vm * 1/2))^(-1)
format loose;
% Ply engineering properties
E1 = 20.e6 ;
nu12 = 0.27 ;
E2 = 1.1e6 ;
G12 = 0.5e6 ;
nu21 = nu12 * E2 / E1 ;
a1 = -0.55e-6 ;
a2 = 19.60e-6 ;
% Q matrix (material coordinates)
denom = 1 - nu12 * nu21 ;
Q11 = E1 / denom ;
Q12 = nu12 * E2 / denom ;
Q22 = E2 / denom ;
Q66 = G12 ;
Q = [ Q11 Q12 0; Q12 Q22 0; 0 0 Q66]
% Qbar matrix
thetad = 15 ; % ply angle in degrees
theta = thetad * pi / 180; % ply angle in radians
m = cos(theta) ;
n = sin(theta) ;
T = [ m^2 n^2 2*m*n; n^2 m^2 -2*m*n; -m*n m*n (m^2 - n^2)];
Qbar = inv(T) * Q * (inv(T))'
Sbar = inv(Qbar)
format compact;
Ex = 1/Sbar(1,1)
nuxy = -Sbar(1,2) * Ex
Ey = 1/Sbar(2,2)
Gxy = 1/Sbar(3,3)
nuxg = -Sbar(1, 3)/Sbar(1, 1)
nuyg = -Sbar(2, 3)/Sbar(2, 2)
% ABD.m
clear; format;
format short g;
% Laminate definition (plies of equal thickness)
Nplies = 6;
thetadt = [-60 60 0 0 60 -60]; % ply angles in degrees, from top
thetadb = fliplr(thetadt); % ply angles in degrees, from bottom
h_ply = 0.0001; % SI units, meters
h = Nplies * h_ply ;
for i = 1:Nplies;
zbar(i) = - (h + h_ply)/2 + i*h_ply;
end;
% Ply engineering properties (AS/3501)
E1 = 138.e9 ; % Pa
nu12 = 0.30 ;
E2 = 9.0e9 ; % Pa
G12 = 6.9e9 ; % Pa
nu21 = nu12 * E2 / E1 ;
% Q matrix (material coordinates)
denom = 1 - nu12 * nu21 ;
Q11 = E1 / denom ;
Q12 = nu12 * E2 / denom ;
Q22 = E2 / denom ;
Q66 = G12 ;
Q = [ Q11 Q12 0; Q12 Q22 0; 0 0 Q66] ;
% Qbar matrices (laminate coordinates) and contributions to
% ABD matrices
A = zeros(3,3);
B = zeros(3,3);
D = zeros(3,3);
for i = 1:Nplies;
theta = thetadb(i) * pi / 180; % ply i angle in radians, from bottom
m = cos(theta) ;
n = sin(theta) ;
T = [ m^2 n^2 2*m*n; n^2 m^2 -2*m*n; -m*n m*n (m^2 - n^2)];
Qbar = inv(T) * Q * (inv(T))' ;
A = A + Qbar * h_ply;
B = B + Qbar * h_ply * zbar(i);
D = D + Qbar * (h_ply * zbar(i)^2 + h_ply^3 / 12);
end;
A
B
D
% beam_stress.m
clear;
format compact;
% Beam geometry and loading
L = 0.30 ; % length, m
b = 0.01 ; % width, m
p0 = 1.0 ; % load / length, N/m
% Laminate definition (plies of equal thickness)
Nplies = 8;
thetadt = [90 30 -30 90 90 -30 30 90]; % ply angles in degrees, from top
thetadb = fliplr(thetadt); % ply angles in degrees, from bottom
h_ply = 0.0001;
h = Nplies * h_ply ;
for i = 1:Nplies;
zbar(i) = - (h + h_ply)/2 + i*h_ply; % z coord of ply center
end;
% Ply engineering properties (AS/3501)
E1 = 138.e9 ; % Pa
nu12 = 0.30 ;
E2 = 9.0e9 ; % Pa
G12 = 6.9e9 ; % Pa
nu21 = nu12 * E2 / E1 ;
% Q matrix (material coordinates)
denom = 1 - nu12 * nu21 ;
Q11 = E1 / denom ;
Q12 = nu12 * E2 / denom ;
Q22 = E2 / denom ;
Q66 = G12 ;
Q = [ Q11 Q12 0; Q12 Q22 0; 0 0 Q66] ;
% Qbar matrices (laminate coordinates) and contributions to
% ABD matrices
A = zeros(3,3);
B = zeros(3,3);
D = zeros(3,3);
for i = 1:Nplies;
theta = thetadb(i) * pi / 180; % ply angles in radians, from bottom
m = cos(theta) ;
n = sin(theta) ;
T = [ m^2 n^2 2*m*n; n^2 m^2 -2*m*n; -m*n m*n (m^2 - n^2)];
Qbar = inv(T) * Q * (inv(T))' ;
A = A + Qbar * h_ply;
B = B + Qbar * h_ply * zbar(i);
D = D + Qbar * (h_ply * zbar(i)^2 + h_ply^3 / 12);
end;
% Beam deflections and stresses
Dstar = inv(D);
Exb = 12 / (h^3 * Dstar(1,1)); % bending modulus
I = b * h^3 / 12 ; % second moment of area
wc = -5/384 * p0 * L^4 / (Exb * I) % center deflection
% center stresses
M = - p0 * L^2 / 8 ;
zc = zeros(2*Nplies, 1);
sigx = zeros(2*Nplies, 1);
sigy = zeros(2*Nplies, 1);
sigxy = zeros(2*Nplies, 1);
for i = 1:Nplies;
theta = thetadb(i) * pi / 180; % ply angles in radians
m = cos(theta) ;
n = sin(theta) ;
T = [ m^2 n^2 2*m*n; n^2 m^2 -2*m*n; -m*n m*n (m^2 - n^2)];
Qbar = inv(T) * Q * (inv(T))' ;
z(2*i-1) = zbar(i) - h_ply/2 ;
sigx(2*i-1) = z(2*i-1) * h^3/12 * M/I * ...
(Qbar(1,1)*Dstar(1,1) + Qbar(1,2)*Dstar(1,2) + Qbar(1,3)*Dstar(1,3));
sigy(2*i-1) = z(2*i-1) * h^3/12 * M/I * ...
(Qbar(1,2)*Dstar(1,1) + Qbar(2,2)*Dstar(1,2) + Qbar(2,3)*Dstar(1,3));
sigxy(2*i-1) = z(2*i-1) * h^3/12 * M/I * ...
(Qbar(1,3)*Dstar(1,1) + Qbar(2,3)*Dstar(1,2) + Qbar(3,3)*Dstar(1,3));
z(2*i ) = zbar(i) + h_ply/2 ;
sigx(2*i ) = z(2*i ) * h^3/12 * M/I * ...
(Qbar(1,1)*Dstar(1,1) + Qbar(1,2)*Dstar(1,2) + Qbar(1,3)*Dstar(1,3));
sigy(2*i ) = z(2*i ) * h^3/12 * M/I * ...
(Qbar(1,2)*Dstar(1,1) + Qbar(2,2)*Dstar(1,2) + Qbar(2,3)*Dstar(1,3));
sigxy(2*i ) = z(2*i ) * h^3/12 * M/I * ...
(Qbar(1,3)*Dstar(1,1) + Qbar(2,3)*Dstar(1,2) + Qbar(3,3)*Dstar(1,3));
end;
figure(1); plot(sigx, z, '-') ; grid; xlabel('sigma x (Pa)');
ylabel('z coordinate (m)');
title(['Inplane normal x stress at center of beam ' mat2str(thetadt)]);
text(0.5*max(sigx), 0, ['wc = ' num2str(wc)]);
figure(2); plot(sigy, z, '-') ; grid; xlabel('sigma y (Pa)');
ylabel('z coordinate (m)');
title(['Inplane normal y stress at center of beam ' mat2str(thetadt)]);
text(0.5*max(sigy), 0, ['wc = ' num2str(wc)]);
figure(3); plot(sigxy, z, '-') ; grid; xlabel('sigma xy (Pa)');
ylabel('z coordinate (m)');
title(['Inplane shear stress xy at center of beam ' mat2str(thetadt)]);
text(0.5*max(sigxy), 0, ['wc = ' num2str(wc)]);
% transverse shear stress at end
dMdX = - p0 * L / 2 ;
Nhpts = 10 ; % plotting divisions per ply
ze = zeros(Nhpts*Nplies+1, 1);
sigxz = zeros(Nhpts*Nplies+1, 1);
for i = 1:Nplies;
theta = thetadb(i) * pi / 180; % ply angles in radians
m = cos(theta) ;
n = sin(theta) ;
T = [ m^2 n^2 2*m*n; n^2 m^2 -2*m*n; -m*n m*n (m^2 - n^2)];
Qbar = inv(T) * Q * (inv(T))' ;
ze(1) = -h/2 ; % boundary condition
sigxz(1) = 0;
for j = 1:Nhpts;
if (j == 1),
sigt = -ze((i-1)*Nhpts+1)^2 / 2 * h^3/12 * dMdX/I * ...
(Qbar(1,1)*Dstar(1,1) + Qbar(1,2)*Dstar(1,2) + Qbar(1,3)*Dstar(1,3));
c_s = sigxz((i-1)*Nhpts+1) - sigt; % constant of integration
end;
ze((i-1)*Nhpts+1 + j) = zbar(i) - h_ply/2 + h_ply*(j)/(Nhpts);
sigxz((i-1)*Nhpts+1 + j) = -ze((i-1)*Nhpts+1 + j)^2 / 2 * h^3/12 * dMdX/I
* ...
(Qbar(1,1)*Dstar(1,1) + Qbar(1,2)*Dstar(1,2) + Qbar(1,3)*Dstar(1,3)) +
c_s;
end;
end;
ze(Nhpts*Nplies+1) = h/2;
figure(4); plot(sigxz, ze, '-') ; grid; xlabel('sigma xz (Pa)');
ylabel('z coordinate (m)');
title(['Transverse shear xz stress at end of beam ' mat2str(thetadt)]);
text(0.2*min(sigxz), 0, ['wc = ' num2str(wc)]);
% summary plot
figure(5);
subplot(221); plot(sigx, z, '-') ; grid; xlabel('sigma x (Pa)');
ylabel('z coordinate (m)');
title('Normal x stress, beam center');
text(0.3*max(sigx), h_ply, mat2str(thetadt));
text(0.3*max(sigx), 0, ['wc = ' num2str(wc)]);
subplot(222); plot(sigy, z, '-') ; grid; xlabel('sigma y (Pa)');
ylabel('z coordinate (m)');
title('Normal y stress, center');
subplot(223); plot(sigxy, z, '-') ; grid; xlabel('sigma xy (Pa)');
ylabel('z coordinate (m)');
title('Inplane shear stress, center');
subplot(224); ; plot(sigxz, ze, '-') ; grid; xlabel('sigma xz (Pa)');
ylabel('z coordinate (m)');
title('Transverse shear stress, end');
% ABD.m
clear; format;
format short g;
% Laminate definition (plies of equal thickness)
Nplies = 2;
thetadt = [-8.564 +8.564]; % ply angles in degrees, from top
thetadb = fliplr(thetadt); % ply angles in degrees, from bottom
h_ply = 0.000125; % SI units, meters
h = Nplies * h_ply ;
for i = 1:Nplies;
zbar(i) = - (h + h_ply)/2 + i*h_ply;
end;
% Ply engineering properties (AS/3501)
E1 = 138.e9 ; % Pa
nu12 = 0.30 ;
E2 = 8.96e9 ; % Pa
G12 = 7.1e9 ; % Pa
nu21 = nu12 * E2 / E1 ;
a1 = -0.3e-6 ; % coefficients of thermal expansion
a2 = 28.1e-6 ;
deltaT = 1 ;
% Q matrix (material coordinates)
denom = 1 - nu12 * nu21 ;
Q11 = E1 / denom ;
Q12 = nu12 * E2 / denom ;
Q22 = E2 / denom ;
Q66 = G12 ;
Q = [ Q11 Q12 0; Q12 Q22 0; 0 0 Q66] ;
a = [a1 a2 0]' ;
% Qbar matrices (laminate coordinates) and contributions to
% ABD matrices
A = zeros(3,3);
B = zeros(3,3);
D = zeros(3,3);
NT = zeros(3,1);
MT = zeros(3,1);
for i = 1:Nplies;
theta = thetadb(i) * pi / 180; % ply i angle in radians, from bottom
m = cos(theta) ;
n = sin(theta) ;
T = [ m^2 n^2 2*m*n; n^2 m^2 -2*m*n; -m*n m*n (m^2 - n^2)];
Qbar = inv(T) * Q * (inv(T))' ;
abar = T' * a ;
A = A + Qbar * h_ply;
B = B + Qbar * h_ply * zbar(i);
D = D + Qbar * (h_ply * zbar(i)^2 + h_ply^3 / 12);
NT = NT + Qbar * abar * h_ply * deltaT ;
MT = MT + Qbar * abar * h_ply * zbar(i) * deltaT ;
end;
A
B
D
ABD = [A B; B D] ;
ABDinv = inv(ABD) ;
e0k = ABDinv * [NT' MT']'
ax = e0k(1:3,1) / deltaT
% Navier.m
clear;
format short g;
% Laminate definition (plies of equal thickness)
% Use balanced, symmetric for Navier method, with D16=D26=0
Nplies = 5;
thetadt = [90 90 90 90 90]; % ply angles in degrees, from top
thetadb = fliplr(thetadt); % ply angles in degrees, from bottom
h_ply = 0.0001;
h = Nplies * h_ply ;
for i = 1:Nplies;
zbar(i) = - (h + h_ply)/2 + i*h_ply;
end;
% Ply engineering properties (AS/3501)
E1 = 138.e9 ; % Pa
nu12 = 0.30 ;
E2 = 9.0e9 ; % Pa
G12 = 6.9e9 ; % Pa
nu21 = nu12 * E2 / E1 ;
rho = 1530 ; % kg/m^3, material density
% Q matrix (material coordinates)
denom = 1 - nu12 * nu21 ;
Q11 = E1 / denom ;
Q12 = nu12 * E2 / denom ;
Q22 = E2 / denom ;
Q66 = G12 ;
Q = [ Q11 Q12 0; Q12 Q22 0; 0 0 Q66] ;
% Qbar matrices (laminate coordinates) and contributions to
% ABD matrices
A = zeros(3,3);
B = zeros(3,3);
D = zeros(3,3);
for i = 1:Nplies;
theta = thetadb(i) * pi / 180; % ply i angle in radians, from bottom
m = cos(theta) ;
n = sin(theta) ;
T = [ m^2 n^2 2*m*n; n^2 m^2 -2*m*n; -m*n m*n (m^2 - n^2)];
Qbar = inv(T) * Q * (inv(T))' ;
A = A + Qbar * h_ply;
B = B + Qbar * h_ply * zbar(i);
D = D + Qbar * (h_ply * zbar(i)^2 + h_ply^3 / 12);
end;
% Navier
% rectangular plate; simply-supported
% symmetric layup so [B]=0
% D16 = D26 = 0 also assumed
% Plate definition
a = .4 ; % m
b = .2 ; % m
R = a/b ; % aspect ratio
Nm = 5; % maximum number of half sine waves in x direction
Nn = 5; % maximum number of half sine waves in y direction
% Static
% uniform lateral pressure load, p0
p0 = 100; % SI units, Pa
A = zeros(m,n); % deflection Fourier coefficients
B = A; % force Fourier coefficients
% NOTE: A & B redefined here
for m = 1:Nm;
for n = 1:Nn; % NOTE: m & n redefined here
if (mod(m,2)~=0 & mod(n,2)~=0) % both m & n are ODD
B(m,n) = 16 * p0 / (pi^2 * m * n); % for UNIFORM load
else
B(m,n) = 0;
end
A(m,n) = B(m,n) * a^4 / ...
(pi^4 * (D(1,1)*m^4 + 2*(D(1,2)+2*D(3,3))*(m*n*R)^2 +
D(2,2)*(n*R)^4));
end; % j
end; % i
Nc = 12 ; % number of plotting points per half wave
Nx = Nm * Nc ; % number of plotting points in x direction
Ny = Nn * Nc ; % number of plotting points in y direction
x = (0:Nx)' * (a/Nx) ; % vector of x coords
y = (0:Ny) * (b/Ny) ; % vector of y coords
w = zeros(Nx+1, Ny+1);
for m = 1:Nm;
for n = 1:Nn;
w = w + A(m,n)*sin(m*pi/a .*x) * sin(n*pi/b .*y); % matrix of z disps
end; % n
end; % m
wmax = 0.1 * max(a,b);
w = wmax * w / max(max(w));
xx = x * ones(size(y)) ; % matrix of x coords
yy = ones(size(x)) * y ; % matrix of y coords
surf(xx,yy,w) % initial plot, max disp
axis equal % axis scaling
axis([0 a 0 b -wmax wmax]); % axis scaling
colormap(bone)
%[cmin, cmax] = caxis;
%caxis([-cmax, cmax])
shading interp
% Buckling
% Vibration
rhoH_str = rho * h ; % structural mass per unit area
nsmass = 1.0 ; % kg, non-structural mass
rhoH_nstr = nsmass / (a * b) ;
rhoH = rhoH_str + rhoH_nstr ; % mass per unit area
M = 3 ;
N = 3 ;
omg2 = zeros(M,N);
for m = 1:M,
for n = 1:N,
omg2(m,n) = pi^4 / (a^4 * rhoH) ...
* ( D(1,1)*m^4 + 2*(D(1,2)+2*D(3,3))*(m*n*R)^2 +
D(2,2)*(n*R)^4 );
end;
end;
freqHz = omg2.^(1/2) / (2*pi)