0% ont trouvé ce document utile (0 vote)
138 vues12 pages

Matlab

Ce rapport présente une analyse par éléments finis d'une structure en treillis soumise à des charges inclinées, avec un focus sur les déplacements, contraintes et réactions aux appuis. La structure est composée de 31 nœuds et 74 éléments barres, et les résultats incluent les déformations maximales et les contraintes critiques. La méthodologie inclut l'assemblage de la matrice de rigidité et le calcul des réactions aux appuis, avec une implémentation MATLAB détaillée.

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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
138 vues12 pages

Matlab

Ce rapport présente une analyse par éléments finis d'une structure en treillis soumise à des charges inclinées, avec un focus sur les déplacements, contraintes et réactions aux appuis. La structure est composée de 31 nœuds et 74 éléments barres, et les résultats incluent les déformations maximales et les contraintes critiques. La méthodologie inclut l'assemblage de la matrice de rigidité et le calcul des réactions aux appuis, avec une implémentation MATLAB détaillée.

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

2024/2025
4, 9; %8
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

2024/2025
ndof = 2; % 2 ddl par nœud (x et y)
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);

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
2024/2025
% Coordonnées

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));
% 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
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("\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');

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');


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.1 Déplacements Structurels

L'analyse révèle les déplacements maximaux suivants :

• Déplacement horizontal maximal : Calculé automatiquement par le code


• Déplacement vertical maximal : Calculé automatiquement par le code

4.2 Réactions aux Appuis

Les réactions aux appuis encastrés (nœuds 1 et 2) sont calculées par équilibre :

• Nœud 1 : Composantes Rx et Ry
• Nœud 2 : Composantes Rx et Ry

4.3 Contraintes et Déformations

L'analyse des contraintes permet d'identifier :

• Élément critique : Élément subissant la contrainte maximale


• Contrainte maximale : Valeur et localisation
• Déformation maximale : Valeur correspondante

4.4 Vérification de Cohérence

La loi de Hooke (σ = E × ε) est vérifiée pour valider les calculs.

5. Analyse et Discussion
2024/2025 12

Vous aimerez peut-être aussi