Application de DARCY en MEF et MATLAB
Application de DARCY en MEF et MATLAB
I. la définition de DARCY
II. l’utilisation de DARCY
III. Application du MEF sur DARCY
1. la forme variationnelle
2. discrétisation
3. transformation géométrique
4. interpolation
5. contribution élémentaire
6. assemblage
7. Acquisition des conditions aux limites
8. Résolution
IV. programmation sur MATLAB
V. résultats
VI. conclusion
Introduction
La méthode des éléments finis (MEF) est une technique numérique puissante
utilisée pour résoudre des problèmes complexes dans divers domaines de
l'ingénierie et des sciences appliquées. Développée initialement pour analyser
les structures mécaniques, la MEF s'est progressivement étendue à d'autres
domaines, tels que la mécanique des fluides, la thermodynamique,
l'électromagnétisme et bien d'autres.
1. Application en hydrogéologie :
h
x
−𝐿 𝐿 −ℎ ℎ
Ω=[ ; ]∗[ ; ]
2 2 2 2
I-Forme variationnelle :
-∇⋅(k∇p) = f
Où :
on suppose que :
-K est cst
∫ 𝛿𝑃 𝛻(𝑘𝛻𝑃)𝑑𝛺 + ∫ 𝛿𝑃𝑓 ⅆ𝛺 = 0
𝛺 𝛺
La formule de GREEN :
⃗ ) = 𝜵(𝝀)𝒗
𝜵(𝝀𝒗 ⃗⃗⃗⃗
⃗ + 𝝀𝜵(𝒗)
On considère :
∇(δp.k∇p)=∇(δp).k∇p + δp ∇(k∇p)
Donc ,
⃗ ⅆ𝛛𝛀 + ∫ 𝛅𝐏 𝐟 ⅆ𝛀
∫ 𝛁𝛅𝐏(𝐤𝛁𝐏) ⅆ𝛀 = ∫ 𝛅𝐏(𝐤𝛁𝐏) 𝐧
𝛀 𝛀 𝛀
II. Discrétisation
La discrétisation transforme le domaine continu en un ensemble fini de points (nœuds), ce qui
permet de résoudre l’équation de manière numérique. La section détaille également l’interpolation
de Lagrange, utilisée pour approximer les valeurs entre les nœuds du maillage.
Sens géométrique : Pour simplifier les calculs, on applique une transformation géométrique τ aux
éléments, en changeant de variable. Cette transformation facilite l'application de la MEF en
réduisant la complexité du domaine en un cadre géométrique plus simple. on doit faire un
changement de variable :
y 𝜂
x 𝜉
𝑝(𝑥 ) 𝑝(𝜉 )
Pour modéliser la déformation d’un élément et permettre les calculs entre les nœuds,
l’interpolation de Lagrange est utilisée. Cela permet de déterminer des valeurs
approximatives entre les points connus.
Sens mathématique
III. Interpolation
On utilise une base polynomiale en lien avec le nombre de nœuds, ici quatre pour chaque
élément quadrilatère. Cette base est déterminée en fonction du triangle de Pascal,
permettant une approximation adéquate de la fonction de potentiel.
On aura :
1 −1 −1 1 1 1 1 1
1 1 −1 −1 −1 1 1 −1
V = [< b (ξ⃗⃗𝑖 ) >] = V = [ ] 𝑒𝑡 𝑉 −1 = [ ]
1 1 1 1 −1 −1 1 1
1 −1 1 −1 1 −1 1 −1
1
N1 = (1 − ξ − η + ξη)
4
1
N2 = (1 + ξ − η − ξη)
4
1
N3 = (1 + ξ + η + ξη)
4
1
{ N4 = (1 − ξ + η − ξη)
4
Ces fonctions sont fondamentales en MEF, car elles définissent comment chaque point dans un
élément contribue à la solution globale.
∂p
=< N, ξ > {p}
∂ξ
→ ⃗⃗⃗⃗
𝛻𝜉 𝑝 = [ 𝑝, 𝜉 𝑝, 𝜂 ] → ⃗⃗⃗⃗
𝛻𝜉 𝑝 = [ 𝑁, 𝜉 𝑁, 𝜂 ]{𝑝}
𝜕𝑝
=< 𝑁, 𝜂 > {𝑝}
{𝜕𝜂
1
a0, = 4
(x3, + x4, + x1, + x2, )
x1, = a0, − a1, − a2, + a3, 1
x2, = a0, + a1, − a2, + a3, a1, = 4
(x3, − x4, − x1, + x2, )
{ 1
x3, = a0, + a1, + a2, + a3, a2, = (x3, + x4, − x1, − x2, )
x4, = a0, − a1, + a2, + a3, 4
1
{ a3 = 4
(x3, − x4, + x1, − x2, )
{ 𝑥 =< 𝑁(𝜉) > {𝑥𝑖 } 𝑦 =< 𝑁(𝜉) > {𝑦𝑖 } Avec i = (1, 2, 3, 4)
Donc :
Avec 𝑑Ω = (𝐽) 𝑑𝜉 𝑑𝜂
𝜕𝑝 𝜕𝑝 𝜕𝑥 𝜕𝑇 𝜕𝑦 𝜕𝑝 𝜕𝑝 𝜕𝑝 𝜕𝑝
= +
𝜕𝜉 𝜕𝑥 𝜕𝜉 𝜕𝑦 𝜕𝜉 𝜕𝜉 𝜕𝜉 𝜕𝜉 𝜕𝑥
→ = 𝜕𝑝
𝜕𝑝 𝜕𝑝 𝜕𝑥 𝜕𝑇 𝜕𝑦 𝜕𝑝 𝜕𝑝 𝜕𝑝
= +
{𝜕𝜂 𝜕𝑥 𝜕𝜂 𝜕𝑦 𝜕𝜂 {𝜕𝜂} [𝜕𝜂 𝜕𝜂] {𝜕𝑦}
𝜕𝑝 𝜕𝑝
𝜕𝜉 𝜕𝜉
→ 𝛻𝜉𝑝 = [𝐽]𝛻𝑝 Avec [J] = [𝜕𝑝 𝜕𝑝
]
𝜕𝜂 𝜕𝜂
∂p
=< N, ξ > {xi }
∂ξ
𝜕𝑝
=< 𝑁, 𝜂 > {𝑥𝑖 }
{𝜕𝜂
Partie tangente :
⃗⃗⃗⃗
𝛻𝜉 𝑝 = [𝐽] 𝛻𝑝
Or: ⃗⃗⃗⃗
𝛻𝜉 𝑝 = [ < 𝑁, 𝜉 > < 𝑁, 𝜂 > ]{𝑝}𝑒 → ⃗⃗⃗⃗
𝛻𝜉 𝑝 = [𝐺] {𝑝}𝑒
Ainsi on aura :
1 −1 + 𝜂 1− 𝜂 1 + 𝜂 −1 − 𝜂
[G] = [ ]
4 −1 + 𝜉 −1 − 𝜉 1 + 𝜉 −1 − 𝜉
−1 + 𝜂 −1 + 𝜉
1 1 − 𝜂 −1 + 𝜉
[G]T = [ ]
4 1 + 𝜂 1 + 𝜉
−1 − 𝜂 1 − 𝜉
𝑥1 𝑦1
1 −1 + 𝜂 1− 𝜂 1 + 𝜂 −1 − 𝜂 𝑥2 𝑦2
[𝐽] = [𝐺]{𝑋} = [ ]∗[ ]
4 −1 + 𝜉 −1 − 𝜉 1 + 𝜉 −1 − 𝜉 𝑥3 𝑦3
𝑥4 𝑦4
1 (−1 + 𝜂)𝑥1 − (−1 + 𝜂)𝑥2 + (1 + 𝜂)𝑥3 − (1 + 𝜂)𝑥4 (−1 + 𝜂)𝑦1 − (−1 + 𝜂)𝑦2 + (1 + 𝜂)𝑦3 − (1 + 𝜂)𝑦4
= [ ]
4 (−1 + 𝜉)𝑥1 − (1 + 𝜉)𝑥2 + (1 + 𝜉)𝑥3 − (−1 + 𝜉)𝑥4 (−1 + 𝜉)𝑦1 − (1 + 𝜉)𝑦2 + (1 + 𝜉)𝑦3 − (−1 + 𝜉)𝑦4
𝐽11 𝐽12
[J] = [ ]
𝐽21 𝐽22
𝑗11 𝑗12 1 −1 + 𝜂 1− 𝜂 1 + 𝜂 −1 − 𝜂
𝑀 = [𝑗][𝐺] = [ ]∗ [ ]
𝑗21 𝑗22 4 −1 + 𝜉 −1 − 𝜉 1 + 𝜉 −1 − 𝜉
1 (−1 + 𝜂)𝑗11 − (1 − 𝜉)𝑗12 (1 − 𝜂)𝑗11 − (1 + 𝜉)𝑗12 (1 + 𝜂)𝑗11 + (1 + 𝜉)𝑗12 −(1 + 𝜂)𝑗11 + (1 − 𝜉)𝑗12
= [ ]
4 (−1 + 𝜂)𝑗21 − (1 − 𝜉)𝑗22 (1 − 𝜂)𝑗21 − (1 + 𝜉)𝑗22 (1 + 𝜂)𝑗21 + (1 + 𝜉)𝑗22 −(1 + 𝜂)𝑗21 + (1 − 𝜉)𝑗22
Avec :
𝑚12 = 𝑚21 = [(1 − 𝜂)𝑗11 − (1 + 𝜉)𝑗12] ∗ [(−1 + 𝜂)𝑗11 − ((1 − 𝜉)𝑗12] + [(1
− 𝜂)𝑗21 − (1 + 𝜉)𝑗22] ∗ [(−1 + 𝜂)𝑗21 − (1 − 𝜉)𝑗22)]
𝑚23 = 𝑚32 = [(1 − 𝜂)𝑗11 − (1 + 𝜉)𝑗12] ∗ [(1 + 𝜂)𝑗11 + (1 + 𝜉)𝑗12] + [(1 − 𝜂)𝑗21
− (1 + 𝜉)𝑗22 ] ∗ [(1 + 𝜂)𝑗21 + (1 + 𝜉)𝑗22]
𝑎 𝑏
1 −1 + 𝜂 1− 𝜂 1 + 𝜂 −1 − 𝜂 𝑎+1 𝑏
[𝐽] = [𝐺]{𝑋} = [ ]∗[ ]
4 −1 + 𝜉 −1 − 𝜉 1 + 𝜉 −1 − 𝜉 𝑎+1 𝑏+ℎ
𝑎 𝑏+ℎ
1 𝐿 0
→ [𝐽] = [ ]
2 0 ℎ
2 0 𝐿+ℎ
Avec : → [𝐽]−1 = [ 𝐿 2] et → 𝑑𝑒𝑡(𝐽) = 4
0 ℎ
−1 + 𝜂 1− 𝜂 1 + 𝜂 −1 − 𝜂
1
𝑀 = [𝑗][𝐺] = [ 𝐿 𝐿 𝐿 𝐿 ]
2 −1 + 𝜉 −1 − 𝜉 1 + 𝜉 −1 − 𝜉
ℎ ℎ ℎ ℎ
Et sa transposée égale :
−1 + 𝜂 −1 + 𝜉
𝐿 ℎ
1 − 𝜂 −1 + 𝜉
1 𝐿 ℎ
[M]T =
4 1 + 𝜂 1 + 𝜉
𝐿 ℎ
−1 − 𝜂 1 − 𝜉
[ 𝐿 ℎ ]
𝑘𝑒
𝑙ℎ
= 𝑘
4
1 1 1 1 1 1 1 1
(𝜂 − 1)2 + 2 (𝜉 − 1)2 − (1 − 𝜂)2 − 2 (𝜉² − 1) (𝜂² − 1) + (𝜉² − 1) − (𝜂² − 1) − 2 (𝜉 − 1)2
𝐿2 ℎ 𝐿2 ℎ 𝐿2 ℎ2 𝐿2 ℎ
1 1 1 1 1 1 1 1
1 − 2 (𝜂 − 1)2 − 2 (𝜉² − 1) (1 − 𝜂)2 + 2 (𝜉 + 1)2 (1 − 𝜂²) − 2 (𝜉 + 1)2 − 2 (1 − 𝜂²) − 2 (1 − 𝜉²)
+ ∫ 𝐿 ℎ 𝐿2 ℎ 𝐿2 ℎ 𝐿 ℎ 𝑑𝜉 𝑑𝜂
4 1 1 1 1 1 1 1 1
(𝜂² − 1) + 2 (𝜉² − 1) (1 − 𝜂²) − 2 (𝜉 + 1)2 (𝜂 + 1)2 + 2 (𝜉 + 1)2 − 2 (𝜂 + 1)2 + 2 (1 − 𝜉²)
𝐿2 ℎ 𝐿2 ℎ 𝐿2 ℎ 𝐿 ℎ
1 1 2
1 1 1 1 1 1
[− 𝐿2 (𝜂² − 1) − ℎ2 (𝜉 − 1) − 2 (1 − 𝜂²) + 2 (𝜉² − 1) − 2 (𝜂 + 1)2 − 2 (𝜉² − 1)2 (𝜂 + 1)2 + 2 (1 − 𝜉)2 ]
𝐿 ℎ 𝐿 ℎ 𝐿2 ℎ
2 2 −2 1 −1 1 1 2
+ + + −
𝐿2 ℎ2 𝐿2 ℎ2 𝐿2 ℎ2 𝐿2 ℎ2
1 1 2 2 1 2 −1 1
𝑙ℎ 𝐿2 + ℎ2 𝐿2
+ 2
ℎ 𝐿2
− 2
ℎ
−
𝐿2 ℎ2
𝑘𝑒 = 𝑘
6 −1 1 1 2 2 2 −2 1
− − 2 + 2 +
𝐿2 ℎ2 𝐿2 ℎ 𝐿2 ℎ 𝐿2 ℎ2
1 2 −1 1 −2 2 2 2
[ 𝐿2 − ℎ2 −
𝐿2 ℎ2
+
𝐿2 ℎ2
+
𝐿2 ℎ2 ]
𝜕𝑝 𝑙ℎ
𝑘∫ 𝑢 𝑑𝑆 = 𝑘 ℎ(𝑝𝑒𝑥𝑡 − 𝑝𝑖𝑛𝑡) < 𝑢 >𝑒
𝜕𝑛 4
(1 − 𝜉 − 𝜂 + 𝜉𝜂)
𝐿ℎ (1 + 𝜉 − 𝜂 − 𝜉𝜂)
∫𝛺𝑒 𝑄𝑔 𝑢 𝑑Ω = 𝑄𝑔 < 𝑢 >𝑒 ∫𝛺𝑒 ( )
4 (1 + 𝜉 + 𝜂 + 𝜉𝜂)
(1 − 𝜉 + 𝜂 − 𝜉𝜂)
1
𝐿ℎ 1 𝑒
∫𝛺𝑒 𝑄𝑔 𝑢 𝑑Ω = 𝑄𝑔 < 𝑢 > ( )
4 1
1
V. Assemblage
L’assemblage consiste à combiner les contributions de tous les éléments pour former une matrice de
rigidité globale qui représente le système complet. Les termes de conduction et de convection sont
additionnés dans cette matrice. La matrice globale est essentielle pour les calculs finaux car elle
intègre toutes les interactions entre éléments et prend en compte la structure entière du domaine.
−𝑘 ∫𝛺 𝛻𝑢 𝛻𝑝 𝑑Ω + ∫𝛺 𝑄𝑔 𝑢 𝑑Ω = 0
Cette équation contient deux termes, commençons par le premier terme exprimant la rigidité,
0 0 0 0 0 0 𝑝1
0 𝑘11 𝑘12 0 𝑘14 𝑘13 𝑝2
0 𝑘21 𝑘22 0 𝑘24 𝑘23 𝑝3
𝐾𝑒2 = < 𝑢1 𝑢2 𝑢3 𝑢4 𝑢5 𝑢6 >
0 0 0 0 0 0 𝑝4
0 𝑘41 𝑘42 0 𝑘44 𝑘43 𝑝5
[0 𝑘31 𝑘32 0 𝑘34 𝑘33] {𝑝6}
Finalement, on assemble e1 et e2 :
1
𝐿ℎ 1
𝑄𝑒 1 = < 𝑢1 𝑢2 𝑢5 𝑢4 > ( ) 𝑄𝑔
4 1
1
1
1
1
𝐿ℎ 0
𝑄𝑒 = < 𝑢1 𝑢2 𝑢3 𝑢4 𝑢5 𝑢6 > 𝑄𝑔
4 1
1
( 0)
1
2
𝐿ℎ 1
𝑄𝑒 = < 𝑢2 𝑢3 𝑢6 𝑢5 > ( ) 𝑄𝑔
4 1
1
0
1
𝐿ℎ 1
𝑄𝑒 2 = < 𝑢2 𝑢3 𝑢6 𝑢5 > 𝑄𝑔
4 0
1
( 1)
Finalement, on assemble
1
2
𝑙ℎ 1
𝑄𝑒 1 + 𝑄𝑒 2 = < 𝑢1 𝑢2 𝑢3 𝑢4 𝑢5 𝑢6 > 𝑄𝑔
4 1
2
( 1)
Les conditions aux limites définissent ce qui se passe aux bords du domaine. Elles
représentent les contraintes physiques, comme la hauteur ou le flux d’eau.
Type :
1. Dirichlet :
𝑝(𝑥, 𝑦 = 0) = 𝑝𝑒𝑥𝑡
{
𝑝(𝑥 = 0, 𝑦) = 𝑝𝑒𝑥𝑡
2. Neumann :
𝝏𝒑
Imposent une valeur pour le flux ( ).
𝝏𝒏
𝑄(𝑥, 𝑦 = 0) = 0
{
𝑄(𝑥 = 0, 𝑦) = 0
VII. Résolution
La résolution consiste à résoudre un système d’équations de la forme :
𝐾𝑥 = 𝐹
• K : Matrice globale, issue des contributions élémentaires. Elle représente les interactions
entre les nœuds.
• x : Vecteur des inconnues. Il contient les valeurs du potentiel hydraulique p aux nœuds.
• F : Vecteur global de charges, représentant les sources externes et les conditions aux limites.
programmation sur MATLAB :
• Lx = 2; Ly = 2;
• % function Mesh
• [coor, conn, nN, nDofEl, nDofT, nNEl, nEl] = generateMesh(Lx, Ly, nElx, nEly);
• F = zeros(nDofT, 1);
• kT = zeros(nDofT);
• Fe = zeros(nDofEl, 1);
• for pg = 1:nPg
• xi = Xi(pg); eta = Eta(pg); w = W(pg);
• J = G * [xEl yEl];
• x = N * xEl; y = N * yEl;
• j = inv(J);
• end
• p = kT \ F;
• % Used Functions
• function [coor, conn, Nnoeud, Nddlpelt, Nddlt, Nnpelt, nelt] = generateMesh(Lx, Ly,
nelx, nely)
• Nx = nelx + 1; Ny = nely + 1;
• hx = Lx / nelx; hy = Ly / nely;
• k = 1;
• for j = 1:Ny
• for i = 1:Nx
• coor(k, 1) = (i - 1) * hx;
• coor(k, 2) = (j - 1) * hy;
• coor(k, 3) = 0.0;
• k = k + 1;
• end
• end
• start = 1;
• for j = 1:nely
• for i = 1:nelx
• conn(start, 1) = (j - 1) * Nx + i;
• conn(start, 2) = (j - 1) * Nx + i + 1;
• conn(start, 3) = j * Nx + i + 1;
• conn(start, 4) = j * Nx + i;
• start = start + 1;
• end
• end
• end
• function [B1, B2, B3, B4] = nddlpn(Lx, Ly, coor, nelx, nely)
• % Bords Definition
• % Left edge : x = 0
• % Bottom edge y = 0
• % Right edge x = Lx
• % Top edge y = Ly
• end
• % Global indicies
• n = length(nods); % = 4
• index = zeros(n, 1);
• index(nod) = nods(nod);
• end
• end
• % Assembly
• end
• if npg == 1
• xi = 0; eta = 0; w = 4;
• elseif npg == 4
• x1 = -1/sqrt(3); x2 = 1/sqrt(3);
• w1 = 1; w2 = 1;
• end
• end
• G = [gxi; geta];
• end
4-Resultats :
En considerant que :
- B1=bord gauche
- B2 =bord du bas
- B3= bord de droite
- B4= bord du haut
Nous avons appliqué une préssion de 10Mpa au bord droit : C’est là ou le fluide
a été injecté ; et une pression de 0Mpa à gauche et en bas: c’est la sortie du
fluide . On trouve que les lignes de courant sont exponentielles dans la figure ci-
dessous :
Distribution de la pression
2
9
1.8
8
1.6
7
1.4
6
1.2
y (m)
5
1
4
0.8
0.6 3
0.4 2
0.2 1
0
0 0.5 1 1.5 2
x (m)
Distribution de la pression
2
9
1.8
8
1.6
7
1.4
6
1.2
y (m)
5
1
4
0.8
0.6 3
0.4 2
0.2 1
0
0 0.5 1 1.5 2
x (m)
- F=1
En ajoutant une force F=1 on trouve que la pression est plus elévé au
centre
11
Distribution de la pression x 10
2
4.5
1.8
4
1.6
3.5
1.4
3
1.2
y (m)
2.5
1
2
0.8
0.6 1.5
0.4 1
0.2 0.5
0
0 0.5 1 1.5 2
x (m)
5
1
4
0.8
0.6 3
0.4 2
0.2 1
0
0 0.5 1 1.5 2
- F=1
En appliquant une force constante F=1, la pression est plus forte au centre .
11
Distribution de la pression x 10
2
1.8 2.5
1.6
1.4 2
1.2
1.5
y (m)
0.8
1
0.6
0.4
0.5
0.2
0 0
0 0.5 1 1.5 2
x (m)
Ici nous avons pris une permeabilité variable pour pour illustrer le cas du sol car
ce dernier est hétérogène ; il est composé du sable , le gravier, l’argile… etc ; Et
tous ont leur permeabilité différente
y (m)
10
1 1
0.8 0.8 9
0.6 0.6 8
0.4 0.4 7
0.2 0.2
6
0 0
0 0.5 1 1.5 2 0 1 2
x (m) x (m)
Conclusion :
L’étude de la loi de Darcy, combinée à des outils tels que la méthode des
éléments finis, est essentielle en conception mécanique pour comprendre et
maîtriser les interactions entre fluides et structures poreuses. Que ce soit dans
le développement de systèmes de refroidissement, de filtres industriels ou de
matériaux innovants comme les mousses métalliques ou les composites, la
capacité à modéliser les écoulements dans les milieux poreux est cruciale.