Vous êtes sur la page 1sur 7

Compte rendu : TP MEF

L’avant traitement

Nom : ZEBROUCHE
Prénom : Meriem
Matricule : 202031039417
Section : B
Groupe : 4
M1-STR-GC

Le 19-03-2023
1- Les étapes de dessin :
1.1-La matrice de la structure :
Pour designer la structure on a entré la matrice des nœuds et la matrice des barres dans MATLAB sur les
titres Mnxy pour les nœuds contenant les coordonnées x,y de point et Mn pour les barres contenant les
indices des point à relier.

Mnxy = 1 0 0
2 4 4
3 4 0
4 8 4
5 8 0
6 12 0
Mn = 1 1 2
2 1 3
3 3 2
4 2 4
5 2 5
6 3 4
7 3 5
8 4 6
9 5 6
10 4 5

1.2- Fonction pour dessiner la structure :


Premièrement on utilise la demande ‘length(Mn) ‘ pour calcule la longueur de la matrice Mn ¨la matrice
des nœuds ¨ c’est à dire les nombres de ligne.
Commence une boucle pour parcourir les lignes de Mn par la commande ‘’ for ‘’ (elle permet de répéter
un bloc de code un nombre spécifie de fois ou en fonction de éléments d’un venter ou d’une matrice)
par saisie les indices des points à relier depuis la matrice Mn et les coordonnées x et y du premier et la
deuxième point les nœuds après on utilise la commande " line"( utiliser pour tracer des lignes ou des
segments de ligne sur un graphique) pour tracer une ligne reliant les deux coordonnées extraites
précédemment.

function [x1 x2 y1 y2]=dessin(Mnxy, Mn)


nb = length(Mn);
for i = 1:nb
n1 = Mn(i,2);
n2 = Mn(i,3);
x1 = Mnxy(n1,2);
y1 = Mnxy(n1,3);
x2 = Mnxy(n2,2);
y2 = Mnxy(n2,3);
line([x1, x2], [y1, y2]);
end
end

1.3- Fonction pour ajuster la position des axes :


Pour définir les limites de l'axe pour nôtres structure on utilise la commande" axis" ( utiliser pour
définir ou récupérer les limites des axes d’un graphe ) avec des valeurs à calculer par une fonction
"position" pour calcule les limites de l'axe donc en utilisant les valeurs minimales et maximales des
coordonnées x et y de la matrice des barres Mnxy, et ajuste ces limites pour inclure une marge de 10%
autour des données.

- on commence par déterminer la valeur minimale et maximale de barres Xmax, Xmin et Ymax, Ymin.

-on calcule la taille de l’intervalle a et b en X et en Y.

- on définit les valeurs minimale et maximale c, d, e, f en X et en Y.

function[c d e f]=position(Mnxy)
Xmin = min(Mnxy(:,2));
Xmax = max(Mnxy(:,2));
Ymin = min(Mnxy(:,3));
Ymax = max(Mnxy(:,3));

a = (Xmax - Xmin) / 10;


b = (Ymax - Ymin) / 10;
c = Xmin - a;
d = Xmax + 1;
e = Ymin - b;
f = Ymax + b;
axis([c d e f]);
end
1.4-Fonction pour numéroter les nœuds :
Pour numéroter les nœuds on écrit un boucle par utilise la fonction "text" (utiliser pour ajouter du
texte à un graphique) pour afficher du texte dans la figure.

function [num]=noeud(Mnxy)
nn = length(Mnxy);
for i = 1:nn
num=Mnxy(i,1);
text(Mnxy(i,2), Mnxy(i,3), num2str(num));
end
end

Les coordonnées où le texte sera placé sont spécifiées par les éléments deux et trois de la ligne i de la
matrice Mnxy. Le texte qui sera affiché est la valeur de num convertie en chaîne de caractères
(num2str(num)). Cela signifie que le numéro extrait à partir de la matrice Mnxy sera affiché à la position
spécifiée par ses deux autres valeurs dans la matrice Mnxy.

1.5- Fonction pour numéroter les barres :


