Why am I receiving this error?

조회 수: 3 (최근 30일)
Anita Burns
Anita Burns 2024년 4월 19일
답변: Voss 2024년 4월 19일
% Input data
EL = 38.60e9; % Longitudinal modulus (Pa)
ET = 8.27e9; % Transverse modulus (Pa)
GLT = 4.14e9; % Shear modulus (Pa)
nuLT = 0.26; % Poisson's ratio
thickness = 0.002; % Thickness of each layer (m)
layer_angles = [45, -45, -45, 45]; % Fiber orientations of each layer (degrees)
mid_plane_strains = [0.05, 0.00, 0.00]; % Mid-plane strains (epsilon_x, epsilon_y, gamma_xy)
curvatures = [0.05, 0.020, 0.0250; 0, 0.010, 0.0125]; % Curvatures (kappa_x, kappa_y, kappa_xy)
% Number of layers
num_layers = length(layer_angles);
% Initialize arrays to store stresses
sigma_x_top = zeros(num_layers, 1);
sigma_y_top = zeros(num_layers, 1);
tau_xy_top = zeros(num_layers, 1);
sigma_x_bottom = zeros(num_layers, 1);
sigma_y_bottom = zeros(num_layers, 1);
tau_xy_bottom = zeros(num_layers, 1);
% Compute stresses for each layer
for i = 1:num_layers
theta = deg2rad(layer_angles(i));
% Transformation matrix
T = [cos(theta)^2, sin(theta)^2, 2*sin(theta)*cos(theta);
sin(theta)^2, cos(theta)^2, -2*sin(theta)*cos(theta);
-sin(theta)*cos(theta), sin(theta)*cos(theta), cos(theta)^2-sin(theta)^2];
% Reduced stiffness matrix
Q11 = EL / (1 - nuLT^2);
Q12 = nuLT * EL / (1 - nuLT^2);
Q22 = ET / (1 - nuLT^2);
Q66 = GLT;
Q = [Q11, Q12, 0;
Q12, Q22, 0;
0, 0, Q66];
% Transform stiffness matrix to layer coordinates
Q_bar = (T) / Q * T';
% Strain matrix
strain = [mid_plane_strains(1); mid_plane_strains(2); mid_plane_strains(3)];
curvature = [curvatures(1, i); curvatures(2, i); 0]; % Assume no curvature in z direction
% Stress resultants
stress_resultants = Q_bar * strain + curvature;
% Stresses at top and bottom of the layer
sigma_x_top(i) = stress_resultants(1) + mid_plane_strains(1) * thickness / 2;
sigma_y_top(i) = stress_resultants(2) + mid_plane_strains(2) * thickness / 2;
tau_xy_top(i) = stress_resultants(3);
sigma_x_bottom(i) = stress_resultants(1) - mid_plane_strains(1) * thickness / 2;
sigma_y_bottom(i) = stress_resultants(2) - mid_plane_strains(2) * thickness / 2;
tau_xy_bottom(i) = stress_resultants(3);
end
Index in position 2 exceeds array bounds. Index must not exceed 3.
% Display results
fprintf('Layer\tSigma_x_top (Pa)\tSigma_y_top (Pa)\tTau_xy_top (Pa)\tSigma_x_bottom (Pa)\tSigma_y_bottom (Pa)\tTau_xy_bottom (Pa)\n');
for i = 1:num_layers
fprintf('%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n', i, sigma_x_top(i), sigma_y_top(i), tau_xy_top(i), sigma_x_bottom(i), sigma_y_bottom(i), tau_xy_bottom(i));
end
% Plot stress variation through thickness
layer_depths = linspace(-thickness/2, thickness/2, num_layers);
figure;
hold on;
plot(sigma_x_top, layer_depths, 'r', 'LineWidth', 1.5);
plot(sigma_y_top, layer_depths, 'g', 'LineWidth', 1.5);
plot(tau_xy_top, layer_depths, 'b', 'LineWidth', 1.5);
plot(sigma_x_bottom, layer_depths, 'r--', 'LineWidth', 1.5);
plot(sigma_y_bottom, layer_depths, 'g--', 'LineWidth', 1.5);
plot(tau_xy_bottom, layer_depths, 'b--', 'LineWidth', 1.5);
title('Stress Variation Through Laminate Thickness');
xlabel('Stress (Pa)');
ylabel('Depth (m)');
legend('\sigma_x', '\sigma_y', '\tau_{xy}', 'Location', 'best');
grid on;
hold off;
ERROR:
Index in position 2 exceeds array bounds. Index must not exceed 3.
Error in Project_1_new (line 45)
curvature = [curvatures(1, i); curvatures(2, i); 0]; % Assume no curvature in z direction

답변 (2개)

Alan Stevens
Alan Stevens 2024년 4월 19일
You have 4 layers
layer_angles = [45, -45, -45, 45];
but data for only three
mid_plane_strains = [0.05, 0.00, 0.00]; % Mid-plane strains (epsilon_x, epsilon_y, gamma_xy)
curvatures = [0.05, 0.020, 0.0250; 0, 0.010, 0.0125]; % Curvatures (kappa_x, kappa_y, kappa_xy)

Voss
Voss 2024년 4월 19일
curvatures is of size 2-by-3:
curvatures = [0.05, 0.020, 0.0250; 0, 0.010, 0.0125] % Curvatures (kappa_x, kappa_y, kappa_xy)
curvatures = 2x3
0.0500 0.0200 0.0250 0 0.0100 0.0125
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
layer_angles is of size 1-by-4:
layer_angles = [45, -45, -45, 45] % Fiber orientations of each layer (degrees)
layer_angles = 1x4
45 -45 -45 45
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
The loop iterates from i = 1 to i = 4:
num_layers = length(layer_angles);
% ...
for i = 1:num_layers
Therefore, on the 4th iteration, when this line tries to access elements from column 4 of curvatures:
curvature = [curvatures(1, i); curvatures(2, i); 0]; % Assume no curvature in z direction
the error is thrown because curvatures only has 3 columns.

카테고리

Help CenterFile Exchange에서 Stress and Strain에 대해 자세히 알아보기

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by