Sie sind auf Seite 1von 156

Calcul des structures par

lments finis
Antoine Legay
Cnam-Paris
2016-2017
Table des matires

I Introduction 1
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 15
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. 29


IV.1 Introduction 29
IV.2 Fonction une variable 29
IV.3 Fonction deux variables 32
IV.4 Fonction vectorielle deux variables 35
IV.5 Fonction trois variables 35
IV.6 Fonction vectorielle trois variables 37

V Construction de la base E.F. 39


V.1 Construction des fonctions de forme dans un lment 39
V.1.1 Introduction 39
V.1.2 Fonctions de forme dans un lment unidimensionnel 39
V.1.3 Fonctions de forme dans un lment du plan 41
V.1.4 Fonctions de forme dans un lment tridimensionnel 44
V.2 Table de connectivit et coordonnes des nuds 45

VI Problme discrtis 47
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 criture matricielle du problme discrtis 49
VI.3 Rsolution du problme discrtis 50
VI.3.1 Sparation des quations 50
VI.3.2 Rsolution en dplacements 51
VI.3.3 Ractions aux appuis 51
VI.3.4 Systme matriciel complet 52
VI.3.5 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 Ncessit dun lment de rfrence 57
VII.1.2 Gomtrie de llment de rfrence 58
VII.1.3 Fonctions de forme dun lment de rfrence 2 variables 58
VII.1.4 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 hexadres 73
VIII.4.2 Cas des lments ttradres 74
VIII.5 Critres de qualit du maillage 74

IX Analyse des rsultats E.F. 77


IX.1 Post-traitement, lissage des contraintes 77
IX.1.1 Proprits de la solution lments finis 77
IX.1.2 Contrainte lisse 77
IX.1.3 Implmentation et rsolution 79
IX.1.4 Application au triangle 3 nuds 80
IX.2 Estimateur derreur 81
IX.2.1 Rappel sur lerreur en dplacement 81
IX.2.2 Estimateur priori 81
IX.2.3 Estimateur posteriori 82
IX.2.4 Maillage adaptatif 84

X lment fini de plaque 85


X.1 Modle de plaque 85
X.1.1 Modle gomtrique 85
X.1.2 Hypothse cinmatique 86
X.1.3 criture de la relation dformations-dplacements 87
X.1.4 Relation de comportement entre les dformations et les contraintes 87
X.1.5 nergie de dformation 88
X.1.6 Hypothses sur les dformations transverses 89
iv

X.2 lment fini de type Reissner-Mindlin 90


X.2.1 Espace discrtis 90
X.2.2 Oprateur gradient discrtis 90
X.2.3 Matrice de rigidit 92
X.2.4 Forces extrieures gnralises 92
X.3 Assemblage de plaques dans lespace 93

XI lments finis de barre et poutre 95


XI.1 Modle de poutre 95
XI.1.1 Modle gomtrique 95
XI.1.2 Hypothses cinmatiques 96
XI.1.3 criture de la relation dformations-dplacement 96
XI.1.4 Relation de comportement 97
XI.1.5 nergie de dformation 97
XI.1.6 Hypothses sur les dformations transverses 98
XI.2 lment fini de traction-compression : lment barre 99
XI.2.1 Espace discrtis 99
XI.2.2 Oprateur gradient discrtis 99
XI.2.3 Matrice de rigidit 99
XI.2.4 Calcul de treillis de barres 100
XI.3 lment fini de flexion de type Euler-Bernoulli 102
XI.3.1 Espace discrtis 102
XI.3.2 Oprateur gradient discrtis 104
XI.3.3 Matrice de rigidit 104

XII Dcomposition de domaine 105


XII.1 Objectifs 105
XII.2 Mthode de Schur primale 105
XII.2.1 Principe 105
XII.2.2 Stratgie de rsolution globale 108
XII.2.3 Gnralisation plusieurs sous-structures 108
XII.2.4 Calcul du complment de Schur 109
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 113


XIII.1 Langage de programmation 113
XIII.2 Le langage Python 114
XIII.2.1 Les bases du langage Python et son installation 114
XIII.2.2 Les conditions et boucles en Python 115
XIII.2.3 Les fonctions en Python 117
XIII.2.4 Le calcul matriciel en Python 118
XIII.3 Le langage Fortran 120
XIII.3.1 Les bases du langage Fortran et son installation 120
XIII.3.2 Les conditions et boucles en Fortran 122
XIII.3.3 Les fonctions en Fortran 122
XIII.3.4 Le calcul matriciel en Fortran 126
XIII.4 Utilisation de routines Fortran dans un programme en Python 126
v

XIV Code SILEX 129


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
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 sisme 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 ?
2 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 dimension-
nement.

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 matrises ;
Des efforts appliqus, parfois assez complexes.
Lors de la phase de conception, la solution de ce problme nest pas accessible. Une fois la struc-
ture 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 3

111
000 111
000
000
111 000
111
000
111 2 variables 000
111 3 variables
000
111 000
111
000
111 000
111
1 variable 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
000
111 000
111
000
111 000
111
000
111 000
111
000
111 000
111
000
111 000
111
a) poutre b) coque 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 mca-


nique
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,
4 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 suffisamment rguliers dfinis de vers
R : 3
(

v rgulier : R3 R3
)
V=
M 7

v (M )
La notion de fonction suffisamment rgulire nest pas dtaille ici, cela fait appel des
proprits mathmatiques des fonctions qui permettent de les driver, de les intgrer, et plus parti-
culirement 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 suffisamment r-
gulire 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 aisment 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 +a

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 5

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 combi-
naison 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 vecto-
riel.
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 :


         
1 0 0 1 0 1 1 1
b= ; ; ;
0 1 1 0 0 1 0 0

4. crire cette famille dans la base canonique.


5. Montrer que cette famille est une base.

On donne llment de M2,2 (R) suivant :


 
1 2
A=
3 4

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


1 1 1 0
;
0 1 1 1
Un exemple de famille lie :        
1 1 1 0 2 1
; ;
0 1 1 1 1 2
car la troisime matrice est la somme des deux premires.
La base canonique est
         
1 0 0 0 0 1 0 0
e= ; ; ;
0 0 0 1 0 0 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 :

1 0 0 1
1 0 1 0
b =
; ; ;
0 1 1 1
0 (e) 1 (e) 0 (e) 0 (e)
La matrice A scrit dans la base canonique comme :
       
1 0 0 0 0 1 0 0
A=1 +4 +2 +3
0 0 0 1 0 0 1 0
soit aussi
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 :

1 1 0 0 1
4 1 0 1 0
= 1 +2 +3 +4
2 0 1 1 1
3 (e) 0 (e) 1 (e) 0 (e) 0 (e)
Soit le systme linaire dquations suivant rsoudre :

1 0 0 1 1 1
1 0 1 0 2 4
=
0 1 1 1 3 2
0 1 0 0 4 3
La solution est :
1 = 3 ; 2 = 3 ; 3 = 1 ; = 4 = 2
Donc A dans la base b scrit
3
3
A=
1

2 (b)
I.4 Vers le modle lments finis 7

I.4 Vers le modle lments finis


La dmarche de dimensionnement consiste dans un premier temps construire un modle math-
matique (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 vec-


toriel 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 photolastique,...) ;

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 matrise
et justifie au mieux par le concepteur.
8 Introduction

Pb. Modle Modle


rel mcanique lments
mathmatique finis

Solution Solution Solution


relle de E.F.
rfrence
Erreur Erreur
de de
modle discrtisation
Erreur
de mesure
Erreur
Mesures 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 ap-
pele lerreur de discrtisation (Fig. I.3). Dans le cas dun calcul de statique linaire, cette erreur
peut tre estime ; elle doit donc tre parfaitement matrise par le concepteur. Les ordinateurs
actuels permettent de faire tendre cette erreur vers une erreur largement infrieure celle de ler-
reur 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 9

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

1 2

x
Avant dformation :
u1 u2
O
Aprs dformation :
F1

x F2

x

Figure I.5 lment barre 2 noeuds.

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

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 u1 x , u2 x .

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


n o n o
KO = ext. 2 N = F2

ou bien
n o n o
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

ES ES
N= l N = (u2 u1 )
l l
10 Introduction

En utilisant les rsultats prcdents on a alors


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

La matrice " #
ES 1 1
k=
l 1 1
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 1 1 u1 F1
=
l 1 1 u2 F2

qui devient ici     


