Méthodes des éléments finis Projet I Élements finis 1D

Transcription

Méthodes des éléments finis Projet I Élements finis 1D
Université du Sud - Toulon - Var
ISITV - 2ème année Matériaux
Méthodes des éléments finis
Projet I
Mehmet Ersoy
Élements finis 1D
Le but de ce projet est de résoudre le problème du fléchissement d’une poutre par des éléments finis de
Lagrange de degré 1.
On considère une poutre de longueur L = b − a, étirée selon son axe, soumise à une force transversale
f (x) dx par unité de longueur dx et fixée à une de ses extrémités. Le déplacement u(x) du point d’abscisse
x est solution du problème aux limites :

 −u′′ (x) + c(x)u(x) = f (x), x ∈ (a, b),
u(a) = α ∈ R,
(1)
 ′
u (b) = β ∈ R.
La fonction c (par exemple, c(x) = x(x − 1)) est une fonction positive définie à partir des caractéristiques
de la poutre.
1. Questions préliminaires :
(a) Pour c(x) = c0 et f (x) = f0 , vérifier que la solution est donnée par
√
√
√
√
cf
− cf
√
√
f
−β c
+β c
− cx e
cx e
√
√
√
√ u(x) = − e
−e
c
c e− c + e c
c e− c + e c
(2)
(b) Écrire la formulation faible du problème aux limites (1).
2. On se propose de résoudre ce problème par une méthode eléments finis de degré 1 avec les valeurs
numériques
a = 0, b = 1, α = 0, β = 1, f0 = c0 = 1 .
(3)
Le programme (main.m) aura donc la structure suivante,
clear all, clc
% Parametres du domaine
a = 0;
b = 1;
% les conditions aux limites
alpha= 0;
beta = 1;
% N+ 2 noeuds du maillage a definir
N = 100;
% Definition du maillage
[x,h] = mesh(a,b,N);
% Construction de la matrice de rigidite
1
A = stiffmat(x);
% Construction du vecteur second membre
F = source(x,beta);
%Resolution de l’equation
U = A^(-1)*F;
%sans oublier la condition aux limites en 0
U = [0 ; U];
% On compare la solution exacte avec la solution approchee
Uex = uex(x,beta);
plot(x,Uex,x,U)
legend(’solution exacte’,[’solution approchee avec’,num2str(N+2),’points’])
title(’Solution approchee par elements finis et exacte’)
Il faut donc écrire une fonction (systématiquement validée ! ! !)
(a) mesh(a,b,N) dédiée au maillage : cette fonction donne les N + 2 noeuds du maillage (a et b
compris),
(b) stiffmat(x) dédiée à la construction de la matrice de rigidité,
(c) source(x,beta) dédiée à la discrétisation du second membre,
(d) uex(x,beta) dédiée à la solution exacte du problème.
3. Tester le programme pour différentes valeurs de N en calculant la norme eN = kU − U exk2 de l’erreur,
qu’observez vous ? Modifier le programme précédent pour pouvoir tracer l’erreur eN en fonction de N
en échelle logarithmique, i.e. la fonction log2 (N ) → log2 (eN ) 1 (indications : nous allons effectuer ce
calcul pour N = 2j , j = 1, . . . 10 et stocker l’erreur dans un vecteur e(j)). Interpreter vos résultats.
4. Si maintenant à la place de la condition de Neumann u′ (1) = β, on souhaite la remplacer par une
condition de Dirichlet u(1) = 0, que faut il changer dans le code précédent ? Une fois les modifications
apportées, vérifier que la solution exacte dans ce cas est :
√
u(x) =
√
√
√
e− c − 1
−1 + e c
f
− cx
√
√
√ −e
√ f
+ e cx f
c
−
c
c
c e −e
c e c − e− c
(4)
avec les parametres (3), calculer les solutions approchées pour différentes valeurs de N et les comparer
avec la solution exacte (4). Tracer aussi l’erreur en fonction du nombre de noeuds.
1. la commande c’est log2
2
.
3
Université du Sud - Toulon - Var
ISITV - 2ème année Matériaux
Méthode des éléments finis
Travaux Pratiques II
Mehmet Ersoy
Assemblage
Lors du premier TP nous avons étudier le problème du fléchissement d’une poutre par des éléments finis
d’ordre 1 (P1). Nous avons aborder le problème par une approche naı̈ve qui se généralise en dimensions
supérieurs. L’inconvénient est que le coût de cet algorithme est proportionnel au carré du nombre de sommets en dimension deux. Nous allons donc étudier une seconde approche pour le même problème. Il s’agit
d’un procédé qui s’appelle l’assemblage du système linéaire : le coût est simplement proportionnel au nombre
d’éléments du maillage. Nous verrons aussi comment implémenter les conditions aux limites Dirichlet, Neumann. En principe, on procède en deux étapes :
1. on calcule la matrice du système sans se préoccuper des conditions aux limites
2. puis on intègre les conditions aux limites.
Nous considérons donc de nouveau l’équation du fléchissement d’une poutre qu’on rappelle ci-dessous : soit
une poutre de longueur L = 1, étirée selon son axe, soumise à une force transversale f (x) dx par unité de
longueur dx et fixée soumise à une condition de Dirichlet et de Neumann. Le déplacement u(x) du point
d’abscisse x est solution du problème aux limites :

 −u′′ (x) + c(x)u(x) = f (x), x ∈ (0, 1),