Pour numéroter les barres on dessine des étiquettes numérotées à des positions médianes entre les
coordonnées spécifiées des barres (dans la matrice Mnxy ) avec une couleur rouge par un boucle
spécifier les point de départ et d’arrivée pour chaque ligne (dans la matrice Mn ) dans lequel on calcule
les positions médianes entre les points de départ et d’arrivée .

function [mid_x mid_y]=barre(Mn,Mnxy)


nb=length(Mn)
for i = 1:nb
origin = Mn(i,2);
extremity = Mn(i,3);
x1_position = Mnxy(origin,2);
x2_position = Mnxy(extremity,2);
y1_position = Mnxy(origin,3);
y2_position = Mnxy(extremity,3);
mid_x = (x2_position + x1_position) / 2;
mid_y = (y1_position + y2_position) / 2;
j=Mn(i,1);
text(mid_x, mid_y, num2str(j),'Color', 'red');
end
2- Le code globale :

Mnxy = [1 0 0; 2 4 4; 3 4 0; 4 8 4; 5 8 0; 6 12 0];
Mn = [1 1 2; 2 1 3; 3 3 2; 4 2 4; 5 2 5; 6 3 4; 7 3 5; 8 4 6; 9 5 6; 10 4 5];
nb = length(Mn);

Xmin = min(Mnxy(:,2));
Xmax = max(Mnxy(:,2));
Ymin = min(Mnxy(:,3));
Ymax = max(Mnxy(:,3));

a = (Xmax - Xmin) / 10;


b = (Ymax - Ymin) / 10;
c = Xmin - a;
d = Xmax + 1;
e = Ymin - b;
f = Ymax + b;
axis([c d e f]);

hold on;

for i = 1:nb
n1 = Mn(i,2);
n2 = Mn(i,3);
x1 = Mnxy(n1,2);
y1 = Mnxy(n1,3);
x2 = Mnxy(n2,2);
y2 = Mnxy(n2,3);
line([x1, x2], [y1, y2]);
end

nn = size(Mnxy, 1);
for j = 1:nn
p=Mnxy(j,1);
text(Mnxy(j,2), Mnxy(j,3), num2str(p));
end

for i = 1:nb
origin = Mn(i,2);
extremity = Mn(i,3);
x1_position = Mnxy(origin,2);
x2_position = Mnxy(extremity,2);
y1_position = Mnxy(origin,3);
y2_position = Mnxy(extremity,3);
mid_x = (x2_position + x1_position) / 2;
mid_y = (y1_position + y2_position) / 2;
k=Mn(i,1);
text(mid_x, mid_y, num2str(k),'Color', 'red');
end

hold off;
3-le résultat de code :

Figure .1.

4- Enregistrer et appeler :
Pour utilise les résultats de notre opération pour afficher des autres graphique on a besoin de ce code :
semble charger les données à partir des fichiers textes et appelé les fonctions pour effectuer les
opérations sur les données

Mnxy=load('M.txt');
Mn=load('B.txt');
[c d e f]=position(Mnxy);
hold on
[x1 x2 y1 y2]=dessin(Mnxy, Mn);
[num]=noeud(Mnxy);
[mid_x mid_y]=barre(Mn,Mnxy);
hold off
-charger les données des fichiers textes 'M.txt' et 'B.txt'.

-appeler la fonction "position" avec Mnxy en entrée pour calculer les valeurs c, d, e, et f les limites

de l’axe.

-on indique à MATLAB de conserver le tracé actuel lors de l'ajout les autres éléments au

graphique.

-appelle la fonction “dessin" avec Mnxy et Mn comme arguments pour dessiner.

-appelle la fonction "nœud" avec Mnxy comme argument pour effectuer certaines opérations

sur les données dans lequel la variable "num" semble contenir le résultat de cette opération.

-appelle une fonction nommée "barre" avec Mn et Mnxy comme arguments pour effectuer

certaines opérations sur les données. Les variables "mid_x" et "mid_y" semblent contenir le

résultat de cette opération.

-Indique à MATLAB de ne plus conserver le tracé actuel, ce qui permet de recommencer à partir

d'un nouveau tracé.

Vous aimerez peut-être aussi