ES 1 1 0 F1
=
l 1 1 u2 F
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
Fl
u2 =
ES
et
F1 = F
Leffort normal est dtermin par
ES ES F l
N= (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 2 3
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
1

x et u
2

x (u < u < u si les deux barres sont en traction).
3 1 2 3
Les quilibres des nuds scrivent :
quilibre du nud 1 (mthode des nuds)

F1 + N1 = 0 N1 = F1
I.6 lment fini de barre pour le calcul des treillis 11

E1 , S1 E2 , S2

u1

x u2

x u3

x

tat dform

1 I 2 II 3

x 1 N1
F1

x

N1

x I N1

x

x 2 N2
N1

x
F2

x


N2 x II N2

x

x 3 F3
N2

x

Figure I.6 Deux barres en traction.

quilibre du nud 2
F2 N 1 + N 2 = 0 N 1 N 2 = F2

quilibre du nud 3
F3 N2 = 0 N2 = F3

Pour chaque lment, on peut relier leffort normal lallongment de la barre :

lment I :
E1 S1
N1 = (u2 u1 )
L1
lment II :
E2 S2
N2 = (u3 u2 )
L2
En remplaant dans les expressions des quilibres des nuds, on a les trois quations sui-
vantes :
E 1 S1
(u2 u1 ) = F1
L1
E1 S1 E2 S2
(u2 u1 ) (u3 u2 ) = F2
L1 L2
E 2 S2
(u3 u2 ) = F3
L2
12 Introduction

En notant k1 = E1 S1 /L1 et k2 = E2 S2 /L2 , on a alors le systme matriciel suivant :



k1 k1 0 u1 F1

k1 k2 + k1 k2 u2 = F2

0 k2 k2 u3 F3
| {z } | {z } | {z }
K Q F

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 :

u1 u2 u2 u3
" # " #
k1 = k1 k1 u1 et k2 = k2 k2 u2 .
k1 k1 u2 k2 k2 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 0 u1
K =
k1 k1 + k2 k2 u2 .

0 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 F1 inconnu, raction lencastrement

u2 inconnu
Q= F2 = 0, connu
F =

u3 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 0 0 F1

u2 = 0
k1 k2 + k1 k2

0 k2 k2 u3 F
I.6 lment fini de barre pour le calcul des treillis 13



Y
u2Y

x
2

u2X
u1Y


X
1
u1X

Figure I.7 lment barre dans une base globale.

Une fois toutes les inconnus trouves, on peut calculer les efforts normaux dans chaque barre :
E 1 S1
N1 = (u2 u1 )
l1 |{z}
=0
et
E2 S2
N2 = (u3 u2 ).
l2

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 .


En notant uX
1 et u1 les dplacements suivant X et Y du nud 1 de la barre dans le repre global,
Y

et en appliquant la formule prcdente au nud 1, on a

u1 = uX Y
1 cos + u1 sin .

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

u2 = uX Y
2 cos + u2 sin .

Ceci peut scrire sous la forme matricielle suivante



uX
" # " # 1
u1 cos sin 0 0 uY
1
= X
u2 0 0 cos sin u
2
| {z }
=T uY2
| {z }
=Q
14 Introduction

soit
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.
Il est possible dcrire les mmes relations pour les forces extrieures agissant aux nuds de
llment :







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

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 0
" #
FY sin 0 F
1 1
X =
F 0 cos F2
2
F2Y 0 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 ES 1 1 u1
=
F2 l 1 1 u2
devient en fonction des dplacements et des forces dans le repre global

FX cos 0 uX
1 " #" # 1
FY sin 0 ES 1 1 cos sin 0 0 uY
1 1
X = X
F
2 0 cos
l 1 1 0 0 cos sin u
2
F2Y 0 sin uY2
Tous calculs faits, lquilibre de la barre en deux dimensions scrit

cos2 cos sin cos2 cos sin uX
1 F1X

ES
cos sin sin2 cos sin sin2 uY
1
FY
1


X = X
l
cos2 cos sin cos2 cos sin u
2
F
2


cos sin sin2 cos sin sin2 uY2 F2Y
| {z }
=kg

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


Leffort normal est dtermin par
ES ES  X 
N= (u2 u1 ) = (u2 uX Y Y
1 ) cos + (u2 u1 ) sin
l l
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 u , complmentaire F . Les deux surfaces
u et F vrifient :
= u F et u F = .
Le problme de mcanique est de dterminer les deux champs inconnus de dplacements u et



de contraintes symtrique ( = ) sous leffet des forces appliques F et f qui vrifient :
T d

1. Les conditions cinmatiques :




u =

u d , M u

2. Les quations dquilibre :




div + f = 0 , M

u F



ud

f

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

1 
(

u)= Grad(

u ) + GradT (

u) .
2

Pour un matriau isotrope, les coefficients dlasticit se rduisent deux constantes indpen-
dantes (, ) 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 inclus 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 :


Z Z




n dS + f d = 0

soit en utilisant le thorme de la divergence :


Z Z



div d + f d = 0

ou encore Z



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.
II.2 Champ de dplacement cinmatiquement admissible 17

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 suffisamment rguliers dfinis de
vers R3 est : ( v rgulier : R3
)
V=
M 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 1,
e 2,

e 3 ) pour reprsenter


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

e 2 ,

e 3)
1,

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


v (M ) =
X
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 dfinit lensemble U des champs de dplacements cinmatiquement admissibles comme :
n o
U=

u V /

u (M ) =

u d M 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
On pose lensemble C des champs de contraintes suffisamment rguliers dfinis de vers
sym.
M3,3 (R) (ensemble des matrices relles 3 3 symtriques) :
( )
rgulier : M3,3 (R)
C=
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.
On peut utiliser une base de M3,3 (R), par exemple la base canonique eij , pour reprsenter
un lment de C. La reprsentation matricielle de dans la base canonique de R3 est

11 12 13

=
21 22 23

31 32 33 (
e

e 2 ,

e 3)
1,

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

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 +22 0 1 0 +33 0 0 0 +23 0 0 1 +32 0 0 0
= 11
0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
| {z } | {z } | {z } | {z } | {z }
=e11 =e22 =e33 =e23 =e32

0 0 1 0 0 0 0 1 0 0 0 0

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


0 0 0 1 0 0 0 0 0 0 0 0
| {z } | {z } | {z } | {z }
=e13 =e31 =e12 =e21

Soit aussi en notations indicielles :


= ij eij
Loprateur des contraintes tant symtrique, on peut crire partir de seulement 6 compo-
santes :
1 6 5

=
6 2 4

5 4 3 (
e

e 2 ,

e 3)
1,

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 } | {z } | {z }
=e1 =e2 =e3

0 0 0 0 0 1 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 } | {z } | {z }
=e4 =e5 =e6

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

= i ei
II.3 Champ de contrainte statiquement admissible 19

Finalement, on peut noter comme



1


2


3
=



4


5

6 (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 1

22 2


33 3
=

=



23 4


13 5
12 6

Exercice II.2 crire 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,
11 12 0
= 12 22 0
0 0 0 (


e 1, e 2, e 3)

soit aussi
1 0 0 0 0 0 0 1 0
= 11 0 0 0 + 22 0 1 0 + 12 1 0 0
0 0 0 0 0 0 0 0 0
En criture de Voigt, loprateur des contraintes devient

11
= 22
12

Exercice II.3 crire loprateur des contraintes en notations de Voigt dans le cas dun problme axisymtrique. 

II.3.2 Espace des champs de contraintes statiquement admissibles


On dfinit 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 o
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
1 
(

u)= Grad(

u ) + GradT (

u)
2
La solution du problme crit en dplacement devient :

Le champ de dplacement

u U est solution du problme si et seulement si C(

u)S 

Exercice II.4 tablir 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

N (x)
u (x) =
ES
o E est le module dYoung et S est laire de la section.
En dduire lcriture de la solution du problme. 
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 dfini par
n o
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 n
o
U0 =

u V /

u (M ) = 0 M u


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 ij nj = Fid M F

Soit Z Z
ij,j ui d + fi ui d = 0 et ij nj = Fid M F

En intgrant par partie, on a
Z Z Z
(ij ui ),j d ij ui,j d + fi ui d = 0 et ij nj = Fid M F

puis, en utilisant le thorme de Gauss


Z Z Z
+ 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
F
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 :
Z Z Z
ij ui,j d + Fid ui dS + fi ui d = 0 .
F

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




ij ui,j = ij ij (u).
Preuve
   
1 1
ij ui,j = ij ui,j + ij ui,j = ij ui,j + ji ui,j
2 2
car est symtrique (ij = ji ),
 
1
ij ui,j = ij ui,j + ij uj,i
2
car on peut changer i et j dans le deuxime produit (indices muets),
 

1
ij ui,j = ij ui,j + uj,i = ij ij (u)
2
Finalement, S est quivalent
Z Z Z



u U0 , ij ij (u) d Fid ui dS fi ui d = 0
F

Lensemble S scrit sous forme variationnelle :


Z Z Z
n

o
S = C | u U0 , ij ij (u) d Fid ui dS fi ui d = 0
F
III.1 criture variationnelle de lensemble des champs de contraintes admissibles 23

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

11 1

22 2


33 3
=

=



23 4


13 5
12 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

1 0 0 0 0 0 11


0 1 0 0 0 0
22



0 0 1 0 0 0
33

ij ij = [ 11 22 33 23 13 12 ]



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 dforma-
tions en notations de Voigt sous la forme :

11 1


22 2


33 3
=

=



223 1


213
2
212 3

o 1 , 2 et 3 sont les distorsions angulaires.


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

1 0 0 0 0 0 0 0 0 0 0 0
1

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

2


0 0 0 0 0 0 0 0 1 0 12 0

0 0 21 0 1
2 0
1
0 0 0 + 212 2
+213 0 0

1
2 0 0 0 0 0
On a alors :
ij ij = T = T
24 criture variationnelle

Lensemble S crit avec la notation de Voigt est


 Z Z Z 


S = C / u U0 , (u)T d uT F d dS uT f d = 0
F

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 + 2 0 0 0 11


22
+ 2 0 0 0
22


33 + 2 0 0 0 33
=

=





23 0 0 0 0 0 223


13
0 0 0 0 0

213

12 0 0 0 0 0 212
| {z }
=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 0 11
E
= 22 = 2
1 0 22 = C
1 1
12 0 0 2
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
1 
(

u)= Grad(

u ) + GradT (

u) .
2
Cet oprateur a pour expression dans un repre cartsien


11 x 0 0

22 0 0
y
ux



33 0 0 z

( u ) =

=

uy = Du .

223 0 z y
uz
213 0
z x

212 y x 0
| {z }
=D
III.2 Formulation variationnelle en dplacement 25

Exercice III.2 Montrer que loprateur diffrentiel D reliant les dformations au dplacement dans le cas dun
problme plan vaut :
11 x
0  
ux
= 22 = 0 y = Du
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


 
u 1 u u
r r
v z


 


Grad( u ) = v 1 v
+u v
r r z


 
w 1 w w
r r z
,e

(er , k )

Montrer que loprateur gradient symtris vaut :




r
0 0

1 1


r r
0
rr





0 0 z
u
zz
= = v = Du
2rz


z
0 r
w
2z



2r
1


0 z r



1
r
r1 +
r
0

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

rr 1

r 0  
u
= =
zz
= Du .
0

w
2rz z


z r

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 uT F d dS uT f d = 0
F

ou bien Z Z Z
(Du)T C Du d uT F d dS uT f d = 0
F
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

N (x)
u (x) =
ES
o E est le module dYoung et S est laire de la section. 

III.3 quivalence nergtique


On dfinit les quantits suivantes :
Le travail des efforts extrieurs W dans un champ de dplacement

v V :
Z Z Z
W(

v)= vi fi d + vi Fid dS + vi Ri dS
F u

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

u)= ui fi d + ui Fid dS + udi Ri dS
F u

Pour un champ de dplacement cinmatiquement admissible zro



v U0 on a :
Z Z
W(

v)= vi fi d + vi Fid dS
F

Lnergie de dformation ED dun champ de dplacement



u V:
Z Z
1 1
ED (

u)= Cijkl kl (

u ) ij (

u ) d = T (

u )C(

u ) d
2 2

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 Z Z
T (u)C (u) d uT F d dS uT f d = 0
F
III.4 Formes bilinaire et linaire, norme en nergie 27




Preuve On suppose que
u est solution du problme. Lorsque

u varie dune petite variation u avec u U0 ,
lnergie de dformation varie de ED :
Z

1


ED (

u + u) = Cijkl ij (

u + u) kl (

u + u) d
2
Z Z
1 1

= Cijkl ij (

u ) kl (

u ) d + Cijkl ij (u) kl (

u ) d
2
2
Z Z
1 1