u(0) = α ∈ R,
(1)
 ′
u (1) = β ∈ R.
La fonction c (par exemple, c(x) = x(x − 1)) est une fonction positive définie à partir des caractéristiques
de la poutre.
On considère Ne éléments [xie , xie +1 ] de taille he = 1/N pour ie = 0, . . . , Ne (l’indice e faisant référence
à ”élément”).
1
Assemblage et traitement des conditions aux limites
1. Écrire la formulation faible associée à l’équation (1) sans se préoccuper des conditions aux limites.
2. Calculer les fonctions de forme (ou de base) pour un domaine contenant un seul élément.
(a) En déduire une approximation par éléments finis de u et de la fonction test v. Enfin, montrer que
la formulation faible peut être réécrite sous la forme
V t (KU − F ) = 0
où V = (v0 , v1 )t est le vecteur des composantes nodales de la fonction test v,
1 + c30
−1 + c60
K =
la matrice de rigidité élémentaire, U = (u0 , u1 )t le vecteur des
−1 + c60
1 + c30
inconnues nodales et F = f20 (1, 1)t le vecteur des forces extérieurs élémentaire f .
(b) En modifiant la matrice K et le vecteur F , comment pouvons nous intégrer simplement la condition
de Dirichlet en x = 0 et la condition de Neumann en x = 1 ? On note K̃ et F̃ la matrice modifiée
et vecteur modifié.
(c) Comparer avec la matrice obtenue au TP I.
3. Faire de même pour un domaine contenant deux éléments. (Indication : on pourra utiliser un changement de variables pour se ramener à un élément de référence). Faire de même avec quatre éléments.
4. Généraliser ce procédé sous formes d’algorithmes à n éléments (Indication : nous pourrons décomposer
les intégrales sous formes d’un somme sur chacun des éléments). Écrire le code Matlab. Tester pour
différentes valeurs de Ne et comparer avec les résultats du TP I.
5. Modifier ce code pour résoudre l’équation (1) avec des conditions de Dirichlet homogène en x = 0 et
x = 1. Tester pour différentes valeurs de Ne et comparer avec les résultats du TP I.
2
Avec des fonctions un peu plus complexe
Commentmodifier le code pour traiter le cas où
fl ∈ R si 0 6 x 6 21
– f (x) =
fr ∈ R si 12 < x 6 1
cl > 0 si 0 6 x 6 12
– avec f (x) = f0 ∈ R et c(x) =
cr > 0 si 21 < x 6 1
– enfin avec c(x) = c0 , f (x) = f0 et résoudre le problème
−(u′ (x)k(x))′ + c(x)u(x) = f (x)
kl > 0 si 0 6 x 6 21
kr > 0 si 21 < x 6 1
En déduire une manière générale de construire un solveur éléments finis 1D pour le problème
−(u′ (x)k(x))′ + c(x)u(x) = f (x), x ∈ (a, b),
(2)
+CL en a et b
avec k(x) =
où les fonctions k, c et f sont données arbitrairement par l’utilisateur. (Indication : nous considérons comme
approximation f|[xi ,xi+1 ] = f (xi )+f2 (xi+1 ) pour f et de même pour k, c. Pour une meilleure adaptation de ce
que nous avons établies, il est recommandé de réecrire la matrice de rigidité élément ainsi que le vecteur des
sollicitations externes élémentaires dans ce cadre générale.) Les conditions aux limites seront déterminés par
l’utilisateur. Une fois ce solveur écrit : faites les tests suivants :
– vérifier que ce solveur redonne bien la bonne solution lorsque k = c = f ≡ 1.
– vérifier que ce solveur redonne bien la bonne solution dans le cas où les donnés sont discontinues.
– Proposer un test de votre choix et le commenter.
3
Travail à faire
Vous rédigerez un court rapport contenant les réponses aux questions théoriques accompagné de commentaires pour les résultats numériques. Ce compte-rendu (format NomsBinome.zip contenant aussi votre
code) est à envoyer pour la prochaine séance à l’adresse électronique [email protected]. La qualité
de la rédaction, la clarté et la précision des arguments sera prise en compte dans l’évaluation.
.
6
Université du Sud - Toulon - Var
ISITV - 2ème année Matériaux
Méthode des éléments finis
Travaux Pratiques III
Mehmet Ersoy
Application en dimension deux : éléments finis Q1
Dans ce TP nous allons nous interessez à la résolution en dimension deux de l’équation suivante :
−∆u + c(x)u(x) = f (x), x ∈ Ω =]0, 1[2 ,
(1)
u|∂Ω = 0
où f : Ω → R et c : Ω → R+
∗ . Nous supposerons f = f0 et c = c0 constants dans la suite.
1
Système élémentaire
1. Écrire la formulation faible associée à l’équation (1).
2. On considère un élément de référence Q = [0, 1]2 . Calculer les fonctions de forme pour cet élément de
référence. On note S1 le sommet (0, 0), S2 le sommet (1, 0), S3 le sommet (1, 1) et , S4 le sommet (0, 1).
On rappelle que ces fonctions satisfont wSj (Si ) = δij où δij est le symbole de Kronecker. (indication :
les polynômes sont de la forme (x, y) ∈ R, p(x, y) = α + βx + γy + δxy.)
3. Écrire la formulation faible associée à l’équation (1) sans se préoccuper des conditions aux limites.
Quelle est la différence entre les deux formulations faibles ?
4. Montrer que la formulation faible peut être réécrite sous la forme
Ke U − Fe = 0

4 −1 −2 −1
4 2 1 2
 −1 4 −1 −2  c  2 4 2 1 
0 


où Ke = 16 
 −2 −1 4 −1  + 36  1 2 4 2  est la matrice de rigidité élémentaire, U =
−1 −2 −1 4
2 1 2 4
t
(uS1 , uS2 , uS3 , uS4 ) le vecteur des inconnues nodales et F = f40 (1, 1, 1, 1)t le vecteur des forces extérieurs
élémentaire f .
5. Faire de même pour quatres éléments carrés (c.f. figure 1). Comment modifie-t-on la matrice de rigidité
pour intégrer les conditions aux limites ?

2


Construction du maillage et assemblage
Nous allons à présent construire un maillage (c.f. figure 1) avec N carrés sur une longueur ? La numérotation
de chacun des éléments finis suit une logique de numérotation. Etant donné un triangle Ql de numéro l, on
note de nouveau (Si )i=1,2,3,4 les sommets de cet élément. Nous avons donc
S1
S2
S4
S3
= (i − 1)(n + 1) + j
= S1 + 1
= S1 + (n + 1)
= S4 + 1
où 1 6 i, j 6 N . i balaye le nombre d’élément du bas vers le haut et j de gauche à droite. L’indice l est alors
donné par la formule
l = (i − 1)n + j.
C’est un peu plus compliquée que celaaaaaaaaaaaaaaaaa
Figure 1 – Maillage : N = 2
.
9

Documents pareils