Annexes
Annexe 1 : quelques éléments d'un site de
télécommunication Annexe 1.a : lecture des azimuts
Annexe 1.b : BTS
Annexe 1.c : Baie
Annexe 2 : quelques données de la norme NV 65
Annexe 2-a: coefficient de réduction
Annexe 2-b : coefficient de réponse
Annexe 2-c : coefficient de pulsation
Annexe 3 : Fonctions essentielles
utilisées dans le code
Annexe 3-a : coordonnées et
connectivités entre les noeuds.
function [t,p]=schema36(B,H) %
%cette fonction dessine le pylone %B: longueur des bases
%H:hauteur du pylone
%t:table de connectivité %p:coordonnées des
noeuds %tsopgo clovis, faculte de genie industriel
%
[t,p]=type4(B(1),B(2),H(1));
for i=2:7
if i<6
[T,P]=type4(B(i),B(i+1),H(i)); elseif i==6
[T,P]=type5(B(i),B(i+1),H(i));
else
[T,P]=type6(B(i),B(i+1),H(i));
end
T=T+size(p,1)-2;
P=P(3:size(P,1),:);
P(:,2)=P(:,2)+sum(H(1:i-1));
t=[t;T]; p=[p;P];
end
return
Annexe 3-b: localisation de la matrice
élémentaire dans la matrice globale
function L = Localise(t)
%calcul de la localisation de la matrice elementaire % dans la
matrice globale
% t : table de connectivités de l'element % L : table de
loacalisation
%
% tsopgo clovis,faculte de genie industriel
nne = length(t);
for i= 1:nne
L([2*i1 2*i]) = [2*t(i)1 2*t(i)];
end
return
annexe 3-c: longueurs et cosines directeurs des
barres
function [ds,c,s] = EltLen(XY)
%
% Calcul de la longueur, du cos et du sin de la matrice de
rotation pour un
% element barre à deux noeuds (x1,y1) (x2,y2)
% c : cosinus de l'angle
% s : sinus de l'angle
% XY: cordonnées des noeuds XY = [x1,y1; x2,y2]
%
% tsopgo clovis,faculte de genie industriel
dx = XY(2,1) - XY(1,1); dy = XY(2,2) - XY(1,2);
ds = sqrt(dx^2 + dy^2);
c = dx/ds; s = dy/ds; return
annexe 3-d: élimination des noeuds
bloqués
function A = DelDOFs(A,L)
% A = DelDOFs(A,L)
%
% A : matrice globale après assemblage
% L : liste des degrés de liberté à
éliminer % tsopgo clovis faculté de genie industriel
L = sort(L); % tri de la liste des DDL
n = length(L); % longueur de L
if (size(A,2) == 1) % cas d'un vecteur
for i = n:-1:1 % parcourir L à partir du plus grand
indice
A(L(i)) =[] ; % suppression de la composante associée au
DDL
courant
end
else % cas d'une matrice
for i = n:-1:1
A(L(i),:) =[] ; % suppression de la ligne L(i)
A(:,L(i)) =[] ; % suppression de la colonne L(i)
end end return
annexe 3-e : ajout des noeuds
bloqués
function U = AddDOFs(U,L)
%
% U = K \ F : FE solution
% L : Table de localisation des noeuds d'appuis
%
%tsopgo clovis faculté de génie industriel
[m,n] = size(L);
L = reshape(L,m*n,1); L = L(find(L));
L = sort(L);
n = length(L);
for i = 1:n
U = AddToVect(U,L(i),0);
end
U = U';
return
annexe 3-f : calcul des efforts
normaux
function [F,R] = TrussForces(t,p,A,E,U)
% F : forces axiales dans les barres
% R : forces aux niveaux des noeuds = réactions dans le
cas d'appuis % t : table de connectivités des éléments
% p : table des coordonnées des noeuds
% A : sections des éléments
% E : modules d'élasticité
% U : solution en déplacement
%
% tsopgo clovis, faculte de genie industriel
net = size(t,1); % nombre d'éléments total
nnt = size(p,1); % nombre de noeuds total
R = zeros(2*nnt,1); % Forces aux noeuds
for ie = 1:net % boucle sur les éléments
L = localise(t(ie,:)); % table de localisation
ke = truss2dKe(p(t(ie,:),:),A(ie),E); % matrice
élémentaire
ue = U(L); % déplacements des noeuds
fe = ke*ue; % forces élémentaires dans (oxy)
R(L) = R(L) + fe; % tous les éléments liés
au noeud
[L,c,s] = EltLen(p(t(ie,:),:)); % les cosinus directeurs
F(ie,:) = -( c*fe(1) + s*fe(2) ); % rotation au repère
local
end % fin de boucle
return
annexe 3-g : maillage du pylône
function plotmesh(haut,base,entete,EltLabels,NodeLabels)
%
% cette fonction dessine le pylone
% haut: hauteur du pylone
% base: longueur de la base
% entete: longueur de l'entete
% NodeLabels : vaut true pour afficher les
éléments
% EltLabels : vaut true pour afficher les noeuds
% color : couleur des lignes
% % %tsopgo clovis, faculte de genie industriel
%
axis equal
[hauteur, D,d,H,B]=geom(haut,base,entete);
[t,p]=schema(B,H); Net = size(t,1); for ie = 1:Net
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','r','linewidth',2)
if(EltLabels)
x = mean(XY(:,1));
y = mean(XY(:,2));
axis equal text(x,y,num2str(ie),'color','g')
end
end
Np = size(p,1); if(NodeLabels) for i=1:Np
text(p(i,1),p(i,2),num2str(i),'color','b')
end
end
if hauteur ==36; for ie = 21:40
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 61:80
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 101:108
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
elseif hauteur ==54;
for ie = 1:26
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 53:72
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 93:112
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 133:152 XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 173:180
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
elseif hauteur ==72;
for ie = 27:52
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 73:92
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 113:132
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 153:172 XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 193:212
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
for ie = 234:241
XY = p(t(ie,:),:);
X = [XY(:,1)];
Y = [XY(:,2)]; line(X,Y,'color','w','linewidth',2)
end
end
X=[-D -D];
Y=[-0.5 sum(H)+0.5];
line(X,Y,'color','w')
h=[0 H];
B = num2str(B,'%10.2f');
B=str2num(B);
x=[-D -1.5*D];
y=[0 0];
line(x,y,'color','w')
text(-1.6*D,0.45,num2str(B(1)),'color','b')
z1=[0.5*D+1 0.5*D+4]; z2=[sum(h)-1 sum(h)-1]; t1=[0.5*D+3.5
0.5*D+4]; t2=[sum(h)-1.5 sum(h)-1]; t3=[sum(h)-0.5 sum(h)-1];
line(z1,z2,'color','w','linewidth',2)
line(t1,t2,'color','w','linewidth',2)
line(t1,t3,'color','w','linewidth',2)
text(0.5*D+2,sum(h)-0.4,'vent','color','w')
for i= 1:length(H)
s=0.5*(B(i+1)+B(i))*H(i); y=[sum(H(1:i)) sum(H(1:i))];
line(x,y,'color','w')
text(-D+0.3,sum(h(1:i))+0.5*h(i+1),'T','color','g')
text(-D+0.9,sum(h(1:i))+0.5*h(i+1),num2str(i),'color','g')
text(-1.35*D,sum(h(1:i))+0.5*h(i+1),num2str(s),'color','g')
text(-1.6*D,sum(H(1:i))+0.45,num2str(B(i+1)),'color','b')
end
return
annexe 3-h: matrice de rigidité
élémentaire
function [ke,L] = truss2dKe(XY,A,E)
%
% Calcul de la matrice elementaire pour un
% element barre à deux noeuds (x1,y1) (x2,y2) % A :
section de l'element
% E : module d'élasticité
% XY: cordonnées des noeuds XY = [x1,y1; x2,y2] %
L:longueur de la barre
%tsopgo clovis, faculte de genie industriel
[L,c,s] = EltLen(XY); % longueur et orientation de
l'élément
cc = c*c; % cos(angle)^2
cs = c*s; % cos(angle)*sin(angle)
ss = s*s; % sin(angle)^2
ke = (A*E/L) * [ cc cs -cc -cs % matrice
élémentaire Ke
cs ss -cs -ss -cc -cs cc cs cs ss cs ss
];
return
Annexe 3- i : programme principal
function
[P,R,sigma,Ux,Umax,Rx1,Ry1,Rx2,Ry2,T,U,t,p,A,ba,Long,fy,obs,alpha] =
truss2dKM(haut,base,entete,q,sa,masse,cornieres,ks,direct)
% haut: hauteur du pylone
% base: longueur de la base
% entete: longueur de l'entete % q:pression à 10
mètres du sol % sa: charge en tete du pylone % masse: masse des
antennes
% cornières: matrice des cornières à
utiliser
% ks: coefficient de site % direct:direction du vent
% P:vecteur des efforts normaux % R:réactions au niveau du
sol
% sigma: vecteur des contraintes
% Ux: valeur de la flèche en tete du pylone
% Umax: déplacement maximal en tete du pylone
% RX, RY: valeurs des réactions au niveau du sol
% T: périodes propres
% U: vecteur déplacement % t : table de
connectivités des éléments
% p : table des coordonées des noeuds
% A : sections des éléments (des barres)
% ba :numéros des barres
% long :longueur des barres % fy :contraintes maximales
% obs:vecteur à deux états: "oui" si sigma < fy
et "non" sinon
% alpha: angle de rotation en tete
%tsopgo clovis, faculte de genie industriel
%
clc % effacer tout le contenu de la
fenetre de commande
[B,Al,A,si,sp,dens,E,G,H,Fv,Fp,t,p,iv,fy,Iw]=traitement(haut,base,entete,q,co
rnieres,ks,direct);
if direct==0 %direction du vent qui vaut 0 pour
le vent
Fv=Fv/1.41; % diagonal et 1 pour le vent normal
end %fin de la boucle
qa=1.3*2.5*q*sa*(sum(H)+16)/(sum(H)+58); % frce du vent dur les
antennes
net = size(t,1); %nombre de barres
nnt = 2*size(p,1); % nombre de noeuds, 2 signifie le
nombre de degré de liberté
K = sparse(nnt,nnt); % initialisation des matrices de
rigidité, d'inertie, et des forces
Kw = zeros(nnt,nnt); % par des matrices creuses nulles
M = sparse(nnt,nnt); FV = sparse(nnt,1); FP = sparse(nnt,1);
Mw = sparse(nnt,1);
Fp=2*Fp; % prise en compte des barrres
latérales
FV(end -3) = FV(end-3)+0.5*qa; %ajout du poids des antennes
Long=zeros(net,1); %initialisation des longueurs des
barres
for i = 1:net %début de boucle sur les
éléments
ti = t(i,:); %table de connectivité et de
Li = localise(ti); %localisation de l'élément
courant
[Ke,l] = truss2dKe(p(ti,:),A(i),E);%matrice de rigidité
élémentaire kw=((81e+9)*Iw(i)/l)*[1 0 -1 0;... %matrice de
rigidité élémentaire 0 0 0 0;-1 0 1 0;0 0 0 0]; %en
torsion
Long(i)=l;
Me = truss2dMe(p(ti,:),A(i),dens);%matrice masse
élémentaire fe=Fv(i)*l*[0.5;0;0.5;0];
Fe=-Fp(i)*[0;0.5;0;0.5];
K(Li,Li)
|
=
|
K(Li,Li) +
|
Ke;
|
Kw(Li,Li)
|
=
|
Kw(Li,Li)
|
+ kw;
|
M(Li,Li)
|
=
|
M(Li,Li) +
|
Me;
|
%assemblage de la fonction K %assemblage de la matrice kw
%assemblage de la matrice M
FV(Li) = FV(Li) + fe; %assemblage de la matrice FV
% FP(Li) = FP(Li) + Fe; %assemblage de la matrice FP
end %fin de la boucle
Long = num2str(Long,'%10.2f'); %choix du format d'affichage
Long=str2num(Long); %des longueurs
Mw(end-2)= 0.1*qa; %valeur du moment en tete
poids=masse*9.81; %poids des antennes
nul=1:4; %noeuds encastrés
K = DelDOFs(K,nul); %application
M = DelDOFs(M,nul); %des
FV = DelDOFs(FV,nul); %conditions
Mw = DelDOFs(Mw,nul); %aux
Kw = DelDOFs(Kw,nul); %limites
[y,kk]=chol(K); %décomposition
[yw,kk]=chol(Kw); %de cholesky
angle=yw'\Mw; %angle de
angle=yw\angle; %rotation
alpha= angle(end2)*180/3.14; %en tete du pylone
alpha = num2str(alpha,'%10.2f'); %normaux
alpha=str2num(alpha);
x=y'\FV; %calcul de
U=y\x; %la solution
U = AddDOFs(U,nul); %ajout des DDl des noeuds encastrés
Ux=100*U(end-1); %calcul de la flèche en tete
Ux = num2str(Ux,'%10.2f');
Ux=str2num(Ux);
Umax=sum(H)/2; %déplacement maximal
FP(end)=FP(end)-0.5*poids;
FP(end-2)=FP(end-2)-0.5*poids;
FP = DelDOFs(FP,nul); %conditions aux limites
U1=y'\(1.33*FP+1.5*FV);
U1=y\U1;
U1 = AddDOFs(U1,nul); % Ajouter les DDL des noeuds
encastré
[phi, omega2] = eigs(K,M); % modes propres
omega = sqrt(diag(omega2)); % pulsations
T = 2*pi./sort(omega); % périodes propres par ordre
croissant
T = num2str(T,3); % et choix du format d'affichage
[P,R] = TrussForces(t,p,A,E,U1); %calcul
sigma=(1e-6)*P./A %des éfforts
sigma = num2str(sigma,'%10.2f'); %normaux
sigma=str2num(sigma); %des contraintes
ba=1:length(t(:,1));
Rx1=R(1)/1000; %des réactions
Rx2=R(3)/1000; %et choix du format
Ry1=R(2)/1000; %d'affichage
Ry2=R(4)/1000;
Rx1 = num2str(Rx1,'%10.2f'); Rx1=str2num(Rx1);
Rx2 = num2str(Rx2,'%10.2f'); Rx2=str2num(Rx2);
Ry1 = num2str(Ry1,'%10.2f'); Ry1=str2num(Ry1);
Ry2 = num2str(Ry2,'%10.2f'); Ry2=str2num(Ry2);
%%%%% DIMMENSIONNEMENT %%%%%%
lam=Long./iv; %calcul de lamda
lam1=93.9*sqrt(235./fy); %de lamda 1
lba=lam./lam1; %de lamda barre
fi=0.5*(1+0.49*(lba-0.2)+lba.*lba); %de phi
ki=fi+sqrt(fi.*fi-lba.*lba); %de ki
ki=1./ki; %et
simax=ki.*fy./1.1; %de sigma max
for i=1:net % boucle de
if (lba(i)>0.2 && sigma(i)<=0)
%vérification
fy(i)= simax(i); %des contraintes
end % fin
end % de la boucle
%%%%% FIN DU DIMENSIONNEMENT %%%%
P=P/1000; %conversion de la force en kN
P = num2str(P,'%10.2f'); %choix du format d'affichage
P=str2num(P); %de l'effort
fy = num2str(fy,'%10.2f'); %et de
fy=str2num(fy); %l'effort maximal
obs=100*ones(net,1); %affichage
sigma=troncon(sigma,H); %de la contrainte
P=troncon(P,H); %de l'effort normal
A=A*1e+6;
A=troncon(A,H); %de la section
ba=troncon(ba,H); %des numéros des barres
Long=troncon(Long,H); %des longueurs
fy=troncon(fy,H); %de la contrainte maximale
obs=troncon(obs,H); %et de l'observation en fonction de la
hauteur
return %fin de la fonction
Annexe 4 : pylône dans robot
millénium
Annexe 4-a : vue en élévation du
pylône (numéro des noeuds et des barres)
Annexe 4-b : déformée du
pylône
Annexe 4-c valeur des réactions
Annexe 4-d : quelques valeurs des contraintes et
déplacements
|