+ Cijkl ij (

u ) kl (

u ) d + Cijkl ij (u) kl (

u ) d
2
2
| {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
Z Z

1

ED (

u + u) = Cijkl ij (

u ) kl (

u ) d + Cijkl ij (

u ) kl (u) d
2
| {z } | {z }
=ED (

u) =ED



ED (

u + u) = ED (

u ) + ED
do par identification on a
Z


ED = Cijkl ij (

u ) kl (u) d




Lorsque

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


W(

u + u) = ui fi d + ui Fid dS + udi Ri dS + ui fi d + ui Fid dS
F u F
| {z } | {z }
=W(

u) =W



W(

u + u) = W(

u ) + W
avec Z Z
W = ui Fid dS + ui fi d
F

Or la formulation variationnelle en dplacement implique que


Z Z Z



u U0 , Cijkl ij (

u ) kl (u) d ui Fid dS ui fi d = 0
F

cest dire


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 Z





v 7 L(

v)=

v f d +

v F d dS +

v R dS
F u

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: V V R Z





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

u )C(

v ) d

Lnergie de dformation du champ de dplacement



u vaut :
1
E D (

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
a(
u ,

v ) = a(
u ,

v ) car (

u ) = (
u)
a(

u +
w,
v ) = a(

u ,
v ) + a(

w,v ) car (

u +

w ) = (

u ) + (

w)
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 entrane que u est un dplacement de solide rigide (car lnergie de dfor-
mation dun solide rigide est nulle) ou bien entrane 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 :


v U0 Z Z Z
T



d

( v )C ( u ) d v F dS
v f d = 0
F
Cela peut scrire laide des formes bilinaire et linaire introduites comme :



u V est solution du problme
Thorme III.2



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 dplace-
ments de V associe un scalaire de R, on construit la norme au sens de lnergie :
  12
k

u kE = a(

u ,

u)

On remarque que
Z
1 1 1 2
E D (

u)= T (
u ) d = a(
u )C(
u ,
u)= k
u kE
2 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 rgulier : [A, B] R
V=
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 indpen-
dantes, 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 linter-
valle [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.

A B

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

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B
1

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B
1

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B
1

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B
1

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B

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


IV.2 Fonction une variable 31

bc bc bc bc bc
x1 = A x2 x3 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 } | {z } | {z } | {z }
=0 =0 =1 =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 :



u1

h

u2

u = ..

.

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 :

u1


u2

U = ..

.

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 asso-
cie u1 = 1, 5 ; u2 = 0, 5 ; u3 = 1 ; u4 = 1 ; u5 = 2 ; u6 = 0.
1

bc bc bc bc bc bc
x1 = A x6 = B


IV.3 Fonction deux variables


On considre lensemble des fonctions deux variables dfinies dun domaine du plan vers R :
( )
v rgulier : R
V=
(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 indpen-
dantes, 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
IV.3 Fonction deux variables 33

u(x, y)

u(x, y)

y

x
(x, y)

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 construc-
tion 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 3 1
6
1
y
1
0

x 7
4 5
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 } | {z } | {z } | {z }
=0 =0 =1 =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 :



u1


h
u2

u = ..

.

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 :

u1


u2

U = ..

.

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.

2 4
y 1

x
3 5

IV.4 Fonction vectorielle deux variables 35

IV.4 Fonction vectorielle deux variables


On considre lensemble des fonctions vectorielles deux variables dfinies dun domaine du
plan vers R2 :
(
)
v rgulier : R2
V=
(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 i (x, y)
e 1 , i (x, y)

e 2 V o i varie de 1 n. Lespace
vectoriel V h est alors engendr par ces fonctions :

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 " #
1 0 2 0 . . . n 0
=
0 1 0 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 :
u1


v1

..
U =
.



un

vn

IV.5 Fonction trois variables


On considre lensemble des fonctions trois variables dfinies dun domaine de lespace vers
R: ( )
v rgulier : R
V=
(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 dfini 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 :

u1

u2
uh =

..

.

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 :

u1


u2

U = ..

.

un
IV.6 Fonction vectorielle trois variables 37

IV.6 Fonction vectorielle trois variables


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

v rgulier : R3
)
V=
(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 i (x, y, z)

e 1 , i (x, y, z)

e 2 , i (x, y, z)

e 3 V o i varie de 1
n. Lespace vectoriel V h est alors engendr par ces fonctions :

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


1 n


2 n
e } 3

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

e + v (x, y, z)
1
e + w (x, y, z)
n n 2

e
n n 3

ou encore
uh = U

avec
1 0 0 . . . n 0 0

=
0 1 0 . . . 0 n 0
0 0 1 . . . 0 0 n
o est appele la matrice des fonctions de forme et U est la reprsentation de uh dans la base
des fonctions de forme :
u1

v
1

w1

.
..
U =


u
n

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.
( )
v rgulier : e R
Ve =
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.

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B
1

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B
1

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B
1

bc bc bc bc bc
x1 = A x2 x3 x4 x5 = B
1

bc bc bc bc bc
x1 = A x2 x3 x4 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
concident 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 poly-
nomiale contenant 2 termes est [ 1 x ] : On peut alors r-crire Veh comme un espace engendr par
V.1 Construction des fonctions de forme dans un lment 41

1
1 2 2 3 3 4 4 5

bc bc bc bc bc bc bc bc
x1 = A x2 x2 x3 x3 x4 x4 x5 = B

Figure V.2 Fonctions de base pour chaque lment.


1
a b

bc bc
a b

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 polynomiale [ 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 (x) 1
=
a b b (x) x

ce qui donne le rsultat :

xb bx xa xa
a (x) = = 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 :

x x
a (x ) = 1 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
x
a (x ) = 1 l
x
b (x ) = l

bc bc
x
0 l

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

Aa =

yb Ab =
b
M


e2

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.


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

c
1
a
1 b
c c 0 c
1
0
a a 0 a
b b b
Figure V.6 Fonctions de forme du triangle 3 nuds.

Ce systme de trois quations trois inconnues scrit :



1 1 1 a (x, y) 1

b (x, y) = x
xa xb xc

ya yb yc c (x, y) y

On peut rsoudre ce systme par la mthode de Cramer, il faut alors calculer les quantits sui-
vantes :
1 1 1 1 1 1

2A = det
xa xb xc
2Aa = det x x b xc

ya yb yc y y b yc

1 1 1 1 1 1

2Ab = det
xa x x c
2Ac = det
xa xb x

ya y y c ya yb y

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 :
Aa (x, y) Ab (x, y) Ac (x, y)
a (x, y) = b (x, y) = c (x, y) =
A A 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.

h
x
a b
h 
44 Construction de la base E.F.



e3
c
za
a

ya

e2
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 pa-
vage 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 :
1 1 1 1 a (x, y, z) 1

x xb xc xd
b (x, y, z)
x
a
=
ya yb yc yd
c (x, y, z)
y

za zb zc zd d (x, y, z) z
La solution de ce systme est
1
i (x, y, z) = (i + i x + i y + i z)
6v
avec les coefficients calculs comme les dterminants suivants :
xj xk xl 1 1 1
p+1 p
i = (1) yj yk yl i = (1) yj yk yl
zj zk zl zj zk zl
V.2 Table de connectivit et coordonnes des nuds 45

i j k l p i j k l p i j k l p i j k l p
a b c d 1 b a c d 0 c a b d 1 d a b c 0

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

2 3
1
1 4

2 5
3
4 7
y 6
5
x
Figure V.8 Exemple de maillage.

1 1 1 1 1 1
p+1 p
i = (1) xj xk xl i = (1) xj xk xl
zj zk zl 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 1 1 1
1 xa xb xc xd
v=
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.
laide dune chelle de couleur, dessiner les 4 fonctions de forme.


e3

h b


e2
d
h
h a

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 connec-
tivit 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 a b c
1 1 2 4
2 4 5 2
3 6 2 5
4 3 2 6
5 3 6 7

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 x y
1 x1 y1
2 x2 y2
3 x3 y3
4 x4 y4
5 x5 y5
6 x6 y6
7 x7 y7

Les algorithmes de construction dun maillage partir dune dfinition gomtrique numrique
de la pice (CAO) ne sont pas dcrits dans ce cours.

Exercice V.3 Tracer le maillage constitu de triangles associ ces coordonnes et cette connectivit :

Numro Coord. Coord.


Numro Nud Nud Nud du Nud x y
dlment a b c 1 0.0 0.0
1 1 4 3 2 1.0 0.0 

2 1 2 4 3 0.0 1.0
3 2 5 4 4 1.0 1.0
5 2.0 1.0
VI Problme discrtis

VI.1 Dfinition de lerreur de discrtisation


On dfinit 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 dfinit 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
V V
U0 U0 = U



0 0
U

Vh U0h Uh Vh 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 inclus 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



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

Finalement, en remplaant dans lquation prcdente, on a :






v h U0h , a(

v h,

u h ) = L(v h )

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





v h U0h , T (

v h )C (

u h ) d =

v h F d dS +

v h f d
F
VI.2 criture du problme discrtis 49

Vh


e


u ex



uh

Figure VI.2 Lerreur est orthogonale lespace V h .

VI.2.3 criture 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 :



uh (M )

uh (M ) = h
v (M )
= U
wh (M ) (

e 1 ,

e 2 ,

e 3)

avec
..
.

. . . i 0 0 ... ui


et U =

=
... 0 i 0 ... vi

... 0 0 i ... w
i
.
..

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




x 0 0

0 0
y

0 0 z

D=



0 z y

0
z x

y x 0
50 Problme discrtis

Donc loprateur B devient


i

... x 0 0 ...
i
... 0 0 ...
y
i
... 0 0 z ...
B = D =
i i


... 0 z y ...

... i i
z 0 x ...

i i
... y x 0 ...

Le problme discrtis est alors de trouver



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


v h U0h , ou de faon quivalente V U0h , on ait
Z Z Z
V T B T CBU d = V T T F d dS + V T T f d
F

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 Z
K= B T CB d

et Z Z
F = T F d dS + T f d
F
La matrice K est appele la matrice de rigidit de la structure. Cette matrice reprsente lappli-
cation 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-
connus) et les dplacements prescrits U d (connus). Un champ de dplacement
[p]

u h U scrit
alors " #
U [l]
U=
U d[p]
VI.3 Rsolution du problme discrtis 51

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 [l]
V =
0[p]

De mme, on dcompose le vecteur des forces gnralises


" #
F d[l]
F =
F [p]

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

K[ll] K[lp]
K= T
K[lp] K[pp]

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
" # " #
T K[ll] K[lp] U [l] F d[l]
[V [l] 0T[p] ] T = [V T
[l] 0T[p] ]
K[lp] K[pp] U d[p] 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 :
" #
0[l]
V =
V [p]
52 Problme discrtis

2 translations 1 translation 1 rotation aucun


et 1 rotation et 1 rotation possible mouvement
possibles possibles 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
" # " #
K[ll] K[lp] U [l] F d[l]
[0T[l] V T[p] ] T = [0T[l] V T
[p] ]
K[lp] K[pp] U d[p] F [p]

On a alors lgalit :
T
F [p] = K[lp] U [l] + K[pp] U d[p]
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
K[lp] U [l] + K[pp] U d[p] = F [p]
on peut crire le systme matriciel suivant :
" # " #
K[ll] K[lp] U [l] F d[l]
=
T
K[lp] K[pp] U d[p] 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.
VI.4 Construction du problme discrtis 53

Table de connectivit lment II :

I 1 4 2
0 0 0 0 1 0
II 5 2 4
3 6 II = 0 1 0 0 0 0
III 2 5 3
IV 0 0 0 1 0 0
IV 6 3 5
u1
2 III 5
u2
u
II 5
u3

U II = u2

U = U II = II U
u4
1 I 4 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
ED (

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 :
Z
K= B T CB d

Dans la pratique, cette matrice est calcule comme la somme des contributions de chaque lment :
nb.
X lts Z
K= B T CB de
e=1 e

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

Le vecteur U e est la reprsentation du champ de dplacement



u h dans llment e, dans la
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


nb.
X lts Z
K= eT B eT CB e de e
e=1 e

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


Z
Ke = B eT CB e de
e

on a
nb.
X lts
K= 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 :
1
a (x, y, z) = (a + a x + a y + a z)
6v
1
b (x, y, z) = (b + b x + b y + b z)
6v
1
c (x, y, z) = (c + c x + c y + c 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.
VI.4 Construction du problme discrtis 55

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


b


1

e b b 2 b b 3

+uc c (M )

e 1 + vc c (M )

e 2 + wc c (M )

e3



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

d d 1 d d 2 d d 3

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



a 0 0 b 0 0 c 0 0 d 0 0
e = 0 a 0 0 b 0 0 c 0 0 d 0
0 0 a 0 0 b 0 0 c 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 d
x
0 0 ... x
0 0
a d
0 y
0 ... 0 y
0
a d

0 0 ... 0 0
B e = De = a
z
a d
z
d


0 z y
... 0 z y


a a d d

z
0 x
... z
0 x

a a d d
y x
0 ... y x
0

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



a 0 0 b 0 0 c 0 0 d 0 0

0 a 0 0 b 0 0 c 0 0 d 0

1 0 0 a 0 0 b 0 0 c 0 0 d
Be =
6v
0 a a 0 b b 0 c c 0 d d

a 0 a b 0 b c 0 c d 0 d
a a 0 b b 0 c c 0 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 :
Z Z
T
F = f d + T F d dS
F
| {z } | {z }
terme A 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 :
nA
X Z nB
X Z
F = eT eT f de + eT eT F d dS
e=1 e e=1 F e
56 Problme discrtis

f Fd
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 construits 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 1 1 (x, y) 1
a
0 1 1 0 b (x, y)
x

=
0 0 1+ 1
c (x, y)
y

0 0 1+ 0 d (x, y) xy

La solution est
y
a (x, y) = (1 x)(1 y) ; b (x, y) = x(1 ) ;
1+
xy
c (x, y) = ; d (x, y) = y(1 x) ;
1+
Les fonctions de forme sont traces sur la figure VII.1. La fonction a devrait sannuler sur
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

y y
1+ c
1 a
d
1
a b x 0 x
0 d
1

b c

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 est 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 dun 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 qua-
drangle 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
VII.1 lment de rfrence 59

Elment physique Elment de rfrence


1 1 r
barre - poutre

1
y quadrangle 1 1
r

1
x
t
+1
z hexadre +1 s
+1
1
r
x y

s
y triangle 1

x r
1

t
1
z ttradre

1 s
x y 1

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

s=1 s
(xc , yc ) (1, 1) (1, 1)
s
(xd , yd )
r=1 d c
r = 1
r
r

y a b

(xa , ya ) (1, 1) (1, 1)


x (xb , yb )
s = 1
Elment physique Elment de rfrence

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


60 Calculs au niveau lmentaire

a d

b c

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

1 T3
Q9 1 r s
1
r s r s
2
rs 2 r2 rs s2
r s Q4
2 2 r3 r2 s rs2 s3 1
r s rs
r2 s2 r s
r2 s2
r s rs

1 T6
r s
r2 rs s2

Figure VII.5 Triangle de Pascal.


VII.1 lment de rfrence 61

fonctions de forme revient rsoudre le systme suivant :



1 1 1 1 1 1 1 1 1 1
a a
r rb rc rd b
r 1 1 1 1 b
r
a
= =
sa sb sc sd 1 1 1
c
s 1
c
s

ra s a rb sb rc sc rd sd d rs 1 1 1 1 d rs
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 poly-
nomiale 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
f c (0, 1)
e
e( 12 , 12 )
f
a
d (0, 0) (1, 0)r
b
a d b
lment physique 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 in-
tervenir 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 comme :
x x x
r s t




x x
r s
y y y
en 3 dimensions : F =

; en 2 dimensions : F =



r s t y y



z z z r s
r s t
Application au quadrangle 4 nuds
Par exemple, pour llment quadrangle 4 nuds du plan, on a

xa


ya


xb
" #



e a (r, s) 0 b (r, s) 0 c (r, s) 0 d (r, s) 0 yb
x =



0 a (r, s) 0 b (r, s) 0 c (r, s) 0 d (r, s) xc


yc



xd

yd
ou encore
d
X d
X
x= i (r, s)xi , y = i (r, s)yi .
i=a i=a

x x
Le calcul de r et de s sobtient par :

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

s xc

xd xd
y y
Le calcul de r et de s sobtient par :

ya ya

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

s yc

yd yd
VII.2 Matrice de rigidit dans llment de rfrence 63

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
Z
T
Ke = B e (M ) C e B e (M ) d
e

o e est llment physique. Cette intgrale scrit dans llment de rfrence en faisant in-
tervenir le dterminant du gradient F de la transformation permettant de passer de llment de
rfrence llment physique :
Z
T
Ke = B e (r, s) C e B e (r, s) det F dref
ref

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 :

u
a
v
a

ub
" #



a (r, s) 0 b (r, s) 0 c (r, s) 0 d (r, s) 0 vb
uhe =



0 a (r, s) 0 b (r, s) 0 c (r, s) 0 d (r, s) uc


vc



ud

vd

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


0

x


D= 0 .

y


y x
64 Calculs au niveau lmentaire

Loprateur gradient discrtis vaut alors :



a,x 0 b,x 0 c,x 0 d,x 0

B e (r, s) =
0 a,y 0 b,y 0 c,y 0 .
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 i r i s i i r i s
= + et = +
x r x s x y r y s y
ce qui scrit sous forme matricielle,

i
r s i
x x x
r


=

i r s i
y y y s
| {z }
T
= F
o F est le gradient de la transformation passant dun point (r, s) de llment 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
Z Z 1 Z 1
T T
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
e 1 1

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 lhexadre 8 nuds.
t
5 8
8
5 +1
6
6 7
7
z +1 s
1 4 +1
w3
2 3 v3 1
4
y r
x u3
2 3 
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. : Z
T
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
G
X T
Ke = 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 rf-
rence au point dintgration g
66 Intgration numrique

bc bc
1 1
1 (x) 2 (x)

bc bc bc bc bc bc bc bc
x1 x2 x3 x4 x5 x1 x2 x3 x4 x5
bc bc
1 1
3 (x) 4 (x)

bc bc bc bc bc bc bc bc
x1 x2 x3 x4 x5 x1 x2 x3 x4 x5

bc
1
5 (x)

bc bc bc bc
x1 x2 x3 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) valuer B|g
(f) valuer 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 rgulier : [A, B] R
V=
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 polynomiales i (x) V avec i [ 1, 2, .., n ]. Ces
VIII.2 Intgration des fonctions une variable 67

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 1 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 o
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
connat leurs zros :
nj=1,j6=i (x xj )
i (x) = .
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) :

1 1 ... 1 1 (x) 1

x1 x2 ... xn
2 (x) x




x21 x22 ... x2n
3 (x) =

x2

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

. . . .
.

.

x1n1 x2n1 . . . xnn1 n (x) xn1
| {z }
=A

La solution de ce systme donne videmment les mmes 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 :

n
j=1,j6=i (x xj )
i (x) =
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 :


x x2 xl x
1 (x) = = =1
x1 x2 0l l
x x1 x0 x
2 (x) = = =
x2 x1 l0 l

Exercice VIII.2 Trouver les polynmes de Lagrange associs aux 3 points 1, 0 et 1. Ces polynmes sont dessi-
ns sur la figure VIII.2. 
68 Intgration numrique

bc 1 1.0 bc 3 bc

0.5

bc bc bc
1.0 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
f (1)
bc bc
bc
bc Z 1
I= f (r) dr
1

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) :
Z 1
I= f (r) dr .
1

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 .
Lexpression de f(r) est
n
X
f(r) = f (ri )Pin1 (r)
i=1

o 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 )
Pin1 (r) = .
nj=1,j6=i (ri rj )

