You are on page 1of 156

Calcul des structures par

lments finis
Antoine Legay
Cnam-Paris
2015-2016

Table des matires

I Introduction

15

I.1 Outil daide au dimensionnement 1


I.2 Du rel au modle mathmatique mcanique 2
I.2.1 Problme rel 2
I.2.2 Modle mathmatique mcanique 2

I.3 Espace vectoriel associ au modle mathmatique mcanique 3


I.3.1 Ensemble des champs de dplacements 3
I.3.2 Espace vectoriel des champs de dplacements 4
I.3.3 Dfinitions et proprits dun espace vectoriel 5

I.4 Vers le modle lments finis 7


I.5 Les sources derreurs 7
I.5.1 Erreur entre le problme rel et le modle mathmatique 7
I.5.2 Erreur entre le modle mathmatique et le modle lments finis 8

I.6 lment fini de barre pour le calcul des treillis 8


I.6.1 Introduction llment de barre 8
I.6.2 quilibre de llment barre 9
I.6.3 tude de deux barres 10
I.6.4 lment barre pour le calcul des treillis plans 13

II Problme de rfrence

II.1 Rappel de mcanique des milieux continus 15


II.2 Champ de dplacement cinmatiquement admissible 17
II.2.1 Espace vectoriel des champs de dplacements 17
II.2.2 Espace des champs de dplacements cinmatiquement admissibles 17

ii

II.3 Champ de contrainte statiquement admissible 17


II.3.1 Espace vectoriel des champs de contraintes 17
II.3.2 Espace des champs de contraintes statiquement admissibles 19

II.4 criture du problme de rfrence 20

III criture variationnelle

21

III.1 criture variationnelle de lensemble des champs de contraintes admissibles


21

III.2 Formulation variationnelle en dplacement 24


III.2.1 Loi de comportement en notations de Voigt 24
III.2.2 Oprateur gradient symtris en notations de Voigt 24
III.2.3 Formulation variationnelle en dplacement, criture en notations de Voigt 25

III.3 quivalence nergtique 26


III.4 Formes bilinaire et linaire, norme en nergie 27
III.4.1 Forme linaire 27
III.4.2 Forme bilinaire 28
III.4.3 criture du problme de rfrence 28
III.4.4 Norme en nergie 28

IV Espace dapproximation E.F.


IV.1
IV.2
IV.3
IV.4
IV.5
IV.6

29

39

47

Introduction 29
Fonction une variable 29
Fonction deux variables 32
Fonction vectorielle deux variables 35
Fonction trois variables 35
Fonction vectorielle trois variables 37

V Construction de la base E.F.

V.1 Construction des fonctions de forme dans un lment 39


V.1.1
V.1.2
V.1.3
V.1.4

Introduction 39
Fonctions de forme dans un lment unidimensionnel 39
Fonctions de forme dans un lment du plan 41
Fonctions de forme dans un lment tridimensionnel 44

V.2 Table de connectivit et coordonnes des nuds 45

VI Problme discrtis

VI.1 Dfinition de lerreur de discrtisation 47


VI.2 criture du problme discrtis 47
VI.2.1 Rappel des diffrents espaces introduits 47
VI.2.2 Solution en dplacement 48
VI.2.3 Ecriture matricielle du problme discrtis 49

VI.3 Rsolution du problme discrtis 50


VI.3.1
VI.3.2
VI.3.3
VI.3.4
VI.3.5

Sparation des quations 50


Rsolution en dplacements 51
Ractions aux appuis 51
Systme matriciel complet 52
Blocage des mouvements de solides rigides 52

iii

VI.4 Construction du problme discrtis 53


VI.4.1 Calcul de la matrice de rigidit 53
VI.4.2 Calcul des forces aux nuds 55

VII Calculs au niveau lmentaire

57

VII.1 lment de rfrence 57


VII.1.1
VII.1.2
VII.1.3
VII.1.4

Ncessit dun lment de rfrence 57


Gomtrie de llment de rfrence 58
Fonctions de forme un lment de rfrence 2 variables 58
Passage de llment de rfrence llment physique 61

VII.2 Matrice de rigidit dans llment de rfrence 63


VII.2.1 Expression 63
VII.2.2 Cas du quadrangle 63

VIII Intgration numrique

65

VIII.1 Intgration numrique de la matrice de rigidit 65


VIII.2 Intgration des fonctions une variable 66
VIII.2.1 Polynmes de Lagrange 66
VIII.2.2 Mthode de Newton-Ctes 68
VIII.2.3 Mthode de Gauss 69

VIII.3 Intgration des fonctions deux variables 70


VIII.3.1 Cas des lments quadrangles 70
VIII.3.2 Cas des lments triangles 72

VIII.4 Intgration des fonctions trois variables 73


VIII.4.1 Cas des lments hxadres 73
VIII.4.2 Cas des lments ttradres 74

VIII.5 Critres de qualit du maillage 74

IX Analyse des rsultats E.F.

77

85

IX.1 Post-traitement, lissage des contraintes 77


IX.1.1
IX.1.2
IX.1.3
IX.1.4

Proprits de la solution lments finis 77


Contrainte lisse 77
Implmentation et rsolution 79
Application au triangle 3 nuds 80

IX.2 Estimateur derreur 81


IX.2.1
IX.2.2
IX.2.3
IX.2.4

Rappel sur lerreur en dplacement 81


Estimateur priori 81
Estimateur posteriori 82
Maillage adaptatif 84

X lments finis de barre et poutre

X.1 Modle de poutre 85


X.1.1 Modle gomtrique 85
X.1.2 Hypothses cinmatiques 86
X.1.3 criture de la relation dformations-dplacement 86
X.1.4 Relation de comportement 87
X.1.5 nergie de dformation 87
X.1.6 Hypothses sur les dformations transverses 88

iv

X.2 lment fini de traction-compression : lment barre 89


X.2.1
X.2.2
X.2.3
X.2.4

Espace discrtis 89
Oprateur gradient discrtis 89
Matrice de rigidit 89
Calcul de treillis de barres 90

X.3 lment fini de flexion de type Euler-Bernoulli 92


X.3.1 Espace discrtis 92
X.3.2 Oprateur gradient discrtis 94
X.3.3 Matrice de rigidit 94

XI lment fini de plaque

95

XI.1 Modle de plaque 95


XI.1.1 Modle gomtrique 95
XI.1.2 Hypothse cinmatique 96
XI.1.3 criture de la relation dformations-dplacements 97
XI.1.4 Relation de comportement entre les dformations et les contraintes 97
XI.1.5 nergie de dformation 98
XI.1.6 Hypothses sur les dformations transverses 99

XI.2 lment fini de type Reissner-Mindlin 100


XI.2.1
XI.2.2
XI.2.3
XI.2.4

Espace discrtis 100


Oprateur gradient discrtis 100
Matrice de rigidit 102
Forces extrieures gnralises 102

XI.3 Assemblage de plaques dans lespace 103

XII Dcomposition de domaine

105

113

XII.1 Objectifs 105


XII.2 Mthode de Schur primale 105
XII.2.1
XII.2.2
XII.2.3
XII.2.4

Principe 105
Stratgie de rsolution globale 108
Gnralisation plusieurs sous-structures
Calcul du complment de Schur 109

108

XII.3 Mthode de Schur duale 111


XII.3.1 Principe 111
XII.3.2 Discrtisation 111
XII.3.3 Couplage de maillages incompatibles 112

XIII Initiation la programmation

XIII.1 Langage de programmation 113


XIII.2 Le langage Python 114
XIII.2.1
XIII.2.2
XIII.2.3
XIII.2.4

Les bases du langage Python et son installation 114


Les conditions et boucles en Python 115
Les fonctions en Python 117
Le calcul matriciel en Python 118

XIII.3 Le langage Fortran 120


XIII.3.1
XIII.3.2
XIII.3.3
XIII.3.4

Les bases du langage Fortran et son installation 120


Les conditions et boucles en Fortran 122
Les fonctions en Fortran 122
Le calcul matriciel en Fortran 126

XIII.4 Utilisation de routines Fortran dans un programme en Python 126

XIV Code SILEX

XIV.1 Prsentation 129


XIV.2 Cur crit en Fortran de SILEX pour le ttradre 4 nuds 130
XIV.2.1 Matrice de rigidit lmentaire 130
XIV.2.2 Matrice de rigidit globale 131

XIV.3 Programme principal en Python 138


XIV.4 Gmsh : un logiciel libre de maillage et de visualisation 144
XIV.5 Un exemple de calcul men avec SILEX 144
XIV.5.1 Gomtrie et conditions aux limites 144
XIV.5.2 Analyse des rsultats 144
XIV.5.3 Conclusions de ltude 145

129

I Introduction

I.1 Outil daide au dimensionnement


Le but du dimensionnement des structures est de dterminer les formes, dimensions, matriaux
afin de satisfaire la fonction demande.
On peut distinguer deux grands types de chargement sur une structure :
1. chargement en fonctionnement normal,
2. chargement en situation extrme.
Pour les situations extrmes, ltude est souvent dynamique en non-linaire. Les critres de
dimensionnement sont souvent lis la scurit, par exemple :
les passagers dun vhicule automobile sont-ils bien protgs en cas de choc ?
suite un seisme et en fonction de son intensit, combien de temps un barrage va t-il tenir ?
Concernant les chargements en fonctionnement normal (tude linaire le plus souvent), on
peut rpertorier les cas suivants :
Statique :
Les contraintes sont-elles dans le domaine lastique ?
Les dplacements sont-ils acceptables ?
Y-a-t-il un risque de flambage ?
Dynamique, analyse modale :
Les frquences propres sont-elles proches des frquences dexcitation ?
Les formes des modes sont-elles acceptables par rapport lutilisation ?

Introduction

Figure I.1 Problme rel : dimensionnement des pieds dune table.

Dynamique, analyse frquentielle :


Comment la structure rpond une sollicitation harmonique ?
Que valent les amortissements ?
Quelle est la dure de vie de la structure en fatigue ?
Dynamique, transitoire, domaine temporel :
Comment la structure rpond un choc ?
La mthode des lments finis peut tre utilise dans tous ces cas comme aide au dimensionnement.

I.2 Du rel au modle mathmatique mcanique


I.2.1 Problme rel
On se place dans le cadre dun problme de statique, lastique et linaire. Le problme rel fait
intervenir (Fig. I.1) :
Une structure, comprenant des incertitudes sur sa gomtrie et son matriau ;
Des liaisons avec lextrieur, souvent assez mal maitrises ;
Des efforts appliqus, parfois assez complexes.
Lors de la phase de conception, la solution de ce problme nest pas accessible. Une fois la structure fabrique et place dans son environnement, la solution est partiellement accessible par des
mesures (jauges de dformation, photolasticit,... ).

I.2.2 Modle mathmatique mcanique


Afin de trouver une solution approche mathmatique du problme rel, on utilise un modle
mathmatique du problme rel. Les modles gnralement utiliss en mcanique sont :
le modle de poutre,
le modle de plaque,
le modle de coque,

I.3 Espace vectoriel associ au modle mathmatique mcanique

1 variable

a) poutre

1111
0000
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111
0000
1111

2 variables

b) coque

111
000
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111
000
111

3 variables

c) tridimensionnel

Figure I.2 Trois modles du pied de table.

le modle plan en contraintes planes,


le modle plan en dformations planes,
le modle axisymtrique,
le modle tri-dimensionnel.
Pour lexemple prcdent dun pied de table, on peut par exemple choisir :
Le modle de poutre (Fig. I.2 a) :
hypothse cinmatique de poutre
1 variable le long de laxe de la poutre dcrit le problme
encastrement de type poutre
torseurs defforts quivalents
Le modle de coque (Fig. I.2 b) :
hypothse cinmatique de coque
2 variables sur la surface moyenne de la coque dcrivent le problme
encastrement de type coque
torseurs defforts quivalents distribus
Le modle tri-dimensionnel (Fig. I.2 c) :
encastrement tri-dimensionnel
3 variables dans les 3 directions de lespace dcrivent le problme
forces surfaciques distribues
Pour les trois modles proposs, lencastrement est modlis de faon parfaite alors que la
liaison relle est ralise par une pice intermdiaire souple. Ces modles ne permettent pas de
dimensionner cette pice intermdiaire. Cest au concepteur de choisir le modle le plus adapt
par rapport aux critres de dimensionnement quil pense tre les plus judicieux.

I.3 Espace vectoriel associ au modle mathmatique mcanique


I.3.1 Ensemble des champs de dplacements

Quelque-soit le modle mathmatique mcanique choisi, on cherche un champ de dplacement


u
dfini sur le domaine idalis . On se place dans la suite dans le cas dun modle tridimensionnel,

Introduction

le champ de dplacement
u est dfini comme :

u rgulier : R3 R3

M 7
v (M )
On pose lensemble V des champs de dplacement suffisament rguliers dfinis de vers
R :
3

V=

v rgulier : R3

R3

7
v (M )

La notion de fonction suffisament rgulire nest pas dtaille ici, cela fait appel des proprits mathmatiques des fonctions qui permettent de les driver, de les intgrer, et plus particulirement dintgrer le carr de leurs drives. Ces espaces sont appels espace de Sobolev ou
espace de Hilbert, il est ncessaire de se placer dans ces espaces pour que les dveloppements
effectus dans ce cours soient corrects dun point de vue mathmatique. Cependant, ce cours
ayant pour vocation dexpliquer les choses simplement, nous parlerons de fonction suffisament
rgulire dans la suite.

I.3.2 Espace vectoriel des champs de dplacements


Lensemble V muni dun loi interne, note +, et dune loi externe avec R, note , est un espace
vectoriel sur R de dimension infinie. Un lment de cet espace vectoriel est un champ de vecteurs
de R3 .
Lopration interne + daddition dans V est dfinie comme :

u ,
v V,
w =
u +
v

o
w V vaut

M ,
w (M ) =
u (M ) +
v (M ).
Lopration externe de multiplication avec R est dfinie comme :

u V et a R,
w =a
u

o
w V vaut

M ,
w (M ) = a
u (M ).

Llment neutre 0 V de V est le champ de vecteurs qui a tout point M associe le vecteur

nul de R3 .

Preuve On vrifie aisement que :

u,
v ,
w V
et a, b R, on a :

u +
v =
v +
u V

u +( v + w ) = ( u +
v )+
w

u +( u ) = 0 V ( u dsigne loppos de
u)

u+0 = u
V

a (
u +
v)=a
u +at
v

(a + b) u = a u +b u

(ab)
u = a (b
u)

1 u = u

I.3 Espace vectoriel associ au modle mathmatique mcanique

I.3.3 Dfinitions et proprits dun espace vectoriel


Combinaison linaire dune famille de vecteurs
Soit une famille F de n vecteurs de V :

F =(
u 1,
u 2 , ...,
un)

Tous vecteur
v V scrivant sous la forme

a1
u 1 +a2
u 2 +...+an
un
o a1 , a2 , ..., an R est dit combinaison linaire de la famille F .
Famille libre et famille lie dun espace vectoriel
Une famille est dite libre si chaque vecteur de la famille ne peut pas scrire comme une combinaison linaire des autres vecteurs de la famille. Si une famille nest pas libre, elle est lie, cest
dire que au moins un vecteur de la famille peut scrire comme une combinaison linaire des
autres vecteurs de la famille.
Base et dimension dun espace vectoriel
Une base est une famille libre qui permet dcrire nimporte quel vecteur de lespace vectoriel
comme une combinaison linaire des vecteurs de la base. Il existe une infinit de bases pour un
espace vectoriel, mais elles ont toutes le mme nombre de vecteurs.
La dimension dun espace vectoriel est le nombre de vecteurs dune base de cet espace vectoriel.
Si les bases nont pas un nombre fini de vecteurs, lespace vectoriel est de dimension infinie.
Exercice I.1 Soit lensemble M2,2 (R) des matrices coefficients dans R 2 lignes et 2 colonnes, muni de
laddition + des matrices et de la multiplication par un scalaire de R des matrices.
1. Justifier que cet espace est un espace vectoriel.
2. Donner une famille libre, puis une famille lie.
3. Donner la base canonique, en dduire la dimension de cet espace vectoriel.
On donne la famille b suivante :
b=

 

1
0

0
1

0
1

1
0

0
0

2
4

4. crire cette famille dans la base canonique.


5. Montrer que cette famille est une base.
On donne llment de M2,2 (R) suivant :
A=

6. crire A dans la base canonique puis dans la base b.


Solution :
Cet espace est un espace vectoriel car :
A, B, C M2,2 (R); a, b R

1
3

1
1

1
0

1
0

 

Introduction

A+B = B+A M2,2 (R)


A+(B+C) = (A+B)+C
A+(A) = 0 o A dsigne loppos de A et 0 est llment neutre dfini par :
0=

0
0

0
0

a (A+B) = a A+a B
(a + b) A = a A+b A
(ab) A = a (b A)
1A=A

Un exemple de famille libre :

Un exemple de famille lie :

 

 

1
0

1
1

 

1
0

0
0

0
0

0
1

 

0
1

1 1
1 0
;
0 1
1 1
car la troisime matrice est la somme des deux premires.
La base canonique est
e=

1
1

0
0

2
1

1
0

Cette base contient 4 vecteurs, cet espace vectoriel est de dimension 4.


La famille b scrit dans la base canonique sous la forme :


b=
0 ;
0 (e)

0
;

1
1 (e)

La matrice A scrit dans la base canonique comme :


A=1
soit aussi

1
0

0
0

+4

0
0

0
1

1
;

1
0 (e)

+2

 

1
2

0
0

1
0

0
1

0
0

 

1
0 (e)

+3

0
1

0
0

1
4

A=
2
3 (e)

Pour crire A dans la base b, on cherche crire A comme une combinaison linaire des matrices (ou vecteurs)
de la base b :

4
= 1

2
3 (e)

Soit le systme linaire dquations suivant rsoudre :

La solution est :

1
1

0
0

0
0
1
1

0
1
1
0

1
+2

0
0 (e)

0
+3

1
1 (e)

1
1
1
2 4
0
=

1 3 2
3
4
0

1 = 3 ; 2 = 3 ; 3 = 1 ; = 4 = 2
Donc A dans la base b scrit

3
3

A=
1
2 (b)

1
+4

1
0 (e)

1
0

1
0 (e)

I.4 Vers le modle lments finis

I.4 Vers le modle lments finis


La dmarche de dimensionnement consiste dans un premier temps construire un modle mathmatique (ou idalis) du problme rel possdant un contenu mcanique que le concepteur doit
choisir. Ce modle mathmatique englobe des hypothses sur le problme rel :
la gomtrie,
les liaisons,
le chargement,
le matriau,
les quations que doivent satisfaire les variables du problme (en particulier le champ de
dplacement)

Le champ de dplacement
u solution de ce problme mathmatique appartient un espace vectoriel not V de dimension infinie. Cet espace est trop grand pour y trouver la solution exacte
du modle mathmatique, sauf dans quelques cas particuliers.
Dans un deuxime temps, lide de la mthode des lments finis est de chercher une solution
approche du modle mathmatique dans un sous-espace vectoriel, not V h , de V et de dimension
finie dont on se donne une base :

(
1,
2 , ...,
n )

o chaque vecteur
i appartient V. La dimension de V h est le nombre de vecteurs que lon se
donne, ici n.
Tout vecteur de V h scrit alors comme une combinaison linaire des vecteurs de la base :

a1
1 +a2
2 +...+an
n

o a1 , a2 , ...an R. La solution du modle lments finis


u h est la combinaison linaire qui se
rapproche au mieux de la solution exacte du modle mathmatique.

I.5 Les sources derreurs


I.5.1 Erreur entre le problme rel et le modle mathmatique
Lerreur entre la solution relle et la solution du modle mathmatique est appele lerreur de
modle (Fig. I.3).
Quantifier cette erreur ncessite de connatre la solution relle :
Lorsque la structure est construite, puis place dans son environnement, cette solution est
partiellement accessible par des mesures (jauges de dformations, matriau photlastique,...) ;
Lorsque la structure est en phase de conception, la solution relle est inaccessible.
Dans tous les cas, lerreur de modle est difficilement quantifiable, elle doit pourtant tre maitrise
et justifie au mieux par le concepteur.

Introduction

Pb.
rel

Modle
mcanique
mathmatique

Modle
lments
finis

Solution
relle

Solution
de
rfrence

Solution
E.F.

Erreur
de
modle
Erreur
de mesure
Mesures

Erreur
de
discrtisation
Erreur
observe

Figure I.3 Liens entre le rel, le modle mcanique et le modle lments finis.

I.5.2 Erreur entre le modle mathmatique et le modle lments finis


Lerreur entre la solution du modle mathmatique et la solution du modle lments finis est appele lerreur de discrtisation (Fig. I.3). Dans le cas dun calcul de statique linaire, cette erreur
peut tre estime ; elle doit donc tre parfaitement maitrise par le concepteur. Les ordinateurs
actuels permettent de faire tendre cette erreur vers une erreur largement infrieure celle de lerreur de modle. La tendance actuelle des logiciels de conception est dintgrer un outil de calcul
par lments finis automatique assurant davoir un niveau derreur de discrtisation suffisamment
faible pour confondre la solution mathmatique et la solution lments finis.

I.6 lment fini de barre pour le calcul des treillis


I.6.1 Introduction llment de barre
On dsigne par barre une poutre travaillant seulement en traction-compression. Typiquement, les
treillis de poutres sont souvent approxims dans un premier temps comme un ensemble de barres
rotules entre elles (Fig. I.4). Les 2 extrmits sont les nuds de llment.
On prsente dans cette partie llment barre de faon simple en utilisant les connaissances de
mcanique dun lve de Bac+2 :
principe fondamental de la statique,
torseur de cohsion,
sollicition de traction-compression pour une poutre,
mthode des nuds.
Le but est de mettre en uvre rapidement la mthode. Cependant, la mthode des lments finis
ne peut pas se rduire cette dmarche simple dans le cas gnral dune pice tridimensionnelle.

I.6 lment fini de barre pour le calcul des treillis

Figure I.4 Exemple de calcul par lments finis dun pylne lectrique (lments barres).

Avant dformation :

1
u1

x
u2

Aprs dformation :

x
F2

x
F1
Figure I.5 lment barre 2 noeuds.

Le mme lment de barre est trait de faon plus cohrente avec le cours dans le chapitre X.

I.6.2 quilibre de llment barre


Un lment de barre et reprsent par un segment de droite reliant les deux extrmits de la barre
(Fig. I.5). La barre est caractrise par sa longueur l, par laire de sa section S et par son module
dYoung E. Les extrmits sont appels les nuds de la barre, ils ont pour abscisses x1 = 0 et
x2 = l.

La barre est en quilibre sous les actions des forces F1


x et F2
x aux nuds 1 et 2. On note

les dplacements des nuds 1 et 2 respectivement u x , u x .


1

Le torseur de cohsion en O peut scrire de deux faons :


n

KO = ext. 2 N = F2

ou bien

KO = ext. 1 N = F1

On remarque que la barre est bien en quilibre car F1 + F2 = 0.


La relation entre N , u1 et u2 pour une poutre en traction est
N=

ES
ES
l N =
(u2 u1 )
l
l

En utilisant les rsultats prcdents on a alors


F1 =

ES
(u1 u2 )
l

10

Introduction

ES
(u1 + u2 )
l
Ces deux dernires relations scrivent sous la forme matricielle suivante :
F2 =

"

F1
F2

"

ES
=
l

La matrice

"

ES
k=
l

1 1
1

1 1

#"

u1
u2

est appelle la matrice de rigidit de llment barre.


Exercice I.2 On prend une poutre encastre gauche (u1 = 0), et on applique un effort F lextrmit droite
(F2 = F ). Le systme matriciel rsoudre est le suivant :
ES
l

1
1

1
1



u1
u2

F1
F2

ES
l

1
1

1
1



0
u2

F1
F

qui devient ici

o les inconnues sont le dplacement de lextrmit droite u2 et la force de raction de lextrmit gauche F1 . Ce
systme de 2 quations 2 inconnues donne la solution
u2 =

Fl
ES

et
F1 = F
Leffort normal est dtermin par
N=

ES
ES F l
(u2 u1 ) =
(
0) = F
l
l ES

I.6.3 tude de deux barres


Assemblage des matrices de rigidit lmentaires
On suppose deux barres de longueurs, de modules dYoung et de sections diffrentes colles bout
bout et soumises de la traction (Fig. I.6). Les barres sont numrotes I et II, elles sont relies

trois nuds 1, 2 et 3. Ces trois nuds subissent les forces extrieures F


x, F
x et F
x.
1

Lquilibre global scrit


F1 + F2 + F3 = 0.
A lquilibre, lensemble des deux barres sest dform, les nuds 1, 2 et 3 se sont dplacs

respectivement de u
x,u
x et u
x (u < u < u si les deux barres sont en traction).
1

Les quilibres des nuds scrivent :


quilibre du nud 1 (mthode des nuds)
F1 + N1 = 0 N1 = F1
quilibre du nud 2
F2 N 1 + N 2 = 0 N 1 N 2 = F2

11

I.6 lment fini de barre pour le calcul des treillis

E1 , S1

E2 , S2

u1
x

u2
x

u3
x

tat dform

N1
x

II

F1
x 1 N1
x

N1
x

x
N1
x 2 N2

x
F2

N2 x
II

N2
x

N2
x 3 F3
x
Figure I.6 Deux barres en traction.

quilibre du nud 3
F3 N 2 = 0 N 2 = F3
Pour chaque lment, on peut relier leffort normal lallongment de la barre :
lment I :
N1 =

E1 S1
(u2 u1 )
L1

lment II :

E2 S2
(u3 u2 )
L2
En remplaant dans les expressions des quilibres des nuds, on a les trois quations suiN2 =

vantes :

E1 S1
(u2 u1 ) = F1
L1
E1 S1
E2 S2
(u2 u1 )
(u3 u2 ) = F2
L1
L2
E2 S2
(u3 u2 ) = F3
L2
En notant k1 = E1 S1 /L1 et k2 = E2 S2 /L2 , on a alors le systme matriciel suivant :

k1

k
1

k1

u1

F1


k2 + k1 k2
u2 = F2
0
k2
k2
F3
u3
{z
K

} | {z }
Q

| {z }
F

12

Introduction

Cette opration est lopration dassemblage des matrices de rigidit lmentaires, la matrice
K est appele matrice de rigidit de la structure, le vecteur Q est le vecteur des inconnues de
dplacements et le vecteur F est le vecteur des forces extrieures :
KQ = F
Mise en uvre pratique
La premire tape consiste crire les deux matrices de rigidit des deux lments en reprant les
lignes et les colonnes de chaque matrice par les inconnues de dplacements associes :

k1 =

"

u1

u2

k1

k1

k1

k1

u1

u2

u3

k2

k2

k2

k2

"

et k2 =

u2

u2 .
u3

On range ensuite dans la matrice de rigidit K de la structure chaque terme des deux matrices
la ligne et la colonne correspondante :

u1

u2

u3

k1

k1

K =
k1
0

u1

k2 u2 .

k1 + k2
k2

k2

u3

Le systme rsoudre est alors KQ = F .


La deuxime tape consiste faire le bilan des dplacements et des forces connus et inconnus.
En prenant un encastrement lextrmit gauche et en appliquant une force F lextrmit droite,
on a :

u1

= 0, connu

inconnu
Q=
u
2

u3

F1

inconnu, raction lencastrement

= 0, connu
F =
F
2

inconnu

F3

= F, connu

Si le dplacement est connu en un nud alors la force est inconnue, si la force est connue alors le
dplacement est inconnu.
La troisime tape est la rsolution du systme dquations complet afin de dterminer toutes
les inconnues

k1

k1

k1

F1

k2 + k1 k2
u2 = 0
F
u3
0
k2
k2

Une fois toutes les inconnus trouves, on peut calculer les efforts normaux dans chaque barre :
N1 =

E1 S1
(u2 u1 )
|{z}
l1
=0

et
N2 =

E2 S2
(u3 u2 ).
l2

13

I.6 lment fini de barre pour le calcul des treillis

u2Y

u2X
u1Y

1
u1X

Figure I.7 lment barre dans une base globale.

I.6.4 lment barre pour le calcul des treillis plans


Les barres composant un treillis plan sont positionnes arbitrairement dans lespace et font des

angles diffrents avec le repre global de la structure ( X , Y ) (Fig. I.7).

On note langle entre laxe X du repre global et laxe


x du repre local la barre. Le
vecteur dplacement dun point de la barre scrit dans le repre local

u = u
x.
Il scrit dans le repre global

u = uX X + uY Y .

En projetant les deux quations prcdentes sur


x il vient
u = uX cos + uY sin .

Y
En notant uX
1 et u1 les dplacements suivant X et Y du nud 1 de la barre dans le repre global,
et en appliquant la formule prcdente au nud 1, on a
Y
u1 = uX
1 cos + u1 sin .

En utilisant les mmes notations pour le nud 2, on a


Y
u2 = uX
2 cos + u2 sin .

Ceci peut scrire sous la forme matricielle suivante


"

u1
u2

"
|

cos sin
0

cos
{z

=T

soit

uX
1

#
uY
1
X
sin
u2
}
Y

u2

| {z }
=Q

q = TQ
o Q est le vecteur des inconnus de dplacements aux nuds de llment dans le repre global
et T est la matrice de transformation passant du repre global au repre local.

14

Introduction

Il est possible dcrire les mmes relations pour les forces extrieures agissant aux nuds de
llment :

F 1 = F1
x = F1X X + F1Y Y et F 2 = F2
x = F2X X + F2Y Y
donc

F1X = F1
x X = F1 cos et F1Y = F1
x Y = F1 sin

de mme,
F2X = F2 cos et F2Y = F2 sin
ce qui scrit sous forme matricielle

F1X

cos


sin

=
0

FY
1
X
F
2

F2Y

"
#
F
1

cos
F2

sin

