PROGRAMME MATLAB
PROGRAMME DE CALCUL DES EFFORTS INTERNE AVEC LA METHODE DES 3 MOMENTS
function moment_n_appuis3()
clc
%clear
N=input('Entrez le nombre d''appui : ');
A=zeros(N-2,N-2);
L(1)=0;
L(N+1)=0;
fprintf('\n CHARGEMENT REPARTIE : \n')
for j=2:N
fprintf('\n Travée %d\n',j-1);
L(j)=input('Entrez la longueur de la travée (m) : ');
q(j)=input('Entrez la charge uniforme sur la travée (KN/m) : ');
end
q(N+1)=0;
fprintf('\n\n CHARGEMENT PONCTUEL : \n')
nn=input('\n Entrez le nombre de charges ponctuelles sur la poutre : ');
if(nn>=1)
for o=1:nn
fprintf('\n Charge %d',o);
P(o)=input('\n Entrez la valeur de la charge ponctuelle (KN) : ');
X(o)=input('Entrez sa distance a l''origine (m) :');
end
end
BD(1)=L(1);
for ii=1:N-1
BD(ii+1)=BD(ii)+L(ii+1);
end
%BD
%creation des tableaux
gaucheP=zeros(1,N);
droiteP=zeros(1,N);
gaucheR=zeros(1,N);
droiteR=zeros(1,N);
%CALCUL DU MOMENT AUX APPUIS !!!
for j=1:N
%calcul des rotations pour les charges reparties
gaucheR(j)=q(j)*(L(j))^3/24;
droiteR(j)=-q(j+1)*(L(j+1))^3/24;
end
%droiteR
%gaucheR
for j=1:N-1
%calcul des rotations pour les charges ponctuelles
nana=0;
for k=1:nn
if (X(k)> BD(j) && X(k)<=BD(j+1))
nana= nana+1;
a=X(k)-BD(j);
b=BD(j+1)-X(k);
dd=-(P(k)*a*b*(L(j+1)+b))/(6*L(j+1));
gg=(P(k)*a*b*(L(j+1)+a))/(6*L(j+1));
if(nana>1)
droiteP(j)=droiteP(j)+dd;
gaucheP(j+1)=gaucheP(j+1)+gg;
else
droiteP(j)=dd;
gaucheP(j+1)=gg;
end
else
end
end
end
droiteP(N)=0;
Q=[];
%gaucheR(3)=0;
%droiteR(3)=0;
%gaucheR
%droiteR
P_R=droiteR-gaucheR;
P_R=transpose(P_R);
n_R=length(P_R);
B_R=P_R(2:n_R-1,:);
%gaucheP(3)=0;
%droiteP(3)=0;
P_P=droiteP-gaucheP;
P_P=transpose(P_P);
n_P=length(P_P);
B_P=P_P(2:n_P-1,:);
%creation de la matrice A avec inertie fixe !
for i=1:N-2
h=L(i+2)/6;
v=(L(i+2)+L(i+1))/3;
A(i,i)=v;
Q=[Q,h];
end
s=max(size(A));
if s==1
for j=i:s-1
A(j,j+1)=Q(j);
end
for j=i:s-1
A(j,j+1)=Q(j);
end
end
%Resolution par superposition des effets
M_A_R=linsolve(A,B_R);
M_A_P=linsolve(A,B_P);
M_A_R=M_A_R+M_A_P;
M(1)=0;
M(N)=0;
for j=2:N-1
M(j)=M_A_R(j-1);
end
%M=0.7*M;
for uu=1:length(M)
fprintf('\n\n le moment sur l''appui %d est : %f KN.m \n',uu,M(uu));
end
%CALCILL DU MOMENT et de l'effort tranchant SUR TRAVEE !!
function z=Moment(y,i)
z=-0.5*q(i+1)*y.^2 + 0.5*q(i+1)*L(i+1)*y+
M(i)*(1-y/L(i+1))+M(i+1)*y/L(i+1);
for k=1:nn
if (X(k)>BD(i) && X(k)<=BD(i+1))
if(y<=X(k)-BD(i))
z=z+P(k)*(1-(X(k)-BD(i))/(BD(i+1)-BD(i)))*y;
else
z=z+P(k)*(1-y/(BD(i+1)-BD(i)))*(X(k)-BD(i));
end
end
end
end
%Calcul du moment max en travée
MM=[];
for i=1:N-1
d=0:0.001:L(i+1);
a=length(d);
for r=1:a
b=(Moment(d(r),i));
MM=[MM,b];
end
w(i)=max(MM);
fprintf('\n\n le moment maximal sur le tronçon (i)=%d est: %f KN.m\
n',i,w(i));
MM=[];
end
function z=Tranchant(y,i)
z=-(-q(i+1)*y + 0.5*q(i+1)*L(i+1) +( M(i+1)-M(i))/L(i+1));
for k=1:nn
if (X(k)>BD(i) && X(k)<=BD(i+1))
if(y<=X(k)-L(i))
z=z-P(k)*(1-(X(k)-BD(i))/(BD(i+1)-BD(i)));
else
z=z-P(k)*(-1/(BD(i+1)-BD(i)))*(X(k)-BD(i));
end
end
end
end
SS=[];
for j=1:N-1
u=(Tranchant(L(1),j));
v=(Tranchant(L(j+1),j));
SS=[SS,u,v];
end
fprintf('\n\n Effort Tranchant en KN : \n')
SS
%Calcul des Réactions aux appuis
l=length(SS);
RR(1)=0;
RR(l+2)=0;
for j=2:l+1
RR(j)=SS(j-1);
end
BB=[];
for k=l:N
BB(k)=RR(2*k)-RR(2*k-1);
end
for t=l:length(BB)
fprintf('\n\n La Réaction a l''appui %d est : %f KN',t,-BB(t))
end
%Trace du graphe des moments
L_poutre=sum(L);
y=[];
z=[];
x=0:0.001:L_poutre;
for j=1:N-1
if (j==N-1)
d=0:0.001:L(j+1);
else
d=0:0.001:L(j+1)-0.001;
end
a=length(d);
for r=1:a
b=(Moment(d(r),j));
y=[y,b];
end
end
%fin des moments début des tranchants
for j=1:N-1
if (j==N-1)
d=0:0.001:L(j+1);
else
d=0:0.001:L(j+1)-0.001;
end
a=length(d);
for r=1:a
b=(Tranchant(d(r),j));
z=[z,b];
end
end
p=plot(x,y,x,z,'r');
set(p,'LineWidth',1.5)
grid on;
line([0 L_poutre],[0 0],'color','b','linewidth',4);
fprintf('\n\n le moment maximal sur la poutre est: Mmax=%f KN.m\n',max(w));
end
PROGRAMME DE DIMENSIONNEMEENT D’UNE POUTRE EN FLEXION SIMPLE
function flexion()
disp('*********************************************************************
***************************************************************************
*******************************');
disp('***************************************************
***********************************************************' );
disp('***************************************************
************************************************************');
disp(' ' );
disp(' NOUS VOUS SOUHAITONS LA BIENVENUE
DANS NOTRE PROGRAMME DE DIMENSIONNEMENT VIS A VIS DE LA FLEXION SIMPLE
');
disp(' ' );
disp('*********************************************************************
***************************************************************************
*******************************');
disp(' ' );
gammac=1.5;
alphae=15;
fprintf('\n 1) CARACTERISTIQUE DU MATERIAU \n');
disp(' ')
fck=input('\n entrez la résistance caractéristique fck du beton: ');
fyk=input('\n entrez la résistance caractéristique fyk de l''acier: ');
if fck >=50
lamda=0.8-(fck-50)/400;
neta=1-(fck-50)/200;
else
lamda=0.8;
neta=1;
end
fcu=neta*fck/gammac;
fprintf('\n la résistance de calcul du beton est fcu=%f ',fcu);
fprintf('\n la résistance caractéristique de l''acier est fyk=%f ',fyk);
fctm=0.3*(fck)^(2/3);
fprintf('\n la résistance à la traction du beton est fctm=%f ',fctm);
Es=200000;
fprintf('\n le module d''Young de l''acier es Es=%f ',Es);
disp(' ' )
fprintf('\n 2) CARACTERISTIQUES GEOMETRIQUES DE LA SECTION \n');
disp(' ' );
h=input('\n entrez la hauteur de la poutre: ');
hf=input('\n entrez la hauteur de la table: ');
b=input('\n entrez la largeur b de la poutre: ');
beff=input('\n entrez la largeur effective beff de la poutre: ');
d= input('\n entrez la hauteur utile d: ');
disp(' ' )
Med=input('\n entrez le moment en MN.m à l''ELU sur la poutre: ');
disp(' ' )
Mu=beff*hf*fcu*(d-hf/2);
if beff > b
fprintf('\n prise en compte de la table de compression \n');
Mu=beff*hf*fcu*(d-hf/2);
fprintf('\n le moment ultime de la table est Mu=%f ',Mu)
if Med<Mu
fprintf('\n dimensionnement avec la section beff*d \n');
b=beff;
else
Med1=Med-Mu*(beff-b)/beff;
Med=Med1;
end
elseif beff==b
fprintf('\n dimensionnement en ne considérant que la section b*d \n');
end
muc = Med/(b*(d^2)*fcu);
fprintf('\n le moment reduit ultime de référence est mu=%f ',muc)
muy=0.372;
fprintf('\n le moment reduit ultime limite muy est muy=%f ',muy)
if muc>muy
fprintf('\n Dimensionnement avec section d''armature comprimee \n');
Mlu= muy*b*(d^2)*fcu;
fprintf('\n le moment repris par le beton tendu est Mlu=%f ',Mlu)
Mu2=Med-Mlu;
fprintf('\n le moment repris par le beton comprime est Mu2=%f ',Mu2)
d1=input('\n entrez la hauteur utile d'': ')
sigma2=500/1.15;
As2=Mu2/((d-d1)*sigma2);
fprintf('\n section d''armature tendu est As2=%f ',As2)
muc=muy;
Med=Mlu;
else
As2=0;
fprintf('\n section d''armature comprimee est As2=%f ',As2)
end
alphau=(1/lamda)*(1-sqrt(1-2*muc));
fprintf('\n le parametre zelta est alphau=%f ', alphau)
x=alphau*d
fprintf('\n L''epaisseur de beton comprimee est x=%f m ',x)
muac=0.0561
fprintf('\n le moment reduit lié à la classe de ductibilité B est muac=
%f ', muac)
if muc<muac
fprintf('\n Dimensionnement au pivot A \n')
epsilons1=45/1000;
fprintf('\n la déformation dans l''acier est epsilons=%f
',epsilons1)
else
fprintf('\n Dimensionnement au pivot B \n')
epsilons1=(3.5/1000)*(1-alphau)/alphau;
fprintf('\n la déformation dans l''acier est epsilons=%f
',epsilons1)
end
epsilonsyd=(fyk/1.15)/(200000);
if epsilonsyd < epsilons1
if fyk== 400
sigma1=346.82+576.58*epsilons1;
elseif fyk==500
sigma1=433.20 + 727.27*epsilons1;
end
fprintf('\n la résistance caractéristique de calcul pour palier incliné
est sigma1=%f Mpa', sigma1)
else
sigma1=200000*epsilons1;
fprintf('\n la résistance caractéristique de calcul est sigma1=%f Mpa
et suit la loi de Hooke ', sigma1)
end
if muc>0.225
fprintf('\n Formule exacte \n')
Zc=d*(1-lamda*alphau/2);
fprintf('\n le bras de levier est Zc=%f m ', Zc)
else
fprintf('\n Formule approchée \n')
Zc=d*(1-0.6*muc);
fprintf('\n le bras de levier est Zc=%f m ', Zc)
end
sigma2=sigma1;
As1=(Med-Mu*(beff-b)/beff)/(Zc*sigma1)+(beff-b)*hf*fcu/
(sigma1)+As2*(sigma2/sigma1);
fprintf('\n la section de termes comprimée calculée est As1=%f m^2 ',As1)
fprintf('\n condition de non fragilité du beton \n')
Asmin=0.26*b*d*fctm/fyk;
fprintf('\n la section d''armature minimale est Asmin=%f m^2 ',Asmin)
Asth=max(Asmin,As1);
fprintf('\n la section d''armature théorique est Asth=%f m^2 \n ',Asth)
disp('');
% % Verification des Sections
disp(' PARTIE 2: VERIFICATION A L''ELS ');
disp('');
Mser=input('\n Entrez le moment agissant sur la section à l''ELS en MN.m:
');
if As2==0
Asr1=input('\n Entrez la section d''acier réelle en m^2: ');
Asr2=0; dr2=0;
else
Asr2=input('\n Entrez la section d''acier réelle comprimée en m^2: ');
Asr1= input('\n Entrez la section d''acier réelle tendu en m^2: ');
dr2= input('\n la distance d separant le CDG des armatures comprimee a
la fibre de beton la plus comprimee en m: ');
end
k1=input('entrez le coefficient de reduction de la resistance fck: ');
k3=input('entrez le coefficient de reduction de la resistance fyk: ');
dr1=input('\n entrez la hauteur utile reelle d : ');
if beff==b
fprintf('section rectangulaire beff*h');
beff=b;
else
fprintf('\n section en T');
end
Ach=b*h+(beff-b)*hf+alphae*(Asr1+Asr2);
fprintf('\n section homogène est Ach=%f',Ach);
v1=((b*h^2)/2 + (beff-b)*(hf^2)/2+alphae*(dr1*Asr1+dr2*Asr2))/Ach;
v=b-v1;
Ich=(b/3)*(h^3)+((beff-b)/3)*(hf^3)+ alphae*(Asr1*(dr1^2) + Asr2*(dr2^2))-
Ach*(v1^2);
fprintf('\n L''inertle homogène est Ich=%f m^2.m^2',Ich);
fctef=max((1-h/1000)*fctm,fctm);
fprintf('\n la resistance effective du béton à la traction est fctef=%f
Mpa',fctef);
sigmact=Mser*v/Ich;
fprintf('\n la contrainte de traction du béton en fibre inférieure est
sigmact=%f Mpa',sigmact);
disp('')
disp(' B) VERIFICATION DES CONTRAINTES');
fprintf('\n Hypothèse:la section homogène est fissurée donc le beton tendu
est negligé \n');
if beff==b
beff=b;
else
fprintf('\n Vous avez une section en T: \n');
f=(beff/2)*(hf^2)+ alphae*Asr2*(hf-dr2)-a1phae*Asr1*(d-hf);
if f>=0
b=beff;
else
end
end
A=b/2;
B=(beff-b)*hf+alphae*(Asr1+Asr2);
C=(beff-b)*(hf^2)*0.5+alphae*(Asr1*dr1+Asr2*dr2);
P=[A B -C];
A1(1,:)=roots(P);
x=max(A1);
fprintf('\n -- L''epaisseur du beton comprimé est x=%f m',x);
Ief=(beff*x^3)/3-(beff-b)*((x-hf)^(3))*(1/3)+alphae*Asr2*((x-
dr2)^2)+alphae*Asr1*((dr1-x)^2);
fprintf('\n -- L''inertle homogène fissurée est Ief=%f m^2m^2',Ief);
K=Mser/Ief;
sigmab=k1*fck;
sigmaels= k3*fyk;
sigmabELS= K*x;
sigmaAELS= K*alphae*(d-x);
disp('');
fprintf('\n --contrainte limite dans le beton sigmab=%f Mpa et dans
l''acier sigmaels=%f Mpa',sigmab,sigmaels);
disp('');
fprintf('\n --contrainte dans le beton sigmabELS=%f Mpa',sigmabELS);
fprintf('\n --contrainte dans l''acier sigmaAELS=%f Mpa',sigmaAELS);
if sigmabELS<=sigmab
fprintf('\n contrainte dans le beton verifee');
else
fprintf('\n contrainte dans le beton non verifee');
end
if sigmaAELS<=sigmaels
fprintf('\n contrainte dans l''acier verifee');
else
fprintf('\n contrainte dans l''acier non verifee');
end
if sigmabELS<=sigmab && sigmaAELS<=sigmaels
fprintf('\n Procedez au ferraillage \n ')
else
fprintf('\n Augmenter la Hauteur de la poutre h ou prendre fyk plus
grand \n ');
end