0% ont trouvé ce document utile (0 vote)
12 vues9 pages

Programme Matlab

Ce document présente un programme MATLAB pour le calcul des efforts internes dans une poutre à l'aide de la méthode des trois moments. Il inclut des sections pour le calcul des moments aux appuis, des efforts tranchants, ainsi que le dimensionnement d'une poutre en flexion simple. Le programme permet également de vérifier les sections et de calculer les réactions aux appuis, tout en affichant les résultats graphiquement.

Transféré par

Chris Heumen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues9 pages

Programme Matlab

Ce document présente un programme MATLAB pour le calcul des efforts internes dans une poutre à l'aide de la méthode des trois moments. Il inclut des sections pour le calcul des moments aux appuis, des efforts tranchants, ainsi que le dimensionnement d'une poutre en flexion simple. Le programme permet également de vérifier les sections et de calculer les réactions aux appuis, tout en affichant les résultats graphiquement.

Transféré par

Chris Heumen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi