how to correctly get values for stress for Y >82 values should be close to zero at Y = 88.25

1 vue (au cours des 30 derniers jours)
p = -100;
y = 0:0.25:88.25;
l = 1:1:199;
ybar = 63.17;
i = 790200.11;
t = 88.25;
[L,Y,P] = meshgrid(l,y,p);
V = p.*L;
Q1 = -3.125.*(Y.^2) + 394.81.*Y;
Q2 = -82.8.*(((Y.^2)/2)-63.17.*Y)-139163.72;
if Y >= 82
stress = abs(V.*Q2)/(i*t);
else
stress = abs(V.*Q1)/(i*t);
end
contourf(L,Y,stress);
  5 commentaires
Joel Rebello
Joel Rebello le 7 Oct 2020
the 1st if condition is not being recongnised for Y >82
VBBV
VBBV le 7 Oct 2020
Modifié(e) : VBBV le 7 Oct 2020
Bcoz you were not using a loop for matrix Y. Use a for loop instead instead to step thru each value of Y as
% if true
% code
%end
for i = 1: length(Y)
for j = 1: length(Y)
if Y(i,j) >= 82
...
else
...
end
end
end
contourf(...)

Connectez-vous pour commenter.

Réponse acceptée

Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam le 7 Oct 2020
You can use vectorized if statement:
Q = Q2 .* (Y >= 82) + Q1 .* (Y < 82);
stress = abs(V.*Q)/(i*t);
  4 commentaires
VBBV
VBBV le 7 Oct 2020
The results produced however may not be correct.
Asad logic produces results by adding the stress vector. which may not be correct
See the difference in two results attached. if you use for loop instead
clc; clear all ;
p = -100;
y = 0:0.25:88.25;
l = 1:1:199;
ybar = 63.17;
i = 790200.11;
t = 88.25;
[L,Y,P] = meshgrid(l,y,p);
V = p.*L;
Q1 = -3.125.*(Y.^2) + 394.81.*Y;
Q2 = -82.8.*(((Y.^2)/2)-63.17.*Y)-139163.72;
[R C] = size(Y)
for i = 1: R
for j = 1: C
if Y(i,j) >= 82
stress(i,j) = abs(V(i,j)*Q2(i,j))/(i*t);
else
stress(i,j) = abs(V(i,j)*Q1(i,j))/(i*t);
end
end
end
contourf(L,Y,stress);
Joel Rebello
Joel Rebello le 7 Oct 2020
thanks vasishta, the analysis is with regards to the shear stress on a T-beam, i checked the results from the code you presented and not sure why but the contour does not represent the behaviour of the stress caused by shear (V) acting on the beam. For shear stress the stress is maximum stress should be around the neutral axix (ybar) where Y =63.17, but your results indicate the maximum value is around Y = 5.
Appreciate your help

Connectez-vous pour commenter.

Plus de réponses (1)

KSSV
KSSV le 7 Oct 2020
You have to use logical indexing to achieve this.
clc; clear all ;
p = -100;
y = 0:0.25:88.25;
l = 1:1:199;
ybar = 63.17;
i = 790200.11;
t = 88.25;
[L,Y,P] = meshgrid(l,y,p);
V = p.*L;
Q1 = -3.125.*(Y.^2) + 394.81.*Y;
Q2 = -82.8.*(((Y.^2)/2)-63.17.*Y)-139163.72;
stress = zeros(size(L)) ;
stress(Y>=82) = abs(V(Y>=82).*Q2(Y>=82))/(i*t);
stress(Y<82) = abs(V(Y<82).*Q2(Y<82))/(i*t);
contourf(L,Y,stress);

Catégories

En savoir plus sur Stress and Strain dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by