Hi
I want to stop the loop when i get to the peak of the M
b=300; %mm
d=400; %mmfc=40; %Mpa
Ecm=22*(fc/10)^0.3*10^3; %MpaEs=200000; %MpaAs=2400; %mm^2
fy=400; %Mpaepsc1=min(2.8/1000,0.7*fc^0.31/1000);epscu=3.5/1000;k=1.05*Ecm*epsc1/fc;epscmv = linspace(0.05, 3.5, 50)*1E-3;for i=1:50(epscmv); epscm = epscmv(i); funC=@(epsc) (k*epsc/epsc1-(epsc/epsc1).^2)./(1+(k-2)*epsc/epsc1); compression=@(c) b*fc*c/epscm*integral(funC,0,epscm)/1000; tension=@(c) min(Es*(d-c)/c*epscm*As/1000,fy*As/1000); c(i)=fsolve(@(c) compression(c)-tension(c),1); funM=@(epsc)(k*epsc./epsc1-(epsc./epsc1).^2)./(1+(k-2)*epsc./epsc1).*(d-c(i)+(c(i)./epscm).*epsc); M(i)=b*fc*c(i)/epscm*integral(funM,0,epscm)/1000000; phi(i)=epscm/c(i); if M(i)<M(i-1) break; endend[Mmax,idx]=max(M)phiAtMmax=phi(idx)plot(phi, M)grid onxlabel('phi [1/mm]')ylabel('Moment [kNm]')
A kind forum member helped me but now I get the Error:
Attempted to access M(0); index must be a positive integer or logical.Error in advencedconcrete32a (line 22) if M(i)<M(i-1)
Best Answer