Donc lapproximation I de I vaut


Z 1 n
X Z 1
I = f(r) dr = f (ri ) Pin1 (r) dr
1 i=1 1

ou encore n
X
I = f (ri )wi
i=1
avec Z 1
wi = Pin1 (r) dr
1
VIII.2 Intgration des fonctions une variable 69

f (1)
bc

f
f (1)
bc

I
f

1 1

Figure VIII.4 Mthode de Newton avec 2 points dintgration - Formule des trapzes

f (1)
bc
f (1)
f bc
f (0)
bc

f
I

1 1

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 linter-
valle intgr, soit 2 ici. En effet, si f (r) = 1, alors
Z 1 n
X
I = I = 1 dr = 2 = wi
1 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


Z 1 2
I= f (r) dr = 2a0 + a2 .
1 3
70 Intgration numrique

nb. points degr dintgration ri wi


2 3 0,5773502692 1,0000000000

3 5 0,7745966692 0,5555555556
0,0000000000 0,8888888889

4 7 0,8611363116 0,3478548451
0,3399810436 0,6521451549

5 9 0,9061798459 0,2369268850
0,5384693101 0,4786286705
0,0000000000 0,5688888889

6 11 0,9324695142 0,1713244924
0,6612093865 0,3607615730
0,2386191861 0,4679139346

7 13 0,9491079123 0,1294849662
0,7415311856 0,2797053915
0,4058451514 0,3818300505
0,0000000000 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, quels que 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
1
Finalement, en prenant comme points dintgration r1 = 3 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 entrane 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 :
Z 1 Z 1 T
Ke = he B e (r, s) C e B e (r, s) det F dr ds .
1 1
VIII.3 Intgration des fonctions deux variables 71

y s

1
r
x 1 1
ly
1

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 exami-
nant 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
lx ly
x= r; y= s
2 2
Le gradient de la transformation vaut alors

x x lx
r 0
s

2

F =

=



