Another problem with my incrementing

2 次查看(过去 30 天)
I am having trouble incrementing my dh values all the way through. It's a lot of code, and I've worked on it all, day, but can't find out what I'm not doing right.
% Fiber
Vf = 0.6;
Ef = 250; % GPa
rho_f = 1.8; % g/(cm^3)
nu_f = 0.2;
Gf = Ef / (2*(1 + nu_f)); % GPa
% Matrix
Vm = 0.4;
Em = 3.5; % GPa
rho_m = 1.2; % g/(cm^3)
nu_m = 0.35;
Gm = Em / (2*(1 + nu_m)); % GPa
% Aluminum
E_Al = 72; % GPa
rho_Al = 2.78; % g/(cm^3)
nu_Al = 0.33;
G_Al = E_Al / (2*(1 + nu_Al)); % GPa
% 3. Please clearly state your assumptions in the development of your
% assessment. Tabulate your material properties in a consistent set of
% units (SI!!).
%
% Part (a)
% Determine the corresponding A, B and D matrix for baseline Al panel and
% each case of composite panels, in which the ply angle in the S2Ep layer
% is assumed to 0, 30, 45, 60, 90 degrees. Each layer thickness =1mm.
% Givens:
% S2Ep layer
theta = [0 30 45 60 90]; % deg
% GLARE Layout
% AL
% S2Ep theta deg.
% AL
% S2Ep theta deg.
% AL
% Calculating Composite (S2Ep) Properties
E_L = (Vf*Ef) + (Vm*Em); % GPa
E_T = (Ef*Em) / ((Ef*Vm) + (Em*Vf)); % GPa
nu_LT = (Vf*nu_f) + (Vm*nu_m);
nu_TL = (E_T*nu_LT) / E_L;
rho_c = (Vf*rho_f) + (Vm*rho_m);
G_LT = (Gf*Gm) / ((Gf*Vm) + (Gm*Vf)); % GPa
% Calculating Composite (S2Ep) Q Matrix
q11 = E_L / (1-(nu_LT*nu_TL)); % GPa
q22 = E_T / (1-(nu_LT*nu_TL)); % GPa
q12 = nu_LT*E_T / (1-(nu_LT*nu_TL)); % GPa
q66 = G_LT; % GPa
Q_S2Ep = [ q11 q12 0;
q12 q22 0; % GPa
0 0 q66];
% Caculating Aluminum Q Matrix
q11_Al = E_Al / (1-(nu_Al^2)); % GPa
q12_Al = nu_Al*q11_Al; % GPa
q66_Al = E_Al / (2*(1+nu_Al)); % GPa
Q_Al = [ q11_Al q12_Al 0;
q12_Al q11_Al 0; % GPa
Ortho_theta = [45 -45 -45 45];
for i = 1:length(Ortho_theta)
qbar11(i) = (q11.*cosd(Ortho_theta(i)).^4) +...
(q22.*sind(Ortho_theta(i)).^4) + ...
(2.*(q12+(2.*q66)).*sind(Ortho_theta(i)).^2.*cosd(Ortho_theta(i)).^2);
qbar12(i) = (q11 + q22 - ...
(4.*q66)).*sind(Ortho_theta(i)).^2.*cosd(Ortho_theta(i)).^2 + ...
(q12.*(cosd(Ortho_theta(i)).^4 + sind(Ortho_theta(i)).^4));
qbar13(i) = (q11 - q12 - ...
(2.*q66)).*sind(Ortho_theta(i)).*cosd(Ortho_theta(i)).^3 - ...
((q22 - q12 - ...
(2.*q66)).*(cosd(Ortho_theta(i)).*sind(Ortho_theta(i)).^3));
qbar21(i) = qbar12(i);
qbar22(i) = (q11.*sind(Ortho_theta(i)).^4) + ...
(q22.*cosd(Ortho_theta(i)).^4) + ...
(2.*(q12 + (2.*q66)).*sind(Ortho_theta(i)).^2.*cosd(Ortho_theta(i)).^2);
qbar23(i) = (q11 - q12 - ...
(2.*q66)).*sind(Ortho_theta(i)).^3.*cosd(Ortho_theta(i)) - ...
((q22 - q12 - ...
(2*q66)).*(cosd(Ortho_theta(i)).^3.*sind(Ortho_theta(i))));
qbar31(i) = qbar13(i);
qbar32(i) = qbar23(i);
qbar33(i) = (q11 + q22 - (2*q12) - ...
(2.*q66)).*sind(Ortho_theta(i)).^2.*cosd(Ortho_theta(i)).^2 + ...
(q66.*(cosd(Ortho_theta(i)).^4 + sind(Ortho_theta(i)).^4));
Qbar(1,1,i) = qbar11(i);
Qbar(1,2,i) = qbar12(i);
Qbar(1,3,i) = qbar13(i);
Qbar(2,1,i) = qbar21(i);
Qbar(2,2,i) = qbar22(i);
Qbar(2,3,i) = qbar23(i);
Qbar(3,1,i) = qbar31(i);
Qbar(3,2,i) = qbar32(i);
Qbar(3,3,i) = qbar33(i);
end
% Calculating Orthotropic A, B, and D Marices
j = 1;
dh = [0.01:0.0001:1];
for i = 1:length(dh)
Ortho_heights=[-(.7+dh(i)) -.7 0 .7 .7+dh(i)];
A(:,:,i) = (Ortho_heights(2) - Ortho_heights(1)).*Qbar(:,:,j) + ...
(Ortho_heights(3) - Ortho_heights(2)).*Qbar(:,:,j+1) + ...
(Ortho_heights(4) - Ortho_heights(3)).*Qbar(:,:,j+2) + ...
(Ortho_heights(5) - Ortho_heights(4)).*Qbar(:,:,j+3);
B(:,:,i) = (1/2)*...
((((Ortho_heights(2)).^2 - (Ortho_heights(1)).^2)).*Qbar(:,:,j) + ...
(((Ortho_heights(3)).^2 - (Ortho_heights(2)).^2)).*Qbar(:,:,j+1) + ...
(((Ortho_heights(4)).^2 - (Ortho_heights(3)).^2)).*Qbar(:,:,j+2) + ...
(((Ortho_heights(5)).^2 - (Ortho_heights(4)).^2)).*Qbar(:,:,j+3));
if B(:,:,i) < 1*10^-6
B(:,:,i) = 0;
end
D(:,:,i) = (1/3)*...
((((Ortho_heights(2)).^3 - (Ortho_heights(1)).^3)).*Qbar(:,:,j) + ...
(((Ortho_heights(3)).^3 - (Ortho_heights(2)).^3)).*Qbar(:,:,j+1) + ...
(((Ortho_heights(4)).^3 - (Ortho_heights(3)).^3)).*Qbar(:,:,j+2) + ...
(((Ortho_heights(5)).^3 - (Ortho_heights(4)).^3)).*Qbar(:,:,j+3));
if ((-(1*10^-6) < D(1,3,i)) && (D(1,3,i) < 1*10^-6))
flag = 1;
else
flag = 0;
end
if flag == 1
breakindex = i;
break
end
end
i = dh(breakindex)
fprintf('\nGLARE, [45/-45/-45/45]\n\n');
fprintf('\nA Matrix\n');
display(A(:,:,i))
fprintf('\nB Matrix\n');
display(B(:,:,i))
fprintf('\nD Matrix\n');
display(D(:,:,i))
ABD_Ortho(:,:,i) = [A(:,:,i) B(:,:,i);
B(:,:,i) D(:,:,i)];
fprintf('------------------------------------------');
  7 个评论
Thomas
Thomas 2015-5-1
I was just testing it for that case first.
Geoff Hayes
Geoff Hayes 2015-5-1
But where is that line in your code?

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by