0% ont trouvé ce document utile (0 vote)
283 vues14 pages

Matlab

Ce rapport présente une analyse par éléments finis d'une structure en treillis soumise à des charges inclinées, comprenant 31 nœuds et 74 éléments barres. L'étude détermine les déplacements, contraintes et réactions aux appuis en utilisant des calculs détaillés et une implémentation MATLAB. Les résultats incluent des informations sur les déformations, contraintes maximales et une visualisation graphique de la structure.

Transféré par

Farida Dib
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)
283 vues14 pages

Matlab

Ce rapport présente une analyse par éléments finis d'une structure en treillis soumise à des charges inclinées, comprenant 31 nœuds et 74 éléments barres. L'étude détermine les déplacements, contraintes et réactions aux appuis en utilisant des calculs détaillés et une implémentation MATLAB. Les résultats incluent des informations sur les déformations, contraintes maximales et une visualisation graphique de la structure.

Transféré par

Farida Dib
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

Analyse Structurelle

par Éléments Finis


Département : Génie Mécanique
Filière : Génie des Systèmes Mécaniques

Réalisé par :

 Farida Dib

Encadré par :
Mr. JALAL Salah Eddine

2024/2025
2024/2025
Résumé Exécutif

Ce rapport présente une analyse complète d'une structure en treillis soumise à


des charges inclinées. L'analyse a été réalisée par la méthode des éléments finis
(MEF) pour déterminer les déplacements, contraintes et réactions aux appuis. La
structure étudiée est un treillis de 31 nœuds et 74 éléments barres, encastré à
sa base et soumis à des forces de 1800 N inclinées à 15° par rapport à la
verticale.

1. Description du Problème

1.1 Géométrie de la Structure

La structure analysée est un treillis plan composé de :

 31 nœuds répartis sur une hauteur de 28 mètres


 74 éléments barres en acier
 Appuis aux nœuds 1 et 2 (base de la structure)
 Chargement appliqué aux nœuds 13, 14, 23 et 24

1.2 Propriétés Matériau

 Module d'Young (E) : 210 GPa (acier)


 Coefficient de Poisson (ν) : 0,3
 Section transversale (A) : 28 cm²

1.3 Conditions de Chargement

 Force appliquée : 1800 N par nœud chargé


 Angle d'inclinaison : 15° par rapport à la verticale
 Composantes :
o Force horizontale : Fx = -466,8 N
o Force verticale : Fy = -1738,4 N

2. Méthodologie

2.1 Méthode des Éléments Finis

L'analyse utilise la méthode des éléments finis avec des éléments barres 2D.
Chaque élément est caractérisé par :

 Deux nœuds de connexion


 Comportement axial uniquement (traction/compression)
 Matrice de rigidité élémentaire 4×4

2024/2025 1
2.2 Assemblage du Système

Le système global est assemblé selon la procédure standard :

1. Calcul des matrices de rigidité élémentaires


2. Assemblage de la matrice de rigidité globale K
3. Application des conditions aux limites
4. Résolution du système Kd = f

2.3 Calcul des Contraintes

Les contraintes sont calculées pour chaque élément selon :

 Déformation axiale : ε = Δl/L


 Contrainte axiale : σ = E × ε

3. Implémentation MATLAB

clc; clear; close all;

%% === Données du problème ===

E = 210e9; % Module d'Young (Pa)

v = 0.3; % Coefficient de Poisson

A = 28e-4; % Section (m²)

F = 1.8e3; % Force (N)

theta_deg = 15; % angle en degrés

%% === Données de géométrie (coordonnées des nœuds) ===

% Coordonnées exactes selon le problème

nodes = [

0, 0; % 1 - base gauche

5, 0; % 2 - base droite

0, 5; %3

5, 5; %4

0, 9; %5

5, 9; %6

1, 9; %7

4, 9; %8

1, 15; %9

4, 15; % 10
2024/2025 2
4, 9; %8

1, 15; %9

4, 15; % 10

-2, 16.5; % 11

7, 16.5; % 12

-5, 18; % 13

10, 18; % 14

-2, 18; % 15

7, 18; % 16

1, 18; % 17

4, 18; % 18

1, 21; % 19

4, 21; % 20

-2, 22.5; % 21

7, 22.5; % 22

-5, 24; % 23 - nœud de charge

10, 24; % 24 - nœud de charge

-2, 24; % 25 - nœud de charge

7, 24; % 26 - nœud de charge

1, 24; % 27

4, 24; % 28

1, 26; % 29

4, 26; % 30

2.5, 28 % 31 - sommet

];

nnp = size(nodes,1); % nb de nœuds

ndof = 2; % 2 ddl par nœud (x et y)

3
2024/2025
nnp = size(nodes,1); % nb de nœuds

ndof = 2; % 2 ddl par nœud (x et y)

neq = nnp * ndof;

%% === Connectivité des barres (IEN) ===

% Définition exacte des éléments selon votre spécification