y y ly
0
r s 2
Le dterminant vaut
lx ly
det F =
4
Avec cette hypothse, F est constant et B e ne fait intervenir que les drives de la base ca-
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 polynomiale 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 r2 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
2 X
X 2
T
e
K = h wi wj B e (ri , sj ) C e B e (ri , sj ) det F (ri , sj )
i=1 j=1

soit aussi
4
X T
Ke = h wg B e (rg , sg ) C e B e (rg , sg ) det F (rg , sg )
g=1

o les 4 points dintgration sont :


72 Intgration numrique

e
r
0 1
Figure VIII.7 lment triangle de rfrence.

r s poids
0,5773502692 0,5773502692 1
0,5773502692 -0,5773502692 1
-0,5773502692 0,5773502692 1
-0,5773502692 -0,5773502692 1

s
1
1
3
r

13
1
1 1 1 1
3 3 

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

lment physique lment de rfrence


s
f c d f c
d 1
1 1 r
y
1
a e b
x a e b 

VIII.3.2 Cas des lments triangles


Dans le cas de llasticit plane, la matrice de rigidit lmentaire dun triangle vaut :
Z
e T
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 cou-
ples. 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
VIII.4 Intgration des fonctions trois variables 73

degr dintgration r s poids

1 1
3
1
3
1
2

1 1 1
2 2 6
2 0 1
2
1
6
1 1
2 0 6

1 1 27
3 3 96
3 0, 6 0, 2 25
96
25
0, 2 0, 6 96
25
0, 2 0, 2 96

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

ly t
z
+1

lz
+1 s
y
x +1
lx

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

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 hexadres
Dans le cas de llasticit tridimensionnelle, la matrice de rigidit lmentaire dun hexadre vaut :
Z 1 Z 1 Z 1 T
Ke = B e (r, s, t) C e B e (r, s, t) det F dr ds dt .
1 1 1

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 parall-
lpipde 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 ca-
nonique polynomiale du dplacement. En effet la transformation pour passer de llment de
74 Intgration numrique

1 s

1 1

Figure VIII.9 lment ttradre de rfrence.

rfrence llment physique scrit


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

lx
0 0

2
ly
F = 0 0
2
lz
0 0
2
Le dterminant vaut
lx ly lz
det F =
8
En prenant de plus un matriau homogne dans llment, C est aussi constant. Finalement,
T
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 :
Z
e T
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 cou-
ples. 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 16 .

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
VIII.5 Critres de qualit du maillage 75

degr dintgration r s t poids

1 1
4
1
4
1
4
1
6

0,58541020 0,138119660 0,138119660 1


24
2 0,138119660 0,58541020 0,138119660 1
24
0,138119660 0,138119660 0,58541020 1
24
0,138119660 0,138119660 0,138119660 1
24

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


h h
h
h h

1
>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 matrise 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 qua-
drangle, 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
rfrence. Le champ de contrainte correspondant h = C(
u h ) nest par contre pas statiquement
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
dfini 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 :



1

2
= = T T

= [ 1 2 ... n ] ..

.

n

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 :
Z
1
J() = ( h )2 d
2

soit aussi Z
1
J() = ( h )( h ) d
2
ou encore Z
1
J() = (T T h )( h ) d
2
Z Z Z
1 1 2
J() = T T d T T h d + h d
2 2
| {z } | {z } |
{z }
A b c

1
J() = T A T b + c
2
En utilisant la notation indicielle on a
n X n n
1X X
J() = i Aij j i b i + c
2 i=1 j=1 i=1

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


J()
[ 1, , n ] , =0

Cest dire n n
J() 1X 1X
= Aj j + i Ai b = 0
2 j=1 2 i=1
IX.1 Post-traitement, lissage des contraintes 79

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

a

Z b h i

Ae = . a b ne de
.
.
e

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

2a a b a ne

Z
a b 2b b ne

Ae = .. .. de
e
. .

ne a ne b 2ne
En sommant les colonnes sur la diagonale on a

a (a + b + + ne ) 0 0

Z
0 b (a + b + + ne ) 0

Ae = .. .. de
e
. .

0 0 ne (a + b + + ne )
Or la somme des fonctions de base fait toujours 1, la matrice lmentaire Ae devient alors

a 0 0

Z
0 b 0

Ae = .. .. de
e
. .

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

1 0 0
Z
0 2 0



A= . .. d
.
.
.

0 0 n
80 Analyse des rsultats E.F.

Dans llment e, le second membre be du systme vaut



a

b
Z
h
be = . de
.
.
e

ne

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

1
Z
2


h
b= . d
.
.


n

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

i = Z .
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 =

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

Z a 0 0 1 0 0
ae
Ae = 0
de = 3 0 1 0
b 0
e
0 0 c 0 0 1

o ae est laire de llment triangle.


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

Z a 1
ae
bxx
e =
b h

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

e
c 1
IX.2 Estimateur derreur 81

o (e)xx
h
est la valeur de la contrainte calcule partir de la solution en dplacements

u h dans
llment e. De mme, on a pour les contraintes yy et xy :

1 1
ae ae
byy
e
h
= (e)yy 1
et bxy
e
h
= (e)xy 1

3 3
1 1

En notant Ei lensemble des lments connects au nud i, on obtient que les contraintes lisses
au nud i du maillage valent :
P h
eEi ae (e)xx
(i)xx = P ,
eEi ae
P h
eEi ae (e)yy
(i)yy = P ,
eEi ae
P h
eEi ae (e)xy
(i)xy = P .
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

k
e kE
=

k u ex kE
donc
k
e k2E k

u ex
u h k2E
2 = = .
k
u ex k2E ku 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 1 p=0
p=3 x y p=1
x2 xy y2 p=2
3 2 2 3
x xy xy y p=3
x2 y 2

Figure IX.2 Compltude de la base dapproximation pour les polynmes 2 variables.

log()

1
Erreur
plus p
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 h-
method : 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 conver-
gence 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
IX.2 Estimateur derreur 83

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
k uex uh k2 a(uex uh , uex uh )
2 = =
k uex k2 a(uex , uex )
Le dnominateur vaut Z
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
Z
a(uex uh , uex uh ) = T (uex uh )C(uex uh ) d

soit aussi
Z    
a(uex uh , uex uh ) = T (uex ) T (uh ) C (uex ) (uh ) d

En suivant la mme dmarche que pour le dnominateur, on a :
Z    
T
a(uex uh , uex uh ) = exT h C 1 ex h d

Finalement, lerreur relative globale vaut
Z    
T
exT h C 1 ex h d
2
= Z
exT C 1 ex d

La contrainte exacte ex
nest pas connue, mais lide est de la remplacer par la contrainte
lisse . La contrainte lisse est en effet plus rgulire que la contrainte (uh ), elle approche
mieux la ralit que (uh ).
En remplaant ex par on obtient une estimation de lerreur relative , on note cette estima-
tion : Z    
T
T h C 1 h d
2 = Z
T C 1 d

En notant e la quantit dfinie pour llment e telle que
Z    
T
T h C 1 h d
e
e2 = Z
T C 1 d

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 Plerreur globale
calcul de lestimation de lerreur globale 2 = e2

non <

oui

rafinage des zones maillage optimis :


contribuant le plus - chaque lment contribue de la mme faon lerreur
lerreur globale - lerreur globale est infrieure lobjectif

Figure IX.4 Processus itratif de maillage adaptatif.

o e est le domaine de llment e, on a


nb.
X elts
2 = 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, no-
tamment en calculant lestimateur derreur globale ainsi que les contributions e des lments
lerreur relative globale . Le maillage est alors raffin 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 lment fini de plaque

X.1 Modle de plaque

X.1.1 Modle gomtrique

Une plaque est un domaine dont une dimension, lpaisseur note h, est plus petite que les deux
autres (Fig. X.1). Le plan moyen (not S) de la plaque a pour repre (
x ,
y ). La troisime direc-


tion 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


z y

y

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



x S : plan moyen

Figure X.1 Structure de type plaque.


86 lment fini de plaque

x y


z

z

M


z x h z y
m



z u

z v

z



x

y
w

Figure X.2 Cinmatique de plaque.

X.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. X.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 = y x + x 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 suffi-


samment rgulires dfinies de S vers R :
( )
f rguliers : S R
V=
x, y 7 f (x, y)
X.1 Modle de plaque 87

X.1.3 criture de la relation dformations-dplacements


On remarque que lhypothse cinmatique prcdente conduit zz = 0, on note alors les dfor-
mations sous la forme
xx

yy


= 2xy .

2
xz
2yz
On spare les dformations en 2 parties :
partie plane des dformations :


xx u,x x,x

yy = v,y +z y,y

2xy u,y + v,x x,y + y,x
| {z } | {z }
=e =

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


partie hors plan des dformations : dformations transverses

" # " #
2xz x + w,x
= .
2yz y + w,y
| {z }
=

X.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 malgr 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 1 0 0 0 xx

yy 1 0 0 0
yy




E
1
= xy = 0 0 2 0 0 2xy = C .


1 2
0 1

xz

0 0 2 0 2
xz


1
yz 0 0 0 0 2 2yz
On spare les contraintes en deux parties comme pour les dformations :
88 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 1 0 xx
yy = E

2 1 0 yy

1 1
xy 0 0 2 2xy
| {z }
C1

et " # " #
E
xz 2(1+) 0 2xz
= E

yz 0 2(1+) 2yz
| {z }
C2

X.1.5 nergie de dformation


Avec les hypothses prcdentes, lnergie de dformation vaut :
Z Z " #" #
1 T 1 T T C1 0 e + z
ED = d = [ (e + z) ] d
2 2 0 C2
Lintgrale dans est dcompose en une intgrale sur la surface moyenne S et une intgrale
dans lpaisseur suivant z :
Z Z h
1 2
n o
ED = eT C1 e + z 2 T C1 + zT C1 e + zeT C1 + T C2 dz dS
2 S h2

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 Z h Z h
2 2 2 h3
dz = h ; z dz = 0 ; z 2 dz = .
h2 h2 h2 12
Lnergie de dformation vaut alors
h3
Z
1 n T o
ED = he Ce + T C1 + h T C2 dS
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 :

1 0
Eh
Cm = hC1 = 1
,
0
1 2 1
0 0 2
X.1 Modle de plaque 89



z Kirchoff

Mindlin

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


1 0
h3 Eh3
Cf = C1 = 2
1
,
0
12 12(1 ) 1
0 0 2
" #
Eh 1 0
Cc = hC2 = ,
2(1 + ) 0 1
lnergie de dformation scrit sous la forme :
Z Z Z
1 1 1
ED = eT Cm e dS + T Cf dS + T Cc dS.
2 S 2 S 2 S
Lnergie de dformation peut tre spare en 3 contributions :
Z
m 1
ED = eT Cm e dS , nergie de dformation de membrane,
2 S
Z
f 1
ED = T Cf dS , nergie de dformation de flexion,
2 S
Z
ct 1
ED = T Cc dS , nergie de dformation de cisaillement transverse.
2 S
On a alors :
m f ct
ED = ED + ED + ED .

