You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/math/modules/fem/pages/ch-ef-lagrange.adoc
+44-33Lines changed: 44 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,10 @@ On va présenter dans ce chapitre le type le plus simple et le plus classique d
16
16
.Définition
17
17
****
18
18
Soit stem:[\Sigma=\{ a_1,\ldots,a_N\}] un ensemble de stem:[N] points distincts de stem:[\RR^n].
19
-
Soit stem:[P] un espace vectoriel de dimension finie de fonctions de stem:[\RR^n] à valeurs dans stem:[\RR].On dit que stem:[\Sigma] est stem:[P]-unisolvant ssi pour tous réels stem:[\alpha_1,\ldots,\alpha_N], il existe un unique élément stem:[p] de stem:[P] tel que stem:[p(a_i)=\alpha_i,\; i=1,\ldots,N].
19
+
20
+
Soit stem:[P] un espace vectoriel de dimension finie de fonctions de stem:[\RR^n] à valeurs dans stem:[\RR].
21
+
22
+
On dit que stem:[\Sigma] est stem:[P]-unisolvant ssi pour tous réels stem:[\alpha_1,\ldots,\alpha_N], il existe un unique élément stem:[p] de stem:[P] tel que stem:[p(a_i)=\alpha_i,\; i=1,\ldots,N].
20
23
****
21
24
22
25
Ceci revient à dire que la fonction :
@@ -40,7 +43,7 @@ stem:[\Sigma] est la fonction nulle.
40
43
41
44
La surjectivité de stem:[{\cal L}] se démontre en exhibant une famille
42
45
stem:[p_1,\ldots,p_N] d’éléments de stem:[P] tels que
43
-
stem:[p_i(a_j)=\delta_{ij}], c’est à dire un antécédent pour
46
+
stem:[p_i(a_j)=\delta_{ij},] c’est à dire un antécédent pour
44
47
stem:[{\cal L}] de la base canonique de stem:[\RR^N].
45
48
46
49
En effet, étant donnés des réels stem:[\alpha_1,\ldots,\alpha_N], la fonction stem:[{p=\sum_{i=1}^N \alpha_i p_i}] vérifie alors stem:[p(a_j)=\alpha_j,\;
@@ -81,7 +84,7 @@ On vérifie aisément que stem:[(p_1,\ldots,p_N)] ainsi définie forme bien une
81
84
[[def:27]]
82
85
.Définition
83
86
****
84
-
On appelle *opérateur de interpolation* (ou encore stem:[P-]interpolation) sur stem:[\Sigma] l’opérateur stem:[\pi_K] qui, à toute fonction stem:[v] définie sur stem:[K], associe la fonction stem:[\pi_K v] de
87
+
On appelle *opérateur d'interpolation* (ou encore stem:[P-]interpolation) sur stem:[\Sigma] l’opérateur stem:[\pi_K] qui, à toute fonction stem:[v] définie sur stem:[K], associe la fonction stem:[\pi_K v] de
85
88
stem:[P] définie par stem:[{\pi_K v = \sum_{i=1}^N v(a_i)\, p_i}].
86
89
87
90
stem:[\pi_K v] est donc l’unique élément de stem:[P] qui prend les mêmes valeurs que stem:[v] sur les points de stem:[\Sigma].
@@ -95,19 +98,19 @@ stem:[\pi_K v] est donc l’unique élément de stem:[P] qui prend les mêmes va
95
98
96
99
On notera stem:[\Pk{k}] l’espace vectoriel des polynômes de degré total inférieur ou égal à stem:[k].
97
100
98
-
* Sur , stem:[\Pk{k}=\hbox{Vect} \{ 1,X,\ldots, X^k\}\quad] et dim stem:[\Pk{k}=k+1].
101
+
* Sur stem:[\RR], stem:[\quad\Pk{k}=\hbox{Vect} \{ 1,X,\ldots, X^k\}\quad] et dim stem:[\Pk{k}=k+1].
99
102
100
-
* Sur stem:[^2], stem:[\Pk{k}=\hbox{Vect} \{ X^i Y^j ; 0\le i+j \le k\}\quad] et dim stem:[{ \Pk{k}=\frac{(k+1)(k+2)}{2}}].
103
+
* Sur stem:[\RR^2], stem:[\quad\Pk{k}=\hbox{Vect} \{ X^i Y^j ;\quad 0\le i+j \le k\}\quad] et dim stem:[{ \Pk{k}=\frac{(k+1)(k+2)}{2}}].
101
104
102
-
* Sur stem:[^3], stem:[\Pk{k}=\hbox{Vect} \{ X^i Y^j Z^l ; 0\le i+j+l \le k\}\quad] et dim stem:[{ \Pk{k}=\frac{(k+1)(k+2)(k+3)}{6}}].
105
+
* Sur stem:[\RR^3], stem:[\quad\Pk{k}=\hbox{Vect} \{ X^i Y^j Z^l ;\quad 0\le i+j+l \le k\}\quad] et dim stem:[{ \Pk{k}=\frac{(k+1)(k+2)(k+3)}{6}}].
103
106
104
107
On notera stem:[\Qk{k}] l’espace vectoriel des polynômes de degré inférieur ou égal à stem:[k] par rapport à chaque variable.
105
108
106
-
* Sur stem:[\RR], stem:[\Qk{k}=\Pk{k}].
109
+
* Sur stem:[\RR], stem:[\quad\Qk{k}=\Pk{k}].
107
110
108
-
* Sur stem:[\RR^2], stem:[\Qk{k}=\hbox{Vect} \{ X^i Y^j ; 0\le i,j \le k\}\quad] et dim stem:[{ \Qk{k}=(k+1)^2}].
111
+
* Sur stem:[\RR^2], stem:[\quad\Qk{k}=\hbox{Vect} \{ X^i Y^j ; \quad 0\le i,j \le k\}\quad] et dim stem:[{ \Qk{k}=(k+1)^2}].
109
112
110
-
* Sur stem:[\RR^3], stem:[\Qk{k}=\hbox{Vect} \{ X^i Y^j Z^l ; 0\le i,j,l \le k\}\quad] et dim stem:[{ \Qk{k}=(k+1)^3}].
113
+
* Sur stem:[\RR^3], stem:[\quad\Qk{k}=\hbox{Vect} \{ X^i Y^j Z^l ; \quad 0\le i,j,l \le k\}\quad] et dim stem:[{ \Qk{k}=(k+1)^3}].
* stem:[{ \Sigma=\{a_i\}_{1\le i\le 4} \cup \{a_{ij}\}_{1\le i < j \le 4} }], où stem:[{a_{ij}=\frac{a_i+a_j}{2}}].
180
183
* stem:[P=\Pk{2}]
181
184
182
185
Les fonctions de base sont stem:[p_i=\lambda_i (2\lambda_i -1)]
@@ -206,7 +209,13 @@ image:fem/elements-3D.jpg[]
206
209
[env.definition]
207
210
.Équivalence affine
208
211
****
209
-
Deux éléments finis stem:[(\hat{K},\hat{\Sigma},\hat{P})] et stem:[(K,\Sigma,P)] sont *affine-équivalents* ssi il existe une fonction affine stem:[F] inversible (stem:[F: \hat{x} \longrightarrow B\hat{x}+b]) telle que _(i)_ stem:[K=F(\hat{K})] _(ii)_ stem:[a_i=F(\hat{a}_i) \qquad i=1,\ldots,N] et _(iii)_ stem:[P=\{ \hat{p}\circ F^{-1} , \quad \hat{p}\in \hat{P} \}]
212
+
Deux éléments finis stem:[(\hat{K},\hat{\Sigma},\hat{P})] et stem:[(K,\Sigma,P)] sont *affine-équivalents* ssi il existe une fonction affine stem:[F] inversible (stem:[F: \hat{x} \longrightarrow B\hat{x}+b]) telle que
Un maillage est constituée d’une famille d’éléments(ou mailles
256
-
ou cellules) stem:[\{K_e\}_{e=1,...,N_e}] où stem:[N_e]
264
+
Un maillage est constitué d’une famille d’éléments (ou mailles ou cellules) stem:[\{K_e\}_{e=1,...,N_e}] où stem:[N_e]
257
265
est le nombre d’éléments, nous noterons
258
266
[[eq:32]]
259
267
[stem]
@@ -302,7 +310,7 @@ Un maillage est généré par
302
310
. un _élément de reference_ noté stem:[\hat{K}]
303
311
. une famille de _transformations géométriques_ mappant stem:[\hat{K}] vers les éléments stem:[K_e, e=1,\ldots,\Ne] dans le maillage
304
312
305
-
Nous supposerons que les transformations sont des stem:[\mathcal{C}^1-] diffeomorphismes footnote:[la transformation et son inverse sont stem:[\mathcal{C}^1] et bijectives].
313
+
Nous supposerons que ces transformations sont des stem:[\mathcal{C}^1-] diffeomorphismes footnote:[la transformation et son inverse sont stem:[\mathcal{C}^1] et bijectives].
306
314
307
315
[[def:32]]
308
316
.Définition
@@ -329,9 +337,10 @@ On dit que stem:[(\hat{K},\hat{P}_{\mathrm{geo}}, \hat{\Sigma}_{\geo})] est l’
329
337
****
330
338
331
339
.Transformation géométrique associée à un triangle
Pour chaque stem:[K \in \mathcal{T}_h], on a un stem:[\ngeo]-uplet stem:[\set{g^K_1,\ldots,g^K_\ngeo}].
342
+
343
+
.Pour chaque stem:[K \in \mathcal{T}_h], on a un stem:[\ngeo]-uplet stem:[\set{g^K_1,\ldots,g^K_\ngeo}].
335
344
336
345
La transformation géométrique est définie comme suit
337
346
[[eq:37]]
@@ -349,12 +358,12 @@ et en particulier on a
349
358
++++
350
359
351
360
[[rem:13]]
352
-
NOTE: On a stem:[T_K \in [\hat{P}_\geo(\hat{K})]^d] et que stem:[\set{g^K_1,\ldots,g^K_\ngeo}] sont les _noeuds géométriques_ de stem:[K].
361
+
NOTE: On a stem:[T_K \in [\hat{P}_\geo(\hat{K})q]^d] et que stem:[\set{g^K_1,\ldots,g^K_\ngeo}] sont les _noeuds géométriques_ de stem:[K].
353
362
354
363
stem:[T_K] est un stem:[\mathcal{C}^1]-diffeomorphism donc la _numérotation_ des noeuds stem:[\set{g^K_1,\ldots,g^K_\ngeo}] doit être _compatible_ avec les noeuds de l’élément finit géométrique.
355
364
356
365
[[rem:15]]
357
-
NOTE: La numérotation locale des entités géométriques dans *doit* être consistente avec la numérotation locale des générateurs de maillage.
366
+
NOTE: La numérotation locale des entités géométriques dans stem:[\hat{K}] *doit* être consistente avec la numérotation locale des générateurs de maillage.
358
367
voir link:http://www.geuz.org/gmsh/doc/texinfo/gmsh.html#Node-ordering[stem:[\triangleright] format de fichier Gmsh] pour une numérotation locale.
359
368
360
369
Un cas particulier est la *transformation géométrique affine*.
@@ -377,7 +386,9 @@ On dit que le maillage est _affine_.
377
386
NOTE: Si l’élément fini géométrique est stem:[(\hat{K},\poly{P}_1,\Sigma_\ngeo)] alors les éléments stem:[K] sont soit des triangles soit des tétrahèdres.
378
387
379
388
[[rem:17]]
380
-
NOTE: `Mesh<Simplex<d,1> >` ou `Mesh<Simplex<d> >` est le type pour les maillages affines formés de simplexes dans stem:[\RR^d]. `1` indique l’ordre de l’_élément fini géométrique_ et est la valeur par défaut.
389
+
NOTE: Dans {feelpp} : `Mesh<Simplex<d,1> >` ou `Mesh<Simplex<d> >` est le type pour les maillages affines formés de simplexes dans stem:[\RR^d].
390
+
391
+
`1` indique l’ordre de l’_élément fini géométrique_ et est la valeur par défaut.
381
392
382
393
[[sec:quelq-calc-avec]]
383
394
=== Quelques calculs avec la transformation géométrique
@@ -392,7 +403,7 @@ On note stem:[\xi] un ensemble de stem:[n] points dans stem:[\hat{K}] et on note
et stem:[B_K(\xi) = \nabla T_K^{-1}(\xi)] l’inverse stem:[\xi] et finalement stem:[J_K(\xi)] le jacobien de stem:[T_K] en stem:[\xi]
406
+
et stem:[B_K(\xi) = \nabla T_K^{-1}(\xi)] l’inverse du gradient de stem:[T_K] aux points stem:[\xi] et finalement stem:[J_K(\xi)] le jacobien de stem:[T_K] en stem:[\xi]
396
407
397
408
[[eq:41]]
398
409
[stem]
@@ -480,7 +491,7 @@ NOTE: On ne manipule que des maillages conformes dans le cours mais {feelpp} peu
480
491
[[sec:espace]]
481
492
== Espaces élément fini de Lagrange
482
493
483
-
Soit stem:[\mathcal{T}_h] un maillage généré par stem:[(\hat{K}, \hat{P}_{\mathrm{geo}}, \hat{\Sigma}_{\mathrm{geo}})], une cellule stem:[K \in \mathcal{T}_h] est alors l’image de stem:[\hat{K}] par la transformation géométrique stem:[T_K] défini par <<eq:23>>.
494
+
Soit stem:[\mathcal{T}_h] un maillage généré par stem:[(\hat{K}, \hat{P}_{\mathrm{geo}}, \hat{\Sigma}_{\mathrm{geo}})], une cellule stem:[K \in \mathcal{T}_h] est alors l’image de stem:[\hat{K}] par la transformation géométrique stem:[T_K] défini par <<eq:37>>.
484
495
485
496
L’objectif à présent est de générer la famille d’éléments finis de Lagrange grâce à l’élément fini de référence stem:[(\hat{K},\hat{P}, \hat{\Sigma})]
486
497
@@ -579,7 +590,7 @@ mais ce n’est pas suffisant: _les fonctions stem:[W_h] peuvent avoir des sauts
Concernant l’implémentation, nous avons besoin de d’indentifier les _degrés de liberté communs entre les éléments_ quand nous construisons la tables des degrés de liberté.
593
+
Concernant l’implémentation, nous avons besoin d’indentifier les _degrés de liberté communs entre les éléments_ quand nous construisons la tables des degrés de liberté.
583
594
584
595
Voici deux exemples d’espace stem:[H^1]-conforme
585
596
[[eq:54]]
@@ -860,15 +871,15 @@ Ain de parcourir les éléments et faces du maillage, {feelpp} fournit des fonct
860
871
861
872
`elements(mesh)`:: retourne 2 itérateurs sur l’ensemble des éléments du maillage
862
873
863
-
`markedelements(mesh,<int>)`:: et `markedelements(mesh,<string>)` retourne 2 itérateurs sur les éléments marqués par l’entier `<int>` et la chaîne des caractères `<string>` respectivement, cela correspondra typiquement à des propriétés de matériau
874
+
`markedelements(mesh,<int>)` et `markedelements(mesh,<string>)`:: retourne 2 itérateurs sur les éléments marqués par l’entier `<int>` et la chaîne des caractères `<string>` respectivement, cela correspondra typiquement à des propriétés de matériau
864
875
865
876
`boundaryfaces(mesh)`:: retourne 2 itérateurs sur les faces au bord du maillage
866
877
867
-
`markedfaces(mesh,<int>)` et `markedelements(mesh,<string>)`:: retourne 2 itérateurs sur les faces marquées par l’entier `<int>` et la chaîne des caractères `<string>` respectivement, ca correspondra typiquement aux conditions aux limites
878
+
`markedfaces(mesh,<int>)` et `markedelements(mesh,<string>)`:: retourne 2 itérateurs sur les faces marquées par l’entier `<int>` et la chaîne des caractères `<string>` respectivement, cela correspondra typiquement aux conditions aux limites
868
879
869
-
NOTE: link pending to {feelpp} user manual mesh iterators section.
880
+
NOTE: TODO : link pending to {feelpp} user manual mesh iterators section.
870
881
871
-
L’espace d’approximation stem:[V_h] stem:[H^1]conforme (espaces de functions continues sur stem:[\Omega] polynomiales par morceaux de degré stem:[\leq k]) est défini comme suit
882
+
L’espace d’approximation stem:[V_h] stem:[H^1]-conforme (espaces de fonctions continues sur stem:[\Omega] polynomiales par morceaux de degré stem:[\leq k]) est défini comme suit
872
883
873
884
[source,cpp]
874
885
----
@@ -903,7 +914,7 @@ On va construire une base de stem:[V_h] en associant à chaque ddl stem:[a_i] un
0 commit comments