IEN = [

% Barres verticales principales

1, 3; 2, 4; 3, 5; 4, 6; 5, 7; 6, 8;

7, 9; 8, 10; 9, 17; 10, 18; 11, 15; 12, 16;

17, 19; 18, 20; 19, 27; 20, 28; 21, 25; 22, 26;

27, 29; 28, 30;

% Barres horizontales

1, 2; 3, 4; 5, 6; 7, 8; 9, 10; 13, 15;

15, 17; 18, 16; 16, 14; 19, 20; 23, 25;

25, 27; 27, 28; 28, 26; 26, 24; 29, 30;

% Diagonales

1, 4; 2, 3; 3, 6; 4, 5; 5, 8; 6, 7; 7, 10; 8, 9;

10, 17; 9, 18; 20, 27; 19, 28; 28, 29; 27, 30;

% Barres de contreventement

10, 12; 12, 14; 9, 11; 11, 13; 20, 22; 22, 24;

19, 21; 21, 23; 29, 31; 30, 31;

% Éléments supplémentaires pour la stabilité

21, 27; 22, 28; 11, 17; 12, 18

];

nel = size(IEN,1); % nb d'éléments

fprintf("Nombre de nœuds : %d\n", nnp);

fprintf("Nombre d'éléments : %d\n", nel);

%% === Initialisations ===

K = zeros(neq); % Matrice de rigidité globale


4
2024/2025
%% === Initialisations ===

K = zeros(neq); % Matrice de rigidité globale

f = zeros(neq,1); % Vecteur de forces

d = zeros(neq,1); % Déplacement nodal

%% === Application des charges ===

% Les charges sont appliquées aux nœuds 23, 24, 25, 26 selon l'énoncé

angle = deg2rad(theta_deg);

F_x = -F * sin(angle); % Composante horizontale

F_y = -F * cos(angle); % Composante verticale

noeuds_charges = [23, 24, 25, 26];

for n = noeuds_charges

f(2*n-1) = f(2*n-1) + F_x; % Force en X

f(2*n) = f(2*n) + F_y; % Force en Y

end

fprintf("Forces appliquées:\n");

fprintf("Fx = %.2f N, Fy = %.2f N\n", F_x, F_y);

%% === Conditions aux limites (encastrement à la base) ===

% Nœuds 1 et 2 sont encastrés (tous les déplacements bloqués)

prescDof = [1, 2, 3, 4]; % ddl des nœuds 1 et 2

activeDof = setdiff(1:neq, prescDof);

%% === Assemblage de la matrice de rigidité ===

fprintf("Assemblage en cours...\n");

for e = 1:nel

% Nœuds de l'élément

ni = IEN(e,1);

nj = IEN(e,2);

% Coordonnées

xi = nodes(ni,1); yi = nodes(ni,2);

xj = nodes(nj,1); yj = nodes(nj,2); 5
2024/2025
xi = nodes(ni,1); yi = nodes(ni,2);

xj = nodes(nj,1); yj = nodes(nj,2);

% Longueur et cosinus directeurs

L = sqrt((xj - xi)^2 + (yj - yi)^2);

if L < 1e-10

warning('Élément %d a une longueur nulle', e);

continue;

end

cx = (xj - xi)/L;

cy = (yj - yi)/L;

% Matrice de rigidité élémentaire

k_local = (E*A/L) * [

cx^2, cx*cy, -cx^2, -cx*cy;

cx*cy, cy^2, -cx*cy, -cy^2;

-cx^2, -cx*cy, cx^2, cx*cy;

-cx*cy, -cy^2, cx*cy, cy^2

];

% DDL de l'élément

dof = [2*ni-1, 2*ni, 2*nj-1, 2*nj];

% Assemblage

K(dof,dof) = K(dof,dof) + k_local;

end

%% === Résolution du système ===

fprintf("Résolution du système...\n");

% Vérification du conditionnement

cond_K = cond(K(activeDof,activeDof));

fprintf("Conditionnement de K : %.2e\n", cond_K);


2024/2025
% Vérification du conditionnement

cond_K = cond(K(activeDof,activeDof));

fprintf("Conditionnement de K : %.2e\n", cond_K);

if cond_K > 1e12

warning('Matrice mal conditionnée - possible singularité');

end

% Résolution

d(activeDof) = K(activeDof,activeDof) \ f(activeDof);

%% === Calcul des réactions ===

R = K * d - f;

%% === Affichage des résultats ===

fprintf("\n=== RÉSULTATS ===\n");

% Déplacements maximaux

max_disp_x = max(abs(d(1:2:end))) * 1000; % en mm

max_disp_y = max(abs(d(2:2:end))) * 1000; % en mm

fprintf("Déplacement maximal en X : %.3f mm\n", max_disp_x);

fprintf("Déplacement maximal en Y : %.3f mm\n", max_disp_y);

% Réactions aux appuis

fprintf("\nRéactions aux appuis (en N):\n");

fprintf("Nœud 1 - Rx: %.1f N, Ry: %.1f N\n", R(1), R(2));