X.1.6 Hypothses sur les dformations transverses


Deux hypothses sont classiquement utilises pour les plaques ; Kirchoff-Love ou Reissner-Mindlin
(Fig. X.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 entrane que


ct
x = w,x ; y = w,y et ED = 0.

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 gn-
ralement 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.
90 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.

X.2 lment fini de type Reissner-Mindlin


X.2.1 Espace discrtis
On dfinit 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 :
n
X n
X
uh (x, y) = i (x, y)ui = U ; v h (x, y) = i (x, y)vi = V
i i
n
X n
X
wh (x, y) = i (x, y)wi = W ; xh (x, y) = i (x, y)ix = x
i i
n
X
yh (x, y) = i (x, y)iy = y
i
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.

X.2.2 Oprateur gradient discrtis


La partie plane e des dformations vaut pour un champ de dplacement

v h de V h :


uh,x x 0 " # x 0 " #" #
uh 0 U
e(

v h) = h
v,y = 0
y
=
0

y




vh

0 V
uh,y + v,x
h
y x y x

Soit

x 0 " #
U
e(

v h) =
0
y
.

V
y x
X.2 lment fini de type Reissner-Mindlin 91

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




x 0


Bm =
0 y


y x

on a " #
U
e(

v h ) = Bm .
V
La partie courbure des dformations vaut pour un champ de dplacement

v h de V h :

h
x,x x 0 " # x 0 " #" #
xh 0 x
(

v h) = h
y,y = 0
y
=
0

y
.

h h



yh

0 y
x,y + y,x y x y x

Soit

x 0 " #

x
=
0 y
.

y
y x

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




x 0


Bf =
0 y



y x

on a " #
x
(

v h ) = Bf .
y
La partie dformations transverses des dformations vaut pour un champ de dplacement

v de V h :
h

" #
wh

0 0 W
xh + w,x
h 1 0 1 0
(

v h) = = x h = x 0 0 x .
yh + w,y
h
y 0 1 xh
y 0 1
y 0 0 y
Soit

W
x 0
=
x .

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


x 0
Bct =

y 0

on a
W

h

( v ) = Bct x
.

y
92 lment fini de plaque

S


y
Fz
fz
L

fy


x fx
Figure X.4 Forces extrieures appliques sur la plaque.

X.2.3 Matrice de rigidit

En remplaant dans lnergie de dformation, il vient

Z n " # " #
1 T T T U T T x
ED = [U V ]Bm Cm B m + [ x y ]BfT Cf Bf
2 S V y

W
o
+[ W T x T y T ]Bct
T
Cct Bct
x
dS
y

h i
T 0
Z Bm Cm B m
1 T
T

ED = Q

Bct Cct Bct ...
dS Q
2 S 0 . h i
.. +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 i
T 0
Z Bm Cm B m

e T
K =
Bct Cct Bct ...
dS.
S 0 . h i
.. T
+Bf Cf Bf

X.2.4 Forces extrieures gnralises

Les forces extrieures sont appliques sur le contour de la plaque ainsi que sur la surface moyenne
(fig. X.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 Fz . On note
s labscisse curviligne sur la ligne moyenne L du contour de la plaque. Le travail des efforts
X.3 Assemblage de plaques dans lespace 93


x

3
Y 2


y
X

1
Z

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

extrieurs dans un champ de dplacement



v de la plaque vaut

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

v)= [ fx fy fz ]
v(x, y) + zy (x, y) +
Fz w(x, y)
contour, surface S
w(x, y)
Z nZ h Z h Z h
2 2 2
= fx dz u(x, y) + fy dz v(x, y) + fz dz w(x, y)
contour, ligne=L h2 h2 h2
| {z } | {z } | {z }
=tx (s) =ty (s) =tz (s)
Z h Z h o Z
2 2
+ zfx dz x + zfy dz y ds + Fz w(x, y)
h2 h2 S
| {z } | {z }
=mx (s) =my (s)

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 mx (s) et my (s) sont les moments liniques sur le contour suivant y et

x . Le


travail des forces extrieures dans un champ de dplacement v lments finis de la plaque vaut
h

Z Z Z
W(

v h) = U T tx (s)T ds + V T ty (s)T ds + W T tz (s)T ds
L
Z ZL L
Z
T T T T T
+x mx (s) ds + y my (s) ds + W Fz T dS
L L S

En posant le vecteur des forces gnralises suivant :


R
tx (s)T ds
RL T
L ty (s) ds

R R
T T
F = L tz (s) ds + S Fz dS ,
R
mx (s)T ds
RL

T
L my (s) ds

on a
W(

v h ) = QT F .

X.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. X.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):
94 lment fini de plaque



laxe

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



12
x = ,

k 12 k

le vecteur

z est construit de faon tre perpendiculaire au triangle :




x 13
z = ,

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







UX
x Y

u x X x Z 0 0 0

UY
v

y Y

y X y Z 0 0 0

UZ




z Y

w = z X z Z 0 0 0



X

0 0 0

y X
y Y

y Z

x


Y

x X

y 0 0 0 x Y x Z
| {z } | {z } Z
U 2d T | {z }
U 3d

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


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

o K2d
e
est la matrice de rigidit de llment de plaque dans son plan vue dans la section prc-
dente.
La matrice de rigidit de llment plaque dans lespace vaut donc
e
K3d = T T K2d
e
T.
XI lments finis de barre et poutre

XI.1 Modle de poutre


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

Figure XI.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. XI.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
96 lments finis de barre et poutre



y S
M

x
m
a b



z L

Figure XI.2 lment de poutre

XI.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
et les rotations sont petits, le dplacement de M scrit :


u (M ) =