{z

=TT

La matrice qui apparait pour les forces est la transpose de celle prsente dans les relations des
dplacements. Finalement, lquilibre de la barre crit en fonction des dplacements et des forces
dans le repre local la barre
"

F1
F2

ES
=
l

"

1 1
1

#"

u1
u2

devient en fonction des dplacements et des forces dans le repre global

F1X

FY
1
X
F
2

F2Y

cos


sin

=
0

"
ES
1

l
cos
1

1
1

#"

cos sin
0

uY2

sin

Tous calculs faits, lquilibre de la barre en deux dimensions scrit

ES
l
|

cos2

cos sin

cos2

cos sin

cos sin

sin2

cos sin

sin2

cos2

cos sin

cos2

cos sin

cos sin

sin2

cos sin

sin
{z

=kg

uX
1

uY
1
X
u
2

uY2

F1X


FY
1
= X
F
2

o la matrice kg est la matrice de rigidit de llment barre en deux dimensions.


Leffort normal est dtermin par
N=

uX
1

#
uY
1
X
sin
u2

cos


ES
ES  X
Y
Y
(u2 u1 ) =
(u2 uX
)
cos

+
(u

u
)
sin

1
2
1
l
l

F2Y

II Problme de rfrence

II.1 Rappel de mcanique des milieux continus


Soit un corps solide dformable ayant pour surface extrieure (Fig. II.1). Ce solide subit

une force volumique f dans et une force surfacique donne F d sur la surface F .

Le dplacement
u d est impos sur la surface , complmentaire . Les deux surfaces
u

u et F vrifient :
= u F et u F = .

Le problme de mcanique est de dterminer les deux champs inconnus de dplacements


u et

T
d
de contraintes symtrique ( = ) sous leffet des forces appliques F et f qui vrifient :
1. Les conditions cinmatiques :

u =
u d , M u
2. Les quations dquilibre :

div + f = 0 , M

ud

d
F

Figure II.1 Problme de rfrence en statique.

16

Problme de rfrence

et

n = F d , M F

avec
n qui est le vecteur normal extrieur F .
3. La relation de comportement :

= C(
u)
o C est loprateur dlasticit et est loprateur linaire des dformations du champ de

dplacement
u dfini par

(
u) =


1

Grad(
u ) + GradT (
u) .
2

Pour un matriau isotrope, les coefficients dlasticit se rduisent deux constantes indpendantes (, ) ou (E, ) o et sont Les coefficients de Lam, E est le module dYoung et est
le coefficient de Poisson. La relation de comportement devient la loi de Hooke, soit
= 2 + T r() 1
o 1 dsigne la matrice identit. Les coefficients de Lam (, ) sont relis (E, ) par
=

E
E
et =
.
(1 + )(1 2)
2(1 + )

La relation de comportement scrit aussi


1+


T r() 1 .
E
E

=
Preuve quations dquilibre
Un volume quelconque inclu dans subit :

les efforts surfaciques du vecteur contrainte


n sur sa surface extrieure ,

les efforts volumiques f dans son volume


Lquilibre de ce volume se traduit par :

n dS +

f d = 0

f d = 0

soit en utilisant le thorme de la divergence :

div d +

ou encore

div + f d = 0

Comme cela est valable pour une partie quelconque de , on a

M , div + f = 0
Lquilibre en moment de permet de montrer que loprateur des contraintes est symtrique.

17

II.2 Champ de dplacement cinmatiquement admissible

II.2 Champ de dplacement cinmatiquement admissible


II.2.1 Espace vectoriel des champs de dplacements
On rappelle que lensemble V des champs de dplacement suffisament rguliers dfinis de
vers R3 est :
V=

v rgulier :

R3

7
v (M )

Par soucis de simplicit, la loi interne est note + dans la suite, la loi externe est note sans

symbole ; enfin llment neutre est not 0 .

On peut utiliser une base de R3 , par exemple la base canonique (


e ,
e ,
e ) pour reprsenter
1

un lment
v de V :

v (M ) = v1 (M )
e 1 + v2 (M )
e 2 + v3 (M )
e3

On note v la reprsentation matricielle de


v dans cette base comme

v1 (M )

v(M ) =
v2 (M )

v3 (M )

(
e 1 ,
e 2 ,
e 3)

o la base est prcise en indice. On utilise la notation indicielle vi pour manipuler les composantes de v. Avec les conventions classiques de notations indicielles, on peut crire
3

v (M ) =
vi (M )
ei
i=1

ou encore

v (M ) = vi (M )
ei
avec la convention de sommation implicite.

II.2.2 Espace des champs de dplacements cinmatiquement admissibles


On dfinie lensemble U des champs de dplacements cinmatiquement admissibles comme :
n

u V /
u (M ) =
u d M u
U=

Cet espace nest pas un espace vectoriel car il ne contient pas llment neutre, sauf dans le cas

particulier o
ud = 0.

On dit que
u est cinmatiquement admissible si et seulement si
u U.

II.3 Champ de contrainte statiquement admissible


II.3.1 Espace vectoriel des champs de contraintes
sym.
(R)
On pose lensemble C des champs de contraintes suffisament rguliers dfinis de vers M3,3

(ensemble des matrices relles 3 3 symtriques) :


C=

rgulier : M3,3 (R)


M

7 (M )

18

Problme de rfrence

Cet espace C est un espace vectoriel sur R de dimension infinie.


Exercice II.1 Montrer que C est un espace vectoriel sur R.

Par soucis de simplicit, la loi interne est note + dans la suite, la loi externe est note sans
symbole.
sym.
(R), par exemple la base canonique eij , pour reprsenter
On peut utiliser une base de M3,3

un lment de C. La reprsentation matricielle de dans la base canonique de R3 est

11 12 13

=
21 22 23
31 32 33 (

1,

e 2 ,
e 3)

sym.
(R) :
qui scrit dans la base canonique de M3,3

1 0 0

0 0 0

0 0 0

0 0 0

0 0 0

= 11
0 0 0 +22 0 1 0 +33 0 0 0 +23 0 0 1 +32 0 0 0
0 0 0
0 0 0
0 0 1
0 0 0
0 1 0
|

{z

=e11

0 0 1

{z

=e22

0 0 0

{z

=e33

{z

=e23

0 1 0

0 0 0

{z

=e32

+13
0 0 0 +31 0 0 0 +12 0 0 0 +21 1 0 0
1 0 0
0 0 0
0 0 0
0 0 0
|

{z

=e13

Soit aussi en notations indicielles :

{z

=e31

{z

=e12

{z

=e21

= ij eij
Loprateur des contraintes tant symtrique, on peut crire partir de seulement 6 composantes :

1 6 5

=
6 2 4
5 4 3 (

1,

e 2 ,
e 3)

ou encore en introduisant la base ei :

1 0 0

0 0 0

0 0 0

= 1
0 0 0 +2 0 1 0 +3 0 0 0
0 0 0
0 0 0
0 0 1

{z

=e1

0 0 0

{z

=e2

0 0 1

{z

=e3

0 1 0

+4
0 0 1 +5 0 0 0 +6 1 0 0
0 1 0
1 0 0
0 0 0
|

{z

=e4

{z

=e5

En utilisant les notations indicielles, on a avec ces notations :


= i ei

{z

=e6

19

II.3 Champ de contrainte statiquement admissible

Finalement, on peut noter comme

(ei )

o la base est prcise en indice. Cette notation est appele la notation de Voigt. Dans la suite, un
lment de C est not lorsque lon utilise sa reprsentation dans la base (ei ). Autrement dit,
lorsque lon utilise la notation de Voigt ; on ne prcise alors plus la base, elle est implicite :

11

22

33
23
13
12

Exercice II.2 Ecrire loprateur des contraintes en notations de Voigt dans le cas des contraintes planes.
Solution :

Dans le cas des contraintes planes dans le plan (


e 1,
e 2 ), on a
33 = 13 = 23 = 0
donc,

soit aussi

1
= 11 0
0

11
= 12
0
0
0
0

12
22
0

0
0
0 + 22 0
0
0

0
0
0 (

0
0
0 + 12 1
0
0

0
1
0

En criture de Voigt, loprateur des contraintes devient

1, e 2, e 3)

1
0
0

0
0
0

11
= 22
12
Exercice II.3 Ecrire loprateur des contraintes en notations de Voigt dans le cas dun problme axisymtrique. 

II.3.2 Espace des champs de contraintes statiquement admissibles


On dfinie lensemble S des champs de contraintes statiquement admissibles comme :
n
o

S = C / div + f = 0, M et
n = F d , M F

ou encore en notations indicielles


n

S = C / ij,j + fi = 0, M et ij nj = Fid , M F

20

Problme de rfrence

On dit que est statiquement admissible si et seulement si S.

II.4 criture du problme de rfrence

Le couple (
u , ) solution du problme est tel que


u est cinmatiquement admissible :
u U
est statiquement admissible : S


u et vrifient la relation de comportement

= C(
u)
avec

(
u)=


1

Grad(
u ) + GradT (
u)
2

La solution du problme crit en dplacement devient :

Le champ de dplacement
u)S
u U est solution du problme si et seulement si C(

Exercice II.4 Etablir lensemble des champs de dplacements cinmatiquement admissibles, ainsi que lensemble
des champs defforts normaux statiquement admissibles dune barre en traction (x [0, L]), encastre en x = 0,
dont lquation dquilibre est
N (x) + p = 0 avec N (L) = F
o N est leffort normal, p est une charge linique et F est une force applique en x = L. On rappelle que le
dplacement u(x) est reli leffort normal par la relation
u (x) =
o E est le module dYoung et S est laire de la section.
En dduire lcriture de la solution du problme.

N (x)
ES


III criture variationnelle

III.1 criture variationnelle de lensemble des champs de contraintes


admissibles
On souhaite crire lensemble S sous forme variationnelle. Lensemble S est dfinie par
n

S = C / ij,j + fi = 0 M et ij nj = Fid M F

On introduit lensemble U0 des champs de dplacements cinmatiquement admissibles zro


tel que

u V/
u (M ) = 0 M u
U0 =
n

Prenons un champ de dplacement u U0 quelconque. Ce champ de dplacement est appel

champ de dplacement virtuel, il reprsente une petite variation de


u solution du problme (Fig.
III.1). On a alors S quivalent
ij,j ui + fi ui = 0 M et
Soit

ij,j ui d +

En intgrant par partie, on a


Z

(ij ui ),j d

fi ui d = 0 et

ij ui,j d +

ij nj = Fid M F

ij nj = Fid M F

fi ui d = 0 et

ij nj = Fid M F

puis, en utilisant le thorme de Gauss


+

ij nj ui dS

ij ui,j d +

fi ui d = 0 et

ij nj = Fid M F

22

criture variationnelle
Ud

x = L Problme

x=0

Ud
x = L Solution
x=0
F
Exemples de champs V

Exemples de champs U

Exemples de champs U0

Figure III.1 Exemples de champs de dplacements de V, U et U0

En remarquant que = F u , puis en remplaant la deuxime quation dans la premire


sur le bord F , et enfin en utilisant le fait que ui = 0 sur le bord u , on a :

ij ui,j d +

Fid ui dS +

fi ui d = 0 .

En remarquant que est symtrique, on a la proprit suivante :

ij ui,j = ij ij (u).
Preuve
ij ui,j

1
ij ui,j + ij ui,j
2

car est symtrique (ij = ji ),


ij ui,j

1
ij ui,j + ij uj,i
2

1
ij ui,j + ji ui,j
2

car on peut changer i et j dans le deuxime produit (indices muets),


ij ui,j = ij

1
ui,j + uj,i
2

= ij ij (u)

Finalement, S est quivalent


Z
Z

u U0 ,
ij ij (u) d

Fid ui dS

fi ui d = 0

Lensemble S scrit sous forme variationnelle :


n

S = C | u U0 ,

ij ij (u) d

Fid ui dS

fi ui d = 0

23

III.1 criture variationnelle de lensemble des champs de contraintes admissibles

On peut utiliser les notations de Voigt pour crire plus simplement la formulation variationnelle
propose. La notation de Voigt de est donne par

11

22

33
23
13
12

3
4
6

La notation de Voigt de est un peu diffrente car lon souhaite que la somme des produits terme
terme de par donne exactement ij ij . Autrement dit, on souhaite que T = ij ij en
utilisant les notations habituelles de multiplication et de transposition des matrices. En dtaillant,
on a
ij ij = 11 11 + 22 22 + 33 ij + 223 23 + 213 13 + 212 12

ij ij = [ 11 22 33 23 13 12

1 0 0 0 0 0

11

0 1 0 0 0 0
22


0 0 1 0 0 0
33

0 0 0 2 0 0 23

0 0 0 0 2 0
13
0 0 0 0 0 2

12

La matrice qui intervient ci-dessus reprsente loprateur produit doublement contract entre
et . Afin dviter de faire intervenir cette matrice dans la suite, on note loprateur des dformations en notations de Voigt sous la forme :

11

22

33

223
213
212

o 1 , 2 et 3 sont les distorsions angulaires.

On remarque que cette notation est quivalente changer la base de reprsentation pour les
dformations :

0 0

= 11
0 0 0 + 22 0 1 0 + 33 0 0 0 + 223 0 0

1
2

1 0 0
0 0 0

On a alors :

0 0 0
0 0 0

0 0

1
2

+213
0 0 0 + 212
1
2

0 0

0 0 0
0 0 1

1
2

1
2

0 0

ij ij = T = T

0 0

1
2

24

criture variationnelle

Lensemble S crit avec la notation de Voigt est




S = C / u U0 ,

(u)T d

uT F d dS

uT f d = 0

III.2 Formulation variationnelle en dplacement


III.2.1 Loi de comportement en notations de Voigt
partir de la loi de Hooke
= C = 2 + T r() 1
on peut crire loprateur C en notations de Voigt C tel que
= C.
On a

11

23
13
12

+ 2

0 0

+ 2

0 0

0
22

0
33

22

33

11

+ 2 0 0

0 223

0 0
213

0 0

{z

212

=C

Exercice III.1 Montrer que dans le cas des contraintes planes, la loi de comportement scrit en notations de Voigt
sous la forme suivante :

11
1
E
= 22 =

2
1
12
0

1
0

0
0
1
2

11
22 = C
212

III.2.2 Oprateur gradient symtris en notations de Voigt


On note D loprateur diffrentiel qui relie le dplacement aux dformations tel que = Du. Les

dformations dun champ de dplacement


u V scrivent

(
u)=


1

Grad(
u ) + GradT (
u) .
2

Cet oprateur a pour expression dans un repre cartsien

( u ) =

11

223
213
212


0
=

0


z

22

33

{z

=D

ux

uy = Du .

uz

25

III.2 Formulation variationnelle en dplacement

Exercice III.2 Montrer que loprateur diffrentiel D reliant les dformations au dplacement dans le cas dun
problme plan vaut :



0
11
x
ux

= 22 = 0
= Du
y
uy

212
y
x

Exercice III.3 Dans le cas dun problme crit en repre cylindrique, le dplacement
u est not

u = u
er + v
e + w
z.
On rappelle que le gradient du dplacement vaut

1
r

u
r

Grad( u ) =

1
r

v
r



1
r

w
r

Montrer que loprateur gradient symtris vaut :

rr

zz
2rz
2z
2r

+u

u
z

v
z

w
z

1
r

1
r

1
r

1
r

1r +

,e

(e
r , k )

v = Du

Dans le cas dun problme axisymtrique, les quantits ne dpendent pas de et v est nul. Montrer que lcriture de
D se simplifie et devient

0
r

1
rr

r
=
=
zz
0

2rz


0

u
w

= Du .

III.2.3 Formulation variationnelle en dplacement, criture en notations de Voigt


Finalement, en utilisant la relation de comportement, nous venons dtablir que :

Le champ de dplacement
u U solution du problme vrifie :

u U0
Z
Z
Z
T (u)C (u) d

ou bien

(Du)T C Du d

uT F d dS

uT f d = 0

uT F d dS

uT f d = 0

26

criture variationnelle

Exercice III.4 tablir la formulation variationnelle en dplacement dune barre en traction (x [0, L]) dont
lquation dquilibre est
N (x) + p = 0 avec N (L) = F
o N est leffort normal, p est une charge linique et F est une force applique en x = L. La barre est encastre en
x = 0. On rappelle que le dplacement u(x) est reli leffort normal par la relation
u (x) =

N (x)
ES

o E est le module dYoung et S est laire de la section.

III.3 quivalence nergtique


On dfinie les quantits suivantes :

Le travail des efforts extrieurs W dans un champ de dplacement


v V :

W(
v)=

vi fi d +

vi Fid

dS +

vi Ri dS

o Ri sont les ractions des liaisons sur le bord u . Pour un champ de dplacement cin
matiquement admissible
u U on a :

W(
u)=

ui fi d +

ui Fid dS +

udi Ri dS

Pour un champ de dplacement cinmatiquement admissible zro u U0 on a :

W(u) =

ui fi d +

ui Fid dS

Lnergie de dformation ED dun champ de dplacement


u V:
1

ED (
u)=
2

Cijkl kl (
u ) ij (
u ) d =
2

u ) d
u )C(
T (

Lnergie potentielle Ep dun champ de dplacement


u :

Ep (
u ) = ED (
u ) W(
u)
Thorme III.1

Thorme de la variation virtuelle dnergie potentielle

u U est solution du problme

u minimise lnergie potentielle Ep

Chercher u U tel que u, Ep = 0

u U0
Z

T (u)C (u) d

uT F d dS

uT f d = 0

27

III.4 Formes bilinaire et linaire, norme en nergie

Preuve On suppose que


u est solution du problme. Lorsque
u varie de u avec u U0 , lnergie de dformation
varie de ED :

E D (
u + u)

1
2

1
2

Cijkl ij (
u + u) kl (
u + u) d

Cijkl

1
+
2

ij (
u ) kl (
u ) d +
2

Cijkl

Cijkl ij (u) kl (
u ) d

ij (
u ) kl (
u ) d +
2

Cijkl ij (u) kl (
u ) d

{z

ngligeable

Le dernier terme est ngligeable devant les trois autres termes. tant donne la symtrie de la loi de comportement

(Cijkl = Cklij ), le deuxime et le troisime terme sont gaux, lexpression de ED (


u + u) devient

E D (
u + u) =
2

Cijkl

ij (
u ) kl (
u ) d +

{z

=ED (
u)

Cijkl ij (
u ) kl (u) d

{z

=ED

E D (
u + u) = ED (
u ) + ED

do par identification on a
ED =

Cijkl ij (
u ) kl (u) d

Lorsque
u U varie de u avec u U0 , le travail des forces extrieures varie de W :

W(
u + u) =

ui fi d +

ui Fid dS +
F

udi Ri dS +

=W(
u)

W(
u + u) = W(
u ) + W

avec
W =

ui Fid

dS +

Cijkl ij (
u ) kl (u) d

cest dire

ui Fid dS

{z

=W

ui fi d

ui Fid dS

Or la formulation variationnelle en dplacement implique que

u U0 ,

ui fi d +

{z

ui fi d = 0

u U0 , ED W = 0

soit aussi

u U0 , Ep = 0

III.4 Formes bilinaire et linaire, norme en nergie


III.4.1 Forme linaire

On dfinit la forme linaire L(


v ) telle que
L:

V R
Z
Z

v f d +
v 7 L(
v)=

v F d dS +

v R dS

Le travail des efforts extrieurs W dans un champ de dplacement


v V est gal la forme
linaire :

W(
v ) = L(
v).

28

criture variationnelle

III.4.2 Forme bilinaire

On dfinit la forme bilinaire a(


u ,
v ) suivante :
a: VV R
Z

u )C(
v ) d
u , v 7 a( u , v ) =
T (

Lnergie de dformation du champ de dplacement


u vaut :
1

ED (
u ) = a(
u ,
u)
2

On peut montrer que a(


u ,
v ) est un produit scalaire, en effet :

a(
u ,
v ) = a(
v ,
u ) car C est symtrique

u ) = (
u)
a(
u ,
v ) = a(
u ,
v ) car (

u +
w ) = (
u ) + (
w)
a(
u +
w,
v ) = a(
u ,
v ) + a(
w,
v ) car (

a(
u ,
u ) 0 car lnergie de dformation dun champ de dplacement nest jamais nga

tive. On dit que a(


u ,
v ) est une forme positive.

a(
u ,
u ) = 0 entraine que
u est un dplacement de solide rigide (car lnergie de dfor
mation dun solide rigide est nulle) ou bien entraine que
u est le champ de dplacement

nul. Si tous les dplacements rigides sont bloqus alors a( u ,


u ) > 0 si
u 6= 0 , on dit que

a(
u ,
v ) est une forme dfinie positive, cest donc un produit scalaire.

III.4.3 criture du problme de rfrence


On rappelle que le problme de rfrence crit en dplacement est :

Trouver
u U tel que :

u U0
Z
Z
Z

T
u F dS u f d = 0
(u)C ( u ) d
F

Cela peut scrire laide des formes bilinaire et linaire introduites comme :

Thorme III.2

u V est solution du problme

u U et v U0 , a(
u ,
v ) = L(
v)

III.4.4 Norme en nergie

partir du produit scalaire dfini par la forme bilinaire a(


u ,
v ), qui 2 champs de dplacements de V associe un scalaire de R, on construit la norme au sens de lnergie :


k
u kE = a(
u ,
u)
On remarque que
1

ED (
u) =
2

 21

1
1 2

u )C(
u ) d = a(
T (
u ,
u)= k
u kE
2
2

IV Espace dapproximation E.F.

IV.1 Introduction

Le problme de statique linaire consiste chercher la solution en dplacement


u dans un espace

de dimension infinie V. Sauf quelques cas particuliers, la solution exacte, note


u ex nest pas
accessible.

Lide de la mthode des lments finis est de chercher une solution approche, note
u h (h
fait rfrence la taille dun lment fini) dans un espace de dimension finie n not V h .
Lobjet de ce chapitre est de prsenter la construction de cet espace vectoriel.

IV.2 Fonction une variable


On considre lespace vectoriel sur R des fonctions une variable dfinies de [A, B] vers R :
V=

v rgulier : [A, B] R
x 7 v(x)

Plusieurs fonctions de V sont reprsentes sur la figure IV.1 ; il en existe une infinit.
Lobjectif est de construire un sous-espace vectoriel V h de dimension finie n de V. Pour
construire ce sous-espace, on peut se donner n fonctions simples i (x) V avec i [ 1, 2, .., n ].
Ces n fonctions engendrent un sous-espace vectoriel de V. Si elles sont linairement indpendantes, elles forment alors une base de V h . Elles sont appeles les fonctions de base (ou fonction
de forme) de lespace dapproximation V h . Pour les construire simplement, on dcoupe lintervalle [A, B] en n 1 intervalles appels lments. On introduit les n points xi [A, B] tels que
x1 = A et xn = B, ces points sont appels les nuds.

30

Espace dapproximation E.F.

B
Figure IV.1 Fonctions de V une variable dfinie sur [A, B].

1
1
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

1
2
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

1
3
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

1
4
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

1
5
bc

x1 = A

bc

x2

bc

x3

bc

x4

Figure IV.2 Fonctions de base de lintervalle [A, B].

bc

x5 = B

31

IV.2 Fonction une variable


3

1
5
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

Figure IV.3 Exemple de combinaison linaire des fonctions de base pour u1 = 1 ; u2 = 0, 5 ; u3 =


2 ; u4 = 1, 5 ; u5 = 3.

La figure IV.2 prsente un intervalle [A, B] dcoup en 4 lments par 5 nuds. La fonction
i est associe au nud i, elle vaut 1 en ce nud et 0 aux autres. Elle sannule dans les lments
qui ne sont pas directement adjacents (ou connects) au nud i. Sur lexemple propos, comme
on a choisit 5 nuds, on construit 5 fonctions i . Ces 5 fonctions engendrent un sous-espace
vectoriel V h de lespace vectoriel V de dimension infinie. On voit clairement que les fonctions
sont linairement indpendantes, cest dire que lon ne peut pas en obtenir une partir des
autres ; ces fonctions forment donc une base de V h qui est alors de dimension 5. Dans le cas plus
gnral de n points, le sous-espace vectoriel V h peut tre crit comme :
V h = vect {1 , 2 , ...n }
Tout lment (vecteur) de V h scrit comme une combinaison linaire des fonctions i :
uh = 1 1 + 2 2 + ...n n
En crivant la valeur de uh au nud i, on a (sans sommation implicite)
uh (xi ) = 1 1 (xi ) +2 2 (xi ) +... + i i (xi ) +...n n (xi ) = i
| {z }
=0

| {z }
=0

| {z }
=1

| {z }
=0

On remarque que le coefficient multiplicatif i de la fonction de base associe au nud i vaut la


valeur de la fonction uh ce nud. En posant uh (xi ) = ui , on a
uh = u1 1 + u2 2 + ...un n
On donne sur la figure IV.3 un exemple de combinaison linaire des fonctions de base avec 5
points pour les valeurs suivantes :
u1 = 1 ; u2 = 0, 5 ; u3 = 2 ; u4 = 1, 5 ; u5 = 3

32

Espace dapproximation E.F.

On peut crire plus simplement uh dans la base des i comme :

u =

u1

u2
..
.
un

(i )

Afin de simplifier les critures, on note U la reprsentation de uh dans la base des fonctions de
forme i ; la base tant implicite :

U =

u1
u2
..
.
un

En notant la matrice contenant les fonctions de forme sous la forme :


= [ 1 2 n ]
on peut alors crire
uh = U .
Exercice IV.1 Dessiner les 6 fonctions de base i construites sur le maillage suivant. Tracer la fonction uh associe u1 = 1, 5 ; u2 = 0, 5 ; u3 = 1 ; u4 = 1 ; u5 = 2 ; u6 = 0.
1

bc

bc

bc

bc

bc

x1 = A

bc

x6 = B

IV.3 Fonction deux variables


On considre lensemble des fonctions deux variables dfinies dun domaine du plan vers R :
V=

v rgulier : R
(x, y) 7 v(x, y)

Une fonction de V est reprsente sur la figure IV.4.


Lobjectif est de construire un sous-espace vectoriel V h de dimension finie n de V. Pour
construire ce sous-espace, on peut se donner n fonctions simples i (x, y) V avec i [ 1, 2, .., n ].
Ces n fonctions engendrent un sous-espace vectoriel de V. Si elles sont linairement indpendantes, elles forment alors une base de V h . Elles sont appeles les fonctions de base (ou fonction
de forme) de lespace dapproximation V h .
Pour les construire simplement, on dcoupe le domaine (pice ou structure) en lments. Ici, on
choisit par exemple un dcoupage laide de triangles (Fig. IV.5). Ce pavage est appel maillage,
les triangles en sont les lments, les sommets des triangles les nuds. Chaque nud est en contact

33

IV.3 Fonction deux variables


u(x, y)

u(x, y)

(x, y)

x
Figure IV.4 Une fonction deux variables dfinie sur un domaine du plan.

domaine

lments 3 nuds

Figure IV.5 Pavage dun domaine du plan avec des triangles 3 nuds.

avec plusieurs lments et chaque lment est construit partir de plusieurs nuds (3 pour des
triangles 3 nuds).
On associe chaque nud du maillage une fonction de base i (x, y). Le nombre de nuds n
du maillage donne alors la dimension de V h . La fonction de base associe un nud stend sur
tous les lments en contact avec ce nud, elle est dfinie par morceaux. Les rgles de construction des fonctions de base i sont :
i vaut 1 au nud i : i (xi , yi )=1 ;
i vaut 0 pour tous les autres nuds j 6= i : i (xj , yj )=0 ;
i vaut 0 dans tous les lments non connects directement au nud i ;
i est continue et drivable.
Sur lexemple de la figure IV.6, la fonction de forme du nud 1 est reprsente. Elle vrifie
toutes les rgles prcdentes.
La fonction de base i (x, y) est donc construite par morceaux. Pour lexemple des triangles
3 nuds utilis ici, chaque portion de i (x, y) est un plan passant par 3 points.
Lespace V h peut alors tre dfinie comme lespace engendr par les fonctions i :
V h = vect {1 , 2 , ...n }
Autrement dit, tout lment uh V h scrit sous la forme dune combinaison linaire des i :
uh = 1 1 + 2 2 + ...n n

34

Espace dapproximation E.F.

2
y

6
1

Figure IV.6 Fonction de forme associe un nud.

En crivant la valeur de uh au nud i, on a


uh (xi , yi ) = 1 1 (xi , yi ) +2 2 (xi , yi ) +... + i i (xi , yi ) +...n n (xi , yi ) = i
|

{z

=0

{z

=0

{z

=1

{z

=0

On remarque que le coefficient multiplicatif i de la fonction de base associe au nud i vaut la


valeur de la fonction uh ce nud. En posant uh (xi , yi ) = ui , on a
uh = u1 1 + u2 2 + ...un n
On peut crire plus simplement uh dans la base des i comme :

u =

u1
u2
..
.
un

(i )

Afin de simplifier les critures, on note U la reprsentation de uh dans la base des fonctions de
forme i ; la base tant implicite :

U =

u1
u2
..
.
un

En notant la matrice contenant les fonctions de forme sous la forme :


= [ 1 2 n ]
on peut alors crire
uh = U .
Exercice IV.2 Pour le pavage suivant constitu de triangles, tracer les 5 fonctions de base i (x, y). Tracer la
fonction uh associe u1 = 0, 5 ; u2 = ; u3 = 0, 5 ; u4 = 2 ; u5 = 3.

1
x

35

IV.4 Fonction vectorielle deux variables

IV.4 Fonction vectorielle deux variables


On considre lensemble des fonctions vectorielles deux variables dfinies dun domaine du
plan vers R2 :
V=

v rgulier :

R2

(x, y) 7
v (x, y)

On construit dans un premier temps les fonctions i (x, y) de la mme faon que ce qui est
fait pour le cas dune fonction deux variables. On construit ensuite lensemble V h partir des

couples de fonctions vectorielles (x, y)


e , (x, y)
e V o i varie de 1 n. Lespace
1

vectoriel V est alors engendr par ces fonctions :


h

V h = vect {1 (x, y)
e 1 , 1 (x, y)
e 2 , . . . n (x, y)
e 1 , n (x, y)
e 2}
La dimension de V h est 2n.
Tout champ de dplacement de V h scrit sous la forme :

u h (x, y) = u1 1 (x, y)
e 1 + v1 1 (x, y)
e 2 + . . . + un n (x, y)
e 1 + vn n (x, y)
e2
ou encore
uh = U
avec
=

"

. . . n

2 . . .

0
n

o est appele la matrice des fonctions de forme et U est la reprsentation de uh (x, y) dans la
base des fonctions de forme :

U =

u1
v1
..
.
un
vn

IV.5 Fonction trois variables


On considre lensemble des fonctions trois variables dfinies dun domaine de lespace vers
R:
V=

v rgulier : R
(x, y, z) 7 v(x, y, z)

Pour construire le sous-espace V h , on se donne n fonctions simples i (x, y, z) V avec


i [ 1, 2, .., n ]. Ces n fonctions engendrent V h un sous-espace vectoriel de V. Elles forment une
base de V h si elle sont linairement indpendantes (famille libre).
Pour les construire simplement, on dcoupe le domaine tri-dimensionnel en lments. Ici, on
choisit par exemple un dcoupage laide de ttradres (Fig. IV.7). Chaque lment est construit
partir de plusieurs nuds, 4 pour des ttradres 4 nuds.

36

Espace dapproximation E.F.

Figure IV.7 Maillage dun domaine tridimensionnel avec des ttradres 4 nuds.

La fonction i (x, y, z) est construite par morceaux de faon valoir 1 au nud i, zro aux
autres nuds et zro dans tous les lments non connects au nud i. Le dtail de ces fonctions
est donn dans la suite du cours.
Lespace V h est alors dfinie comme lespace engendr par les fonctions i (x, y, z) :
V h = vect {1 (x, y, z), 2 (x, y, z), ...n(x, y, z)}
La dimension de V h est n. Autrement dit, tout lment uh V h scrit sous la forme dune
combinaison linaire des i (x, y, z) :
uh (x, y, z) = u1 1 (x, y, z) + u2 2 (x, y, z) + ...un n (x, y, z)
o uh (xi , yi , zi ) = ui
On peut crire plus simplement uh dans la base des i comme :

uh =

u1
u2
..
.
un

(i )

Afin de simplifier les critures, on note U la reprsentation de uh dans la base des fonctions de
forme i ; la base tant implicite :

U =

u1
u2
..
.
un

37

IV.6 Fonction vectorielle trois variables

IV.6 Fonction vectorielle trois variables


On considre lensemble des fonctions vectorielles trois variables dfinies dun domaine de
lespace vers R3 :
V=

v rgulier :

R3

(x, y, z) 7
v (x, y, z)

On construit dans un premier temps les fonctions i (x, y, z) de la mme faon que ce qui est
fait pour le cas dune fonction trois variables. On construit ensuite lensemble V h partir des

triplets de fonctions vectorielles (x, y, z)


e , (x, y, z)
e , (x, y, z)
e V o i varie de 1
1

n. Lespace vectoriel V est alors engendr par ces fonctions :


h

V h = vect {1 (x, y, z)
e 1 , 1 (x, y, z)
e 2 , 1 (x, y, z)
e 3, . . . ,

(x, y, z) e , (x, y, z) e , (x, y, z)


e }
1

La dimension de V h est 3n.


Tout champ de dplacement de V h scrit sous la forme :

u h (x, y, z) = u1 1 (x, y, z)
e 1 + v1 1 (x, y, z)
e 2 + w1 1 (x, y, z)
e 3 + ...

+u (x, y, z)
e + v (x, y, z)
e + w (x, y, z)
e
1

n n

n n

n n

ou encore
uh = U
avec

. . . n

=
0

...

1 . . .

o est appele la matrice des fonctions de forme et U est la reprsentation de uh dans la base
des fonctions de forme :

U =

u1

v1

w1
..
.
un
vn

wn

V Construction de la base E.F.

V.1 Construction des fonctions de forme dans un lment


V.1.1 Introduction
Les fonctions de forme i dun maillage sont dfinies par morceaux sur plusieurs lments. Pour
tous les points M appartenant un lment e (e est le numro de llment), les fonctions de V h
ne scrivent qu partir des fonctions de forme associes aux nuds connects llment e .
On note Ve lespace vectoriel des fonctions rgulires dfinies du domaine lmentaire e vers R.
Ve =

v rgulier : e R
M

7 v(M )

Les fonctions de forme des nuds connects llment e forment un sous-espace vectoriel de
Ve de dimension finie gale au nombre de nuds n connects llment e. On peut dfinir cet
espace Veh comme tant engendr par les n fonctions i .

V.1.2 Fonctions de forme dans un lment unidimensionnel


Pour le cas dune fonction une variable dfinie sur lintervalle [A, B], on peut crire tout lment
de V h sous la forme
uh (x) = u1 1 (x) + u2 2 (x) + ...un n (x)
o n est le nombre de nuds du maillage. Les fonctions de forme tant dfinies par morceaux, on
a par exemple pour le maillage de la figure V.1 :
x [x1 , x2 ], uh (x) = u1 1 (x) + u2 2 (x)
x [x2 , x3 ], uh (x) = u2 2 (x) + u3 3 (x)

40

Construction de la base E.F.


1
1
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

1
2
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

1
3
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

1
4
bc

bc

x1 = A

bc

x2

bc

x3

bc

x4

x5 = B

1
5
bc

x1 = A

bc

x2

bc

x3

bc

x4

bc

x5 = B

Figure V.1 Fonctions de base de lintervalle [A, B].

x [x3 , x4 ], uh (x) = u3 3 (x) + u4 4 (x)


x [x4 , x5 ], uh (x) = u4 4 (x) + u5 5 (x)
Les fonctions de forme i sont reprsentes lment par lment sur la figure V.2. On remarque
que lon peut reprsenter de faon gnrale les fonctions de forme dans un lment gnrique
allant de a b comme deux portions de droites comme indiqu sur la figure V.3. Les deux fonctions
de base dans cet lment sont notes a et b .
On considre le sous-espace vectoriel Veh de V h restreint llment e allant de a b qui
coincident avec les deux nuds de llment e du maillage initial :
Veh = vect {a (x), b (x)}
La dimension de Veh est 2. Une fonction uhe appartenant Veh scrit comme une combinaison
linaire de a et b :
x [a, b], uhe (x) = ua a (x) + ub b (x)
On cherche crire les fonctions de forme comme des polynmes en x. La base canonique polynmiale contenant 2 termes est [ 1 x ] : On peut alors r-crire Veh comme un espace engendr par

41

V.1 Construction des fonctions de forme dans un lment


1

bc

x1 = A

bc

x2

bc

bc

x2

x3

bc

bc

x3

bc

x4

x4

bc

x5 = B

Figure V.2 Fonctions de base pour chaque lment.


1
a

bc

bc

Figure V.3 Fonctions de base pour un lment [a, b].

la base [ 1 x ] :
Veh = vect {1, x}
Finalement, le passage de la base canonique polynmiale [ 1 x ] la base des fonctions de forme
[ a (x) b (x) ] est un changement de base. Il suffit dcrire la base canonique dans la base des
fonctions de forme pour trouver les expressions de a et b :
x [a, b], 1 = 1a (x) + 1b (x)
x [a, b], x = aa (x) + bb (x)
soit le systme linaire deux inconnues suivant rsoudre :
"

1 1
a b

#"

a (x)
b (x)

"

1
x

ce qui donne le rsultat :


a (x) =

xb
bx
xa
xa
=
et b (x) =
=
ab
l
ba
l

avec l = b a. En faisant un changement dorigine sur laxe x tel que x = x a, on a :


a (x ) = 1

x
x
et b (x ) =
l
l

Ces 2 fonctions sont traces sur la figure V.4.

V.1.3 Fonctions de forme dans un lment du plan


Pour le cas dune fonction deux variables dfinie de vers R, on utilise par exemple un pavage
ou maillage de en triangles. On considre le sous-espace vectoriel Veh de V h restreint llment
e (domaine not e ) dfini par les points a, b et c (Fig. V.5) :
Veh = vect {a (x, y), b (x, y), c (x, y)}

42

Construction de la base E.F.


1
a (x ) = 1

x
l
x
l

b (x ) =

bc

bc

Figure V.4 Fonctions de forme dun lment 2 nuds.

Aa =
c
yb
M

e2

Ab =

Ac =
a

e1
xb
Figure V.5 Triangle 3 nuds.

La dimension de Veh est 3. Une fonction uhe appartenant Veh scrit comme une combinaison
linaire de a , b et c :
x, y e , uhe (x, y) = ua a (x, y) + ub b (x, y) + uc c (x, y)
On cherche crire les fonctions de forme comme des polynmes deux variables x et y. Comme
la dimension de Veh est 3, on cherche une base de Veh ayant trois termes.
Le choix de la base [ 1 x y ] contenant 3 termes conduit un lment 3 nuds, cest dire
un triangle 3 nuds. La base est symtrique, on peut changer x et y sans changer la base. Des
bases plus compltes sont possibles, ces lments sont dtaills dans la suite.
Finalement, le passage de la base canonique polynmiale [ 1 x y ] la base des fonctions de
forme [ a b c ] est un changement de base. Il suffit dcrire la base canonique dans la base
des fonctions de forme pour trouver les expressions de a , b et c :
x, y e , 1 = 1a + 1b + 1c
x, y e , x = xa a + xb b + xc c
x, y e , y = ya a + yb b + yc c
o (xa , ya ), (xb , yb ) et (xc , yc ) sont les coordonnes des 3 nuds a, b et c du triangle.

43

V.1 Construction des fonctions de forme dans un lment

c
1

0 c

0
a

Figure V.6 Fonctions de forme du triangle 3 nuds.

Ce systme de trois quations trois inconnues scrit :

x
a

ya

a (x, y)

xb xc
b (x, y) = x
y
c (x, y)
yb yc

On peut rsoudre ce systme par la mthode de Cramer, il faut alors calculer les quantits suivantes :

2Aa = det
x xb xc
y yb yc

2A = det
xa xb xc
ya yb yc

2Ac = det
xa xb x
ya yb y

2Ab = det
xa x xc
ya y yc

o A est laire du triangle passant par les 3 nuds, Aa est laire du sous-triangle M bc, Ab est laire
du sous-triangle M ac et Ac est laire du sous-triangle M ab (Fig. V.5). La solution du systme
scrit :
a (x, y) =

Aa (x, y)
A

b (x, y) =

Ab (x, y)
A

c (x, y) =

Ac (x, y)
A

Les fonctions sont traces sur la figure V.6.


Exercice V.1 Donner les expressions des fonctions de forme associes au triangle 3 nuds (a, b et c) suivant.
Tracer ces fonctions.

y
c
h
x
a

b
h

44

Construction de la base E.F.

e3
c
za
a

e2

ya

b
xa

e1

Figure V.7 lment ttrdre 4 nuds

V.1.4 Fonctions de forme dans un lment tridimensionnel


Dans le cas dune fonction trois variables dfinie de vers R, on utilise par exemple un pavage ou maillage de en ttradres. On considre le sous-espace vectoriel Veh de V h restreint
llment e (domaine not e ) dfini par les points a, b, c et d (Fig. V.7) :
Veh = vect {a (x, y, z), b (x, y, z), c(x, y, z), d (x, y, z)}
La dimension de Veh est 4. Une fonction uhe appartenant Veh scrit comme une combinaison
linaire de a , b , c et d :
x, y, z e , uhe (x, y, z) = ua a (x, y, z) + ub b (x, y, z) + uc c (x, y, z) + ud d (x, y, z)
On cherche crire les fonctions de forme comme des polynmes trois variables x, y et z.
Comme la dimension de Veh est 4, on cherche une base de Veh ayant quatre termes. Le choix de la
base [ 1 x y z ] contenant 4 termes conduit un lment 4 nuds, cest dire un ttradre
4 nuds. La base est symtrique, on peut changer x, y et z sans changer la base. Des bases plus
compltes sont possibles, ces lments sont dtaills dans la suite.
En appliquant la mme mthode que prcdemment pour trouver les fonctions de base dans
llment, on abouti au systme suivant qui permet de trouver les fonctions de forme dans un
lment :

x
a

ya

za

a (x, y, z)

xb xc xd
b (x, y, z)

yb yc yd
c (x, y, z)

zb

zc

d (x, y, z)

zd

La solution de ce systme est

i (x, y, z) =

=
y

1
(i + i x + i y + i z)
6v

avec les coefficients calculs comme les dterminants suivants :


xj xk xl
i = (1)

p+1

yj

yk

yl

zj

zk

zl

1
i = (1)

yj yk yl
zj

zk zl

45

V.2 Table de connectivit et coordonnes des nuds


i
a

j
b

k
c

l
d

p
1

j
a

i
b

k
c

l
d

p
0

j
a

i
c

k
b

l
d

p
1

i
d

j
a

k
b

l
c

p
0

Tableau V.1 Permutations pour les fonctions de forme de llment ttradre 4 nuds
.

1
1

4
2

7
6

y
5

Figure V.8 Exemple de maillage.

1
i = (1)

p+1

1
i = (1)

xj xk xl
zj

zk

zl

xj

xk xl

yj

yk

yl

o v est le volume de llment et en utilisant la permutation donne dans le tableau V.1. Le


volume v de llment est donn par le dterminant suivant :
1
v=

1 xa xb xc xd
6 ya yb yc yd
za

zb

zc

zd

Exercice V.2 Donner les expressions des fonctions de forme associes au ttradre 4 nuds (a, b, c et d) suivant.
A laide dune chelle de couleur, dessiner les 4 fonctions de forme.

e3
c
h

e2

d
h
h

e1

V.2 Table de connectivit et coordonnes des nuds


La dfinition du maillage ncessite 2 tableaux de valeurs : les coordonnes des nuds et la connectivit des lments.

46

Construction de la base E.F.

Lexemple de la figure V.8 montre un maillage de triangles 3 nuds constitus de 5 lments


et de 7 nuds. La table de connectivit donne les numros des nuds connects chaque lment.
Le nombre de lignes de ce tableau est le nombre dlments du maillage (5 ici), le nombre de
colonnes est le nombre de nuds par lment (3 ici) :
Numro

Nud

Nud

Nud

dlment

Les coordonnes des nuds sont donnes dans un tableau dont le nombre de lignes est le
nombre de nuds du maillage (7 ici) et le nombre de colonnes est la dimension de lespace de
modlisation (2 ici, x et y) :
Numro

Coord.

Coord.

du Nud

x1

y1

x2

y2

x3

y3

x4

y4

x5

y5

x6

y6

x7

y7

Les algorithmes de construction dun maillage partir dune dfinition gomtrique numrique
de la pice (CAO) ne sont pas dcrit dans ce cours.
Exercice V.3 Tracer le maillage constitu de triangles associ ces coordonnes et cette connectivit :
Numro
dlment
1
2
3

Nud
a
1
1
2

Nud
b
4
2
5

Nud
c
3
4
4

Numro
du Nud
1
2
3
4
5

Coord.
x
0.0
1.0
0.0
1.0
2.0

Coord.
y
0.0
0.0
1.0
1.0
1.0

VI Problme discrtis

VI.1 Dfinition de lerreur de discrtisation


On dfinie lerreur de discrtisation en dplacement comme la diffrence entre la solution de

rfrence
u ex V et la solution lments finis
u h Vh :

e =
u ex
uh

On remarque que
e V.

On dfinie lerreur en nergie comme la norme nergtique de


e :

e =k
e kE

Si lerreur e est nulle alors


e est le champ de dplacement nul (dfinition dune norme) : la

solution lments finis est gale la solution exacte :


uh =
u ex .

VI.2 criture du problme discrtis


VI.2.1 Rappel des diffrents espaces introduits
Une reprsentation des diffrents espaces introduits est donne sur la figure VI.1. Deux cas
peuvent se prsenter :

Cas o
u d 6= 0 alors U U0 =

Cas o
u d = 0 , alors U = U0

48

Problme discrtis

Cas o
u d 6= 0

Cas o
ud = 0

U0

U0 = U

0
U

Vh

U0h

Vh

Uh

U0h = U h

Figure VI.1 Diffrents espaces introduits

VI.2.2 Solution en dplacement

La solution lments finis


u h V h minimise lerreur avec la solution de rfrence
u ex V.

Autrement dit, lerreur est la partie de la solution


u ex V que
u h V h ne peut pas reprsenter ;
cela vient du fait que V h est de dimension n et est inclu dans V.

Cela revient dire que lerreur


e V est orthogonale tout champ de dplacement
v h Vh
au sens du produit scalaire a(, ) (Fig. VI.2) :

v h V h , a(
v h,
e)=0
Comme U0h V h , a fortiori, on a :

v h U0h , a(
v h,
e)=0
cest dire

v h U0h , a(
v h,
u ex
u h ) = 0 ou encore a(
v h,
u h ) = a(
v h,
u ex )
Or, la solution exacte vrifie :

v U0 , a(
v ,
u ex ) = L(
v)
Comme U0h U0 , on aussi

ex

u ) = L(v h )

v h U0h , a(v h ,
Finalement, en remplaant dans lquation prcdente, on a :

v h,
u h ) = L(v h )

v h U0h , a(

La solution lments finis


u h U h vrifie

v h U0h , a(
v h,
u h ) = L(v h )
Ce qui scrit aussi :

La solution lments finis


u h U h vrifie

v h U0h ,

v h )C (
u h ) d =
T (

v h F d dS +

v h f d = 0

49

VI.2 criture du problme discrtis


V

Vh

u ex

uh

Figure VI.2 Lerreur est orthogonale lespace V h .

VI.2.3 Ecriture matricielle du problme discrtis

On sait que
u h (ou uh dans une base donne) scrit partir des fonctions de base comme :
uh = U
Le calcul de (uh ) donne :
(uh ) = DU = BU
o B est appel loprateur gradient (symtris) discrtis et vaut B = D. De mme, on a pour

lcriture du champ virtuel


vh:
v h = V et (v h ) = BV
Dans le cas gnral tridimensionnel, on a :

avec

uh (M )

uh (M ) =
v (M )

. . . i

=
...

...

w (M )

= U

(
e 1 ,
e 2 ,
e 3)

..
.

ui

...

...
et U = vi

i . . .

w
i
.

..

o i dsigne le nud i. On rappelle que loprateur diffrentiel D vaut

0
D=

50

Problme discrtis

Donc loprateur B devient

B = D =

...

i
x

...

...

i
y

...

...

i
z

...

i
z
i
y

i
z
i
y
i
x

...

i
x

...

...

...

...

...

Le problme discrtis est alors de trouver


u h U h , ou de faon quivalente U U h tel que,

v h U h , ou de faon quivalente V U h , on ait


0

V T B T CBU d =

V T T F d dS +

V T T f d = 0

Dans cette dernire expression, on remarque que U et V ne dpendent pas du point M dans le
domaine , ni sur le bord F , on peut donc les sortir des intgrales.
On pose
K=

B T CB d

et
F =

T F d dS +

T f d

La matrice K est appele la matrice de rigidit de la structure. Cette matrice reprsente lapplication bilinaire a(, ) introduite prcdemment pour les champs de dplacements lments finis
appartenant V h , autrement dit :

u h U h ,
v h U h , a(
u h,
v h ) = U T KV = V T KU
Le vecteur F V h est appel le vecteur des forces aux nuds. Ce vecteur est la projection dans
V h des forces extrieures la structure, il reprsente lapplication linaire L() pour les champs
de dplacements lments finis appartenant V h , autrement dit :

v h U h , L(
v h) = V T F
On a finalement le problme discrtis suivant :
Trouver U U h (cinmatiquement admissible) tel que V U0h , on ait
V T KU = V T F

VI.3 Rsolution du problme discrtis


VI.3.1 Sparation des quations
On dcompose le vecteur des dplacements en deux parties : les dplacements libres U [l] (in
u h U scrit
connus) et les dplacements prescrits U d (connus). Un champ de dplacement
[p]

alors
U=

"

U [l]
U d[p]

51

VI.3 Rsolution du problme discrtis

Avec ces notations, [l] dsigne lensemble des degrs de liberts libres, [p] dsigne lensemble des
degrs de liberts prescrits.

Un champ de dplacement virtuel


v h U0 scrit
"

V =

V [l]
0[p]

De mme, on dcompose le vecteur des forces gnralises


F =

"

F d[l]
F [p]

o F d[l] correspond aux forces appliques sur la structure (connues) et F [p] correspond aux ractions dappuis (inconnues).
On dcompose la matrice de rigidit de la mme faon :

K=

K[ll]

K[lp]

T
K[pp]
K[lp]

o K[ll] correspond aux lignes et colonnes de K des dplacements libres, K[pp] correspond aux
lignes et colonnes de K des dplacements bloqus, K[lp] correspond aux lignes des dplacements
libres et colonnes des dplacements bloqus.

VI.3.2 Rsolution en dplacements


Le problme rsoudre est :
Trouver U [l] tel que V [l] , on ait
[V T[l]

0T[p] ]

K[ll]

K[lp]

T
K[pp]
K[lp]

"

U [l]
U d[p]

[V T[l]

0T[p] ]

"

F d[l]
F [p]

Ce qui revient trouver U [l] tel que V [l] , on ait




V T[l] K[ll] U [l] + K[lp] U d[p] = V T[l] F d[l]


Puisque cette quation est valable quelque soit V [l] , cela revient rsoudre le systme suivant :
K[ll] U [l] = F d[l] K[lp] U d[p]
La solution de ce systme donne les dplacements inconnus U [l] .

VI.3.3 Ractions aux appuis


Les forces de ractions F [p] sont les efforts extrieurs sur le bords u o les dplacements sont
imposs. Ces efforts assurent lquilibre global de la structure, ils sont inconnus.
Pour les calculer, on change virtuellement les frontires F et u . Le problme scrit de
la mme faon que prcdemment la diffrence que V devient :
V =

"

0[l]
V [p]

52

Problme discrtis

2 translations
et 1 rotation
possibles

1 translation
et 1 rotation
possibles

1 rotation
possible

aucun
mouvement
possible

Figure VI.3 Exemple de blocage des modes de dplacements de solide rigide en bidimensionnel.

Dans ce nouveau problme, les forces de ractions F [p] sont supposes connues et le dplacement
impos U d[p] est suppos inconnu. Le problme rsoudre est :
Trouver U d[p] tel que V [p] , on ait
[0T[l]
On a alors lgalit :

T
[p] ]

K[ll]

K[lp]

T
K[pp]
K[lp]

"

U [l]
U d[p]

[0T[l]

T
[p] ]

"

F d[l]
F [p]

T
U [l] + K[pp] U d[p]
F [p] = K[lp]

En sachant que le dplacement est compltement connu suite la rsolution du problme en


dplacements, on peut donc calculer les forces de ractions.

VI.3.4 Systme matriciel complet


En combinant les deux systmes dquations prcdents :
K[ll] U [l] + K[lp] U d[p] = F d[l]
et
T
U [l] + K[pp] U d[p] = F [p]
K[lp]

on peut crire le systme matriciel suivant :

K[ll]

K[lp]

T
K[pp]
K[lp]

"

U [l]
U d[p]

"

F d[l]
F [p]

o les inconnues sont U [l] , les dplacements libres, et F [p] les ractions aux appuis. Ce systme
est rsolu dans la pratique en deux temps : calcul de U [l] puis calcul de F [p] .

VI.3.5 Blocage des mouvements de solides rigides


On rappelle que dans ce chapitre de cours, le problme de mcanique que lon cherche rsoudre
est un problme de statique. Le systme en quilibre ne doit donc pas avoir de mobilit, sinon
cela devient un problme de dynamique. Autrement dit il est ncessaire que tous les mouvements
de corps rigide soient bloqus. Pour un calcul bidimensionnel, il faut bloquer les 2 translations et
la rotation (Fig. VI.3). Pour un calcul tridimensionnel, il faut bloquer les 3 translations et les 3
rotations.
Une mobilit se traduit mathmatiquement par une singularit de la matrice K[ll] , alors que si
tous les mouvements de corps rigide sont bloqus, K[ll] est inversible.

53

VI.4 Construction du problme discrtis


Table de connectivit

6
IV

III

II
1

I
II
III
IV

U II
4

1
5
2
6

4
2
5
3

lment II :

2
4
3
5

U =

u
5

= u2

u4

0 0 0 0 1 0
II = 0 1 0 0 0 0
0 0 0 1 0 0

u1
u2

u3
U II = II U

u4

u5
u6

Figure VI.4 Exemple dutilisation de la matrice de localisation dans le cas dun maillage de triangles
3 nuds.
Preuve Les dplacements de solide rigide W V h de la structure sont ceux pour lesquels lnergie de dformation
est nulle, soit
1

E D (
w ) = W T K W = 0 avec W 6= 0 .
2
Cela veut aussi dire que les forces ncessaires pour dplacer la structure sont nulles, donc F = 0 (problme de statique,
il ny a pas dinertie), et on a aussi :
K W = 0 avec W 6= 0 .
Les modes de dplacements de solide rigide correspondent alors au vecteurs propres de K associs des valeurs propres
nulles.

VI.4 Construction du problme discrtis


VI.4.1 Calcul de la matrice de rigidit
Le problme discrtis revient chercher la solution dun systme linaire dquations faisant
intervenir la matrice de rigidit K telle que :
K=

B T CB d

Dans la pratique, cette matrice est calcule comme la somme des contributions de chaque lment :
K=

nb.
lts Z
X
e=1

B T CB de

o e reprsente le domaine associ llment e. tant donn que le dplacement discrtis

u h V h dun point situ lintrieur dun lment e ne fait intervenir que les fonctions de
forme de cet lment, on peut calculer pour chaque lment sa contribution K indpendamment
des autres lments.
On introduit pour chaque lment une matrice de localisation e , cre partir de la table de
connectivit, qui permet dextraire les dplacements U e des nuds connects llment e des
dplacements U des nuds de la structure :
U e = e U .
La figure VI.4 montre lexemple de matrices de localisation pour un maillage de triangles 3
nuds.

54

Problme discrtis

u h dans llment e, dans la


Le vecteur U e est la reprsentation du champ de dplacement
base des fonctions de forme e de llment :
uhe (M ) = e U e
Loprateur gradient discrtis est dfini dans llment par :
B e = De
Pour tout point M de llment, cet oprateur lmentaire B e est reli loprateur B par la
matrice de localisation :
B = B e e .

Preuve En effet, le champ de dformation associ


u h vaut
= BU
soit aussi dans llment e
= BeU e
En remplaant U e par e U , on a :
= B e e U
donc B = B e e dans llment e.

Finalement, la matrice de rigidit scrit


K=

nb.
lts
X

eT

e=1

B eT CB e de e

En posant K e la matrice de rigidit lmentaire telle que :


Ke =

on a
K=

B eT CB e de

nb.
lts
X

eT K e e .

e=1

Exercice VI.1 Dans le cas dune fonction vectorielle, dfinie dun domaine tridimensionnel vers R3 , et en
utilisant un ttradre 4 nuds (dfini par les 4 points a, b, c et d), donner e , U e et B e dans un lment.
Solution :
On rappelle que les expressions des fonctions de forme de cet lment scrivent sous la forme :
a (x, y, z) =

1
(a + a x + a y + a z)
6v

1
(b + b x + b y + b z)
6v
1
(c + c x + c y + c z)
c (x, y, z) =
6v
1
d (x, y, z) =
(d + d x + d y + d z)
6v
o les coefficients i , i , i et i sont calculs partir des coordonnes des 4 nuds de llment et o v est le
volume de llment.
b (x, y, z) =

55

VI.4 Construction du problme discrtis

Le champ de dplacement
u h scrit dans llment sous la forme :

M (x, y, z) e ,
u he (M ) = ua a (M )
e 1 + va a (M )
e 2 + wa a (M )
e3

+u (M ) e + v (M ) e + w (M )
e
b

+uc c (M )
e 1 + vc c (M )
e 2 + wc c (M )
e3

+u (M ) e + v (M ) e + w (M ) e
d

En crivant
u he dans la base (
e 1,
e 2,
e 3 ) de R3 , on a :
uhe (M ) = e U e
o e est la matrice des fonctions de forme de llment donne par

0
a
0

a
e = 0
0

0
0
a

0
b
0

b
0
0

0
0
b

0
c
0

c
0
0

0
0
c

d
0
0

0
d
0

0
0
d

et U e est le champ de dplacement


u h restreint llment e et crit dans la base des fonctions de forme :
U e = [ ua va wa ub vb wb uc vc wc ud vd wd ]T
La matrice e est une matrice 312, et le vecteur U e est une matrice colonne 12 lignes.
Loprateur gradient discrtis est dfini dans un lment comme une matrice 612 :

a
x

0
a
y

0
0
0

B e = De =

0
0
a
z
a
y
a
x

0
a
z

a
z
a
y

0
a
x

d
x

...
...
...
...
...
...

0
d
y

0
0
0

0
d
z

d
z
d
y

0
d
x

0
0
d
z
d
y
d
x

En calculant les drives des fonctions de forme, on obtient :

Be =
6v

a
0
0
0
a
a

0
a
0
a
0
a

0
0
a
a
a
0

b
0
0
0
b
b

0
b
0
b
0
b

0
0
b
b
b
0

0
c
0
c
0
c

c
0
0
0
c
c

0
0
c
c
c
0

d
0
0
0
d
d

0
d
0
d
0
d

0
0
d
d
d
0

Dans ce cas particulier du ttradre 4 nuds, tant donn que la matrice Be (M ) est constante dans llment,
le calcul de K e est immdiat (v est le volume de llment) :
K e = v B eT C e B e .

VI.4.2 Calcul des forces aux nuds


Le second membre du systme linaire rsoudre est le vecteur des forces aux nuds donn par :
F =

f d +

{z

terme A

T F d dS

{z

terme B

Le terme A agit sur tous les lments subissant une force volumique (Fig. VI.5). Le terme B agit
sur les lments dont une frontire est soumise une force impose (Fig. VI.5).
En utilisant la matrice de localisation prcdente, on a :
F =

nA
X
e=1

eT

eT f de +

nB
X

e=1

eT

F e

eT F d dS

56

Problme discrtis
F
Fd

f
e
e

Terme A

Terme B

Figure VI.5 Forces agissant sur les lments.

o nA est le nombre dlments dans le volume, et nB est le nombre dlments touchant la surface
F . Le vecteur des forces aux nuds est donc calcul comme une somme de contributions de
chaque lment.

VII Calculs au niveau lmentaire

VII.1 lment de rfrence


VII.1.1 Ncessit dun lment de rfrence
Les lments tudis jusqu prsent (barre 2 nuds en 1D, triangle 3 nuds en 2D et ttradre
4 nuds en 3D) sont construit directement dans lespace physique. Ces trois lments peuvent
tre construits ainsi, mais la plupart des autres lments font appel un lment de rfrence,
autrement les lments ne peuvent pas sassembler les uns aux autres.
Prenons lexemple dun quadrangle 4 nuds, dont la base dapproximation est [ 1 x y xy ],
construit sur les 4 nuds suivants : (0, 0), (1, 0), (1, 1 + ) et (0, 1) (Fig. VII.1).
Le systme rsoudre pour trouver les fonctions de forme est :

1 1

a (x, y)

0
b (x, y)

0 1+ 1
c (x, y)

0 0 1+ 0

La solution est

d (x, y)

=
y

xy

a (x, y) = (1 x)(1 y) ; b (x, y) = x(1

y
) ;
1+

xy
; d (x, y) = y(1 x) ;
1+
Les fonctions de forme sont traces sur la figure VII.1. La fonction a devrait sannuler sur
c (x, y) =

les bords opposs au nud a (bords c d et b c) afin dviter que ce nud ait une influence
hors de llment, mais a ne vaut pas 0 sur le bord c d. La mme conclusion apparat pour la

58

Calculs au niveau lmentaire

1+
1

c
a

d
1
a

Figure VII.1 Elment quadrangle dont les fonctions de forme ne sannulent pas sur les bords.

fonction b . Cet lment ne peut pas sassembler avec dautres le long du bord cd : les fonctions
de forme ne seraient pas continues. On construit alors les fonctions de forme dans un lment de
rfrence de forme gomtrique simple, puis une transformation gomtrique permet le passage
de llment de rfrence llment physique.

VII.1.2 Gomtrie de llment de rfrence


Un lment de rfrence est un lment de forme simple qui permet de construire les fonctions
de forme. Un systme de coordonnes lui ait attach, gnralement compris entre 1 et +1 dans
chaque direction. Une transformation permet de passer de llment de rfrence llment
physique.
Plusieurs exemples dlments de rfrence sont dcrits sur la figure VII.2.

VII.1.3 Fonctions de forme un lment de rfrence 2 variables


On se place dans le cas des fonctions 2 variables dfinies de llment du plan e vers R.
On utilise llment quadrangle 4 nuds dans la suite pour illustrer le principe (Fig. VII.3).
Lespace vectoriel Veh engendr par les 4 fonctions de forme associes aux 4 nuds a, b, c et d est
de dimension 4.
On dfinit un systme de coordonnes de rfrence (r, s) tel que sur les bords de llment on
ait r = 1 et s = 1 . Le carr dfini dans le repre (r, s) dont les sommets ont pour coordonnes
(1, 1) et (1, 1) est appel lment de rfrence. Les coordonnes dun nud i dans llment
de rfrence sont notes (ri , si ).
La base canonique polynomiale de Veh , de dimension 4, doit contenir 4 termes. Pour le quadrangle 4 nuds, on choisit [ 1 r s rs ] dans llment de rfrence. Cette base est symtrique,
on peut changer r et s sans changer la base. Le passage de la base canonique la base des

59

VII.1 lment de rfrence

Elment physique

Elment de rfrence
1

barre - poutre

s
1

quadrangle

1
1

x
t

+1

hexadre
r

+1 s

+1
1

y
s

triangle

x
1

t
1

ttradre

r
Figure VII.2 Quelques lments physiques et lments de rfrences associs.

s=1
(xd , yd )

(xc , yc )
r=1

(1, 1)

(1, 1)

r = 1
r
r
y
(xa , ya )
x
s = 1
Elment physique

(1, 1)

(1, 1)

(xb , yb )
Elment de rfrence

Figure VII.3 Passage de llment physique llment de rfrence pour un quadrangle.

60

Calculs au niveau lmentaire

1
0

Figure VII.4 Fonctions de forme du quadrangle 4 nuds dans llment de rfrence.


1
Q9

1
r
r

rs

2
2

r2

r3

s
rs
s2
r2 s rs2
s3
r 2 s2

T3
s

r s rs
r 2 s2

r
s

T6

1
r
r2

s
rs

s2

Figure VII.5 Triangle de Pascal.

Q4

1
s
rs

61

VII.1 lment de rfrence

fonctions de forme revient rsoudre le systme suivant :

r
a

sa

rb

rc

sb

sc

ra sa rb sb rc sc

1 1 1 1 r


rd

b r

sd c s
1 1 1 1 c s
rs
1 1 1 1
d
rs
rd sd
d

La rsolution du systme se fait par des oprations sur les lignes :

(L1 ) (L2 ) (L3 ) + (L4 ) 4a = 1 r s + rs


(L1 ) + (L2 ) (L3 ) (L4 ) 4b = 1 + r s rs
(L1 ) + (L2 ) + (L3 ) + (L4 ) 4c = 1 + r + s + rs
(L1 ) (L2 ) + (L3 ) (L4 ) 4d = 1 r + s rs
La solution est
1
1
a (r, s) = (1 r)(1 s) , b (r, s) = (1 + r)(1 s) ,
4
4
1
1
c (r, s) = (1 + r)(1 + s) , d (r, s) = (1 r)(1 + s) .
4
4
Les fonctions i peuvent scrire aussi plus simplement :
1
i (r, s) = (1 + ri r)(1 + si s).
4
Ces fonctions de formes sont traces sur la figure VII.4
Le triangle de Pascal explicit sur la figure VII.5 permet de trouver la base canonique polynmiale 2 variables associe dautres lments du plan. On crit 1 sur la ligne du haut, on
complte la ligne du dessous en multipliant par r vers la gauche et par s vers la droite chacun des
termes de la ligne du dessus. Plusieurs lments classiquement utiliss sont prsents sur cette
figure, avec leurs base canoniques respectives.
Exercice VII.1 Construire les fonctions de forme du triangle 6 nuds dans llment de rfrence. Tracer ces 6
fonctions.

s
c

c (0, 1)

f
e

e( 12 , 21 )

f
a

a
lment physique

(1, 0)r

(0, 0)

lment de rfrence

VII.1.4 Passage de llment de rfrence llment physique


Cas gnral
Les coordonnes dun point quelconque situ dans llment physique (x, y, z) (ou (x, y) dans le
plan) sont relies aux coordonnes dans llment de rfrence par les fonctions de forme et aux
coordonnes des nuds de llment.

62

Calculs au niveau lmentaire

En notant xe les coordonnes physiques dun point M de llment e et X e les coordonnes


physiques des nuds de llment e, on peut crire
xe = e X e
o e est la matrice des fonctions de forme. Un tel lment est dit isoparamtrique car il fait intervenir la mme approximation pour la gomtrie (passage de llment de rfrence llment
physique) et pour le dplacement.
On dfinit le gradient F de la transformation permettant de passer de llment de rfrence
llment physique dans le cas gnral en 3 dimensions comme :
x
r

y
en 3 dimensions : F =

x
s

x
t

y
; en 2 dimensions : F =

t
y

y
s

z
r

z
s

x
s

z
t

Application au quadrangle 4 nuds


Par exemple, pour llment quadrangle 4 nuds du plan, on a

x =

"

a (r, s)

b (r, s)

c (r, s)

a (r, s)

b (r, s)

ou encore
x=

d
X

i (r, s)xi , y =

i=a

Le calcul de

d
X

x
r

et de

x
s

yb

xc

yc

i x
x h
b
= a,r b,r c,r d,r
,
xc
r

xd
y
r

et de

y
s

sobtient par :

ya

i y
y h
b
= a,r b,r c,r d,r
,
yc
r

yd

xa

ya

yd

i x
x h
b
= a,s b,s c,s d,s
.
xc
s

xd

xd

sobtient par :

xb

i (r, s)yi .

xa

ya

i=a

Le calcul de

0
d (r, s)
0

c (r, s)
0
d (r, s)

xa

i y
y h
b
= a,s b,s c,s d,s
.
yc
s

yd

63

VII.2 Matrice de rigidit dans llment de rfrence

VII.2 Matrice de rigidit dans llment de rfrence


VII.2.1 Expression
Le calcul de la matrice de rigidit K e fait intervenir une intgrale dans llment physique. Cette
intgrale est gnralement calcule dans llment de rfrence pour deux raisons :
les fonctions de forme sont connues dans llment de rfrence,
llment physique a une forme souvent complique, ce qui rend lintgration directe dans
llment physique difficile.
Lexpression de la matrice de rigidit dun lment est
Ke =

B e (M ) C e B e (M ) d

o e est llment physique. Cette intgrale scrit dans llment de rfrence en faisant intervenir le dterminant du gradient F de la transformation permettant de passer de llment de
rfrence llment physique :
Ke =

ref

B e (r, s) C e B e (r, s) det F dref

o ref est llment de rfrence.

VII.2.2 Cas du quadrangle


Afin dillustrer le principe, on se place dans le cas de llasticit plane et avec une discrtisation
utilisant des quadrangles 4 nuds. Le champ de dplacement uhe dans un tel lment scrit :

uhe

"

a (r, s)

b (r, s)

c (r, s)

a (r, s)

b (r, s)

c (r, s)

uhe = e (r, s) U e

o ui
e 1 + vi
e 2 est le dplacement du nud i.
Le champ de dformation associ uhe vaut :
e (uhe ) = De (r, s) U e = B e (r, s) U e
avec

x
0

D=

d (r, s)
0

0
d (r, s)

ua

va

ub

vb

uc

vc

ud

vd

64

Calculs au niveau lmentaire

Loprateur gradient discrtis vaut alors :

B e (r, s) =

a,x

b,x

c,x

d,x

a,y

b,y

c,y

d,y
.

a,y a,x b,y b,x c,y c,x d,y d,x

Or i (r, s) est une fonction de r et s, dont les drives par rapport x et y valent
i r i s
i
i r i s
i
=
+
et
=
+
x
r x
s x
y
r y
s y
ce qui scrit sous forme matricielle,

i
x

r
x


i r

s i

x
r

s
i

{z

o F est le gradient de la transformation passant dun point (r, s) de llement de rfrence son
image (x, y) dans llment physique. Les drives des fonctions i (r, s) par rapport r et s
sont facilement calculables de faon analytique. On a pour le quadrangle 4 nuds :
1
1
1
1
a,r = (1 s) , a,s = (1 r) , b,r = (1 s) , b,s = (1 + r) ,
4
4
4
4
1
1
1
1
c,r = (1 + s) , c,s = (1 + r) , d,r = (1 + s) , d,s = (1 r) .
4
4
4
4
Le calcul de la transformation pour passer de llment de rfrence llment physique ainsi
que le calcul de F sont dtaills dans le paragraphe prcdent pour le quadrangle 4 nuds.
Lexpression de la matrice de rigidit du quadrangle 4 nuds est
Ke =

B e (M ) C e B e (M ) d =

he B e (r, s) C e B e (r, s) det F dr ds

o he est lpaisseur de llment e.


Exercice VII.2 Construire les fonctions de forme du cube 8 nuds dans llment de rfrence. Reprendre la
dmarche prcdente en lappliquant au cas tridimensionnel de lhxadre 8 nuds.
t

8
5

8
+1

6
6

+1

z
1

+1

w3
2
x

3
y

u3

v3

1
r

VIII Intgration numrique

VIII.1 Intgration numrique de la matrice de rigidit


La matrice de rigidit lmentaire peut toujours scrire comme une intgrale dans llment de
rfrence ref. :
Ke =

B e C e B e det F d

ref.

Ce calcul nest en gnral pas ralisable de faon analytique, on calcule alors numriquement une
approximation de cette intgrale. Lide est de transformer lintgrale en une somme de termes
valus en des points prcis (points dintgration) de llment de rfrence, pondrs par des
coefficients (poids). En notant G le nombre de points dintgration, lapproximation de la matrice
de rigidit lmentaire vaut
Ke =

G
X

B e |g C e B e |g det F |g wg

g=1

o la notation |g veut dire que la quantit est value au point dintgration g et wg est le poids
associ ce point.
Lalgorithme de calcul de K e par intgration numrique est alors :
1. Initialiser K e zro
2. Pour chaque point dintgration g faire :
(a) Dterminer les coordonnes du point dans llment de rfrence et son poids wg
(b) Calculer les drives des fonctions de forme i par rapport aux coordonnes de rfrence au point dintgration g

66

Intgration numrique

bc

bc

1 (x)

bc

x1

2 (x)

bc

x2

bc

x3
bc

bc

x4

bc

x5

x1

bc

x1

x2

bc

x3

1
3 (x)

bc

bc

x2

bc

x3

x5

bc

4 (x)

bc

x4

bc

x4

bc

x5

bc

x1

bc

x2

x3

x4

bc

x5

bc

5 (x)

bc

x1

bc

x2

bc

x3

bc

x4

x5

Figure VIII.1 Polynmes de Lagrange de degrs 4 associs 5 points.

(c) Calculer F |g , en dduire F 1 |g et det F


(d) Calculer les drives des fonctions de forme i par rapport aux coordonnes physique
au point dintgration g
(e) Evaluer B|g
(f) Evaluer la contribution kg du point dintgration K e
kg = B T |g C B|g det F |g wg
(g) Ajouter kg K e :
K e = K e + kg
Le calcul des forces extrieures se fait aussi par intgration numrique en utilisant la mme
stratgie dintgration.
Dans la suite du cours, on examine les positions et les poids dintgration pour les lments
1, 2 et 3 variables.

VIII.2 Intgration des fonctions une variable


VIII.2.1 Polynmes de Lagrange
On considre lensemble des fonctions une variable dfinies de [A, B] vers R :
V=

v rgulier : [A, B] R
x 7 v(x)

Lobjectif est de construire un sous-espace vectoriel V h de dimension finie n de V. Pour construire


ce sous-espace, on peut se donner n fonctions polynmiales i (x) V avec i [ 1, 2, .., n ]. Ces

67

VIII.2 Intgration des fonctions une variable

n fonctions engendrent un sous-espace vectoriel de V. Si elles sont linairement indpendantes,


elles forment alors une base de V h . On introduit les n points xi [A, B] distincts tels que x1 = A
et xn = B. On cherche construire ces fonctions sur [A, B] comme des polynmes de degr n 1
en considrant [A, B] comme un seul lment. Ces fonctions sont construites de manires avoir :
i (x) sannule en tous les points xj sauf en xi ,
i (x) vaut en au point xi .
Autrement dit, on cherche des polynmes de degrs n 1 tels que i (xj ) = ij o ij est le
symbole de Kronecker. On peut dfinir V h comme
n

V h = vect 1, x, x2 , . . . xn1 = vect {1 (x), 2 (x), ..., n (x)}


Les fonctions i sont alors dfinie comme des polynmes de Lagrange (Fig. VIII.1) puisque lon
connait leurs zros :
i (x) =

nj=1,j6=i (x xj )
.
nj=1,j6=i (xi xj )

Le numrateur annule i aux points xj avec i 6= j tandis que le dnominateur permet davoir
i (xi ) = 1 (sans sommation implicite). On note Pin1 ce polynme de Lagrange associ au point
i.
On peut aussi les construire comme la solution du systme dquations permettant de passer
de la base canonique polynomiale la base des polynmes de Lagrange (voir le cours sur la
construction des fonctions de forme) :

...

x1

x2

...

x21
..
.

x22
..
.

...
..
.

1 (x)


xn
2 (x) x


x2n
3 (x) = x

..
..
...
.
.

x1n1 x2n1 . . . xnn1


{z

n (x)

xn1

=A

La solution de ce systme donne videmment les mme polynmes de Lagrange i , mais la rsolution est moins aise.
Exercice VIII.1 Trouver les polynmes de Lagrange associs aux 2 points 0 et l.
Solution :
i (x) =

n
j=1,j6=i (x xj )
n
j=1,j6=i (xi xj )

avec n = 2, x1 = 0, x2 = l et i qui prend les valeurs 1 et 2, on a :


1 (x) =

x x2
xl
x
=
= 1
x1 x2
0l
l

2 (x) =

x0
x
x x1
=
=
x2 x1
l0
l

Exercice VIII.2 Trouver les polynmes de Lagrange associs aux 3 points 1, 0 et 1. Ces polynmes sont dessins sur la figure VIII.2.


68

Intgration numrique

1
bc

3
bc

1.0

bc

2
0.5

bc

bc

1.0

bc

0.5

0.5

1.0

Figure VIII.2 Polynmes de Lagrange de degrs 2 associs 3 points.

f (1)

f (r)

bc

f (ri )
bc

bc

bc

bc

I=

f (1)
bc

f (r) dr

1 = r1

r2

ri

+1 = rn

Figure VIII.3 Intgration par la mthode de Newton-Ctes.

VIII.2.2 Mthode de Newton-Ctes


On souhaite calculer lintgrale I dune fonction f (r) entre 1 et 1 (Fig. VIII.3) :
I=

f (r) dr .

On choisit n points ri rgulirement espacs dans lintervalle [1, 1] avec r1 = 1 et rn = 1.


On approxime f (r) par un polynme f(r) de degr n 1 prenant les valeurs f (ri ) aux points ri .
est
Lexpression de f(r)
f(r) =

n
X

f (ri )Pin1 (r)

i=1

Pin1 (r)

est le polynme de degr n 1 qui vaut 1 en ri et 0 en rj6=i . En crivant Pin1 (r)

comme un polynme de Lagrange, on a


nj=1,j6=i (r rj )
.
nj=1,j6=i (ri rj )

Pin1 (r) =
Donc lapproximation I de I vaut
I =

f(r) dr =

n
X
i=1

ou encore

n
X

I =

f (ri )

f (ri )wi

i=1

avec
wi =

Pin1 (r) dr

Pin1 (r) dr

69

VIII.2 Intgration des fonctions une variable


f (1)
bc

f (1)

bc

f
1

Figure VIII.4 Mthode de Newton avec 2 points dintgration - Formule des trapzes
f (1)
bc

f (1)

bc

f (0)
bc

Figure VIII.5 Mthode de Newton-Ctes avec 3 points dintgration - Formule de Simpson

que lon sait calculer puisque les fonctions Pin1 (r) sont connues. Les nombres wi sont appels
poids dintgration associs aux points dintgration ri .
Cette mthode intgre exactement les polynmes de degr n 1 avec n points dintgration,
puisque f(r) reproduit exactement les polynmes de degr n 1. Les figures VIII.4 et VIII.5
montrent de faon graphique lintgration dune fonction avec 2 puis 3 points dintgration.
On remarque que la somme des poids dintgration est toujours gale la longueur de lintervalle intrgr, soit 2 ici. En effet, si f (r) = 1, alors
I = I =

1 dr = 2 =

n
X

wi

i=1

Exercice VIII.3 Trouver les poids associs 3 points dintgration placs en 1, 0 et 1 (fig. VIII.5).

VIII.2.3 Mthode de Gauss


En choisissant judicieusement les emplacements et les poids des points dintgration, on peut
intgrer exactement les polynmes dordre 2n 1 avec n points.
Les coordonnes et les poids des points peuvent tre trouvs analytiquement. Pour illustrer la
mthode, on cherche les points et leurs poids qui permettent dintgrer exactement les polynmes
dordre 3 avec 2 points. La fonction f intgrer vaut
f (r) = a0 + a1 r + a2 r2 + a3 r3
et son intgrale entre 1 et 1 vaut
I=

2
f (r) dr = 2a0 + a2 .
3

70

Intgration numrique
nb. points
2

degr dintgration
3

ri
0,5773502692

wi
1,0000000000

0,7745966692
0,0000000000

0,5555555556
0,8888888889

0,8611363116
0,3399810436

0,3478548451
0,6521451549

0,9061798459
0,5384693101
0,0000000000

0,2369268850
0,4786286705
0,5688888889

11

0,9324695142
0,6612093865
0,2386191861

0,1713244924
0,3607615730
0,4679139346

13

0,9491079123
0,7415311856
0,4058451514
0,0000000000

0,1294849662
0,2797053915
0,3818300505
0,4179591837

Tableau VIII.1 Positions et poids des points dintgration de la mthode de Gauss.

On prend 2 points dintgration, symtriques par rapport 0, r1 = R et r2 = R ayant les mmes


poids w1 = w2 = w. On a alors :
I = wf (R) + wf (R)
soit
I = w(2a0 + 2a2 R2 ) = 2w(a0 + a2 R2 ) .
et ce quelques soient a0 , a1 , a2 et a3 donc
Pour que f soit intgre exactement, il faut que I = I,
2
1
I = I 2a0 + a2 = 2w(a0 + a2 R2 ) w = 1 et R2 = .
3
3
Finalement, en prenant comme points dintgration r1 = 13 et r2 = 13 avec comme poids
w1 = w2 = 1, on intgre exactement tous les polynmes dordre 3 dans lintervalle [1, 1].

On peut gnraliser pour les polynmes dordre 2n 1, le tableau VIII.1 donne les positions
et les poids des points de Gauss pour n de 2 7. Une intgration par points de Gauss ncessite
moins de points que par la mthode de Newton-Ctes, ce qui entraine un gain en temps de calcul.
Exercice VIII.4 Retrouver les positions et les poids pour 3 points de Gauss donns dans le tableau VIII.1.

VIII.3 Intgration des fonctions deux variables


VIII.3.1 Cas des lments quadrangles
Dans le cas de llasticit plane, la matrice de rigidit lmentaire dun quadrangle vaut :
Ke =

he B e (r, s) C e B e (r, s) det F dr ds .

71

VIII.3 Intgration des fonctions deux variables

s
1

ly

lx
Figure VIII.6 lment quadrangle physique de forme rectangulaire et lment de rfrence quadrangle.

o he est lpaisseur dans llment. Le choix du nombre de points de Gauss se fait en examinant les termes polynomiaux intgrer. On suppose que llment physique a la mme forme
que llment de rfrence, soit un rectangle dans le cas du quadrangle (Fig. VIII.6). Avec cette
hypothse, le gradient de la transformation F est constant ainsi que son dterminant. En effet, la
transformation pour passer de llment de rfrence llment physique scrit
x=

lx
ly
r; y= s
2
2

Le gradient de la transformation vaut alors

F =

lx
2

x
s

=

y

Le dterminant vaut

x
r

ly
2

lx ly
4
Avec cette hypothse, F est constant et B e ne fait intervenir que les drives de la base cadet F =

nonique polynomiale du dplacement. En prenant de plus un matriau homogne dans llment,


T

C est aussi constant. Finalement, les termes de B e (r, s) C e B e (r, s) det F intgrer ne font
T

intervenir que les termes prsents dans B e (r, s) multiplis un un. Les plus haut degrs en r et
s donnent le nombre de points de Gauss prendre dans chaque direction.
Exercice VIII.5 Trouver les positions et les poids des points de Gauss pour llment quadrangle 4 nuds.
Solution :
La base canonique polynmiale dapproximation du dplacement du quadrangle 4 nuds est [ 1 r s rs ] ;
en drivant cette base par rapport r dune part et s dautre part, on obtient les termes prsents dans B(r, s) soient
[ 1 r s ]. Les termes intgrer sont alors :
[ 1 r s ] [ 1 r s ] = [ 1 r s r 2 s2 rs ]
Les termes de plus haut degr dans chaque direction sont 2 pour r et 2 pour s dans ce cas. On trouve le nombre de
points de Gauss n en crivant 2n 1 > 2 soit n = 2 dans chaque direction.
Lexpression du calcul de la matrice de rigidit est alors pour le quadrangle 4 nuds
e

K =

2
2
X
X

h wi wj B e (ri , sj ) C e B e (ri , sj ) det F (ri , sj )

i=1 j=1

soit aussi

Ke =

4
X
g=1

o les 4 points dintgration sont :

h wg B e (rg , sg ) C e B e (rg , sg ) det F (rg , sg )

72

Intgration numrique

s
1
e

Figure VIII.7 lment triangle de rfrence.

r
0,5773502692
0,5773502692
-0,5773502692
-0,5773502692

poids
1
1
1
1

s
0,5773502692
-0,5773502692
0,5773502692
-0,5773502692

1
3

r
13
1
1 1
3

1
3

1


Exercice VIII.6 Trouver les positions et les poids des points de Gauss pour llment suivant dont la base canonique dapproximation est [ 1 r r 2 ] [ 1 s ]

lment physique

lment de rfrence
s

c
1
1

y
e

b
a

VIII.3.2 Cas des lments triangles


Dans le cas de llasticit plane, la matrice de rigidit lmentaire dun triangle vaut :
e

K =

he B e (r, s) C e B e (r, s) det F dr ds

ref

o ref est le domaine triangulaire de rfrence (Fig. VIII.7) ; les variables r et s sont couples. Les points dintgration sont placs dans le triangle suivant des rgles particulires. Le
tableau VIII.2 donnent les positions et poids suivant le degr des polynmes intgrer. Il existe

73

VIII.4 Intgration des fonctions trois variables


degr dintgration

poids

1
3

1
3

1
2

1
2

1
2
1
2

1
2

1
6
1
6
1
6

1
3

1
3

27
96

0, 6
0, 2
0, 2

0, 2
0, 6
0, 2

25
96
25
96
25
96

Tableau VIII.2 Positions et poids des points dintgration dun triangle.


t

ly
z

+1
lz
+1

+1
lx
r

Figure VIII.8 lment hxadre physique de forme paralllpipde rectangle et lment de rfrence
hxadre.

dautres rgles dveloppes par diffrents auteurs et pour des degrs suprieurs, on ne donne ici
que quelques exemples de positions et poids.
La somme des poids donne toujours laire du triangle de rfrence, soit 0, 5.

VIII.4 Intgration des fonctions trois variables


VIII.4.1 Cas des lments hxadres
Dans le cas de llasticit tridimensionnelle, la matrice de rigidit lmentaire dun hxadre vaut :
Ke =

B e (r, s, t) C e B e (r, s, t) det F dr ds dt .

Le choix du nombre de points de Gauss se fait en examinant les termes polynomiaux intgrer.
On suppose que llment physique a la mme forme que llment de rfrence, soit un paralllpipde rectangle dans ce cas (Fig. VIII.8).
Avec cette hypothse, F est constant et B e ne fait intervenir que les drives de la base canonique polynomiale du dplacement. En effet la transformation pour passer de llment de

74

Intgration numrique

1
r

Figure VIII.9 lment ttradre de rfrence.

rfrence llment physique scrit


ly
lz
lx
r; y= s; z= t
2
2
2
Le gradient de la transformation vaut alors
x=

F =

Le dterminant vaut

lx
2
0
0

0
ly
2
0

lz
2

lx ly lz
8
En prenant de plus un matriau homogne dans llment, C est aussi constant. Finalement,
det F =

les termes de B e (r, s, t) C e B e (r, s, t) det F intgrer ne font intervenir que les termes prsents
T

dans B e (r, s, t) multiplis un un. Les plus haut degrs en r, s et t donnent le nombre de points
de Gauss prendre dans chaque direction.

VIII.4.2 Cas des lments ttradres


Dans le cas de llasticit tridimensionnelle, la matrice de rigidit lmentaire dun ttradre vaut :
e

K =

he B e (r, s, t) C e B e (r, s, t) det F dr ds dt

ref

o ref est le domaine ttradrique de rfrence (Fig. VIII.9) ; les variables r, s et t sont couples. Les points dintgrations sont placs dans le ttradre suivant des rgles particulires. Le
tableau VIII.3 donnent les positions et poids suivant le degr des polynmes intgrer. Il existe
dautres rgles dveloppes par diffrents auteurs et pour des degrs suprieurs, on ne donne ici
que quelques exemples de positions et poids.
La somme des poids donne toujours le volume du ttradre de rfrence, soit 61 .

VIII.5 Critres de qualit du maillage


Dans la pratique, les lments ne sont jamais de la mme forme que llment de rfrence, donc
le gradient de la transformation F nest pas constant dans llment et dpend des coordonnes

75

VIII.5 Critres de qualit du maillage


degr dintgration

poids

1
4

1
4

1
4

1
6

0,58541020
0,138119660
0,138119660
0,138119660

0,138119660
0,58541020
0,138119660
0,138119660

0,138119660
0,138119660
0,58541020
0,138119660

1
24
1
24
1
24
1
24

Tableau VIII.3 Positions et poids des points dintgration dun ttradre.

h
h

>1

Figure VIII.10 Taux de distorsion pour le quadrangle.

de rfrence (r, s, t). Loprateur gradient discrtis, qui est calcul partir de F 1 , contient alors
des fractions polynomiales en (r, s, t). Finalement, le terme "B T CB det F " contient aussi des
fractions polynomiales en (r, s, t), qui ne peut pas sintgrer exactement par points dintgration.
Cela engendre des erreurs dans le calcul numrique par points dintgration de la matrice de
rigidit. Cette erreur est maitrise en contrlant la qualit du maillage : les lments doivent tre
le plus proche possible de la forme de llment de rfrence associ.
Plusieurs critres sont utiliss pour garantir la qualit du maillage. Par exemple pour le quadrangle, on peut utiliser le taux de distorsion dun lment (Fig. VIII.10) dfini comme le rapport
entre la plus grande longueur h sur le diamtre du plus grand cercle inscrit ; le critre est alors :
h
< valeur donne (de 3 10 gnralement)

Un autre critre utilis concerne le respect des angles dans llment quadrangle : les angles
de llment physique doivent tre les plus proches possibles dangles droits.
Dautres critres de qualit de maillage propres chaque logiciel de maillage et chaque type
dlment existent, ils sont dtaills dans les notices dutilisation.

IX Analyse des rsultats E.F.

IX.1 Post-traitement, lissage des contraintes


IX.1.1 Proprits de la solution lments finis

On rappelle que le champ de dplacement solution


u h V h du problme discrtis est cinma
tiquement admissible (
u h U h ) et minimise lerreur en nergie avec la solution du problme de

u h ) nest par contre pas statiquement


rfrence. Le champ de contrainte correspondant h = C(
admissible et est de plus discontinu dun lment lautre. Afin de rendre ce champ plus proche de
la solution exacte, on peut le rendre continu par lissage. Ce nouveau champ de contrainte, not

, nest pas statiquement admissible, mais appartient lensemble C des champs de contraintes
dfinis prcdemment (Fig. IX.1).

IX.1.2 Contrainte lisse

Les contraintes obtenues partir du champ de dplacement


u h solution du problme lments
finis scrivent :

h = C(
u h ) = CBU
o C est la matrice de comportement et B est loprateur gradient discrtis.
On cherche une approximation des contraintes
base sur les fonctions de forme de V h . On

note
une des composante de
et h une des composantes de h . Autrement dit, on cherche
dans un espace C h dfini par
C h = V ect{1 , 2 , , n }
o n est le nombre de nuds du maillage.

78

Analyse des rsultats E.F.

x
Contrainte lments finis h

Contrainte lisse

Figure IX.1 Contrainte obtenue par lments finis et contrainte lisse pour les triangles 3 nuds.

La contrainte lisse
scrit alors sous la forme :

2 ... n ]

= [ 1

1
2
..
.
n

= = T T

o n est le nombre de nuds du maillage et o contient les contraintes aux nuds du maillage
( est la reprsentation de
dans la base des fonctions de forme).
Lobjectif est de trouver
( ou de faon quivalente ) permettant dapprocher au mieux h .
Ceci est ralis par une minimisation par moindres carrs de la fonction "distance" entre
et h
dfinie par la fonction J suivante :
1
J(
) =
2
soit aussi

1
2

J(
) =
ou encore

1
J() =
2
1
J() = T
2

(
h )2 d

(
h )(
h ) d

(T T h )( h ) d

T d T

{z
A

T h d +

{z
b

1
J() = T A T b + c
2
En utilisant la notation indicielle on a
J() =

1
2

n X
n
n
X
1X
i Aij j
i bi + c
2 i=1 j=1
i=1

La solution minimise J(), ce qui revient trouver tel que


[ 1, , n ] ,
Cest dire

J()
=0

n
n
J()
1X
1X
Aj j +
i Ai b = 0
=

2 j=1
2 i=1

h d
{z
c

79

IX.1 Post-traitement, lissage des contraintes

La matrice A tant symtrique (Aij = Aji ), on a alors :


n
J() X
=
Ai i b = 0

i=1

En faisant varier de 1 n, on obtient un systme de n quations n inconnues que lon peut


crire sous la forme matricielle suivante :
A = b

IX.1.3 Implmentation et rsolution


La matrice A et le vecteur b sont calculs numriquement en utilisant toute la stratgie de calcul
lments finis (lment de rfrence, points dintgration, assemblage ...).
Dans la pratique, la matrice A est rendue diagonale en plaant sur la diagonale la somme des
termes de la colonne correspondante.
Dans llment e, la matrice Ae vaut

Ae =
.
.
e
.
Z

ne

b ne

de

o ne est le nombre de nuds connects llment e. Soit aussi

2a

a b

Ae =

..
e
.

a b

a ne

2b

b ne
..
.
2ne

ne a ne b

En sommant les colonnes sur la diagonale on a

a (a + b + + ne )

Ae =

de

b (a + b + + ne )

0
..
.

0
..
.

ne (a + b + + ne )

Or la somme des fonctions de base fait toujours 1, la matrice lmentaire Ae devient alors

Ae =

0
..
.

0
..
.

ne

de

Aprs assemblage, on obtient la matrice A "diagonalise" par sommation des colonnes sur la
diagonale suivante :

Z
0

A=
.
.

0
..
.

de

80

Analyse des rsultats E.F.

Dans llment e, le second membre be du systme vaut

be =
.
.
e
.
Z

ne

h
de

et doit tre calcul pour chaque composante de loprateur des contraintes. Aprs assemblage, le
second membre devient

Z
2

b=
.
.

h
d

Le systme dquations tant rendu diagonal, la rsolution est immdiate et donne au nud i
et pour chaque composante de loprateur des contraintes :
Z

i =

i h d
.

i d

IX.1.4 Application au triangle 3 nuds


Afin dillustrer la dmarche, on se place dans le cadre de llasticit plane avec une discrtisation

par des triangles 3 nuds. Les contraintes obtenues partir du champ de dplacement
uh
solution du problme lments finis scrivent :

xx

h =
yy = C( u ) = CBU
xy

o C est la matrice de comportement et B est loprateur gradient discrtis. Pour le triangle


3 nuds, loprateur B tant constant dans un lment, les contraintes sont constantes dans un
lment.
La matrice lmentaire Ae vaut

Ae =

o ae est laire de llment triangle.

1 0 0

ae

0
de = 3 0 1 0
0 0 1
c

Dans llment e, le second membre be du systme pour la contrainte xx vaut

bxx
e =

ae
h

b h

(e)xx de = (e)xx 3 1

81

IX.2 Estimateur derreur

h
est la valeur de la contrainte calcule partir de la solution en dplacements
u h dans
o (e)xx
llment e. De mme, on a pour les contraintes yy et xy :

h
byy
e = (e)yy

ae
1

3
1

h
bxy
e = (e)xy

et

ae
1

3
1

En notant Ei lensemble des lments connects au nud i, on obtient que les contraintes lisses
au nud i du maillage valent :

(i)xx =

(i)yy =

(i)xy =

P
P
P

eEi

eEi

eEi

h
ae (e)xx

h
ae (e)yy

eEi

eEi

ae
ae

h
ae (e)xy

eEi

ae

IX.2 Estimateur derreur


IX.2.1 Rappel sur lerreur en dplacement

Lerreur en dplacement
e est dfinie comme la diffrence entre la solution de rfrence
u ex V

et la solution lments finis


u h Vh :

e =
u ex
uh

Lerreur en nergie e est donne par la norme nergtique de


e :

e =k
e kE
On dfinit lerreur relative globale comme
=
donc
2 =

k
e kE

k u ex kE

k
e k2E
k
u ex
u h k2E
=
.

k
u ex k2E
k
u ex k2E

IX.2.2 Estimateur priori


On peut montrer que lerreur relative globale est de lordre de hp :
c hp
o c, h et p sont dfinis ainsi :
c est une constante qui dpend du problme ;
h est la longueur relative des lments : cest le rapport de la longueur des lments sur la
longueur caractristique du domaine discrtis, donc h < 1 ;

82

Analyse des rsultats E.F.

p=1
p=2

p=0

p=3

x
x2
3

y2

xy
2

p=1

xy

xy

p=2
y

p=3

x2 y 2
Figure IX.2 Compltude de la base dapproximation pour les polynmes 2 variables.
log()
1

Erreur
plus
faible

log(h)
Plus dlments
Figure IX.3 Diagramme log log de lerreur relative en fonction de h.

p est lordre maximal de la base polynomiale complte de lespace dapproximation V h :


pour les polynmes 2 variables, p est tel que tous les termes x y avec + = p soient
prsents dans la base dapproximation du dplacement (Fig. IX.2).
Deux stratgies sont possibles afin de diminuer lerreur :
diminuer h, cest dire augmenter le nombre dlments, on parle de mthode h ou hmethod : on augmente la taille du problme sans changer de type dlment,
augmenter p, cest dire augmenter lordre dapproximation de la base, on parle de mthode
p ou p-method : on change de type dlment et on augmente indirectement la taille du
problme puisque les lments possdent alors plus de nuds.
De faon graphique, lerreur peut tre reprsente en fonction de h dans un diagramme
log log, en effet :
chp log() log(c) + p log(h)
Dans ce diagramme, lerreur suit une droite de pente p (Fig. IX.3). Lorsque p augmente, la droite
devient plus pentue et la convergence vers la solution exacte est plus rapide. Le taux de convergence caractrise la pente de la droite log(c) + p log(h), il vaut donc p. Par exemple pour un
triangle 6 nuds (p = 2), lerreur en nergie est divise par 100 si lon multiplie par 10 le
nombre dlments.

IX.2.3 Estimateur posteriori


Dans le cas gnral, la solution exacte nest pas connue. On peut cependant calculer une estimation
de lerreur. Plusieurs estimateurs existent, on prsente ici un estimateur simple mettre en uvre

83

IX.2 Estimateur derreur

appel ZZ1. Cet estimateur est frquemment utilise par les codes de calculs. Il a par contre
linconvnient de ne pas assurer de donner une estimation de lerreur coup sr suprieure
lerreur vraie, autrement dit, il peut sous-estimer lerreur vraie.
On rappelle que lerreur relative globale vaut
2 =

a(uex uh , uex uh )
k uex uh k2
=
k uex k2
a(uex , uex )

Le dnominateur vaut
a(uex , uex ) =

T (uex )C(uex ) d

La relation entre la contrainte exacte et le champ de dformations du dplacement exact


u ex est :
ex = C(uex )
ou encore
(uex ) = C 1 ex
Donc en remplaant dans lexpression de a(uex , uex ), on a :
Z

a(uex , uex ) =

exT C 1 ex d

Le numrateur vaut
a(uex uh , uex uh ) =

T (uex uh )C(uex uh ) d

soit aussi
a(uex uh , uex uh ) =

Z 

En suivant la mme dmarche que pour le dnominateur, on a :


a(uex uh , uex uh ) =

Z 

exT h

Finalement, lerreur relative globale vaut


2

T (uex ) T (uh ) C (uex ) (uh ) d

Z 

exT h

C 1 ex h

C 1 ex h

exT C 1 ex d

La contrainte exacte ex nest pas connue, mais lide est de la remplaer par la contrainte
lisse
. La contrainte lisse est en effet plus rgulire que la contrainte (uh ), elle approche
mieux la ralit que (uh ).
on obtient une estimation de lerreur relative , on note cette estimaEn remplaant ex par
tion :
2 =

Z 

T h

C 1
h

T C 1

En notant e la quantit dfinie pour llment e telle que


e2 =

T h
Z

C 1
h

T C 1

84

Analyse des rsultats E.F.

maillage initial

rsolution de KU = F
calcul de la contrainte lisse

calcul de la contribution e de chaque lment P


lerreur globale
calcul de lestimation de lerreur globale 2 = e2
<

non

oui

rafinage des zones


contribuant le plus
lerreur globale

maillage optimis :
- chaque lment contribue de la mme faon lerreur
- lerreur globale est infrieure lobjectif

Figure IX.4 Processus itratif de maillage adaptatif.

o e est le domaine de llment e, on a


2 =

nb.
elts
X

e2

e=1

La quantit e est la contribution de llment e lerreur relative globale.

IX.2.4 Maillage adaptatif


On peut faire des itrations sur la construction du maillage partir du rsultat dun calcul, notamment en calculant lestimateur derreur globale ainsi que les contributions e des lments
lerreur relative globale . Le maillage est alors rafin dans les zones qui contribuent le plus
lerreur globale. La stratgie de maillage adaptatif peut alors tre automatise afin que chaque
lment contribue de la mme faon lerreur globale tout en ayant une erreur globale relative
infrieure une valeur objectif fixe par lutilisateur et note . Ce processus itratif est dtaill
sur la figure IX.4.

X lments finis de barre et poutre

X.1 Modle de poutre


X.1.1 Modle gomtrique
La figure X.1 montre un assemblage de poutres permettant de construire une charpente mtallique.
Une poutre est un solide dont une dimension est plus grande que les 2 autres.

Figure X.1 Charpente constitue dun assemblage de poutres

Dans le cadre de ce cours, on ne sintresse quaux poutres droites. De plus, on suppose que
les poutres ont des sections constantes.
On tudie un lment fini de poutre connect 2 nuds a et b (Fig. X.2). Un repre local

( x ,
y ,
z ) est attach llment, laxe
x coincide avec la ligne moyenne de la poutre. Ll

ment a pour longueur L suivant x et a pour section constante S. Le domaine tridimensionnel


associ la poutre est alors
= [0, L] S

86

lments finis de barre et poutre

M
m
b

L
Figure X.2 lment de poutre

X.1.2 Hypothses cinmatiques


On note M (x, y, z) un point de et m(x) sa projection sur sa ligne moyenne. On se restreint dans
ce cours des mouvements dans le plan (x, y) dune section S de la poutre. On fait lhypothse
quune section S reste plane aprs dformation, et quelle a un mouvement de solide rigide :

translation suivant
x (note u(x)) et translation suivant
y (note v(x)),

rotation autour de
z dun angle = qui ne dpend que de x.

On note
u (m) = u(x)
x + v(x)
y le dplacement de m. En supposant que les dplacements
0

et les rotations sont petits, le dplacement de M scrit :

u (M ) =
u 0 (m) + M m = u(x)
x + v(x)
y (y
y + z
z ) ((x)
z)
donc

u (M ) = u(x)
x + v(x)
y + y(x)
x
soit

u (M ) =

"

u(x) + y(x)
v(x)

(
x ,
y)

On pose alors lensemble V des champs de fonctions suffisament rgulires dfinis de [0, L]
vers R :
V=

f rguliers : [0, L] R
x 7 f (x)

Le champ de dplacement de la poutre est alors


v (M ) tel que
x [0, L] ; (y, z) S,

v (x, y, z) = (u(x) + y(x))


x + v(x)
y
avec u, v, V.

X.1.3 criture de la relation dformations-dplacement

Les dformations associes un champ de dplacement


u de la poutre sont calcules partir de :

(
u) =
soient :
xx =


1

Grad(
u ) + GradT (
u)
2

(u + y) = u,x + y,x
x

87

X.1 Modle de poutre

(u + y) +
v = + v,x
y
x

2xy =

yy = zz = xz = yz = 0.
Seules les dformations xx et xy ne sont pas nulles. On note alors les dformations sous la forme
"

xx
2xy

En notant
la dformation de membrane e = u,x ,
la courbure = ,x ,
et la dformation transverse = v,x + ,
on a les relations suivantes reliant xx et 2xy avec e, et :
xx = e + y , et 2xy = .

X.1.4 Relation de comportement

Une poutre tant un milieu mince dans les deux directions


y et
z , et tant sollicite seulement
dans le plan (x, y) on suppose que les seules contraintes non nulles sont la contrainte axiale xx
et la contrainte de cisaillement transverse xy . On note les contraintes sous la forme
"

=
La loi de Hooke
=
donne alors :
xx =

xx
xy

1+


T r() 1
E
E

1
1+
1+
xx xx = xx et xy =
xy
E
E
E
E

soit

C=

E
2(1+)

"

X.1.5 nergie de dformation


Avec les hypothses prcdentes, lnergie de dformation vaut :
1
ED =
2

1
d =
2

LZ

[ (e + y) ]C

1 L
1
(e + y)E(e + y) dS dx +
2 0 S
2
soit aussi en dveloppant les expressions
ED =

ED =

1
2

LZ

Ee2 dS dx+

1
2

L
0

y 2 E2 dS dx+

1
2

LZ

"
Z

e + y

dS dx

dS dx

2yEe dS dx+

1
2

LZ

2 dS dx

88

lments finis de barre et poutre

v(x)
x

Figure X.3 Hypothse dEuler-Bernoulli pour une poutre en flexion.

En remarquant que E, e, , et ne varient pas dans S, on a


Z

1
1 L 2
Ee
dS dx+
2 0
2
S
On remarque que :
ED =

ZS
ZS

E2

y 2 dS dx+

1
2

Ee

2y dS dx+
S

1
2

dS dx
S

dS = S, aire de la section ;
y dS = 0, par dfinition du centre de section ;

y 2 dS = I, moment quadratique de la section autour de


z.

En remplaant dans lexpression de lnergie de dformation, on a alors :


f
ct
m
+ ED
ED = ED
+ ED

avec

1 L
1 L
1 L
f
ct
=
ES e2 dx ; ED
=
EI 2 dx ; ED
S 2 dx
2 0
2 0
2 0
Lnergie de dformation peut scrire sous forme de trois contributions :
m
=
ED

m
: nergie de dformation de traction-compression (membrane),
ED
f
ED
: nergie de dformation de flexion,
ct
: nergie de dformation de cisaillement transverse.
ED

X.1.6 Hypothses sur les dformations transverses


Hypothse dEuler-Bernoulli
Lhypothse dEuler-Bernoulli suppose que la dformation transverse xy est nulle. Ce modle est
valable pour les poutres dites "minces". On note = . La relation qui relie et v pour que
xy = 0 est :
= 2xy = + v,x = 0
ce qui entraine que = v,x et donc que = v,x . Autrement dit, une section initialement
perpendiculaire la ligne moyenne reste perpendiculaire la ligne moyenne dforme (Fig. X.3).
Lnergie de dformation en fonction de u et v vaut :
Z

1 L
ES u2,x dx
2 0
Z
Z
Z
1 L
1 L
1 L
f
2
2
EI 2 dx =
EI ,x
dx =
EI v,xx
dx
ED
=
2 0
2 0
2 0
ct
ED
=0
m
ED
=

89

X.2 lment fini de traction-compression : lment barre

Hypothse de Timoshenko
Lhypothse de Timoshenko prend en compte la dformation transverse xy . Ce modle est valable
pour les poutres dites "paisses".

X.2 lment fini de traction-compression : lment barre


On ne sintresse dans ce paragraphe qu la partie traction-compression de lnergie de dformation, soit
m
ED

1
=
2

ES e2 dx.

X.2.1 Espace discrtis


On construit lespace Vu he correspondant au dplacement axial u(x) dans un lment partir de 2
fonctions de forme telles que le dplacement axial discrtis uh (x) Vu he scrive sous la forme
uh (x) = a (x)ua + b (x)ua
partir de la base canonique polynomiale [ 1 x ], on montre que les fonctions de forme a et b
ont pour expressions :
a = 1

x
x
et b =
L
L

On a alors dans llment :


h

u (x) = [ a b ]

"

ua
ub

= e U e

X.2.2 Oprateur gradient discrtis


La partie membrane des dformations e scrit en fonction du dplacement u comme e = u,x soit
aussi
e = [ a,x b,x ]

"

ua
ub

En posant Bm loprateur gradient discrtis pour la partie traction-compression tel que


Bm = [ a,x b,x ] =

1 1

L L

on a
e = Bm U e

X.2.3 Matrice de rigidit


En remplaant dans lnergie de dformation, il vient :
m
=
ED

Soit aussi

1
2

ES e2 dx =

1
m
= U Te
ED
2

1
2

T
Bm U e dx.
ES U Te Bm

T
Bm dxU e .
ES Bm

90

lments finis de barre et poutre

a
e = 0

e : barre e
b

e2

e = le

e1
Figure X.4 Structure de type treillis de barres

En posant la matrice de rigidit de traction-compression


e
Km
=

T
ES Bm
Bm dx

on a
1
m
e
ED
= U Te Km
U e.
2
En remplaant Bm par son expression, on a :
T
Bm
Bm

1
= 2
L

"

En intgrant de 0 L, on a alors la matrice de rigidit de la partie traction-compression qui vaut


e
Km

ES
=
L

"

X.2.4 Calcul de treillis de barres


Un treillis est une structure compose de poutres que lon suppose rotules entre elles (Fig. X.4).
Les barres sont connectes entre elles par des nuds, centres des liaisons rotules. Les articulations sont supposes parfaites. Cette simplification permet de rsoudre relativement facilement le
problme. Mme si les liaisons ne sont pas rellement des rotules mais des liaisons boulonnes,
on peut considrer dans une premire approche la structure comme un treillis de barres rotules.
Cela permet de trouver une bonne approximation des efforts normaux dans les barres.
Une barre rotule ses deux extrmits ne subit que de la traction-compression. Chaque barre
reste un segment de droite aprs dformation, la figure X.4 montre la dforme globale dun
treillis (barres en tirets).
Dans le cadre de ce cours, on se place dans le cas des treillis plans afin de simplifier les
dveloppements.
Un lment e est caractris par ses 2 nuds a et b, par sa longueur le et par langle e quil

ab

fait avec
e 1 . On attache llment un repre local e =
.
k ab k

91

X.2 lment fini de traction-compression : lment barre

e2

le

e = le
e

a
e = 0

e1

Lnergie de dformation dune barre ne dpend que des composantes axiales des dplacements des nuds :

1
m
e
ED
= U Te Km
U e.
2

avec
e
Km

et
Ue =

ES
=
le

"

"

u (nud a) e

u (nud b) e

Or en notant

u (nud a) = Ua
e 1 + Va
e2
on a

u (nud a) e = Ua
e 1 e + Va
e 2 e = Ua cos e + Va sin e

De mme, on a :

u (nud b) e = Ub cos e + Vb sin e

Sous forme matricielle, on a :


"

u (nud a) e

u (nud b) e

"

cos e sin e
0

Ua

#
V
a

sin e
Ub

cos e

Vb

En posant la matrice de passage Te permettant de passer des dplacements des nuds crits dans
le repre global aux dplacements des nuds crits dans le repre local :
Te =

"

cos e sin e
0

cos e sin e

et en notant U e = [ Ua Va Ub Vb ]T les dplacements des nuds dans le repre global, on a


"

u (nud a) e

u (nud b) e

= Te U e

En remplaant dans lnergie de dformation, on a :


1
e
m
Te U e .
ED
= U Te TeT Km
2

92

lments finis de barre et poutre

e
est la matrice de rigidit de la partie axiale de la poutre dveloppe prcdemment :
o Km
e
Km

ES
=
le

"

e
Te donne la matrice de rigidit de llment barre dans le plan (x, y) :
Le calcul de TeT Km

e
Kbarre

ES
=
le

cos2 e

cos e sin e

cos2 e

cos e sin e

cos e sin e

sin2 e

cos e sin e

sin2 e

cos2 e

cos e sin e

cos2 e

cos e sin e

cos e sin e

sin2 e

cos e sin e

sin e

Lnergie de dformation de llment barre vaut alors

1
e
m
U e.
ED
= U Te Kbarre
2

X.3 lment fini de flexion de type Euler-Bernoulli


On ne sintresse dans ce paragraphe qu la partie flexion de lnergie de dformation avec
lhypothse dEuler-Bernoulli, soit
f
ED
=

1
2

EI 2 dx =

1
2

2
dx.
EI v,xx

X.3.1 Espace discrtis


On construit lespace Vv he dans un lment partir de 4 fonctions de forme 1 , 2 , 3 et 4 telles
que toute fonction v h et Vv he scrive sous la forme :
v h (x) = 1 (x)va + 2 (x)a + 3 (x)vb + 4 (x)b

o va et vb sont les dplacements suivant


y des deux nuds et a et b sont les rotations des
sections aux deux nuds. On a alors dans un lment :
v h (x) = e V e
avec
e = [ 1 (x) 2 (x) 3 (x) 4 (x) ]
et
V e = [ va a vb b ]T .
On dfinit Veh comme
n

Veh = vect 1, x, x2 , x3 = vect {1 (x), 2 (x), 3 (x), 4 (x)}


En prenant successivement les 4 termes de la base canonique polynomiale de Veh , on a :

pour uh (x) = 1 ; uh (x) = 0


uh (0) = 1, uh (L) = 1
1 (x) + 3 (x) = 1

93

X.3 lment fini de flexion de type Euler-Bernoulli

1.0

1.0

0.5

0.5
2
bc

bc

0.5

bc

bc

1.0

1.0

0.5

1.0

0.5

0.5

1.0

1.0

0.5

3
bc

bc

0.5

bc

4
bc

1.0

Figure X.5 Fonctions de forme dHermite de llment poutre dEuler-Bernoulli pour L = 1.

pour uh (x) = x : uh (x) = 1


uh (0) = 0, uh (L) = L
2 (x) + 3 (x)L + 4 (x) = x

pour uh (x) = x2 : uh (x) = 2x

uh (0) = 0, uh (0) = 0, uh (L) = L2 , uh (L) = 2L


3 (x)L2 + 4 (x)2L = x2

pour uh (x) = x3 : uh (x) = 3x2

uh (0) = 0, uh (0) = 0, uh (L) = L3 , uh (L) = 3L2


3 (x)L3 + 4 (x)3L2 = x3
Ces 4 quations scrivent sous forme dun systme 4 inconnues :

1 0

1
L

0 L2

0 0 L3

La solution de ce systme est

1 (x) = 1
3 (x) =

1 (x)

1
2 (x) x
= 2

2L
3 (x) x
x3
4 (x)
3L2

3 2
1
2
2
x + 3 x3 ; 2 (x) = x x2 + 2 x3
2
L
L
L
L

3 2
1
2
1
x 3 x3 ; 4 (x) = x2 + 2 x3
2
L
L
L
L

Les fonctions i sont des polynmes de degrs 3, ce sont des polynmes de type Hermite (Fig.
X.5).

94

lments finis de barre et poutre

X.3.2 Oprateur gradient discrtis


La courbure sexprime en fonction du dplacement transversal v comme
=

2v
,
x2

soit pour un champ de dplacement discrtis v h :


=

2
e V e .
x2

En posant Bf loprateur gradient discrtis pour la partie flexion tel que


2
e = [ 1 (x) 2 (x) 3 (x) 4 (x) ] ,
x2

Bf =
on a

= Bf V e .
Les drives secondes des fonctions de forme valent :
1 (x) =

6 
2
2 3
3 
+ 2 x ; 2 (x) =
2+ x
L
L L
L
L
23
6 
2
3 
2 x ; 4 (x) =
1+ x .
L L L
L
L

3 (x) =

X.3.3 Matrice de rigidit


Le calcul de la matrice de rigidit pour la partie flexion se fait en calculant lnergie de dformation de flexion associe un champ de dplacement discrtis v h :
f
ED

Lexpression de Kfe est :

Kfe

= EI

1
= V Te EI
2
|

BfT Bf dx V e .
{z

=Kfe

1 (x)1 (x) 1 (x)2 (x) 1 (x)3 (x) 1 (x)4 (x)

2 (x)1 (x) 2 (x)2 (x) 2 (x)3 (x)



(x) (x) (x) (x) (x) (x)
3
3
2
3
1
3

Kfe

2EI
= 3
L

3L

3L

3L

2L2

3L

3L

L2

3L

3L

dx

3 (x)4 (x)

L2

3L

2L2

2 (x)4 (x)

4 (x)1 (x) 4 (x)2 (x) 4 (x)3 (x) 4 (x)4 (x)

La matrice de rigidit de llment vaut pour la partie flexion :

XI lment fini de plaque

XI.1 Modle de plaque


XI.1.1 Modle gomtrique
Une plaque est un domaine dont une dimension, lpaisseur note h, est plus petite que les deux

autres (Fig. XI.1). Le plan moyen (not S) de la plaque a pour repre (


x ,
y ). La troisime

direction
z est celle de lpaisseur. Le domaine de la plaque peut tre dfini comme :


h h
=S ,
2 2

o un point M a pour coordonnes (x, y, z) avec (x, y) S et z [ h2 , h2 ]. La projection de


M sur le plan moyen S est note m(x, y).

h
y

M (x, y, z)
m(x, y)

S : plan moyen
Figure XI.1 Structure de type plaque.

96

lment fini de plaque


x

z
M

Figure XI.2 Cinmatique de plaque.

XI.1.2 Hypothse cinmatique


On appelle "segment" un segment de droite initialement perpendiculaire la surface moyenne de
la plaque en un point m. On fait lhypothse que ce segment reste droit aprs dformation, mais
pas ncessairement perpendiculaire la surface moyenne. Autrement dit, chaque segment a une
cinmatique de corps rigide qui peut tre dcompose en 2 effets (Fig. XI.2) :

dplacement suivant
x et
y (effet membrane),

rotation des segments autour du plan moyen et dplacement suivant


z (effet flexion).

Le dplacement de m est not


u (m) :

u (m) = u(x, y)
x + v(x, y)
y + w(x, y)
z.

La rotation dun segment autour de


x est note y , la rotation autour de
y est note x , soit la

rotation = x + y .
y

En supposant que les dplacements et les rotations sont petits, le dplacement de M scrit


u (M ) =
u (m)+M m = u(x, y)
x +v(x, y)
y +w(x, y)
z z
z y (x, y)
x +x (x, y)
y

Le champ de dplacement de la plaque est alors


u (M ) tel que


h h
(x, y) S ; z ,
,
2 2



u (x, y, z) = u(x, y) + zx (x, y)


x + v(x, y) + zy (x, y)
y + w(x, y)
z

ou encore

u(x, y) + zx (x, y)

u (M ) =
v(x,
y)
+
z
(x,
y)
y

w(x, y)

(
x ,
y ,
z)

avec u, v, w, x , y V. Ce dernier ensemble V est lensemble des champs de fonctions suffisament rgulires dfinis de S vers R :
V=

f rguliers : S R
x, y 7 f (x, y)

97

XI.1 Modle de plaque

XI.1.3 criture de la relation dformations-dplacements


On remarque que lhypothse cinmatique prcdente conduit zz = 0, on note alors les dformations sous la forme

xx

yy

= 2xy

2
xz

2yz

On spare les dformations en 2 parties :

partie plane des dformations :

xx


yy =

2xy

u,x
v,y
u,y + v,x

{z

=e

+z

x,x
y,y
x,y + y,x
{z

o e caractrise les effets membrane et caractrise les effets flexion (courbures),


partie hors plan des dformations : dformations transverses
"

2xz
2yz

"

y + w,y

{z

x + w,x

XI.1.4 Relation de comportement entre les dformations et les contraintes


Une plaque tant un milieu mince, on suppose que la contrainte zz est nulle dans toute la plaque.
Ceci est en contradiction avec lhypothse cinmatique qui donne zz = 0, mais le modle ainsi
dfini donne malgrs tout de bons rsultats. partir de la loi de Hooke

1+

T r() 1,
E
E
les dformations scrivent en fonction des contraintes comme :
1+

xx =
xx (xx + yy )
E
E
1+

yy =
yy (xx + yy )
E
E

1+
1+
1+
zz = (xx + yy ) ; xy =
xy ; xz =
xz ; yz =
yz .
E
E
E
E
En inversant ces relations, on a
=

xx

yy

= xy


xz

yz

xx

1
2

1
2

0 0

0
yy

0 2xy

0
2xz
1
2yz
2

= C .

On spare les contraintes en deux parties comme pour les dformations :

98

lment fini de plaque

contraintes dans le plan :

xx

yy

xy

contraintes hors plan : cisaillement transverse


"

xz
yz

Avec ces notations, les relations entre les contraintes et les dformations scrivent :

xx

= E
yy
2
1

et

"

xz
yz

{z

XI.1.5 nergie de dformation

E
2(1+)

E
2(1+)

0
yy
1
2xy
2

C1

xx

0 0

xy

"

{z

2xz
2yz

C2

Avec les hypothses prcdentes, lnergie de dformation vaut :


1
ED =
2

1
d =
2

[ (e + z)

"

C1

C2

#"

e + z

Lintgrale dans est dcompose en une intgrale sur la surface moyenne S et une intgrale
dans lpaisseur suivant z :
1
ED =
2

Z Z
S

h
2

h2

eT C1 e + z 2 T C1 + zT C1 e + zeT C1 + T C2 dz dS

Dans le cas homogne isotrope, les matrices de comportement C1 et C2 sont constantes dans
lpaisseur et ne dpendent donc pas de z, ce qui nest pas le cas pour les matriaux composites.
Les intgrales dans lpaisseur valent :
Z

h
2

h2

dz = h ;

h
2

h2

z dz = 0 ;

h
2

h2

z 2 dz =

h3
.
12

Lnergie de dformation vaut alors


Z

o
h3
1 n T
he Ce + T C1 + h T C2 dS
ED =
2 S
12
On remarque que les termes de couplage entre et e disparaissent dans le cas dun matriau

homogne et isotrope, contrairement un matriau composite pour lequel il y a un couplage.


Finalement, en posant les matrices de comportement suivantes intgres dans lpaisseur :

Cm = hC1 =

Eh
1
1 2
0 0

0
,

1
2

99

XI.1 Modle de plaque

Kirchoff

Mindlin

Figure XI.3 Diffrences entres les modles cinmatiques de Kirchoff-Love et Reissner-Mindlin

Cf =

h3
Eh3
1
C1 =
2
12
12(1 )
0 0

Eh
Cc = hC2 =
2(1 + )

"

1 0
0 1

0
,

1
2

lnergie de dformation scrit sous la forme :


Z

1
1
1
eT Cm e dS +
T Cf dS +
T Cc dS.
ED =
2 S
2 S
2 S
Lnergie de dformation peut tre spare en 3 contributions :
Z

1
eT Cm e dS , nergie de dformation de membrane,
2 S
Z
1
f
T Cf dS , nergie de dformation de flexion,
ED =
2 S
Z
1
ct
T Cc dS , nergie de dformation de cisaillement transverse.
ED =
2 S
On a alors :
m
ED
=

f
m
ct
ED = ED
+ ED
+ ED
.

XI.1.6 Hypothses sur les dformations transverses


Deux hypothses sont classiquement utilises pour les plaques ; Kirchoff-Love ou Reissner-Mindlin
(Fig. XI.3).
Lhypothse de Kirchoff-Love est lquivalent de celle dEuler-Bernoulli pour les poutres, on
suppose que les dformations transverses sont nulles :
xz = yz = 0.
Ceci entraine que
ct
= 0.
x = w,x ; y = w,y et ED

Dun point de vue cinmatique cela veut dire quun segment initialement droit et perpendiculaire
la surface moyenne le reste aprs dformation. Dun point de vue lments finis, il faut alors
quil y ait compatibilit entre w et les rotations x et y . Lespace dapproximation de w est gnralement construit avec des polynmes de degr 3 et les fonctions de forme sont des polynmes
dHermite. Ce modle est adapt aux plaques lances et minces.

100

lment fini de plaque

Lhypothse de Reissner-Mindlin est lquivalent de celle de Timoshenko pour les poutres, on


prend en compte le cisaillement transverse. Ce modle est adapt aux plaques peu lances et
plutt paisses.

XI.2 lment fini de type Reissner-Mindlin


XI.2.1 Espace discrtis
On dfini lespace V h comme lespace des fonctions 2 variables engendr par les fonctions de
forme i o i varie de 1 au nombre de nuds n du maillage :
V h = V ect {1 , 2 , , n }

Le champ de dplacements lments finis


v h est alors crit comme :


h h
(x, y) S ; z ,
,
2 2



v h (x, y, z) = uh (x, y) + zxh (x, y)


x + v h (x, y) + zyh (x, y)
y + wh (x, y)
z

avec uh , v h , wh , xh , yh V h . Autrement dit, les dplacements et les rotations sont approxims


par les mmes fonctions de forme. En introduisant la matrice des fonctions de forme suivante :
= [ 1 , 2 , , n ]
on a alors :
uh (x, y) =

n
X

i (x, y)ui = U ; v h (x, y) =

n
X

i (x, y)vi = V

n
X

i (x, y)ix = x

wh (x, y) =

n
X

i (x, y)wi = W ; xh (x, y) =

yh (x, y) =

n
X

i (x, y)iy = y

o U , V , W , x et y sont respectivement les dplacements et rotations aux nuds du maillage. Le


calcul au niveau lmentaire utilise toute la stratgie du calcul par lments finis dtaille dans les
chapitres prcdents. Aucune forme dlment nest impose, ceci est valable pour les triangles
et les quadrangles.

XI.2.2 Oprateur gradient discrtis

v h de V h :
La partie plane e des dformations vaut pour un champ de dplacement

Soit

e(
v h) =

uh,x
h
v,y
h
uh,y + v,x


= 0

v h) =
e(

"

uh
vh

=
0

"

U
V

"

#"

U
V

101

XI.2 lment fini de type Reissner-Mindlin

En posant Bm loprateur gradient discrtis pour la partie membrane tel que

Bm =

on a

"

v h ) = Bm
e(

U
V

v h de V h :
La partie courbure des dformations vaut pour un champ de dplacement

Soit

(
v h) =

h
y,y
h
x,y

h
x,x
h
y,x


= 0

"

xh
yh

=
0

"

x
y

"

#"

x
y

En posant Bf loprateur gradient discrtis pour la partie courbure tel que

Bf =

on a

(
v h ) = Bf

"

x
y

La partie dformations transverses des dformations vaut pour un champ de dplacement

h
v de V h :

(
v h) =

"

h
xh + w,x
h
yh + w,y

1 0
0 1

Soit

wh

h =
x

yh

1 0
0 1

0
x .
y

0
x .

En posant Bct loprateur gradient discrtis pour la partie dformations transverses tel que

on a

Bct =

v h ) = Bct
(
x .
y

102

lment fini de plaque

z
S

y
Fz

fz

L
fy

fx

Figure XI.4 Forces extrieures appliques sur la plaque.

XI.2.3 Matrice de rigidit


En remplaant dans lnergie de dformation, il vient
1
ED =
2

Z n

[U

T
Cm Bm
]Bm

"

+[ W

U
V
T

+ [ x

]BfT Cf Bf

T
]Bct
Cct Bct

"

x
y

x dS

ED =

1 T
Q
2

T
Bm
Cm Bm

T
Bct
Cct Bct
...
dS Q
.
i
h
..
+BfT Cf Bf

avec Q = [ U T V T W T x T y T ]T .
La matrice de rigidit de llment plaque de Reissner-Mindlin vaut donc :
h

K =
S
e

T
Bm
Cm Bm

T
Cct Bct
...
Bct
dS.

.
i
h
T
..
+Bf Cf Bf

XI.2.4 Forces extrieures gnralises


Les forces extrieures sont appliques sur le contour de la plaque ainsi que sur la surface moyenne
(fig. XI.4). Sur le contour, les forces surfaciques sont notes [ fx fy fz ]. On suppose que la

force surfacique applique sur la surface moyenne nest porte que par
z et vaut F . On note
z

s labscisse curviligne sur la ligne moyenne L du contour de la plaque. Le travail des efforts

103

XI.3 Assemblage de plaques dans lespace

x
2


y
X

Figure XI.5 lment de plaque de type triangle 3 nuds dans lespace.

extrieurs dans un champ de dplacement


v de la plaque vaut

v)=
W(

contour, surface

contour, ligne=L

nZ
|

h
2

h2

[ fx fy

fz ]
v(x, y) + zy (x, y) +

w(x, y)

fx dz u(x, y) +
{z

=tx (s)

u(x, y) + zx (x, y)

h
2

h2

h
2

h2

fy dz v(x, y) +
{z

=ty (s)

zfx dz x +
{z

=mx (s)

Z
|

h
2

h2

h
2

h2

{z

{z

=tz (s)

Fz w(x, y)

fz dz w(x, y)

zfy dz y ds +

=my (s)

Fz w(x, y)

o tx (s), ty (s) et tz (s) sont respectivement les efforts liniques sur le contour de la plaque suivant

x,
y et
z , et o m (s) et m (s) sont les moments liniques sur le contour suivant
y et
x . Le
x

travail des forces extrieures dans un champ de dplacement


v h lments finis de la plaque vaut

W(
v h) = U T
+x

tx (s)T ds + V T
T

mx (s) ds + y

ZL

ty (s)T ds + W T
T

my (s) ds + W

tz (s)T ds

Fz T dS

En posant le vecteur des forces gnralises suivant :

on a

F =

tx (s)T ds
RL
T
L ty (s) ds
R
R
T
T
L tz (s) ds + S Fz dS
R
mx (s)T ds
RL
T
L my (s) ds

W(
v h ) = QT F .

XI.3 Assemblage de plaques dans lespace


Les lments de plaques peuvent tre utiliss pour calculer des structures composes de plaques
dans lespace. Ils peuvent aussi tre utiliss pour modliser des coques.
Llment triangle est utilis pour illustrer la dmarche (Fig. XI.5). Cet lment est plac dans

lespace associ au repre global ( X , Y , Z ). Pour chaque lment on dfinit un repre local plan

(
x ,
y ,
z):

104

lment fini de plaque

laxe
x est port par le vecteur 12 reliant le nud 1 au nud 2 :

x =

12

,
k 12 k

le vecteur
z est construit de faon tre perpendiculaire au triangle :

z =

x 13

k
x 13 k

on en dduit laxe
y =
z
x.

Le dplacement et la rotation dun segment dans le repre global ( X , Y , Z ) sont nots :

u = UX X + UY Y + UZ Z et = X X + Y Y + Z Z

Le dplacement et la rotation dun segment dans le repre local (


x ,
y ,
z ) sont nots :

u = u
x + v
y + w
z et = y
x + x
y
Avec ces notations, on obtient les relations suivantes :



u=
x UX X + UY Y + UZ Z ; v =
y UX X + UY Y + UZ Z




w=
z UX X + UY Y + UZ Z ; x =
y X X + Y Y + Z Z


y =
x X X + Y Y + Z Z

Ces relations crites sous forme de matrice deviennent


u
x X
x Y

v
X
y Y
y

w =
z X
z Y


0
0
x

| {z }
U 2d

x Z

y Z

z Z
0
0

y Z

0
0

y X
y Y

x X
x Y x Z
{z

UX

UY

UZ

Z
{z

U 3d

o la matrice T de taille 5 6 est appele matrice de transformation. Lnergie de dformation


vaut alors

1
1
e
e
U 2d = U T3d T T K2d
TU
ED = U T2d K2d
| {z } 3d
2
2
e
=K3d

e
est la matrice de rigidit de llment de plaque dans son plan vue dans la section prco K2d

dente.
La matrice de rigidit de llment plaque dans lespace vaut donc
e
e
K3d
= T T K2d
T.

XII Dcomposition de domaine

XII.1 Objectifs
Les objectifs de la dcomposition de domaine sont multiples :
utiliser un ordinateur architecture parallle, ou plusieurs ordinateurs connects en rseau
(cluster),
coupler des structures constituant une systme mcanique,
coupler des formulations diffrentes (ex : couplage fluide-structure)
Lide est de sparer le "gros" problme initial en plusieurs "petits" problmes rsoudre sparment.
La mthode de Schur (1) primale porte son nom du fait que les inconnues nodales de linterface
sparant les domaines sont des variables de dplacements, cest dire les mmes que celles des
sous-domaines. La mthode de Schur duale introduit pour sa part la variable duale du dplacement
linterface, soit le vecteur contrainte.

XII.2 Mthode de Schur primale


XII.2.1 Principe
Un problme classique rsoudre en statique linaire par la mthode des lments finis abouti
la rsolution du systme
KU = F
(1) mathmaticien russe, 1875-1941

106

Dcomposition de domaine
interface
Ensemble des d.d.l. de U

U3

sous-structure 1

sous-structure 2

U2

U1

111111111111
000000000000
000000000000
111111111111
000000000000
111111111111
000000000000
111111111111
00000000
11111111
0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
0000000
1111111
U
U
00000000
11111111
0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
0000000
1111111
00000000 1111111
11111111
0000000
00000000 1111111
11111111
0000000
00000000
11111111
0000000
1111111
00000000 1111111
11111111
0000000
1sl

2sl

Figure XII.1 Dcomposition en deux sous-structures.

o K est la matrice de rigidit, U est le vecteur des inconnues de dplacements nodaux et F est le
vecteur des forces nodales. Afin de simplifer les notations, le vecteur U ne contient que les degrs
de libert non bloqus. Le problme mcanique associ est reprsent sur la figure XII.1.
Par soucis de simplicit, la structure est dcompose en seulement deux sous-structures (numrotes 1 et 2). Elles ne sont pas connectes entre elles mais elles sont en contact avec linterface (numrote 3). Lensemble des nuds de la structure est renumrot de faon avoir les
inconnues nodales appartenant la sous-structure 1 dans le vecteur U 1 . On fait de mme pour la
sous-structure 2 et linterface 3 pour les vecteurs U 2 et U 3 . En utilisant ces notations, le systme
rsoudre devient

K1

K2

T
T
K23
K13

K13

U1

F1

K23
U2 = F 2
K3
U3
F3

On remarque que dans ce systme, il ny a pas de couplage entre les sous-structures puisquelles
sont choisies de faon tre dconnectes.
Exercice XII.1 Proposer une numrotation des nuds du maillage de la figure XII.1 afin dobtenir la sparation
entre les sous-domaines 1, 2 et 3.


La premire tape est la rsolution du problme sans liaison pour chaque sous-structure. Cela
revient rsoudre indpendamment les deux systmes suivants :
K1 U 1sl = F 1 , et K2 U 2sl = F 2 .
Les deux vecteurs U 1sl et U 2sl obtenus sont complts par les solutions avec liaison en introdui-

107

XII.2 Mthode de Schur primale

sant les vecteurs U 1al et U 2al tels que


U = U 1sl + U 1al , et U = U 2sl + U 2al .
On remarque que cette premire tape dite "sans liaison" revient rsoudre pour chaque sousstructure un problme pour lequel linterface est encastre (Fig. XII.1).
En remplaant dans le systme initial, il vient

K1

K2

T
T
K13
K23

K13

U 1sl + U 1al

F1

K23
U 2sl + U 2al = F 2 .
K3
U3
F3

Les deux premiers systmes donnent

K1 U 1sl + K1 U 1al + K13 U 3 = F 1 ,


et
K2 U 2sl + K2 U 2al + K23 U 3 = F 2 .
En remarquant que K1 U 1sl = F 1 et K2 U 2sl = F 2 , il vient
K1 U 1al + K13 U 3 = 0, et K2 U 2al + K23 U 3 = 0.
Le troisime systme dquations donne
T
T
T
T
U 1sl + K13
K13
U 1al + K23
U 2sl + K23
U 2al + K3 U 3 = F 3

soit
T
T
T
T
U 2al + K3 U 3 = F 3 K13
U 1sl K23
U 2sl
K13
U 1al + K23

En notant
T
T
B = F 3 K13
U 1sl K23
U 2sl

on a alors
T
T
U 2al + K3 U 3 = B
K13
U 1al + K23

Finalement, le systme rsoudre pour trouver U 1al , U 2al et U 3 est

K1

K2

T
T
K13
K23

K13

U 1al


K23
U 2al = 0 .
K3
U3
B

Les deux premires lignes du systme donnent

U 1al = K11 K13 U 3 et U 2al = K21 K23 U 3


soit en remplaant dans la dernire ligne
T
T
K13
K11 K13 U 3 K23
K21 K23 U 3 + K3 U 3 = B

En notant
T
T
K21 K23
S = K3 K13
K11 K13 K23

108

Dcomposition de domaine

U2
interface U 4
U1
U3

11111111111111111
00000000000000000

Figure XII.2 Dcomposition en n 1 sous-structures avec n = 4.

on a alors le systme suivant rsoudre :


SU 3 = B
La matrice S est appele le complment de Schur.
Une fois que la solution U 3 est calcule, il suffit de remplacer dans les expressions de U 1al et
U 2al crites en fonction de U 3 pour avoir toutes les inconnues.

XII.2.2 Stratgie de rsolution globale


Les diffrentes tapes sont donc :
1. Rsolution sur 2 processeurs des problmes sans liaison :
K1 U 1sl = F 1 , et K2 U 2sl = F 2 .
2. Calcul du complment de Schur :
T
T
K21 K23
S = K3 K13
K11 K13 K23

3. Rsolution de linterface :
T
T
SU 3 = F 3 K13
U 1sl K23
U 2sl

4. Calcul du problme avec liaison


U 1al = K11 K13 U 3 , et U 2al = K21 K23 U 3 .
5. Construction de la solution complte :
U = U 1sl + U 1al , et U = U 2sl + U 2al .

XII.2.3 Gnralisation plusieurs sous-structures


Lextension plusieurs sous-structures se fait de faon naturelle. Avec un dcoupage en n1 sousstructures (Fig. XII.2) et en notant n linterface entre les sous-structures, on a alors lalgorithme
suivant :

109

XII.2 Mthode de Schur primale

1. Rsolution sur n 1 processeurs des problmes sans liaison :


Ki U isl = F i ,
pour i = 1 n 1
2. Calcul du complment de Schur :
S = Kn

n1
X

T
Ki1 Kin
Kin

i=1

3. Rsolution de linterface :
SU n = F n

n1
X

T
Kin
U isl

i=1

4. Calcul du problme avec liaison


U ial = Ki1 Kin U n
pour i = 1 n 1
5. Construction de la solution complte :
U i = U isl + U ial
pour i = 1 n 1
Exercice XII.2 Reprendre la dmarche de rsolution pour 3 sous-structures et une interface comme indiqu sur la
figure XII.2


XII.2.4 Calcul du complment de Schur


Le complment de Schur dans le cas de deux sous-structures scrit
T
T
K21 K23 .
K11 K13 K23
S = K3 K13

Ce calcul fait intervenir linverse des matrices de rigidit K1 et K2 . Ces matrices tant en gnral
trs importantes, il nest pas raliste den calculer directement linverse. De plus K11 est multiT
ce qui donne finalement une matrice dont la taille est
plie droite par K13 et gauche par K13

rduite celle de linterface en gnral trs faible.


Une faon de calculer directement le produit K11 K13 sans calculer linverse de K1 est de
rsoudre une succession de problmes en imposant les dplacements des nuds de linterface
0 ou 1 (Fig. XII.3) : la ime colonne de K11 K13 est exactement la solution X i du problme
suivant :

"

K1

K13

T
K13

K3

#"

Xi
Ii

"

0
Yi

o I i est le dplacement unitaire impos linterface dfini par


I i = [ 0 . . . 0 1 0 . . . 0]T

(le 1 est en ime ligne)

110

Dcomposition de domaine

I1 =

1
0
0
0
0

0
1111111
0000000
0
0000000
1111111
0000000 0
1111111
0000000
1111111
0
0000000
1111111
0000000
1111111

I2 =

X 1 = colonne 1 de K11 K13

0
1
0
0
0

0110 0
1
0
0000000
1111111
0
0000000
1111111
0000000 0
1111111
0000000
1111111
0000000
1111111
0000000
1111111

X 2 = colonne 2 de K11 K13

Figure XII.3 Dplacement unitaire impos linterface pour la calcul du complment de Schur.
interface

U1

U2

111111111111
000000000000
00000000
11111111
000
111
000000
111111
00000000000011111111
111111111111
00000000111
000111111
000000
sous-structure 1,
domaine 1

problme complet

sous-structure 2,
domaine 2

Figure XII.4 Dcomposition en 2 sous-structures par mthode Schur duale.

et o Y i sont les efforts de raction inconnus du problme associ. En effet, le premier groupe
dquations scrit
K1 X i + K13 I i = 0
ce qui donne la solution
X i = K11 K13 I i
soit la ime colonne de K11 K13 .
En notant m le nombre de degr de libert de linterface, il suffit de rsoudre successivement
le problme avec

I1 =

1
0
..
.
0

I2 =

0
1
..
.
0

pour avoir toutes les m colonnes de K11 K13 .

...

Im

0
0
..
.
1

111

XII.3 Mthode de Schur duale

XII.3 Mthode de Schur duale


XII.3.1 Principe
La mthode de Schur duale fait intervenir les inconnues defforts linterface. Par soucis de
simplicit on fait le dveloppement pour deux sous-structures, leurs domaines sont nots 1 et 2
(Fig. XII.4) et on nglige les forces volumiques. Les nuds de linterface sont cette fois compris
dans chacune des sous-structures. Ils sont aussi compris dans le maillage de linterface.
On ajoute aux quations locales des domaines 1 et 2 la condition de continuit du dplacement linterface

u1 =
u 2 sur
ainsi que la continuit du vecteur contrainte linterface

1
n 1 = 2
n 2 sur

o
n 1 et
n 2 sont respectivement les normales unitaires sortantes de 1 et 2 . En notant le
vecteur contrainte linterface on a

1
n 1 = sur et 2
n 2 = sur

Lide est dajouter ce vecteur contrainte aux inconnues du problme. Avec cette convention,
est laction de 2 sur 1 travers linterface . Linterface est une frontire des domaines 1 et

2 sur laquelle les efforts extrieurs valent respectivement et . Le vecteur contrainte est
souvent appel multiplicateur de Lagrange.
La formulation variationnelle dans le domaine 1 est alors :

Trouver
u 1 cinmatiquement admissible, tel que u1 avec u1 = 0 sur u 1 on ait
Z

T1 C1 1 d

F 1

uT1 F d1 dS

uT1 dS = 0

La formulation variationnelle dans le domaine 2 est :

Trouver
u 2 cinmatiquement admissible, tel que u2 avec u2 = 0 sur u 2 on ait
Z

T
2 C2 2 d

F 2

uT2 F d2 dS +

uT2 dS = 0

Enfin, la condition de continuit de dplacement est assure en multipliant lquation


u1 =

u 2 par le vecteur contrainte virtuel et en intgrant le long de , ce qui scrit

Z
Z


u dS T
T
u dS = 0

XII.3.2 Discrtisation
La discrtisation dans les domaines 1 et 2 se fait de faon classique :

u 1 = 1 U 1 et
u 2 = 2 U 2
o 1 et 2 sont les matrices des fonctions de forme des sous-structures 1 et 2 et U 1 et U 2 sont
les dplacements nodaux associs. Le long de linterface le vecteur contrainte est discrtis par

112

Dcomposition de domaine

2
1

Figure XII.5 Couplage de deux maillages incompatibles.

des fonctions de forme. En tridimensionnel et en supposant que linterface contient m nuds, on


peut crire

1 . . . m



=
y = 0
0
z

...

...

...

0
=

...

1 . . . m

...

1 . . . m

...

avec = [ x1 ... xm y1 ... ym z1 ... zm ]T .

En remplaant dans la formulation variationnelle, on trouve de faon standard les matrices


de rigidit K1 et K2 des deux sous-structures, les efforts extrieurs F 1 et F 2 sur les deux sousstructures ainsi que les matrices de couplages C1 et C2 telles que
Z

uT1 dS = U T1

uT2 dS = U T2

T1 dS = U T1 C1

T2 dS = U T2 C2

Finalement, la formulation variationnelle discrtise scrit :


U T1 K1 U 1 +U T1 C1 = U T1 F 1 ; U T2 K2 U 2 +U T2 C2 = U T2 F 2 ; T CT1 U 1 +T CT2 U 2 = 0
ce qui donne le systme suivant rsoudre :

K1

K2

CT1 CT2

C1

U1

F1

C2
U2 = F2

0
0

Ce systme peut tre rsolu en suivant la dmarche de la mthode de Schur primale (avec K3 =
0).

XII.3.3 Couplage de maillages incompatibles


Lavantage dans cette seconde approche est quil ny a a priori pas besoin que les maillages des
sous-structures soient compatibles linterface (Fig. XII.5). Ceci permet donc de raccorder des
maillages incompatibles provenant par exemples de bureaux dtudes diffrents maillant les pices
dun mme assemblage.
Le choix du maillage de linterface dans ce cas peut tre effectu de diffrentes faons, ceci
nest pas dtaill dans ce cours.

XIII Initiation la programmation

XIII.1 Langage de programmation


Un langage de programmation est une interface entre lhomme et lordinateur qui permet de donner des successions dordres celui-ci. Les ordres sont crits dans un fichier texte sans mise en
forme, appel fichier source, laide dun diteur de texte ( ne pas confondre avec un traitement
de texte). Ce fichier source est ensuite lu, puis transform en langage machine par lordinateur qui
peut alors lexcuter.
Les langages ont beaucoup volu depuis le premier langage de programmation (assembleur)
qui tait trs difficile comprendre. Les langages modernes permettent dutiliser des fonctions
(ou sous-routines), et sont, pour certains, orients objet.
Les langages peuvent tre interprts ou compils :
langage interprt : les instructions du programme sont lues, interprtes en langage machine puis excutes au fur et mesure. Lavantage rside dans la facilit de lecture et de
modification du programme, linconvnient est la lenteur dexcution.
langage compil : le programme est lu puis transform en langage machine par un compilateur pour crer un fichier excutable. Ce fichier est ensuite excut. Les avantages sont
dabord davoir une vitesse dexcution du programme trs importante, ensuite de pouvoir
donner le fichier excutable une personne tierce afin quil puisse lutiliser sans lui dvoiler
le fichier source. Linconvnient est que aprs chaque modification du fichier source, il faut
le re-compiler, ce qui rend la programmation plus lourde.

114

Initiation la programmation

# l i b r a i r i e de c a l c u l s c i e n t i f i q u e
impo rt s c i p y
p r i n t ( " P r e m i e r programme en P y t h o n " )
a =3.14
b =2.78
i =3
w= 1 + 1 . 0 j
print ( "a
print ( "b
print ( " i
p r i n t ( "w

est
est
est
est

un
un
un
un

reel : "
reel : "
entier :
co m p lex e

,a)
,b)
",i)
: " ,w)

c=a b
p r i n t ( " ab = : " , c )
c= s c i p y . s q r t ( a )
p r i n t ( " r a c i n e c a r r e e de a = : " , c )
i = i +1
p r i n t ( " on a j o u t e 1 a i : " , i )
i = i +1
p r i n t ( " on r a j o u t e e n c o r e 1 a i : " , i )
Figure XIII.1 Premier programme en Python

XIII.2 Le langage Python


XIII.2.1 Les bases du langage Python et son installation
Le langage Python est un langage interprt, orient objet. Des librairies de calcul scientifique
sont utilisables. Ces librairies sont compiles, ce qui rend malgrs tout le langage performant
pour le calcul par lments finis.
Un premier programme en Python (version 3.4) est propos sur la figure XIII.1. Lindentation
des programmes est trs importante, dans cet exemple qui est une suite dactions sans boucles ni
conditions, toutes les lignes commencent la premire colonne. Tout ce qui suit le caractre #
nest pas interpr par Python, cest du commentaire. La librairie de calcul scientifique scipy est
dabord charge en mmoire. On crit un message lcran, puis on affecte ensuite aux variables
a et b des valeurs relles (type float). Laffectation mmoire et la dclaration du type de variable
sont automatiquement effectues par Python, ce qui rend la programmation plus facile mais qui
ralenti lexcution en contrepartie. On affecte la variable i la valeur entire 3 (type int). Si on
lui avait affect 3.0 alors la variable i aurait t de type float. On affecte la variable w la valeur
complexe 1 + j (type complex). On affiche lcran les contenus de ces 3 variables, puis on
effectue quelques calculs en appelant la fonction racine carre sqrt de la librairie scipy. Enfin,
on incrmente i de 1 deux fois de suite. Le signe = dans un programme est interprt comme une

115

XIII.2 Le langage Python


Premier programme en Python
a est un reel : 3.14
b est un reel : 2.78
i est un entier : 3
w est un complexe : (1+1j)
a*b = : 8.7292
racine carree de a = : 1.77200451467
on ajoute 1 a i : 4
on rajoute encore 1 a i : 5
Figure XIII.2 Rsultat de laffiche lcran du premier programme en Python

affectation de variable, cest dire que linstruction i=i+1 ajoute 1 i : ce nest pas une quation
une inconnue rsoudre. Le rsultat de laffichage de ce programme est donn sur la figure
XIII.2.
Linstallation de Python est relativement simple :
Sous Ubuntu : via synaptic, installer : python3.4, idle-python3.4, python-scipy, python-numpy
et peut-tre dautres paquets si besoin...
Sous Windows et Mac OS : installer la suite Anaconda qui contient Python, les librairies
de calcul scientifique et un diteur de texte intgr.
Pour programmer, le plus pratique est dutiliser un IDE (en anglais pour integrated development
environment, cest dire environnement de dveloppement intgr) : par exemple idle-python
mais il en existe dautres. Une fentre dexcution souvre, on peut diter les fichiers en les ouvrant
dans un diteur de texte intgr (file/open) puis les xcuter avec run.
Exercice XIII.1 crire un programme en Python qui calcule la flche dune poutre encastre-libre partir de sa
longueur L, de son module dYoung E, de son moment quadratique de section I et de leffort appliqu F .

F
E, I
L

F L3
3EI

XIII.2.2 Les conditions et boucles en Python


Le programme prsent sur la figure XIII.3 est un jeu de devinette trs simple. On cache un chiffre
i (ici 6) au joueur quil doit deviner. A chaque essai on lui dit si sa proposition est plus grande
ou plus petite que le chiffre cach. Il a droit 3 essais. Ce programme fait appel une boucle
conditionne par la valeur de la variable j qui compte le nombre dessais. On remarque quil y
a un premier niveau dindentation qui correspond aux instructions de la boucle while, puis un
deuxime niveau qui correspond aux tests de conditions if. Il ny a pas de end en Python, la fin
dune boucle ou dune condition est marque par la disparition de lindentation. Cette obligation
dindentation rend les programmes crits en Python trs lisibles.

116

Initiation la programmation

p r i n t ( " D e v i n e z mon c h i f f r e , v o u s a v e z 3 e s s a i s . " )


i =6
j =1

# Chiffre a deviner
# Compteur d e s e s s a i s

w h i l e ( j <= 3 ) :
print ( " Essai " , j )
print ( " Entrez votre proposition : " )
k = i n t ( input ( ) )
i f ( k== i ) :
p r i n t ( " Br av o " )
j =99
i f ( k< i ) :
p r i n t ( "Mon c h i f f r e e s t p l u s g r a n d " )
i f ( k> i ) :
p r i n t ( "Mon c h i f f r e e s t p l u s p e t i t " )
j = j +1
i f ( j ==4):
p r i n t ( " Vous n a v e z p a s t r o u v e , mon c h i f f r e

etait " , i )

Figure XIII.3 Jeu de devinette en Python

impo rt random
p r i n t ( " R e v i s i o n de l a t a b l e de m u l t i p l i c a t i o n . " )
k=0 # Compteur d e s b o n s r e s u l t a t s
f o r i i n ra ng e ( 2 0 ) :
a= i n t ( random . u n i f o r m ( 2 , 1 0 ) )
b= i n t ( random . u n i f o r m ( 2 , 1 0 ) )
pr int ( a , " " , b , " =" )
c = i n t ( input ( ? ) )
i f c ==( a b ) :
p r i n t ( " Oui " )
k=k +1
else :
p r i n t ( " Non " )
p r i n t ( " No te s u r 2 0 : " , k )
Figure XIII.4 Rvision de la table de multiplication en Python

117

XIII.2 Le langage Python


f (a) > 0
bc

f (c)
bc

f (x) = 0
bc

c=

a+b
2

b
bc

f (b) < 0
Figure XIII.5 Recherche du zro dune fonction par dichotomie

Le programme de la figure XIII.4 permet de rviser la table de multiplication et dafficher une


note sur 20. Grce la librairire random, on choisit deux 2 entiers au hasard entre 1 et 10 : la
fonction int transforme le rel tir au hasard entre 2 et 10 avec random.uniform en un entier.
On affiche ces 2 entiers a et b lcran. On demande lutilisateur le rsultat de la multication
que lon stocke dans la variable c, puis on compare la bonne rponse. Si la rponse est bonne,
on affiche oui et on incrmente le compteur k des bonnes rponses, sinon on affiche non. Ce
compteur doit tre initialis zro au dbut du programme. On affiche enfin la note sur 20.
Exercice XIII.2 crire un programme en Python qui calcule la suite de Syracuse partir dun entier donn par
lutilisateur. Le principe est de partir dun nombre entier plus grand que zro ; sil est pair, on le divise par 2 ; sil
est impair, on le multiplie par 3 et on ajoute 1. En rptant lopration, on obtient une suite dentiers positifs dont
chacun ne dpend que de son prdcesseur. La conjucture de Syracuse est que cette suite calcule depuis nimporte
quel entier strictement positif atteint 1. On peut utiliser la commande python x%y qui renvoie le reste de la division
de x par y.


XIII.2.3 Les fonctions en Python


Une fonction possde un nom, des entres, des sorties, des instructions et des variables propres, et
fait des appels ventuels dautres fonctions. Afin dillustrer le principe de fonction en Python, on
crit un programme qui calcule le zro dune fonction une variable par dichotomie. Lalgorithme
est le suivant (voir illustration sur la figure XIII.5) :
Initialisation de a et b
Tant que b a >tolrance faire
c=

a+b
2

Si f (a) f (c) > 0 alors a c sinon b c


Afficher c
Afficher le nombre ditrations
Ce programme est donn sur la figure XIII.6. La fonction mathmatique pour laquelle on
souhaite connatre le zro est entre dans la fonction Python que lon nomme mafonction. Lentre est x, la sortie est valeur. Ici, on a choisit de chercher le zro de la fonction cosinus. Le

118

Initiation la programmation

def mafonction ( x ) :
impo rt s c i p y
value = scipy . cos ( x )
return value
p r i n t ( " Z e r o de l a f o n c t i o n c o s i n u s e n t r e 0 e t 3 . " )
a =0.0
b =3.0
j =1 # Compteur d e s i t e r a t i o n s
w h i l e ( ( abs ( ab ) ) > 1 e 8 ) :
j = j +1
ya= m a f o n c t i o n ( a )
c = 0 . 5 ( a+b )
yc= m a f o n c t i o n ( c )
i f ( ( ya yc ) > 0 . 0 ) :
a=c
else :
b=c
p r i n t ( " nombre d i t e r a t i o n s : " , j )
p r i n t ( " Z e r o de l a f o n c t i o n : " , c )
Figure XIII.6 Calcul du zro par dichotomie en Python

programme principal applique lalgorithme de recherche de zro par dichotomie, il appelle la


fonction mafonction plusieurs fois. Pour changer de fonction mathmatique, il suffit de changer
son expression dans mafonction.
Exercice XIII.3 Programmer en Python le calcul de lintgrale dune fonction f (x), par exemple cos x, entre a et
b par la formule des rectangles avec n intervalles dfinir.


XIII.2.4 Le calcul matriciel en Python


La librairie scipy permet de faire du calcul matriciel. Pour les petites matrices comme les matrices de rigidit lmentaires (jusqu 100100), elles sont stockes compltement en utilisant
le type array. La figure XIII.7 prsente un exemple de multiplication de matrices. Les matrices
sont crites ligne par ligne. La fonction dot permet de faire une multiplication de matrices, toutes
les autres oprations classiques sur les matrices sont possibles.
Lorsque les matrices sont de grandes tailles, comme les matrices de rigidit de structures
(jusqu 1 000 0001 000 000), elles sont stockes comme des matrices creuses. Le principe est
de stocker chaque terme non nul en lui associant son emplacement en ligne et colonne dans la
matrice. Par exemple, on souhaite stocker au format creux la matrice suivante :

4.6 6.9

1.5

3.8 9.2 0

3.0 2
0 0
9

5.5 7

7 8

119

XIII.2 Le langage Python

impo rt s c i p y
A= s c i p y . a r r a y ( [ [ 1 . 1 , 0 . 0 ] ,
[ 8.7 , 0.0] ,
[ 0.0 , 2 . 6 ] ] )
B= s c i p y . a r r a y ( [ [ 6 . 1 , 4 . 5 , 0 . 0 , 0 . 0 ] ,
[0.0 , 5.5 , 3.7 , 1 . 9 ] ] )
C= s c i p y . d o t (A, B )
print C
Figure XIII.7 Dclaration de matrices et calculs matriciels en Python

impo rt s c i p y
impo rt s c i p y . s p a r s e
V= s c i p y . a r r a y ( [ 4 . 6 , 1 . 0 , 2 . 0 , 5 . 5 , 8 . 0 , 6 . 9 , 1 . 5
,3.8 ,3.0 ,9.2 ,9.0 ,7.0 ,7.0])
I=scipy . array ([0 ,1 ,2 ,3 ,4 ,0 ,1 ,1 ,2 ,1 ,3 ,3 ,4])
J= scipy . a r r a y ( [ 0 , 1 , 2 , 3 , 4 , 1 , 0 , 2 , 1 , 3 , 1 , 4 , 3 ] )
A= s c i p y . s p a r s e . c s c _ m a t r i x ( (V , ( I , J ) ) , s h a p e = ( 5 , 5 ) )
p r i n t A. t o d e n se ( )
Figure XIII.8 Dclaration de matrices au format creux

On stocke les valeurs des termes de la matrice dans le tableau V de rels, les indices des ligne et
colonne correspondant chaque terme sont stocks dans deux tableaux de pointeurs I et J. Les
pointeurs en Python commencent 0, cest dire que la premire ligne dune matrice est la ligne
0. On peut commencer par stocker les termes de la diagonale, puis les autres ensuite, mais lordre
na pas dimportance :
V = [ 4.6 1 2 5.5 8 6.9 1.5 3.8 3.0 9.2 9 7 7 ]
I=[

1 2

3 3 4]

J =[

1 2

1 4 3]

Le programme Python correspondant cet exemple est donn sur la figure XIII.8.
Lavantage du stockage creux des matrices est que lon peut rpter plusieurs fois les mmes
indices de lignes et colonnes avec des valeurs diffrentes, les valeurs sadditionnent automatiquement. Par exemple, on veut assembler les deux matrices suivantes 22 dans une matrice 33 :
"

10

10

10

10

120

Initiation la programmation

impo rt s c i p y
impo rt s c i p y . s p a r s e
V= s c i p y . a r r a y ( [ 1 0 , 1 0 , 1 0 , 1 0 , 2 0 , 2 0 , 2 0 , 2 0 ] )
I=scipy . array ([0 ,0 ,1 ,1 ,1 ,1 ,2 ,2])
J= scipy . a r r a y ( [ 0 , 1 , 0 , 1 , 1 , 2 , 1 , 2 ] )
A= s c i p y . s p a r s e . c s c _ m a t r i x ( (V , ( I , J ) ) , s h a p e = ( 3 , 3 ) )
p r i n t A. t o d e n se ( )
Figure XIII.9 Assemblage de matrices au format creux

sur les lignes et colonnes [ 0,1 ], et

"

20

20

20

20

sur les lignes et colonnes [ 1,2 ]. Le rsultat attendu est :

10

10

10

10

10 10 + 20 20 = 10

20

20

30
20

Le stockage peut se faire avec les 3 tableaux suivants :

20

20

V = [ 10 10 10 10 20 20 20 20 ]
I=[

J =[

o 10 et 20 sont stocks sparment en [1,1]. Le programme Python correspondant est donn en


figure XIII.9.
Exercice XIII.4 crire un programme qui assemble automatiquement la matrice

10
10

10
10

dans une matrice 55 en assemblant sur les lignes et colonnes [0,1],[1,2],[2,3],[0,3],[3,4]. On pourra avantageusement utiliser un tableau de connectivit element tel que
elements=scipy.array([[0,1],[1,2],[2,3],[0,3],[3,4]]).


XIII.3 Le langage Fortran


XIII.3.1 Les bases du langage Fortran et son installation
Le langage Fortran est un langage compil. Cest un langage relativement ancien qui est utilis
depuis longtemps par les scientifiques : la majorit des codes de calcul par lments finis est crit
en Fortran.
Un exemple de programme crit en Fortran est donn sur la figure XIII.10. Les lignes du
programme crit en Fortran commencent la 7me colonne, elles ne doivent pas dpasser la

121

XIII.3 Le langage Fortran

PROGRAM B o n j o u r
C commentaires : D e c l a r a t i o n des v a r i a b l e s
real a , b , c
integer i
complex w
C
Co r p s du programme p r i n c i p a l
C
En f o r t r a n , on commence en 7eme c o l o n n e
c
on a r r e t e en 72eme :
C23456|
p r i n t , Programme q u i d i t b o n j o u r
a =3.14
b =2.78
i =3
w=cmplx ( 1 , 1 )
print ,
print ,
print ,
print ,

a
b
i
w

est
est
est
est

un
un
un
un

reel :
reel :
entier :
co m p lex e

,a
,b
,i
: ,w

c=a b
p r i n t , ab = : , c
c= s q r t ( a )
p r i n t , r a c i n e c a r r e e de a = : , c
i = i +1
p r i n t , on a j o u t e 1 a i : , i
i = i +1
p r i n t , on r a j o u t e e n c o r e 1 a i : , i
END
Figure XIII.10 Premier programme en Fortran

122

Initiation la programmation

72me colonne. Ce programme excute les mmes actions que son quivalent en Python de la
figure XIII.1. La premire ligne du programme commence par la commande PROGRAM En langage
Fortran, il faut dclarer les variables avant de les utiliser, cest dire prciser leurs types et leurs
tailles. Ici, a et b sont des rels dclars de type real ; la variable i est un entier dclar de type
integer.
Linstallation de Fortran est relativement simple :
Sous Ubuntu : via synaptic, installer : gfortran
Sous Windows : tlcharger gfortran depuis le site
http://gcc.gnu.org/wiki/GFortranBinaries#Windows,
puis suivre les instructions.
Pour excuter le programme, il faut le compiler pour en faire un programme excutable. Il
suffit de taper la commande suivante dans un terminal (en supposant que le fichier sappelle
bonjour.f) :
gfortran bonjour.f
Cela a pour effet de crer un fichier excutable a.out que lon peut lancer en tapant a.out dans
le terminal.
Exercice XIII.5 crire un programme en Fortran qui calcule la flche dune poutre encastre-libre partir de sa
longueur L, de son module dYoung E, de son moment quadratique de section I et de leffort appliqu F .

F
E, I

F L3
3EI

XIII.3.2 Les conditions et boucles en Fortran


Lexemple de la figure XIII.11 reprend lexemple du jeu de devinette prcdent afin de montrer
les quivalences des boucles et conditions en Fortran.
Lexemple de la figure XIII.12 reprend lexemple du jeu de rvision de la table de multiplication.
Exercice XIII.6 crire un programme en Fortran qui calcule la suite de Syracuse partir dun entier donn par
lutilisateur. Le principe est de partir dun nombre entier plus grand que zro ; sil est pair, on le divise par 2 ; sil
est impair, on le multiplie par 3 et on ajoute 1. En rptant lopration, on obtient une suite dentiers positifs dont
chacun ne dpend que de son prdcesseur. La conjucture de Syracuse est que cette suite calcule depuis nimporte
quel entier strictement positif atteint 1.


XIII.3.3 Les fonctions en Fortran


Lexemple de la figure XIII.13 reprend lexemple de recherche du zro dune fonction par dychotomie afin de montrer les quivalences des dclarations de fonctions en Fortran.

123

XIII.3 Le langage Fortran

PROGRAM J e u
integer i , j , k
p r i n t , D e v i n e z mon c h i f f r e , v o u s a v e z 3 e s s a i s .
i =4 ! C h i f f r e a d e v i n e r
j =1 ! Compteur d e s e s s a i s
do w h i l e ( j . l e . 3 )
print , Essai , j
print , Entrez votre proposition :
rea d , k
i f ( k . eq . i ) t hen
p r i n t , Br av o
r e t u r n ! T e r m i n e l e programme
endif
i f ( k . l t . i ) t hen
p r i n t , Mon c h i f f r e e s t p l u s g r a n d
endif
i f ( k . g t . i ) t hen
p r i n t , Mon c h i f f r e e s t p l u s p e t i t
endif
j = j +1
enddo
p r i n t , Vous n a v e z p a s t r o u v e , mon c h i f f r e
END
Figure XIII.11 Jeu de devinette en Fortran

etait , i

124

Initiation la programmation

PROGRAM J e u
i m p l i c i t none
integer i , k , a , b , c
real rand
p r i n t , R e v i s i o n de l a t a b l e de m u l t i p l i c a t i o n .
k=0 ! Compteur d e s b o n s r e s u l t a t s
do i =1 ,2 0
a= f l o o r ( 8 r a n d ( 0 ) ) + 2
b= f l o o r ( 8 r a n d ( 0 ) ) + 2
print , a , ,b , = ?
rea d , c
i f ( c . eq . ( a b ) ) t hen
p r i n t , Oui
print ,
k=k +1
else
p r i n t , Non
print ,
endif
enddo
p r i n t , No te s u r 2 0 : , k
END
Figure XIII.12 Rvision de la table de multiplication en Fortran

XIII.3 Le langage Fortran

PROGRAM D i c h o t o m i e
integer i , j , k
do uble p r e c i s i o n a , b , c , ya , yc , m a f o n c t i o n
p r i n t , Z e r o de l a f o n c t i o n c o s i n u s e n t r e 0 e t 3 .
a =0.0
b =3.0
j =1 ! Compteur d e s i t e r a t i o n s
do w h i l e ( ( a b s ( ab ) ) . ge . 1 e 6)
j = j +1
ya= m a f o n c t i o n ( a )
c = 0 . 5 ( a+b )
yc= m a f o n c t i o n ( c )
i f ( ( ya yc ) . ge . ( 0 . 0 ) ) t hen
a=c
else
b=c
endif
enddo
p r i n t , nombre d i t e r a t i o n s : , j
p r i n t , Z e r o de l a f o n c t i o n : , c
END
do uble p r e c i s i o n f u n c t i o n m a f o n c t i o n ( x )
do uble p r e c i s i o n x
mafonction = cos ( x )
RETURN
END
Figure XIII.13 Calcul du zro par dichotomie en Fortran

125

126

Initiation la programmation

PROGRAM P r o d u i t de m a t r i c e s
do uble p r e c i s i o n A ( 3 , 2 ) , B ( 2 , 4 ) , C ( 3 , 4 )
integer i , j , k
A( 1 , 1 ) = 1 . 1 ; A( 1 , 2 ) = 0 . 0
A( 2 , 1 ) = 8 . 7 ; A( 2 , 2 ) = 0 . 0
A( 3 , 1 ) = 0 . 0 ; A( 3 , 2 ) = 2 . 6
B( 1 , 1 ) = 6 . 1 ; B( 1 , 2 ) = 4 . 5 ; B( 1 , 3 ) = 0 . 0 ; B( 1 , 4 ) = 0 . 0
B( 2 , 1 ) = 0 . 0 ; B( 2 , 2 ) = 5 . 5 ; B( 2 , 3 ) = 3 . 7 ; B( 2 , 4 ) = 1 . 9
do i =1 ,3
do j =1 ,4
C( i , j ) = 0 . 0
do k =1 ,2
C( i , j ) =C( i , j ) +A( i , k ) B ( k , j )
enddo
enddo
enddo
do i =1 ,3
p r i n t , ( C( i , j ) , j = 1 , 4 )
enddo
END
Figure XIII.14 Dclaration de matrices et calculs matriciels en Fortran

Exercice XIII.7 Programmer en Fortran le calcul de lintgrale dune fonction f (x), par exemple cos x, entre a
et b par la formule des rectangles avec n intervalles dfinir.


XIII.3.4 Le calcul matriciel en Fortran


Bien quil existe des librairies de calcul matriciel en Fortran, on peut programmer les multiplications de matrices en imbriquant 3 boucles comme dans lexemple de la figure XIII.14. Le langage
Fortran ne permet pas priori dutiliser des matrices au format creux (sparse).

XIII.4 Utilisation de routines Fortran dans un programme en Python


On peut facilement utiliser des routines crites en Fortran dans un programme crit en Python. On
peut alors combiner les avantages des deux langages : vitesse dexcution du Fortran (notamment
pour les boucles) et souplesse de programmation de Python (notamment pour la manipulation des
matrices sparses).
Par exemple, on peut crire en Fortran une routine qui calcule le produit de deux matrices.
Cette routine, donne sur la figure XIII.15, est sauvegarde sous le nom
lib_multiplication.f. On construit une librairie Python partir de cette routine Fortran en

XIII.4 Utilisation de routines Fortran dans un programme en Python

127

SUBROUTINE p r o d m a t ( A, B , C , l , m, n )
i n t e g e r l , m, n , i , j , k
r e a l 8 A( l ,m) , B (m, n ) , C ( l , n )
C e n t r e e s / s o r t i e s pour Python
Cf2py i n t e n t ( i n ) A
Cf2py i n t e n t ( i n ) B
Cf2py i n t e n t ( o u t ) C
do i =1 , l
do j =1 , n
C( i , j ) = 0 . 0
do k =1 ,m
C( i , j ) =C( i , j ) +A( i , k ) B ( k , j )
enddo
enddo
enddo
return
END
Figure XIII.15 Routine Fortran de calcul de produit de deux matrices

tapant dans le terminal :


f2py3 -c -m lib_multiplication lib_multiplication.f
Les commandes suivantes (qui sont des commentaires pour Fortran) dans la routine promat :
Cf2py intent(in) A
Cf2py intent(in) B
Cf2py intent(out) C
sont interprtes par f2py afin de construire les entres et les sorties de la fonction prodmat de la
librairie Python ainsi cree lib_multiplication.cpython-34m.so. Cette librairie peut alors
tre utilise dans un programme Python comme dans lexemple de la figure XIII.16. Dans cet
exemple, les tailles des matrices paramtres par les entiers l, m et n sont automatiquement gres
par f2py et nont pas besoin dtre prcises lors de lappel de la routine depuis le programme
Python. La commande Python suivante :
print(lib_multiplication.__doc__)
permet de connaitre toutes les fonctions de la librairie lib_multiplication. La commande
Python suivante :
print(lib_multiplication.prodmat.__doc__)
permet de connaitre les entres et les sorties attendues de la fonction prodmat.
Le rsultat de laffichage du programme Python de la figure XIII.16 qui fait appel une librairie Fortran est donn sur la figure XIII.17.

128

Initiation la programmation

impo rt s c i p y
impo rt l i b _ m u l t i p l i c a t i o n
A= s c i p y . a r r a y ( [ [ 1 . 1 , 0 . 0 ] ,
[ 8.7 , 0.0] ,
[ 0.0 , 2 . 6 ] ] )
B= s c i p y . a r r a y ( [ [ 6 . 1 , 4 . 5 , 0 . 0 , 0 . 0 ] ,
[0.0 , 5.5 , 3.7 , 1 . 9 ] ] )
p r i n t ( l i b _ m u l t i p l i c a t i o n . _ _ d o c_ _ )
p r i n t ( l i b _ m u l t i p l i c a t i o n . p r o d m a t . _ _ d o c_ _ )
C= l i b _ m u l t i p l i c a t i o n . p r o d m a t (A, B )
p r i n t (C)
Figure XIII.16 Utilisation dune libraire crite en Fortran dans un programme en Python
This module lib_multiplication is auto-generated with f2py (version:2).
Functions:
c = prodmat(a,b,l=shape(a,0),m=shape(a,1),n=shape(b,1))
c = prodmat(a,b,[l,m,n])
Wrapper for prodmat.
Parameters
---------a : input rank-2 array(d) with bounds (l,m)
b : input rank-2 array(d) with bounds (m,n)
Other Parameters
---------------l : input int, optional
Default: shape(a,0)
m : input int, optional
Default: shape(a,1)
n : input int, optional
Default: shape(b,1)
Returns
------c : rank-2 array(d) with bounds (l,n)
[[ 6.71
[ 53.07
[ 0.

4.95
39.15
14.3

0.
0.
9.62

0. ]
0. ]
4.94]]

Figure XIII.17 Rsultat de laffichage de lutilisation dune libraire crite en Fortran dans un programme
en Python

XIV Code SILEX

XIV.1 Prsentation
SILEX est un code de calcul par lments finis crit en Python et en Fortran. La figure XIV.1
montre les articulations entre les langages ainsi que les liens avec le logiciel Gmsh.
SILEX est articul de la faon suivante :

Programme principal

Maillage

Cur

Gmsh

Fortran

Python

Rsultats

Figure XIV.1 Articulation du code SILEX

130

Code SILEX

Le langage Python est utilis pour :


dfinir les paramtres du calcul,
lire le maillage,
rsoudre le systme,
crire les rsultats.
Le langage Fortran est utilis pour effectuer les calculs au niveau local et construire la matrice de rigidit. Le langage python peut aussi tre utilis pour cette partie, lavantage tant
que SILEX fonctionne alors entirement en Python, linconvnient est que les temps de
calculs sont plus longs.
Le logiciel libre Gmsh est utilis pour faire les maillages et visualiser les rsultats.
Le lien suivant donne une partie du code :
http://antoinelegay.free.fr/silex/silex.html.
Seules les routines pour le ttradre 4 nuds dans le cas de statique linaire sont disponibles
pour linstant en tlchargement libre. Un premier exemple est trait sous forme de tutoriel sur ce
mme lien.

XIV.2 Cur crit en Fortran de SILEX pour le ttradre 4 nuds


XIV.2.1 Matrice de rigidit lmentaire
On rappelle que les fonctions de forme de lun lment ttradre 4 nuds sont solutions du
systme dquations suivant :

x
a

ya

a (x, y, z)

xb xc xd
b (x, y, z)

yb yc yd
c (x, y, z)

za

zb

zc

d (x, y, z)

zd

=
y

En rsolvant le systme par la mthode de Cramer, on obtient les expressions suivantes :


i (x, y, z) =

1
(i + i x + i y + i z)
6v

avec
xj xk xl
i = (1)

i = (1)

p+1

p+1

yj

yk

yl

zj

zk

zl

1
i = (1)

i = (1)

xj xk xl
zj

zk

zl

yj yk yl
zj

zk zl

xj

xk xl

yj

yk

1
yl

o v est le volume de llment et en utilisant la permutation donne dans le tableau suivant :


i j k l p i j k l p i j k l p i j k l p
a

131

XIV.2 Cur crit en Fortran de SILEX pour le ttradre 4 nuds

Le volume v de llment est le dterminant de la matrice suivante :


1

x1 x2 x3 x4

v=

y1

y2

y3

y4

z1

z2

z3

z4

Loprateur gradient discrtis de llment ttradre 4 nuds scrit :

Be =
6v

a a

b b

c c

d d

Lexpression de la matrice de rigidit lmentaire est


e

K =

B eT CB e de

tant donn que B e est constant, cette expression devient


K e = vB eT CB e
La loi de comportement C vaut

+ 2

0 0

+ 2

0 0

C=

+ 2 0 0
0

0 0

0 0

Le calcul de v fait intervenir le dterminant dune matrice 4 4 avec des 1 sur la premire ligne, on calcule de faon analytique ce dterminant puis on en cre une fonction Fortran
det44_ligne_de_un.
Les calculs des coefficients i , i et i font intervenir le dterminant dune matrice 3 3 avec
des 1 sur la premire ligne, on calcule de faon analytique ce dterminant puis on en cre une
fonction Fortran det33_ligne_de_un.

XIV.2.2 Matrice de rigidit globale


La routine StiffnessMatrix effectue une boucle sur les lments ttradres 4 nuds afin de
calculer leurs matrices de rigidit et de les assembler. Les entres de cette routine sont :
les coordonnes des nuds dans le tableau nodes de taille nb. nuds3,
la table de connectivit dans le tableau elements de taille nb. lments4,
les proprits matriau dans le tableau material (module dYoung E et coefficient de Poisson ).

132

Code SILEX

La sortie de la routine est la matrice de rigidit globale sous forme sparse dans les 2 tableaux Ik
et Jk de pointeurs et le tableau Vk contenant les valeurs des matrices de rigidit lmentaires.
On calcule dans un premier temps la loi de comportement du matriau C en fonction de E et
. Dans un second temps, pour chaque lment e, on extrait les coordonnes des nuds puis on
calcule la matrice de rigidit lmentaire ke de taille 1212..
La routine StiffnessMatrix crite en Python est aussi donne dans la suite.

XIV.2 Cur crit en Fortran de SILEX pour le ttradre 4 nuds

Routines Fortran du cur de SILEX :


C
double p r e c i s i o n f u n ct i on d e t 4 4 _ l i g n e _ d e _ u n ( a )
i m p l i c i t none
double p r e c i s i o n a ( 3 , 4 )

&
&
&
&
&
&
&
&
&
&
&

d e t 4 4 _ l i g n e _ d e _ u n= a ( 1 , 2 ) a ( 2 , 3 ) a ( 3 , 4) + a ( 3 , 1 ) a ( 1 , 3 ) a ( 2 , 2 )
a ( 1 , 2 ) a ( 2 , 4 ) a (3 ,3) a ( 2 , 2 ) a ( 1 , 3 ) a ( 3 , 4 )
+a ( 2 , 2 ) a ( 1 , 4 ) a ( 3 , 3 ) + a ( 3 , 2 ) a ( 1 , 3 ) a ( 2 , 4 )
a ( 3 , 2 ) a ( 1 , 4 ) a (2 ,3) a ( 1 , 1 ) a ( 2 , 3 ) a ( 3 , 4 )
+a ( 1 , 1 ) a ( 2 , 4 ) a ( 3 , 3 ) + a ( 1 , 1 ) a ( 2 , 2 ) a ( 3 , 4 )
a ( 1 , 1 ) a ( 2 , 2 ) a (3 ,3) a ( 1 , 1 ) a ( 3 , 2 ) a ( 2 , 4 )
+a ( 1 , 1 ) a ( 3 , 2 ) a ( 2 , 3 ) + a ( 2 , 1 ) a ( 1 , 3 ) a ( 3 , 4 )
a ( 2 , 1 ) a ( 1 , 4 ) a (3 ,3) a ( 2 , 1 ) a ( 1 , 2 ) a ( 3 , 4 )
+a ( 2 , 1 ) a ( 1 , 2 ) a ( 3 , 3 ) + a ( 2 , 1 ) a ( 3 , 2 ) a ( 1 , 4 )
a ( 2 , 1 ) a ( 3 , 2 ) a (1 ,3) a ( 3 , 1 ) a ( 1 , 3 ) a ( 2 , 4 )
+a ( 3 , 1 ) a ( 1 , 4 ) a ( 2 , 3 ) + a ( 3 , 1 ) a ( 1 , 2 ) a ( 2 , 4 )
a ( 3 , 1 ) a ( 1 , 2 ) a (2 ,3) a ( 3 , 1 ) a ( 2 , 2 ) a ( 1 , 4 )

end
C
double p r e c i s i o n f u n ct i on d e t 3 3 _ l i g n e _ d e _ u n ( a )
i m p l i c i t none
double p r e c i s i o n a ( 2 , 3 )

&
&

d e t 3 3 _ l i g n e _ d e _ u n = a ( 1 , 2 ) a (2 ,3) a ( 1 , 3 ) a ( 2 , 2 )
a ( 1 , 1 ) a ( 2 , 3 ) + a ( 1 , 1 ) a ( 2 , 2 )
+a ( 2 , 1 ) a (1 ,3) a ( 2 , 1 ) a ( 1 , 2 )

end
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
s u b r o u t i n e S t i f f n e s s M a t r i x ( nbnodes , nodes , nbelem , e l e m e n t s ,
&
m a t e r i a l , Ik , Jk , Vk )
i m p l i c i t none
integer
double
integer
double
integer
double
Cf2py
Cf2py
Cf2py
Cf2py
Cf2py
Cf2py
Cf2py
Cf2py

nbnodes , nbelem
p r e c i s i o n n o d e s ( nbnodes , 3 )
e l e m e n t s ( nbelem , 4 )
p r e c i s i o n CC ( 6 , 6 ) , Vk ( 1 2 1 2 nbelem )
I k ( 1 2 1 2 nbelem ) , J k ( 1 2 1 2 nbelem )
p r e c i s i o n m a t e r i a l ( 2 ) , young , nu , lambda , mu

i n t e n t ( in ) nbnodes
i n t e n t ( in ) nodes
i n t e n t ( i n ) nbelem
i n t en t ( in ) elements
i n t en t ( in ) m a t e r i a l
i n t e n t ( out ) Ik
i n t e n t ( out ) Jk
i n t e n t ( o u t ) Vk
d o u b l e p r e c i s i o n ke ( 1 2 , 1 2 ) ,X( 4 ) , Y( 4 ) , Z ( 4 )
i n t e g e r i dnodes ( 4 ) , dofx ( 4 ) , dofy ( 4 ) , dofz ( 4 ) , dofelem ( 1 2 ) , p , e , i , j
d o u b l e p r e c i s i o n d e t _ o f _ s y s , Vol , a34 ( 3 , 4 ) , a23 ( 2 , 3 )

133

134

Code SILEX
d o u b l e p r e c i s i o n b e t a ( 4 ) , gamm ( 4 ) , d e l t ( 4 ) , d e t 4 4 _ l i g n e _ d e _ u n
d o u b l e p r e c i s i o n d e t 3 3 _ l i g n e _ d e _ u n , BB ( 6 , 1 2 )
young = m a t e r i a l ( 1 )
nu
= material (2)
do i =1 ,6
do j =1 ,6
CC( i , j ) = 0 . 0 d0
enddo
do j =1 ,12
BB( i , j ) = 0 . 0 d0
enddo
enddo
lambda = nu young / ( ( 1 + nu )(1 2 nu ) )
mu
= young / ( 2 ( 1 + nu ) )
do i =1 ,3
CC( i , i ) = lambda +2mu
CC( i +3 , i +3)=mu
enddo
CC( 1 , 2 ) = lambda ; CC( 2 , 1 ) = lambda
CC( 1 , 3 ) = lambda ; CC( 3 , 1 ) = lambda
CC( 2 , 3 ) = lambda ; CC( 3 , 2 ) = lambda
p =1
do e =1 , nbelem

do i =1 ,4
idnodes ( i ) = elements ( e , i )
python indexing
dofx ( i )
= ( i d n o d e s ( i ) 1)3
dofy ( i )
= ( i d n o d e s ( i ) 1)3+1
dofz ( i )
= ( i d n o d e s ( i ) 1)3+2
enddo
do i =1 ,4
d o f e l e m ( 1 + 3 ( i 1)) = d o f x ( i )
d o f e l e m ( 2 + 3 ( i 1)) = d o f y ( i )
d o f e l e m ( 3 + 3 ( i 1)) = d o f z ( i )
enddo
do i =1 ,4
X( i ) = n o d e s ( i d n o d e s ( i ) , 1 )
Y( i ) = n o d e s ( i d n o d e s ( i ) , 2 )
Z( i )= nodes ( i dnodes ( i ) , 3 )
enddo
a34 ( 1 , 1 ) =X ( 1 ) ; a34 ( 1 , 2 ) =X ( 2 ) ; a34 ( 1 , 3 ) = X ( 3 ) ; a34 ( 1 , 4 ) =X( 4 )
a34 ( 2 , 1 ) =Y ( 1 ) ; a34 ( 2 , 2 ) =Y ( 2 ) ; a34 ( 2 , 3 ) = Y ( 3 ) ; a34 ( 2 , 4 ) =Y( 4 )
a34 ( 3 , 1 ) = Z ( 1 ) ; a34 ( 3 , 2 ) = Z ( 2 ) ; a34 ( 3 , 3 ) = Z ( 3 ) ; a34 ( 3 , 4 ) = Z ( 4 )
d e t _ o f _ s y s = d e t 4 4 _ l i g n e _ d e _ u n ( a34 )
Vol
= abs ( det_of_sys / 6 )
a23 ( 1 , 1 ) = Y ( 2 ) ; a23 ( 1 , 2 ) = Y ( 3 ) ; a23 ( 1 , 3 ) = Y( 4 )
a23 ( 2 , 1 ) = Z ( 2 ) ; a23 ( 2 , 2 ) = Z ( 3 ) ; a23 ( 2 , 3 ) = Z ( 4 )
b e t a (1)= d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = X ( 2 ) ; a23 ( 1 , 2 ) = X ( 3 ) ; a23 ( 1 , 3 ) = X( 4 )
a23 ( 2 , 1 ) = Z ( 2 ) ; a23 ( 2 , 2 ) = Z ( 3 ) ; a23 ( 2 , 3 ) = Z ( 4 )

XIV.2 Cur crit en Fortran de SILEX pour le ttradre 4 nuds


gamm( 1 ) = + d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = X ( 2 ) ; a23 ( 1 , 2 ) = X ( 3 ) ; a23 ( 1 , 3 ) = X( 4 )
a23 ( 2 , 1 ) = Y ( 2 ) ; a23 ( 2 , 2 ) = Y ( 3 ) ; a23 ( 2 , 3 ) = Y( 4 )
d e l t (1)= d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = Y ( 1 ) ; a23 ( 1 , 2 ) = Y ( 3 ) ; a23 ( 1 , 3 ) = Y( 4 )
a23 ( 2 , 1 ) = Z ( 1 ) ; a23 ( 2 , 2 ) = Z ( 3 ) ; a23 ( 2 , 3 ) = Z ( 4 )
b e t a ( 2 ) = + d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = X ( 1 ) ; a23 ( 1 , 2 ) = X ( 3 ) ; a23 ( 1 , 3 ) = X( 4 )
a23 ( 2 , 1 ) = Z ( 1 ) ; a23 ( 2 , 2 ) = Z ( 3 ) ; a23 ( 2 , 3 ) = Z ( 4 )
gamm(2)= d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = X ( 1 ) ; a23 ( 1 , 2 ) = X ( 3 ) ; a23 ( 1 , 3 ) = X( 4 )
a23 ( 2 , 1 ) = Y ( 1 ) ; a23 ( 2 , 2 ) = Y ( 3 ) ; a23 ( 2 , 3 ) = Y( 4 )
d e l t ( 2 ) = + d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = Y ( 1 ) ; a23 ( 1 , 2 ) = Y ( 2 ) ; a23 ( 1 , 3 ) = Y( 4 )
a23 ( 2 , 1 ) = Z ( 1 ) ; a23 ( 2 , 2 ) = Z ( 2 ) ; a23 ( 2 , 3 ) = Z ( 4 )
b e t a (3)= d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = X ( 1 ) ; a23 ( 1 , 2 ) = X ( 2 ) ; a23 ( 1 , 3 ) = X( 4 )
a23 ( 2 , 1 ) = Z ( 1 ) ; a23 ( 2 , 2 ) = Z ( 2 ) ; a23 ( 2 , 3 ) = Z ( 4 )
gamm( 3 ) = + d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = X ( 1 ) ; a23 ( 1 , 2 ) = X ( 2 ) ; a23 ( 1 , 3 ) = X( 4 )
a23 ( 2 , 1 ) = Y ( 1 ) ; a23 ( 2 , 2 ) = Y ( 2 ) ; a23 ( 2 , 3 ) = Y( 4 )
d e l t (3)= d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = Y ( 1 ) ; a23 ( 1 , 2 ) = Y ( 2 ) ; a23 ( 1 , 3 ) = Y( 3 )
a23 ( 2 , 1 ) = Z ( 1 ) ; a23 ( 2 , 2 ) = Z ( 2 ) ; a23 ( 2 , 3 ) = Z ( 3 )
b e t a ( 4 ) = + d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = X ( 1 ) ; a23 ( 1 , 2 ) = X ( 2 ) ; a23 ( 1 , 3 ) = X( 3 )
a23 ( 2 , 1 ) = Z ( 1 ) ; a23 ( 2 , 2 ) = Z ( 2 ) ; a23 ( 2 , 3 ) = Z ( 3 )
gamm(4)= d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
a23 ( 1 , 1 ) = X ( 1 ) ; a23 ( 1 , 2 ) = X ( 2 ) ; a23 ( 1 , 3 ) = X( 3 )
a23 ( 2 , 1 ) = Y ( 1 ) ; a23 ( 2 , 2 ) = Y ( 2 ) ; a23 ( 2 , 3 ) = Y( 3 )
d e l t ( 4 ) = + d e t 3 3 _ l i g n e _ d e _ u n ( a23 )
do j =1 ,4
BB( 1 , 1 + 3 ( j
BB( 2 , 2 + 3 ( j
BB( 3 , 3 + 3 ( j
BB( 4 , 2 + 3 ( j
BB( 4 , 3 + 3 ( j
BB( 5 , 1 + 3 ( j
BB( 5 , 3 + 3 ( j
BB( 6 , 1 + 3 ( j
BB( 6 , 2 + 3 ( j
enddo

1))
1))
1))
1))
1))
1))
1))
1))
1))

=
=
=
=
=
=
=
=
=

beta ( j
gamm ( j
delt ( j
delt ( j
gamm ( j
delt ( j
beta ( j
gamm ( j
beta ( j

) / ( 6 . 0 d0 Vol )
) / ( 6 . 0 d0 Vol )
) / ( 6 . 0 d0 Vol )
) / ( 6 . 0 d0 Vol )
) / ( 6 . 0 d0 Vol )
) / ( 6 . 0 d0 Vol )
) / ( 6 . 0 d0 Vol )
) / ( 6 . 0 d0 Vol )
) / ( 6 . 0 d0 Vol )

ke = matmul ( t r a n s p o s e (BB ) , matmul (CC , BB ) ) Vol


do i =1 ,12

135

136

Code SILEX
do j =1 ,12
Ik ( p )= dofelem ( i )
Jk ( p )= dofelem ( j )
Vk ( p ) = ke ( i , j )
p=p +1
enddo
enddo
enddo
return
end

Routine Python du cur de SILEX permettant de calculer la matrice de rigidit :


d e f s t i f f n e s s m a t r i x ( nodes , e l e m e n t s , m a t e r i a l ) :
nelem
Ik
Jk
Vk
beta
gamm
delt
A34
A23
B
dofelem
dofx
dofy
dofz
idnodes
young
nu
lamb
mu
C

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

elements . shape [ 0 ]
s c i p y . z e r o s ( 1 2 1 2 nelem , d t y p e = i n t )
s c i p y . z e r o s ( 1 2 1 2 nelem , d t y p e = i n t )
s c i p y . z e r o s ( 1 2 1 2 nelem , d t y p e = f l o a t )
scipy . zeros ( ( 4 ) , dtype= f l o a t )
scipy . zeros ( ( 4 ) , dtype= f l o a t )
scipy . zeros ( ( 4 ) , dtype= f l o a t )
scipy . zeros ( (3 , 4 ) , dtype= f l o a t )
scipy . zeros ( (3 , 4 ) , dtype= f l o a t )
scipy . zeros ((6 ,12) , dtype= f l o a t )
scipy . zeros (12 , dtype= int )
scipy . zeros (4 , dtype= int )
scipy . zeros (4 , dtype= int )
scipy . zeros (4 , dtype= int )
scipy . zeros (4 , dtype= int )
material [0]
material [1]
nu young / ( ( 1 + nu )(1 2 nu ) )
young / ( 2 ( 1 + nu ) )
s c i p y . a r r a y ( [ [ lamb +2mu , lamb , lamb , 0 . 0 , 0 . 0 , 0 . 0 ] ,
[ lamb , lamb +2mu , lamb , 0 . 0 , 0 . 0 , 0 . 0 ] ,
[ lamb , lamb , lamb +2mu , 0 . 0 , 0 . 0 , 0 . 0 ] ,
[ 0 . 0 , 0 . 0 , 0 . 0 , mu , 0 . 0 , 0 . 0 ] ,
[ 0 . 0 , 0 . 0 , 0 . 0 , 0 . 0 , mu , 0 . 0 ] ,
[ 0 . 0 , 0 . 0 , 0 . 0 , 0 . 0 , 0 . 0 , mu ] ] )

p=0
f o r e i n range ( nelem ) :
idnodes [ : ] = elements [ e ,:] 1
dofx [ : ]
= ( i dnodes )3
dofy [ : ]
= ( i d n o d e s )3+1
dofz [ : ]
= ( i d n o d e s )3+2
dofelem [ 0 ] = dofx [ 0 ] ; dofelem [ 1 ]
dofelem [ 3 ] = dofx [ 1 ] ; dofelem [ 4 ]
dofelem [ 6 ] = dofx [ 2 ] ; dofelem [ 7 ]
dofelem [ 9 ] = dofx [ 3 ] ; dofelem [ 1 0 ]

=
=
=
=

dofy
dofy
dofy
dofy

[0];
[1];
[2];
[3];

dofelem [ 2 ]
dofelem [ 5 ]
dofelem [ 8 ]
dofelem [11]

X= n o d e s [ i d n o d e s , 0 ] ; Y= n o d e s [ i d n o d e s , 1 ] ; Z= n o d e s [ i d n o d e s , 2 ]
A34 [ 0 , : ] = X; A34 [ 1 , : ] = Y; A34 [ 2 , : ] = Z
d e t _ o f _ s y s = d e t 4 4 _ l i g n e _ d e _ u n ( A34 )
Vol
= abs ( d e t _ o f _ s y s / 6 )

=
=
=
=

dofz [ 0 ]
dofz [ 1 ]
dofz [ 2 ]
dofz [ 3 ]

137

XIV.2 Cur crit en Fortran de SILEX pour le ttradre 4 nuds

A23 [ 0 , 0 ] = Y [ 1 ] ; A23 [ 0 , 1 ] = Y [ 2 ] ;
A23 [ 1 , 0 ] = Z [ 1 ] ; A23 [ 1 , 1 ] = Z [ 2 ] ;
b e t a [0]= d e t 3 3 _ l i g n e _ d e _ u n ( A23 )
A23 [ 0 , 0 ] = X [ 1 ] ; A23 [ 0 , 1 ] = X [ 2 ] ;
gamm [ 0 ] = d e t 3 3 _ l i g n e _ d e _ u n ( A23 )
A23 [ 1 , 0 ] = Y [ 1 ] ; A23 [ 1 , 1 ] = Y [ 2 ] ;
d e l t [0]= d e t 3 3 _ l i g n e _ d e _ u n ( A23 )

A23 [ 0 , 2 ] = Y[ 3 ]
A23 [ 1 , 2 ] = Z [ 3 ]

A23 [ 0 , 0 ] = Y [ 0 ] ; A23 [ 0 , 1 ] = Y [ 2 ] ;
A23 [ 1 , 0 ] = Z [ 0 ] ; A23 [ 1 , 1 ] = Z [ 2 ] ;
b e t a [ 1 ] = d e t 3 3 _ l i g n e _ d e _ u n ( A23 )
A23 [ 0 , 0 ] = X [ 0 ] ; A23 [ 0 , 1 ] = X [ 2 ] ;
gamm[1]= d e t 3 3 _ l i g n e _ d e _ u n ( A23 )
A23 [ 1 , 0 ] = Y [ 0 ] ; A23 [ 1 , 1 ] = Y [ 2 ] ;
d e l t [ 1 ] = d e t 3 3 _ l i g n e _ d e _ u n ( A23 )

A23 [ 0 , 2 ] = Y[ 3 ]
A23 [ 1 , 2 ] = Z [ 3 ]

A23 [ 0 , 2 ] = X[ 3 ]
A23 [ 1 , 2 ] = Y[ 3 ]

A23 [ 0 , 2 ] = X[ 3 ]
A23 [ 1 , 2 ] = Y[ 3 ]

A23 [ 0 , 0 ] = Y [ 0 ] ; A23 [ 0 , 1 ] = Y [ 1 ] ;
A23 [ 1 , 0 ] = Z [ 0 ] ; A23 [ 1 , 1 ] = Z [ 1 ] ;
b e t a [2]= d e t 3 3 _ l i g n e _ d e _ u n ( A23 )
A23 [ 0 , 0 ] = X [ 0 ] ; A23 [ 0 , 1 ] = X [ 1 ] ;
gamm [ 2 ] = d e t 3 3 _ l i g n e _ d e _ u n ( A23 )
A23 [ 1 , 0 ] = Y [ 0 ] ; A23 [ 1 , 1 ] = Y [ 1 ] ;
d e l t [2]= d e t 3 3 _ l i g n e _ d e _ u n ( A23 )

A23 [ 0 , 2 ] = Y[ 3 ]
A23 [ 1 , 2 ] = Z [ 3 ]

A23 [ 0 , 0 ] = Y [ 0 ] ; A23 [ 0 , 1 ] = Y [ 1 ] ;
A23 [ 1 , 0 ] = Z [ 0 ] ; A23 [ 1 , 1 ] = Z [ 1 ] ;
b e t a [ 3 ] = d e t 3 3 _ l i g n e _ d e _ u n ( A23 )
A23 [ 0 , 0 ] = X [ 0 ] ; A23 [ 0 , 1 ] = X [ 1 ] ;
gamm[3]= d e t 3 3 _ l i g n e _ d e _ u n ( A23 )
A23 [ 1 , 0 ] = Y [ 0 ] ; A23 [ 1 , 1 ] = Y [ 1 ] ;
d e l t [ 3 ] = d e t 3 3 _ l i g n e _ d e _ u n ( A23 )

A23 [ 0 , 2 ] = Y[ 2 ]
A23 [ 1 , 2 ] = Z [ 2 ]

B[ 0
B[ 1
B[ 2
B[ 3
B[ 3
B[ 4
B[ 4
B[ 5
B[ 5

,0]
,1]
,2]
,2]
,1]
,0]
,2]
,0]
,1]

=
=
=
=
=
=
=
=
=

beta [ 0 ] ;
gamm [ 0 ] ;
delt [0];
gamm [ 0 ] ;
delt [0];
delt [0];
beta [ 0 ] ;
gamm [ 0 ] ;
beta [ 0 ] ;

B[ 0 , 3]
B[ 1 , 4]
B[ 2 , 5]
B[ 3 , 5]
B[ 3 , 4]
B[ 4 , 3]
B[ 4 , 5]
B[ 5 , 3]
B[ 5 , 4]

=
=
=
=
=
=
=
=
=

A23 [ 0 , 2 ] = X[ 3 ]
A23 [ 1 , 2 ] = Y[ 3 ]

A23 [ 0 , 2 ] = X[ 2 ]
A23 [ 1 , 2 ] = Y[ 2 ]

beta [ 1 ] ;
gamm [ 1 ] ;
delt [1];
gamm [ 1 ] ;
delt [1];
delt [1];
beta [ 1 ] ;
gamm [ 1 ] ;
beta [ 1 ] ;

B[ 0
B[ 1
B[ 2
B[ 3
B[ 3
B[ 4
B[ 4
B[ 5
B[ 5

,6]
,7]
,8]
,8]
,7]
,6]
,8]
,6]
,7]

=
=
=
=
=
=
=
=
=

beta [ 2 ] ;
gamm [ 2 ] ;
delt [2];
gamm [ 2 ] ;
delt [2];
delt [2];
beta [ 2 ] ;
gamm [ 2 ] ;
beta [ 2 ] ;

B[ 0 , 9]
B[1 ,10]
B[2 ,11]
B[3 ,11]
B[3 ,10]
B[ 4 , 9]
B[4 ,11]
B[ 5 , 9]
B[5 ,10]

ke = s c i p y . d o t ( B . T , s c i p y . d o t ( C , B ) ) Vol / ( d e t _ o f _ s y s d e t _ o f _ s y s )
f o r i i n range ( 1 2 ) :
Ik [ p : ( p +12)]= dofelem [ i ]
Jk [ p : ( p +12)]= dofelem [ : ]
Vk [ p : ( p + 1 2 ) ] = ke [ i , : ]
p=p +12
r e t u r n Ik , Jk , Vk

=
=
=
=
=
=
=
=
=

beta [3]
gamm [ 3 ]
delt [3]
gamm [ 3 ]
delt [3]
delt [3]
beta [3]
gamm [ 3 ]
beta [3]

138

Code SILEX

XIV.3 Programme principal en Python


Le listing du programme principal est dans la suite. Le programme principal crit en Python pilote
les calculs. Le dtail des parties est le suivant :
Partie Import libraries :
Cette premire partie indique python les librairies spcifiques que lon va utiliser.
En dplaant le # du commentaire, on peut choisir la librairie de calcul au niveau lmentaire :
Pour une version Python (typiquement pour Windows) :
#import silex_lib_tet4_fortran as silex_lib_elt
import silex_lib_tet4_python as silex_lib_elt
Pour une version avec une librairie Fortran compile :
import silex_lib_tet4_fortran as silex_lib_elt
#import silex_lib_tet4_python as silex_lib_elt
Partie USER PART : partie modifier pour un nouveau calcul
La variable MeshFileName indique le nom du fichier maillage provenant de gmsh (sans
lextension .msh).
La variable ResultsFileName indique le nom du fichier dans lequel les rsultats sont
crits (sans lextension .msh).
La variable eltype indique le type dlments que lon utilise : 4 pour les ttradres 4
nuds. Les autres types dlments sont dtaills dans la librairie silex_lib_gmsh.py.
La variable ndim indique la dimension de la gomtrie : 2 pour 2D, 3 pour 3D.
La variable flag_write_fields indique le type de rsultats que lon souhaite crire
dans le fichier rsultat : 1 pour tous les champs, 0 pour une sortie courte. Dautres
valeurs peuvent tre dfinies la fin du fichier Main.py.
La routine ReadGmshNodes de la librairie silex_lib_gmsh permet dimporter les coordonnes des nuds depuis le fichier de maillage dans le tableau nodes.
Utilisation :
nodes=silex_lib_gmsh.ReadGmshNodes(monmaillage.msh, 2 ou 3)
La routine ReadGmshElements de la librairie silex_lib_gmsh permet dimporter
la table de connectivit des lments depuis le fichier de maillage dans le tableau
elements, les numros des nuds correspondants sont stocks dans le tableau Idnodes.
Utilisation :
elements,Idnodes=silex_lib_gmsh.ReadGmshElements
(monmaillage.msh,element_type,physical_group)
Une fois le maillage volume import, on utilise la routine ReadGmshElements pour
importer les maillages surfaciques (type dlment 2 pour les triangles 3 nuds ) des
surfaces fonctionnelles du calcul : elementsS1 ... et IdnodeS1 ...

XIV.3 Programme principal en Python

139

Afin de vrifier si les maillages sont bien imports, on peut les crire dans un fichier au
format gmsh laide de la routine WriteResults de la librairie silex_lib_gmsh.
Utilisation :
silex_lib_gmsh.WriteResults
(maillage_lu.msh,nodes,elements,element_type)
La variable Young indique le module dYoung.
La variable nu indique le coefficient de Poisson.

Les nuds bloqus dans la direction


x sont indiqus dans le tableau IdNodesFixed_x

, ceux bloqus dans la direction


y dans le tableau IdNodesFixed_y, enfin ceux blo

qus dans la direction z dans le tableau IdNodesFixed_z.


La routine forceonsurface de la librairie silex_lib_tet4 (renome en
silex_lib_elt) permet de calculer les forces aux nuds dues une force surfacique
de norme press dans la direction direction :
Utilisation :
F = silex_lib_elt.forceonsurface(nodes,
surfacic_elements_where_the_load_is_applied,press,direction)
Si la direction vaut [0.0,0.0,0.0], alors cest la normale locale la surface qui est
utilise, cest le cas pour une force surfacique due une pression. Dans ce cas la direction de la normale tant calcule partir de la numrotation locale des nuds, elle peut
tre en sens oppos, il suffit de changer le signe de press pour obtenir une force dans
la bonne direction.
Partie EXPERT : partie inchange lors dun nouveau calcul
La variable nnodes indique le nombre de nuds.
La variable ndof indique nombre de degrs de libert.
La variable nelem indique nombre dlments.
La variable Fixed_Dofs contient les ddl bloqus.
Le tableau SolvedDofs indique les ddl libres calculer.
Le tableau Q contient les dplacements des nuds.
Calcul de la matrice de rigidit et assemblage au format sparse :
Ik,Jk,Vk=silex_lib_elt.stiffnessmatrix(nodes,elements,[Young,nu])
K=scipy.sparse.csc_matrix( (Vk,(Ik,Jk)), shape=(ndof,ndof) ,dtype=float)
Rsolution du systme en dplacement (on suppose que les dplacements imposs sont
nuls, modifier dans le cas contraire) :
Q[SolvedDofs] = scipy.sparse.linalg.spsolve
(K[SolvedDofs,:][:,SolvedDofs],F[SolvedDofs])
Calcul des contraintes (dans les lments et lisses aux nuds), des dformations (dans
les lments et lisses aux nuds), des contributions des lments lerreur, et enfin
de lerreur en nergie ZZ1 :

140

Code SILEX

SigmaElem, SigmaNodes, EpsilonElem, EpsilonNodes, ErrorElem, ErrorGlobal


= silex_lib_elt.compute_stress_strain_error(nodes,elements,[Young,nu],Q)
Le tableau disp contient les dplacements des nuds crit sur 3 colonnes (ou 2 en 2D)
pour la sortie au format gmsh.
Le tableau load contient les efforts imposs aux nuds crit sur 3 colonnes (ou 2 en
2D) pour la sortie au format gmsh.
La liste fields_to_write contient les champs crire dans le fichier rsultat. La
routine WriteResults de la librairie silex_lib_gmsh donne plus de dtails.

141

XIV.3 Programme principal en Python

# P y t h o n Main program
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
#
Import l i b r a r i e s
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
import s t r i n g ; import t i m e ; import s c i p y ;
import s c i p y . s p a r s e ; import s c i p y . s p a r s e . l i n a l g
import s y s
s ys . pat h . append ( . . / . . / l i b r a i r i e s )
## Choose b e t w e e n t h e F o r t r a n o r t h e P y t h o n l i b r a i r i e :
# i m por t s i l e x _ l i b _ t e t 4 _ f o r t r a n as s i l e x _ l i b _ e l t
import s i l e x _ l i b _ t e t 4 _ p y t h o n a s s i l e x _ l i b _ e l t
import s i l e x _ l i b _ g m s h
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
p r i n t ( " SILEX CODE c a l c u l a v e c d e s t e t 4 " )
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
#
USER PART : I m p o r t mesh , b o u n d a r y c o n d i t i o n s and m a t e r i a l
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
# I n p u t mesh : d e f i n e t h e name o f t h e mesh f i l e ( . msh )
MeshFileName= MyMesh
# O u t p u t r e s u l t f i l e : d e f i n e t h e name o f t h e r e s u l t
R es ul t s F i l eN am e= MyResults

file

( . msh )

# choose the element type


e l t y p e =4
# choose geometry dimension
ndim =3
# choose the r e s u l t s in the r e s u l t s
# 0 for short output
# 1 f o r long output
f l a g _ w r i t e _ f i e l d s =0

file :

# r e a d t h e mesh f r o m gmsh
n o d e s = s i l e x _ l i b _ g m s h . ReadGmshNodes ( MeshFileName+ . msh , ndim )
e l e m e n t s , I d n o d e s = s i l e x _ l i b _ g m s h . ReadGmshElements ( MeshFileName + . msh , e l t y p e , 5 )
# r e a d s u r f a c e s where t o i m p o s e b o u n d a r y c o n d i t i o n s
e l e m e n t s S 1 , I d n o d e S 1 = s i l e x _ l i b _ g m s h . ReadGmshElements ( MeshFileName+ . msh , 2 , 1 )
e l e m e n t s S 2 , I d n o d e S 2 = s i l e x _ l i b _ g m s h . ReadGmshElements ( MeshFileName+ . msh , 2 , 2 )
#...
# w r i t e t h e s u r f a c e mesh i n a gmshf o r m a t f i l e t o v e r i f y i f i t s c o r r e c t
s i l e x _ l i b _ g m s h . W r i t e R e s u l t s ( R e s u l t s F i l e N a m e + Volum , nodes , e l e m e n t s , 4 )
s i l e x _ l i b _ g m s h . W r i t e R e s u l t s ( R e s u l t s F i l e N a m e + s u r f 1 , nodes , e l e m e n t s S 1 , 2 )
#...
# Define material
Young = 2 0 0 0 0 0 . 0

142
nu

Code SILEX
= 0.3

# Boundary c o n d i t i o n s , f o r i n s t a n c e :
I d N o d e s F i x e d _ x= I d n o d e S 3
I d N o d e s F i x e d _ y= I d n o d e S 1
IdNodesFixed_z =IdnodeS2
# compute e x t e r n a l f o r c e s from p r e s s u r e
p r e s s = 10 #MPa
# give the d i r e c t i o n of the s u r f a c i c load :
#
i f [ 0 . 0 , 0 . 0 , 0 . 0 ] t hen t h e l o c a l normal t o t h e s u r f a c e i s used
#
otherwise , the d i r e c t i o n i s normalized to 1
direction = [0.0 ,0.0 ,0.0]
F = s i l e x _ l i b _ e l t . f o r c e o n s u r f a c e ( nodes , e l e m e n t s S 3 , p r e s s , d i r e c t i o n )
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
#
EXPERT PART
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
#
initialisations
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
# g e t number o f nodes , d o f and e l e m e n t s f r o m t h e mesh
nnodes = nodes . shape [ 0 ]
ndof
= n n o d e s ndim
nelem = e l e m e n t s . s h a p e [ 0 ]
# define f i x e d dof
F i x e d _ D o f s = s c i p y . h s t a c k ( [ ( I d N o d e s F i x e d _ x 1)3 ,
( I d N o d e s F i x e d _ y 1)3+1 ,
( IdNodesFixed_z 1)3+2])
# define fr e e dof
S o l v e d D o f s = s c i p y . s e t d i f f 1 d ( range ( n d o f ) , F i x e d _ D o f s )
# i n i t i a l i z e displacement vector
Q= s c i p y . z e r o s ( n d o f )
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
#
compute s t i f f n e s s m a t r i x
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
Ik , Jk , Vk= s i l e x _ l i b _ e l t . s t i f f n e s s m a t r i x ( nodes , e l e m e n t s , [ Young , nu ] )
K= s c i p y . s p a r s e . c s c _ m a t r i x ( ( Vk , ( Ik , J k ) ) , s h a p e = ( ndof , n d o f ) , d t y p e = f l o a t )
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
#
Sol ve t h e problem
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
Q[ S o l v e d D o f s ] = s c i p y . s p a r s e . l i n a l g . s p s o l v e (
K[ S o l v e d D o f s , : ] [ : , S o l v e d D o f s ] , F [ S o l v e d D o f s ] )
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
#
c o m p u t e s m o o t h s t r e s s and e r r o r i n e l e m e n t s
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
SigmaElem , SigmaNodes , E p s i l o n E l e m , E p s i l o n N o d e s , E r r o r E l e m , E r r o r G l o b a l =
s i l e x _ l i b _ e l t . c o m p u t e _ s t r e s s _ s t r a i n _ e r r o r ( nodes , e l e m e n t s , [ Young , nu ] ,Q)
p r i n t ( " The g l o b a l e r r o r i s : " , E r r o r G l o b a l )
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #

XIV.3 Programme principal en Python

143

#
W r i t e r e s u l t s t o gmsh f o r m a t
# ########## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## # # ## # ## # # ## # # ## # # ## #
# d i s p l a c e m e n t w r i t t e n on 3 c o l u m n s :
d i s p = s c i p y . z e r o s ( ( nnodes , ndim ) )
d i s p [ range ( n n o d e s ) , 0 ] =Q[ l i s t ( range ( 0 , ndof , 3 ) ) ]
d i s p [ range ( n n o d e s ) , 1 ] =Q[ l i s t ( range ( 1 , ndof , 3 ) ) ]
d i s p [ range ( n n o d e s ) , 2 ] =Q[ l i s t ( range ( 2 , ndof , 3 ) ) ]
# e x t e r n a l l o a d w r i t t e n on 3 c o l u m n s :
l o a d = s c i p y . z e r o s ( ( nnodes , ndim ) )
l o a d [ range ( n n o d e s ) , 0 ] = F [ l i s t ( range ( 0 , ndof , 3 ) ) ]
l o a d [ range ( n n o d e s ) , 1 ] = F [ l i s t ( range ( 1 , ndof , 3 ) ) ]
l o a d [ range ( n n o d e s ) , 2 ] = F [ l i s t ( range ( 2 , ndof , 3 ) ) ]
i f f l a g _ w r i t e _ f i e l d s ==0:
f i e l d s _ t o _ w r i t e = [ [ d i s p , n o d a l , ndim , d i s p l a c e m e n t ] ,
[ SigmaElem [ range ( nelem ) , [ 6 ] ] , e l e m e n t a l , 1 , Sigma V .M. ] ,
[ SigmaNodes [ range ( n n o d e s ) , [ 6 ] ] , n o d a l , 1 , Smooth Sigma V .M. ] ,
[ ErrorElem , e l e m e n t a l , 1 , e r r o r ] ,
]
i f f l a g _ w r i t e _ f i e l d s ==1:
f i e l d s _ t o _ w r i t e = [ [ d i s p , n o d a l , ndim , d i s p l a c e m e n t ] ,
[ l o a d , n o d a l , ndim , F o r c e ] ,
[ SigmaElem [ range ( nelem ) , [ 0 ] ] , e l e m e n t a l , 1 , Sigma 11 ] ,
[ SigmaElem [ range ( nelem ) , [ 1 ] ] , e l e m e n t a l , 1 , Sigma 22 ] ,
[ SigmaElem [ range ( nelem ) , [ 2 ] ] , e l e m e n t a l , 1 , Sigma 33 ] ,
[ SigmaElem [ range ( nelem ) , [ 3 ] ] , e l e m e n t a l , 1 , Sigma 23 ] ,
[ SigmaElem [ range ( nelem ) , [ 4 ] ] , e l e m e n t a l , 1 , Sigma 13 ] ,
[ SigmaElem [ range ( nelem ) , [ 5 ] ] , e l e m e n t a l , 1 , Sigma 12 ] ,
[ SigmaElem [ range ( nelem ) , [ 6 ] ] , e l e m e n t a l , 1 , Sigma V .M. ] ,
[ SigmaNodes [ range ( n n o d e s ) , [ 0 ] ] , n o d a l , 1 , Smooth Sigma 11 ] ,
[ SigmaNodes [ range ( n n o d e s ) , [ 1 ] ] , n o d a l , 1 , Smooth Sigma 22 ] ,
[ SigmaNodes [ range ( n n o d e s ) , [ 2 ] ] , n o d a l , 1 , Smooth Sigma 33 ] ,
[ SigmaNodes [ range ( n n o d e s ) , [ 3 ] ] , n o d a l , 1 , Smooth Sigma 23 ] ,
[ SigmaNodes [ range ( n n o d e s ) , [ 4 ] ] , n o d a l , 1 , Smooth Sigma 13 ] ,
[ SigmaNodes [ range ( n n o d e s ) , [ 5 ] ] , n o d a l , 1 , Smooth Sigma 12 ] ,
[ SigmaNodes [ range ( n n o d e s ) , [ 6 ] ] , n o d a l , 1 , Smooth Sigma V .M. ] ,
[ E p s i l o n E l e m [ range ( nelem ) , [ 0 ] ] , e l e m e n t a l , 1 , E p s i l o n 11 ] ,
[ E p s i l o n E l e m [ range ( nelem ) , [ 1 ] ] , e l e m e n t a l , 1 , E p s i l o n 22 ] ,
[ E p s i l o n E l e m [ range ( nelem ) , [ 2 ] ] , e l e m e n t a l , 1 , E p s i l o n 33 ] ,
[ E p s i l o n E l e m [ range ( nelem ) , [ 3 ] ] / 2 . 0 , e l e m e n t a l , 1 , E p s i l o n 23 ] ,
[ E p s i l o n E l e m [ range ( nelem ) , [ 4 ] ] / 2 . 0 , e l e m e n t a l , 1 , E p s i l o n 13 ] ,
[ E p s i l o n E l e m [ range ( nelem ) , [ 5 ] ] / 2 . 0 , e l e m e n t a l , 1 , E p s i l o n 12 ] ,
[ E p s i l o n N o d e s [ range ( n n o d e s ) , [ 0 ] ] , n o d a l , 1 , Smooth E p s i l o n 11 ] ,
[ E p s i l o n N o d e s [ range ( n n o d e s ) , [ 1 ] ] , n o d a l , 1 , Smooth E p s i l o n 22 ] ,
[ E p s i l o n N o d e s [ range ( n n o d e s ) , [ 2 ] ] , n o d a l , 1 , Smooth E p s i l o n 33 ] ,
[ E p s i l o n N o d e s [ range ( n n o d e s ) , [ 3 ] ] / 2 . 0 , n o d a l , 1 , Smooth E p s i l o n 23 ] ,
[ E p s i l o n N o d e s [ range ( n n o d e s ) , [ 4 ] ] / 2 . 0 , n o d a l , 1 , Smooth E p s i l o n 13 ] ,
[ E p s i l o n N o d e s [ range ( n n o d e s ) , [ 5 ] ] / 2 . 0 , n o d a l , 1 , Smooth E p s i l o n 12 ] ,
[ ErrorElem , e l e m e n t a l , 1 , e r r o r ] ,
]
# w r i t e t h e mesh and t h e r e s u l t s i n a gmshf o r m a t f i l e
s i l e x _ l i b _ g m s h . W r i t e R e s u l t s ( R e s u l t s F i l e N a m e , nodes , e l e m e n t s , e l t y p e , f i e l d s _ t o _ w r i t e )
p r i n t ( " END " )

144

Code SILEX

XIV.4 Gmsh : un logiciel libre de maillage et de visualisation


Le logiciel de maillage et de visualisation utilis par SILEX est Gmsh, cest un logiciel libre et
multi-plateforme. Ce logiciel est trs complet, les quelques fonctions que lon utilise sont :
crer des gomtries,
lire des fichiers CAO (au format step) provenant dautres logiciels de CAO,
raliser un maillage,
visualiser des rsultats sur un maillage.
Linstallation se fait via synaptic pour Ubuntu, et en tlchargement via le site web officiel
pour windows et Mac OS : http://geuz.org/gmsh/. Le site web contient des tutoriaux, des
documentations et dautres informations utiles.
Exercice XIV.1 Crer le fichier texte plaque-trouee.geo suivant, puis effectuer un maillage de triangles 3
nuds (h est la taille des lments).
h = 10;
Point(1) = {0, 50, 0, h};
Point(2) = {0, 200, 0, h};
Point(3) = {50, 0, 0, h};
Point(4) = {100, 0, 0, h};
Point(5) = {100, 200, 0, h};
Point(6) = {0, 0, 0};
Line(1) = {1, 2};
Line(2) = {3, 4};
Line(3) = {4, 5};
Line(4) = {5, 2};
Circle(5) = {3, 6, 1};
Line Loop(6) = {3, 4, -1, -5, 2};

XIV.5 Un exemple de calcul men avec SILEX


XIV.5.1 Gomtrie et conditions aux limites
La gomtrie du piston est donne sur la figure XIV.2 ainsi que les conditions aux limites permettant de tenir compte des deux symtries. Le matriau a pour module dYoung 200000 MPa
et pour coefficient de Poisson 0,3. La face suprieure est soumise une pression de 10 MPa. La
gomtrie au format step est disponible sur le lien suivant :
http://antoinelegay.free.fr/silex/silex.html.
Les tests ont t effectus sur une machine de 16 Go avec un processeur possdant 4 curs
cadencs chacun 3.4 GHz mais un seul processeur a t utilis.

XIV.5.2 Analyse des rsultats


Le deux types dlments ttradres 4 et 10 nuds sont tests. Les diffrents maillages utiliss
pour les ttradres 4 nuds sont prsents sur la figure XIV.3.
La figure XIV.4 montre lvolution du champ de dplacements pour les ttradres 4 nuds.
Les figures XIV.5 et XIV.6 prsentent lvolution des contraintes de Von Mises dans les lments

145

XIV.5 Un exemple de calcul men avec SILEX

pression applique

blocage dans la direction


y

blocage dans la direction


x

115 mm

blocage dans la direction


z

Figure XIV.2 Gomtrie et conditions aux limites pour le calcul du piston

et lisses aux nuds du maillage pour les ttradres 4 nuds. Les contributions des lments
lerreur globale sont montres sur la figure XIV.7 pour les ttradres 4 nuds.
Le dplacement convergence vers une valeur maximale de 0,0245 mm (figure XIV.8(a)). Des
oscillations sont observes dans ltude de convergence de la contrainte maximale de Von Mises
dans les lments (figure XIV.8(b)) : les contraintes tant constantes dans les lments ttradres
4 nuds, elles sont sensibles la qualit locale du maillage. La contrainte maximale de Von Mises
lisse converge vers une valeur comprise entre 80 MPa et 85 MPa (figure XIV.8(b)). Lvolution
de lerreur globale est prsente sur la figure XIV.9(a) :
pour les ttradres 4 nuds, la pente est de 0,56 alors que la pente thorique optimale est
de 1 ;
pour les ttradres 10 nuds, la pente est de 1,2 alors que la pente thorique optimale est
de 2 ;
La figure XIV.9(b) montre lvolution du temps de calcul en fonction du nombre de nuds du
maillage pour les deux types dlments. Ce temps est limit ici au temps de rsolution du systme
pour trouver la solution en dplacement : le temps rel est plus grand en prenant en compte la
construction du maillage, les tapes de lecture et dcriture ainsi que le calcul des contraintes et
de lerreur. nombre de nuds gal, le temps de calcul est sensiblement le mme pour les deux
types dlments. Lvolution de ce temps est une droite en fonction du nombre de nuds dans un
diagramme log-log, il volue donc selon une loi puissance avec le nombre dinconnues rsoudre.

XIV.5.3 Conclusions de ltude


Ce problme assez svre en terme de concentration de contrainte montre la difficult des lments
ttradres 4 nuds converger rapidement vers la solution. Les ttradres 10 nuds convergent
plus rapidement avec des temps de calculs quivalents.
Cette tude montre les possibilits du code SILEX qui peut traiter des problmes relativement
important en terme de nombre de degrs de libert, en fonction de lordinateur disposition.

146

Code SILEX

(a) 1011 nuds, 3622 lments (b) 3065 nuds, 11891 l- (c) 35021 nuds, 154526 l- (d) 161639 nuds, 865338 lments
ments
ments

Figure XIV.3 Maillages de ttradres 4 nuds utiliss

(a) Maillage a, Dplacement (b) Maillage b, Dplacement (c) Maillage c, Dplacement (d) Maillage d, Dplacement
maximal de 0,0207 mm
maximal de 0,0224 mm
maximal de 0,0241 mm
maximal de 0,0244 mm

Figure XIV.4 volution du champ de dplacement (ttradres 4 nuds)

XIV.5 Un exemple de calcul men avec SILEX

147

(a) Maillage a, Contrainte (b) Maillage b, Contrainte (c) Maillage c, Contrainte (d) Maillage d, Contrainte
maximale de 86,8 MPa
maximale de 81,5 MPa
maximale de 107 MPa
maximale de 126 MPa

Figure XIV.5 volution de la contrainte de Von Mises dans les lments (ttradres 4 nuds)

(a) Maillage a, Contrainte lis- (b) Maillage b, Contrainte lis- (c) Maillage c, Contrainte lis- (d) Maillage d, Contrainte lisse maximale de 53,9 MPa
se maximale de 56,9 MPa
se maximale de 76,7 MPa
se maximale de 83,3 MPa

Figure XIV.6 volution de la contrainte lisse de Von Mises (ttradres 4 nuds)

148

Code SILEX

(a) Maillage a, erreur globale (b) Maillage b, erreur globale (c) Maillage c, erreur globale (d) Maillage d, erreur globale
de 30,4%
de 23,4%
de 12,4%
de 8,5%

Figure XIV.7 volution de la contribution des lments lerreur globale (ttradres 4 nuds)

(a) volution du dplacement maximal

(b) volution de la contrainte maximale de Von Mises

Figure XIV.8 tude de convergence en contrainte et en dplacement

(a) volution de lerreur globale

(b) volution du temps de rsolution du systme

Figure XIV.9 tude de convergence (ttradres 4 nuds)