fprintf("Nœud 2 - Rx: %.1f N, Ry: %.1f N\n", R(3), R(4));

%% === Calcul des contraintes et déformations ===

fprintf("\n=== CONTRAINTES ET DÉFORMATIONS ===\n");

max_stress = 0;

max_strain = 0;

critical_element = 0;

for e = 1:nel

ni = IEN(e,1);

nj = IEN(e,2);
for e = 1:nel

ni = IEN(e,1);

nj = IEN(e,2);

xi = nodes(ni,1); yi = nodes(ni,2);

xj = nodes(nj,1); yj = nodes(nj,2);

L = sqrt((xj - xi)^2 + (yj - yi)^2);

if L < 1e-10

continue;

end

cx = (xj - xi)/L;

cy = (yj - yi)/L;

dof = [2*ni-1, 2*ni, 2*nj-1, 2*nj];

u = d(dof);

% Déformation axiale

delta = [-cx, -cy, cx, cy] * u;

strain = delta / L;

stress = E * strain;

if abs(stress) > abs(max_stress)

max_stress = stress;

max_strain = strain;

critical_element = e;

end

if e <= 10 || mod(e,10) == 0 % Afficher quelques éléments

fprintf('Élément %d : ε = %.3e, σ = %.2f MPa\n', e, strain, stress/1e6);

end

end

fprintf("\nÉlément critique : %d\n", critical_element);

fprintf("Contrainte maximale : %.2f MPa\n", max_stress/1e6);

fprintf("Déformation maximale : %.3e\n", max_strain);


fprintf("\nÉlément critique : %d\n", critical_element);

fprintf("Contrainte maximale : %.2f MPa\n", max_stress/1e6);

fprintf("Déformation maximale : %.3e\n", max_strain);

%% === Vérification de la loi de Hooke ===

sigma_test = E * max_strain;

fprintf("Vérification σ = E×ε : %.2f MPa\n", sigma_test/1e6);

%% === Graphique de la structure ===

figure('Position', [100, 100, 1000, 800]);

% Facteur d'échelle pour la déformation

scale = 500; % Amplification pour visualiser les déformations

% Structure non déformée

subplot(1,2,1);

hold on; axis equal; grid on;

title('Structure initiale');

xlabel('x (m)'); ylabel('y (m)');

for e = 1:nel

ni = IEN(e,1);

nj = IEN(e,2);

xi = nodes(ni,:);

xj = nodes(nj,:);

plot([xi(1), xj(1)], [xi(2), xj(2)], 'b-', 'LineWidth', 1.5);

end

% Numérotation des nœuds

for i = 1:nnp

plot(nodes(i,1), nodes(i,2), 'ro', 'MarkerSize', 4, 'MarkerFaceColor', 'r');

text(nodes(i,1)+0.2, nodes(i,2)+0.2, num2str(i), 'FontSize', 8);

end

% Marquer les appuis

plot(nodes(1,1), nodes(1,2), 's', 'MarkerSize', 10, 'MarkerFaceColor', 'g');


% Marquer les appuis

plot(nodes(1,1), nodes(1,2), 's', 'MarkerSize', 10, 'MarkerFaceColor', 'g');

plot(nodes(2,1), nodes(2,2), 's', 'MarkerSize', 10, 'MarkerFaceColor', 'g');

% Structure déformée

subplot(1,2,2);

hold on; axis equal; grid on;

title(sprintf('Structure déformée (échelle ×%d)', scale));

xlabel('x (m)'); ylabel('y (m)');

% Structure initiale en bleu

for e = 1:nel

ni = IEN(e,1);

nj = IEN(e,2);

xi = nodes(ni,:);

xj = nodes(nj,:);

plot([xi(1), xj(1)], [xi(2), xj(2)], 'b-', 'LineWidth', 1, 'Color', [0.7, 0.7, 0.9]);

end

% Structure déformée en rouge

for e = 1:nel

ni = IEN(e,1);

nj = IEN(e,2);

di = d(2*ni-1:2*ni)';

dj = d(2*nj-1:2*nj)';

xi_def = nodes(ni,:) + scale * di;

xj_def = nodes(nj,:) + scale * dj;

plot([xi_def(1), xj_def(1)], [xi_def(2), xj_def(2)], 'r-', 'LineWidth', 1.5);

end

legend('Structure initiale', 'Structure déformée', 'Location', 'best');

% Ajuster les axes


legend('Structure initiale', 'Structure déformée', 'Location', 'best');

% Ajuster les axes

xlim_range = [min(nodes(:,1))-2, max(nodes(:,1))+2];

ylim_range = [min(nodes(:,2))-1, max(nodes(:,2))+2];

subplot(1,2,1);

xlim(xlim_range); ylim(ylim_range);

subplot(1,2,2);

xlim(xlim_range); ylim(ylim_range);

fprintf("\n=== ANALYSE TERMINÉE ===\n");

fprintf("Graphique affiché avec succès.\n");

4. Résultats d'Analyse

1
2024/2025
2

Vous aimerez peut-être aussi