u (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(x) + y(x)
u (M ) =
v(x) (

x ,

y)

On pose alors lensemble V des champs de fonctions suffisamment rgulires dfinies de


[0, L] vers R :
( )
f rguliers : [0, L] R
V=
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.

XI.1.3 criture de la relation dformations-dplacement


Les dformations associes un champ de dplacement

u de la poutre sont calcules partir de :
1 
(

u)= Grad(

u ) + GradT (

u)
2
soient :

xx = (u + y) = u,x + y,x
x
XI.1 Modle de poutre 97


2xy = (u + y) + v = + v,x
y x
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 = .

XI.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
" #
xx
= .
xy

La loi de Hooke
1+
= T r() 1
E E
donne alors :
1+ 1 1+
xx = xx xx = xx et xy = xy
E E E E
soit " #
E 0 E 0
C= E
=
0 2(1+) 0

XI.1.5 nergie de dformation


Avec les hypothses prcdentes, lnergie de dformation vaut :
Z Z Z " #
1 1 L e + y
T
ED = d = [ (e + y) ]C dS dx
2 2 0 S
Z Z Z Z
1 L 1 L
ED = (e + y)E(e + y) dS dx + dS dx
2 0 S 2 0 S
soit aussi en dveloppant les expressions
Z L Z Z L Z Z L Z Z L Z
1 1 1 1
ED = Ee2 dS dx+ y 2 E2 dS dx+ 2yEe dS dx+ 2 dS dx
2 0 S 2 0 S 2 0 S 2 0 S
98 lments finis de barre et poutre

v(x)

x

0 x L

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

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


Z Z Z Z Z Z Z Z
1 L 2 1 L 1 L 1 L
ED = Ee dS dx+ E2 y 2 dS dx+ Ee 2y dS dx+ 2 dS dx
2 0 S 2 0 S 2 0 S 2 0 S
On remarque que :
Z
dS = S, aire de la section ;
ZS
y dS = 0, par dfinition du centre de section ;
ZS
y 2 dS = I, moment quadratique de la section autour de

z.
S
En remplaant dans lexpression de lnergie de dformation, on a alors :
m f ct
ED = ED + ED + ED

avec Z Z Z
1 L f 1 L 1 L
m
ED = ES e2 dx ; ED = EI 2 dx ; ED ct
= S 2 dx
2 0 2 0 2 0
Lnergie de dformation peut scrire sous forme de trois contributions :
ED
m
: nergie de dformation de traction-compression (membrane),
f
ED : nergie de dformation de flexion,
ED
ct
: nergie de dformation de cisaillement transverse.

XI.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 entrane que = v,x et donc que = v,x . Autrement dit, une section initialement
perpendiculaire la ligne moyenne reste perpendiculaire la ligne moyenne dforme (Fig. XI.3).
Lnergie de dformation en fonction de u et v vaut :
Z
1 L
m
ED = ES u2,x dx
2 0
Z Z Z
f 1 L 1 L 1 L
ED = EI 2 dx = 2
EI ,x dx = 2
EI v,xx dx
2 0 2 0 2 0
ct
ED =0
XI.2 lment fini de traction-compression : lment barre 99

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

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


On ne sintresse dans ce paragraphe qu la partie traction-compression de lnergie de dforma-
tion, soit
Z
1 L
m
ED = ES e2 dx.
2 0

XI.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 :
x x
a = 1 et b =
L L
On a alors dans llment :
" #
h ua
u (x) = [ a b ] = e U e
ub

XI.2.2 Oprateur gradient discrtis


La partie membrane des dformations e scrit en fonction du dplacement u comme e = u,x soit
aussi " #
ua
e = [ a,x b,x ]
ub
En posant Bm loprateur gradient discrtis pour la partie traction-compression tel que
 
1 1
Bm = [ a,x b,x ] =
L L
on a
e = Bm U e

XI.2.3 Matrice de rigidit


En remplaant dans lnergie de dformation, il vient :
Z L Z L
1 1
m
ED = ES e2 dx = ES U Te Bm
T
Bm U e dx.
2 0 2 0

Soit aussi Z
1 L
m
ED = U Te T
ES Bm Bm dxU e .
2 0
100 lments finis de barre et poutre

a
e = 0 e : barre e

b


e2 e = le e



e1

Figure XI.4 Structure de type treillis de barres

En posant la matrice de rigidit de traction-compression


Z L
e T
Km = ES Bm Bm dx
0

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

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


" #
e ES 1 1
Km =
L 1 1

XI.2.4 Calcul de treillis de barres


Un treillis est une structure compose de poutres que lon suppose lies entre elles par des rotules
(Fig. XI.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 lies entre elles par des 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 XI.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
XI.2 lment fini de traction-compression : lment barre 101



e2 b
le e = le

e
e e
a
e = 0


e1

Lnergie de dformation dune barre ne dpend que des composantes axiales des dplace-
ments des nuds :
m 1
ED = U Te Kme
U e.
2
avec " #
e ES 1 1
Km =
le 1 1
et "

#
u (nud a) e
Ue =


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 :



Ua
"

# " #
u (nud a) e cos e sin e 0 0 V
a




=
u (nud b) e 0 0 cos e sin e Ub



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 :
" #
cos e sin e 0 0
Te =
0 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


= Te U e
u (nud b) e

En remplaant dans lnergie de dformation, on a :

m 1
ED = U Te TeT Km
e
Te U e .
2
102 lments finis de barre et poutre

o Km
e
est la matrice de rigidit de la partie axiale de la poutre dveloppe prcdemment :
" #
e ES 1 1
Km =
le 1 1

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

cos2 e cos e sin e cos2 e cos e sin e

2
e ES cos e sin e
sin e cos e sin e sin2 e

Kbarre =
le
cos2 e cos e sin e cos2 e cos e sin e

2
cos e sin e sin e cos e sin e sin2 e

Lnergie de dformation de llment barre vaut alors

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

XI.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
Z L Z L
f 1 1
ED = EI 2 dx = 2
EI v,xx dx.
2 0 2 0

XI.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 o
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
XI.3 lment fini de flexion de type Euler-Bernoulli 103

1.0 1 1.0

0.5 0.5
2

bc bc bc bc
0.5 1.0 0.5 1.0

1.0 1.0

0.5 0.5
3

4
bc bc bc bc
0.5 1.0 0.5 1.0

Figure XI.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 0 (x) 1
1
0 1 L 1 2 (x)
x

= 2
0 0 L2 2L 3 (x)
x

0 0 L3 3L2 4 (x) x3

La solution de ce systme est


3 2 2 2 1
1 (x) = 1 2
x + 3 x3 ; 2 (x) = x x2 + 2 x3
L L L L
3 2 2 1 1
3 (x) = 2
x 3 x3 ; 4 (x) = x2 + 2 x3
L L L L
Les fonctions i sont des polynmes de degrs 3, ce sont des polynmes de type Hermite (Fig.
XI.5).
104 lments finis de barre et poutre

XI.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
Bf = e = [ 1 (x) 2 (x) 3 (x) 4 (x) ] ,
x2
on a
= Bf V e .

Les drives secondes des fonctions de forme valent :


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

XI.3.3 Matrice de rigidit


Le calcul de la matrice de rigidit pour la partie flexion se fait en calculant lnergie de dforma-
tion de flexion associe au champ de dplacement discrtis v h :
Z L
f 1
ED = V Te EI BfT Bf dx V e .
2 0
| {z }
=Kfe

Lexpression de Kfe est :



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

Z L

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

Kfe = EI dx
0 (x) (x) (x) (x) (x) (x) (x) (x)
3 1 3 2 3 3 3 4
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 :



6 3L 6 3L

2EI 3L 2L2 3L L2
Kfe

= 3
L 6 3L
6 3L

3L L2 3L 2L2
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 spar-
ment.
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
U1 U2

11111111111
00000000000
00000000000
11111111111 00000000000
11111111111
000000011111111111
111111100000000000
000000
111111
0000000
1111111
0000000
1111111 000000
111111
000000
111111
0000000 111111
1111111
U
000000
U
0000000
1111111 000000
111111
1sl 2sl

0000000
1111111
0000000
1111111 000000
111111
0000000 111111
1111111 000000
000000
111111
0000000
1111111
1111111 000000
111111
0000000 111111
000000
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 simplifier 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 (nu-
mrotes 1 et 2). Elles ne sont pas connectes entre elles mais elles sont en contact avec lin-
terface (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 0 K13 U1 F1

K2 K23 U2 = F 2
0

T T
K13 K23 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-
XII.2 Mthode de Schur primale 107

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 sous-
structure un problme pour lequel linterface est encastre (Fig. XII.1).
En remplaant dans le systme initial, il vient

K1 0 K13 U 1sl + U 1al F1

0 U 2sl + U 2al = F 2 .
K2 K23


T T
K13 K23 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
K13 U 1sl + K13 U 1al + K23 U 2sl + K23 U 2al + K3 U 3 = F 3

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

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

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

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



K1 0 K13 U 1al 0

0 U 2al = 0 .
K2 K23


T T
K13 K23 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
K13 K11 K13 U 3 K23
T
K21 K23 U 3 + K3 U 3 = B

En notant
T
S = K3 K13 K11 K13 K23
T
K21 K23
108 Dcomposition de domaine

U2

interface U 4
U1
U3

1111111111111111
0000000000000000
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
S = K3 K13 K11 K13 K23
T
K21 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 sous-
structures (Fig. XII.2) et en notant n linterface entre les sous-structures, on a alors lalgorithme
suivant :
XII.2 Mthode de Schur primale 109

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 :
n1
X
S = Kn T
Kin Ki1 Kin
i=1

3. Rsolution de linterface :
n1
X
T
SU n = F n 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
S = K3 K13 K11 K13 K23
T
K21 K23 .

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 multi-
plie droite par K13 et gauche par K13 T
ce qui donne finalement une matrice dont la taille est
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 Xi 0
T
=
K13 K3 Ii 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


1
1
0
0110 0


11111111
00000000
0

00000000
11111111


0
0


1

00000000
11111111


0
1

00000000 0
11111111 00000000
11111111
I1 =
0

I2 =
0

00000000 0
11111111

00000000
11111111

0


0
0

00000000
11111111
0 0
00000000
11111111
0

00000000
11111111
00000000
11111111
X 1 = colonne 1 de K11 K13 00000000
11111111
X 2 = colonne 2 de K11 K13

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

interface

U1 U2

11111111111
00000000000 0000000
1111111
00000000000 1111111
11111111111 11
00
0000000 11 000000
111111
00 000000
111111
problme complet sous-structure 1, sous-structure 2,
domaine 1 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

1 0 0


0


1


0

I1 = .. I2 = .. ... Im = ..

.


.


.

0 0 1

pour avoir toutes les m colonnes de K11 K13 .


XII.3 Mthode de Schur duale 111

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 dplace-
ment 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 Z Z



T1 C1 1 d uT1 F d1 dS uT1 dS = 0
1 F 1

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

T


2 C2 2 d uT2 F d2 dS + uT2 dS = 0
2 F 2

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



T u dS T
1 u dS = 0 2

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

x 1 . . . m 0 . . . 0 0 ... 0


= y = 0 . . . 0 1 . . . m 0 . . . 0

=
z 0 ... 0 0 . . . 0 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 sous-
structures ainsi que les matrices de couplages C1 et C2 telles que
Z Z


uT1 dS = U T1 T1 dS = U T1 C1

Z Z


uT2 dS = U T2 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 0 C1 U F
1 1
0
K2 C2 U 2 = F 2


CT1 CT2 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 don-
ner 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 ma-
chine 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 com-
pilateur pour crer un fichier excutable. Ce fichier est ensuite excut. Les avantages sont
dabord davoir une vitesse dexcution du programme rapide, ensuite de pouvoir donner
le fichier excutable une personne tierce afin quil puisse lutiliser sans lui dvoiler le fi-
chier 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
import 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 est un reel : " ,a)


print ( "b est un reel : " ,b)
print ( " i est un entier : ",i)
p r i n t ( "w est un complexe : " ,w)

c=a b
p r i n t ( " a b = : " , 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 malgr 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 interprt 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
XIII.2 Le langage Python 115

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 laffichage 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 excuter 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 .

E, I F L3
3EI

L 

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 # Chiffre a deviner
j =1 # 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 ( " Bravo " )
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

import 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 range ( 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 ) )
print ( 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 ( " Note s u r 2 0 : " , k )

Figure XIII.4 Rvision de la table de multiplication en Python


XIII.2 Le langage Python 117

f (a) > 0
bc

f (c)
bc
f
f (x) = 0
bc

a c= a+b x b
2

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 librairie 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 multiplication
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 conjecture 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
a+b
c= 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. Len-
tre 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 ) :
import 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 ma-
trices 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 0 0 0

1.5 1 3.8 9.2 0


0 3.0 2 0 0

0 9 0 5.5 7

0 0 0 7 8
XIII.2 Le langage Python 119

import 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

import s c i p y
import 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 . array ([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 ) )

print A. todense ( )

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=[ 0 1 2 3 4 0 1 1 2 1 3 3 4]
J =[ 0 1 2 3 4 1 0 2 1 3 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 automatique-
ment. Par exemple, on veut assembler les deux matrices suivantes 22 dans une matrice 33 :
" #
10 10
10 10
120 Initiation la programmation

import s c i p y
import 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 . array ( [ 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 ) )

print A. todense ( )

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

10 10 + 20 20 = 10 30 20

0 20 20 0 20 20

Le stockage peut se faire avec les 3 tableaux suivants :

V = [ 10 10 10 10 20 20 20 20 ]
I=[ 0 0 1 1 1 1 2 2 ]
J =[ 0 1 0 1 1 2 1 2 ]

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 avantageuse-
ment 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
XIII.3 Le langage Fortran 121

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 C o 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 , a est un reel : ,a


print , b est un reel : ,b
print , i est un entier : ,i
print , w est un complexe : ,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 .

E, I F L3
3EI

L 

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 multiplica-
tion.

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 conjecture 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 dicho-
tomie afin de montrer les quivalences des dclarations de fonctions en Fortran.
XIII.3 Le langage Fortran 123

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 =6 ! 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 :
read , k

i f ( k . eq . i ) t h e n
p r i n t , Bravo
r e t u r n ! t h i s e n d s programme
endif

i f ( k . l t . i ) then
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 ) then
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 etait , i


END

Figure XIII.11 Jeu de devinette en Fortran


124 Initiation la programmation

PROGRAM M u l t i p l i c a t i o n s
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 ,20
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 , = ?
read , c
i f ( c . eq . ( a b ) ) t h e n
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 , Note s u r 2 0 : , k
END

Figure XIII.12 Rvision de la table de multiplication en Fortran


XIII.3 Le langage Fortran 125

PROGRAM D i c h o t o m i e
integer i , j , k
d o u b l e 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 h e n
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

double p r e c i s i o n f u n c t i o n maf onct i on ( x )


double 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


126 Initiation la programmation

PROGRAM M a t r i c e s

d o u b l e 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 multiplica-
tions de matrices en imbriquant 3 boucles comme dans lexemple de la figure XIII.14. Le langage
Fortran permet dutiliser des matrices au format creux (sparse), mais ceci nest pas prsent ici
car on utilise le couplage Python-Fortran comme indiqu dans la suite.

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

lib_multiplication.f. On construit une librairie Python partir de cette routine Fortran en


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 cre 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 connatre 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 librai-
rie Fortran est donn sur la figure XIII.17.
128 Initiation la programmation

import s c i p y
import 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 . __doc__ )
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 . __doc__ )

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 4.95 0. 0. ]
[ 53.07 39.15 0. 0. ]
[ 0. 14.3 9.62 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 ma-
trice 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 :

1 1 1 1 (x, y, z) 1
a
x x x x (x, y, z) x
a b c d b
=
ya yb yc yd
c (x, y, z)
y

za zb zc zd d (x, y, z) z

En rsolvant le systme par la mthode de Cramer, on obtient les expressions suivantes :


1
i (x, y, z) = (i + i x + i y + i z)
6v
avec
xj xk xl 1 1 1
p+1 p
i = (1) yj yk yl i = (1) yj yk yl
zj zk zl zj zk zl

1 1 1 1 1 1
p+1 p
i = (1) xj xk xl i = (1) xj xk xl
zj zk zl yj yk 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 b c d 1 b a c d 0 c a b d 1 d a b c 0
XIV.2 Cur crit en Fortran de SILEX pour le ttradre 4 nuds 131

Le volume v de llment est le dterminant de la matrice suivante :


1 1 1 1
x1 x2 x3 x4
v=
y1 y2 y3 y4
z1 z2 z3 z4
Loprateur gradient discrtis de llment ttradre 4 nuds scrit :

a 0 0 b 0 0 c 0 0 d 0 0


0 a 0 0 b 0 0 c 0 0 d 0


1 0 0 a 0 0 b 0 0 c 0 0 d
Be =
6v
0 a a 0 b b 0 c c 0 d

d


a 0 a b 0 b c 0 c d 0 d

a a 0 b b 0 c c 0 d d 0
Lexpression de la matrice de rigidit lmentaire est
Z
e
K = B eT CB e dVe
e

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 0


+ 2 0 0 0


+ 2 0 0 0
C=



0 0 0 0 0


0 0 0 0 0

0 0 0 0 0
Le calcul de v fait intervenir le dterminant dune matrice 4 4 avec des 1 sur la pre-
mire 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 Pois-
son ).
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 133

Routines Fortran du cur de SILEX :


C
double p r e c i s i o n f u n c t i o n 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 )

det44_ligne_de_un= 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 c t i o n 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

i n t e g e r nbnodes , nbelem
d o u b l e p r e c i s i o n n o d e s ( nbnodes , 3 )
i n t e g e r e l e m e n t s ( nbelem , 4 )
d o u b l e p r e c i s i o n CC ( 6 , 6 ) , Vk( 1 2 1 2 nbelem )
i n t e g e r I k ( 1 2 1 2 nbelem ) , J k ( 1 2 1 2 nbelem )
d o u b l e p r e c i s i o n m a t e r i a l ( 2 ) , young , nu , lambda , mu

Cf2py i n t e n t ( in ) nbnodes
Cf2py i n t e n t ( in ) nodes
Cf2py i n t e n t ( i n ) nbelem
Cf2py intent ( in ) elements
Cf2py intent ( in ) m a t e r i a l
Cf2py i n t e n t ( out ) Ik
Cf2py i n t e n t ( out ) Jk
Cf2py 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 idnodes ( 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 )
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 )
c 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 d n o d e s ( 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 ( d e t _ o f _ s y s / 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 135

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 1)) = beta ( j ) / ( 6 . 0 d0 Vol )
BB( 2 , 2 + 3 ( j 1)) = gamm ( j ) / ( 6 . 0 d0 Vol )
BB( 3 , 3 + 3 ( j 1)) = delt ( j ) / ( 6 . 0 d0 Vol )
BB( 4 , 2 + 3 ( j 1)) = delt ( j ) / ( 6 . 0 d0 Vol )
BB( 4 , 3 + 3 ( j 1)) = gamm ( j ) / ( 6 . 0 d0 Vol )
BB( 5 , 1 + 3 ( j 1)) = delt ( j ) / ( 6 . 0 d0 Vol )
BB( 5 , 3 + 3 ( j 1)) = beta ( j ) / ( 6 . 0 d0 Vol )
BB( 6 , 1 + 3 ( j 1)) = gamm ( j ) / ( 6 . 0 d0 Vol )
BB( 6 , 2 + 3 ( j 1)) = beta ( j ) / ( 6 . 0 d0 Vol )
enddo

ke = matmul ( t r a n s p o s e (BB ) , matmul ( CC , BB ) ) Vol

do i =1 ,12
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 = elements . shape [ 0 ]


Ik = s c i p y . z e r o s ( 1 2 1 2 nelem , d t y p e = i n t )
Jk = s c i p y . z e r o s ( 1 2 1 2 nelem , d t y p e = i n t )
Vk = 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 )
beta = scipy . zeros ( ( 4 ) , dtype= f l o a t )
gamm = scipy . zeros ( ( 4 ) , dtype= f l o a t )
delt = scipy . zeros ( ( 4 ) , dtype= f l o a t )
A34 = scipy . zeros ( ( 3 , 4 ) , dtype= f l o a t )
A23 = scipy . zeros ( ( 3 , 4 ) , dtype= f l o a t )
B = scipy . zeros ((6 ,12) , dtype= f l o a t )
dofelem = scipy . zeros (12 , dtype= int )
dofx = scipy . zeros (4 , dtype= int )
dofy = scipy . zeros (4 , dtype= int )
dofz = scipy . zeros (4 , dtype= int )
idnodes = scipy . zeros (4 , dtype= int )
young = material [0]
nu = material [1]
lamb = nu young / ( ( 1 + nu )(1 2 nu ) )
mu = young / ( 2 ( 1 + nu ) )
C = 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 [ : ] = ( idnodes )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 ] = dofy [0]; dofelem [ 2 ] = dofz [0]
dofelem [ 3 ] = dofx [ 1 ] ; dofelem [ 4 ] = dofy [1]; dofelem [ 5 ] = dofz [1]
dofelem [ 6 ] = dofx [ 2 ] ; dofelem [ 7 ] = dofy [2]; dofelem [ 8 ] = dofz [2]
dofelem [ 9 ] = dofx [ 3 ] ; dofelem [10] = dofy [3]; dofelem [11] = dofz [3]

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 )
XIV.2 Cur crit en Fortran de SILEX pour le ttradre 4 nuds 137

A23 [ 0 , 0 ] = Y [ 1 ] ; A23 [ 0 , 1 ] = Y [ 2 ] ; A23 [ 0 , 2 ] = Y[ 3 ]


A23 [ 1 , 0 ] = Z [ 1 ] ; A23 [ 1 , 1 ] = Z [ 2 ] ; A23 [ 1 , 2 ] = Z [ 3 ]
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 ] ; A23 [ 0 , 2 ] = X[ 3 ]
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 ] ; A23 [ 1 , 2 ] = Y[ 3 ]
d e l t [0]= d e t 3 3 _ l i g n e _ d e _ u n ( A23 )

A23 [ 0 , 0 ] = Y [ 0 ] ; A23 [ 0 , 1 ] = Y [ 2 ] ; A23 [ 0 , 2 ] = Y[ 3 ]


A23 [ 1 , 0 ] = Z [ 0 ] ; A23 [ 1 , 1 ] = Z [ 2 ] ; A23 [ 1 , 2 ] = Z [ 3 ]
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 ] ; A23 [ 0 , 2 ] = X[ 3 ]
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 ] ; A23 [ 1 , 2 ] = Y[ 3 ]
d e l t [ 1 ] = d e t 3 3 _ l i g n e _ d e _ u n ( A23 )

A23 [ 0 , 0 ] = Y [ 0 ] ; A23 [ 0 , 1 ] = Y [ 1 ] ; A23 [ 0 , 2 ] = Y[ 3 ]


A23 [ 1 , 0 ] = Z [ 0 ] ; A23 [ 1 , 1 ] = Z [ 1 ] ; A23 [ 1 , 2 ] = Z [ 3 ]
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 ] ; A23 [ 0 , 2 ] = X[ 3 ]
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 ] ; A23 [ 1 , 2 ] = Y[ 3 ]
d e l t [2]= d e t 3 3 _ l i g n e _ d e _ u n ( A23 )

A23 [ 0 , 0 ] = Y [ 0 ] ; A23 [ 0 , 1 ] = Y [ 1 ] ; A23 [ 0 , 2 ] = Y[ 2 ]


A23 [ 1 , 0 ] = Z [ 0 ] ; A23 [ 1 , 1 ] = Z [ 1 ] ; A23 [ 1 , 2 ] = Z [ 2 ]
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 ] ; A23 [ 0 , 2 ] = X[ 2 ]
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 ] ; A23 [ 1 , 2 ] = Y[ 2 ]
d e l t [ 3 ] = d e t 3 3 _ l i g n e _ d e _ u n ( A23 )

B[0 ,0] = beta [ 0 ] ; B[0 ,3] = beta [ 1 ] ; B[0 ,6] = beta [ 2 ] ; B[0 ,9] = beta [3]
B[1 ,1] = gamm [ 0 ] ; B[1 ,4] = gamm [ 1 ] ; B[1 ,7] = gamm [ 2 ] ; B[1 ,10] = gamm [ 3 ]
B[2 ,2] = delt [0]; B[2 ,5] = delt [1]; B[2 ,8] = delt [2]; B[2 ,11] = delt [3]
B[3 ,2] = gamm [ 0 ] ; B[3 ,5] = gamm [ 1 ] ; B[3 ,8] = gamm [ 2 ] ; B[3 ,11] = gamm [ 3 ]
B[3 ,1] = delt [0]; B[3 ,4] = delt [1]; B[3 ,7] = delt [2]; B[3 ,10] = delt [3]
B[4 ,0] = delt [0]; B[4 ,3] = delt [1]; B[4 ,6] = delt [2]; B[4 ,9] = delt [3]
B[4 ,2] = beta [ 0 ] ; B[4 ,5] = beta [ 1 ] ; B[4 ,8] = beta [ 2 ] ; B[4 ,11] = beta [3]
B[5 ,0] = gamm [ 0 ] ; B[5 ,3] = gamm [ 1 ] ; B[5 ,6] = gamm [ 2 ] ; B[5 ,9] = gamm [ 3 ]
B[5 ,1] = beta [ 0 ] ; B[5 ,4] = beta [ 1 ] ; B[5 ,7] = beta [ 2 ] ; B[5 ,10] = beta [3]

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
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 l-
mentaire :
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 co-
ordonnes 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 (renomme 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 direc-
tion 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.
XIV.3 Programme principal en Python 141

# 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
sys . p a t 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 :

# import 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 file ( . msh )


ResultsFileName = MyResults

# 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 file :


# 0 for short output
# 1 for long output
f l a g _ w r i t e _ f i e l d s =0

# 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 Code SILEX

nu = 0.3

# Boundary c o n d i t i o n s , f o r i n s t a n c e :
IdNodesFixed_x=IdnodeS3
IdNodesFixed_y=IdnodeS1
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 h e n 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 free 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 )

# ############################################################################
# Solve 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 per-
mettant 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
XIV.5 Un exemple de calcul men avec SILEX 145

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 l-
ments 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 lis-
se 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)

Das könnte Ihnen auch gefallen