Petrole
Petrole
Petrole
8 mars 2007
Le milieu dans lequel s'écoule le uide est un milieu poreux xe au cours du temps. Il est caractérisé, à
l'échelle macroscopique, par deux scalaires (le milieu est supposé isotrope) : sa perméabilité absolue K qui
exprime la facilité d'un uide à s'écouler dans le milieu et sa porosité φ qui représente la part du volume occupé
par les pores par rapport au volume total du milieu. La porosité est supposée être constante (elle ne dépend
pas de la variable d'espace) par contre la perméabilité pourra dépendre de la variable d'espace. Le milieu est
supposé connu, sa perméabilité absolue K et sa porosité φ sont des données du problème.
Le uide est constitué de deux phases liquides : eau et pétrole. Ces phases sont supposées immiscibles et
incompressibles. L'écoulement de chaque phase est déterminé par deux données : un scalaire, la pression p et
un champs de vecteurs, la vitesse de ltration (ou vitesse de darcy) v qui dépendent du temps et de la variable
d'espace. De plus, comme plusieurs phases cohabitent dans le milieu, un dernier paramètre est nécessaire : la
saturation s ; c'est la fraction de pores occupés par la phase. Les inconnues du problème sont donc sw , so ,
pw , po , vw , vo , les saturations, pressions et vitesses pour chacune des phases. Les indices w et o désignent
respectivement la phase eau et la phase pétrole. Enn, nous supposerons connues deux fonctions fw et fo .
Ces deux fonctions appliquées aux saturations sw et so permettent de rendre compte, avec la perméabilité
absolue du milieu, de la facilité de chaque phase à s'écouler dans le milieu. Ces deux fonctions s'écrivent sous
rw ro
la forme fw = et fo = , où µw et µo sont les viscosités des deux phases, rw et ro les perméabilités relatives.
µw µo
1.2 Equations
sw + so = 1.
De plus, le lien entre pw et po peut être établi de manière expérimentale. C'est ce que l'on appelle une loi
de pression capillaire. Ici, on considère que :
pw = po .
1
injectées (membre de droite) et des ux massiques traversant les parois du volume élémentaire (deuxième
terme du membre de gauche).
∂ρφs
+ div (ρv) = ρh
∂t
où ρ représente la masse volumique du uide et h une fonction puits liée au débit de uide préle-
vée/injectée.
Dans notre cas, il y a deux uides, nous aurons donc deux équations de conservation de masse. De plus,
nous supposons que les deux uides sont incompressibles càd que ρ est une constante.
∂φsw
+ div (vw ) = hw , dans Ω×]0, T [,
∂t
∂φso
+ div (vo ) = ho , dans Ω×]0, T [.
∂t
3. Loi de Darcy
On suppose que les écoulements des uides sont régis par la loi de Darcy (modèle adapté aux milieux
poreux et aux écoulements lents).
Ces équations obtenues de manière expérimentale expriment le fait que le débit de l'écoulement est pro-
portionnel au gradient de pression.
4. Condition initiale
La condition initiale est
6. Modéle Complet
On aura donc à résoudre le systéme d'équations suivant :
∂φs
− div(fw (s)K∇p) = 0 dans Ω×]0, T [,
∂t
∂φ(1 − s)
− div(fo (s)K∇p) = 0 dans Ω×]0, T [,
∂t
s(x, 0) = 0 dans Ω.
La porosité φ, la perméabilité absolue K et les fonctions fw et fo sont données. Les inconnues du problème
sont la pression p et la saturation en eau s.
2
2 Résolution numérique
A partir de cette section, on ne considère que des réservoirs rectangulaires représentés par Ω =]0, Lx [×]0, Ly [,
avec Lx > 0, Ly > 0. Le temps varie entre 0 et T > 0.
Le schéma choisi est un schéma volume ni explicite en saturation et implicite en pression.
On introduit un maillage spatial (de Ω) régulier. Il est déni par deux entiers nx , n y ∈ N∗ qui donnent les
pas du maillage en x et y :
Lx Ly
hx = , hy = .
nx ny
On note alors, pour i ∈ {1, · · · nx }, xi = ihx − hx /2 et pour i ∈ {0, · · · nx }, xi+1/2 = ihx . De même, pour
j ∈ {1, · · · ny } on note yj = jhy − hy /2 et pour j ∈ {0, · · · ny }, on note yj+1/2 = jhy .
Le domaine Ω est alors découpé en nx ny mailles Mi,j =]xi−1/2 , xi+1/2 [×]yj−1/2 , yj+1/2 [ pour i ∈ {1, · · · nx },
j ∈ {1, · · · ny }
Enn, pour chaque maille Mi,j , on note C(Mi,j ) l'ensemble des 4 côtés de la maille pour i ∈ {1, · · · nx } et
j ∈ {1, · · · ny }, ie :
2.1 Discrétisation
Pour obtenir le schéma volume ni, on intégre les équations sur chaque maille Mi,j pour i ∈ {1, · · · nx } et
j ∈ {1, · · · ny }. On a donc 2nx ny équations :
sn+1 n
i,j − si,j
X
n
hx hy φ + FM = 0
kn i,j,c
c∈C(Mi,j )
sn+1 n
i,j − si,j
X
−hx hy φ + GnMi,j,c = 0
kn
c∈C(Mi,j )
n
GnMi,j,c
R R
où les ux discrets FM i,j,c
et approchent respectivement − c
fw (s)K∇p.nMi,j,c et − c
fo (s)K∇p.nMi,j,c
entre les temps tn et tn+1 .
n
Le ux discret FM i,j,c
est donc une approximation de la quantité d'eau sortante de la maille Mi,j par le côté c
au temps tn . De même, le ux discrets GnMi,j,c est donc une approximation de la quantité de pétrole sortante
de la maille Mi,j par le côté c au temps tn .
Il reste maintenant à exprimer les ux discrets. Pour cela, il est nécessaire de distinguer les ux intérieurs
et les ux extérieurs. Nous supposons dans un premier temps que la perméabilité absolue K est une contante
càd qu'elle ne dépend pas de la variable d'espace.
n
pn+1 n+1
i,j − pi−1,j
FM = hy (fw )nc K
i,j,c
hx
3
R
et − c
fo (s)K∇p.nMi,j,c par :
n+1 n+1
pi,j − pi−1,j
GnMi,j,c = n
hy (fo )c K
hx
où les valeurs (fw )nc et (fo )nc sont des approximations décentrées de fw (s) et fo (s) sur c à l'instant tn :
n
FM i,j,c
= GnMi,j,c = 0.
Condition de ux imposé :
On impose un ux a>0 d'eau rentrant dans Ω par c (où a est donnée) :
n
FM i,j,c
= −a
et
GnMi,j,c = 0.
Condition de ux à pression imposée :
On impose une pression pc sur c et la saturation sc donne la composition du uide qui rentre dans le
réservoir si la pression pc est supérieure à celle du réservoir. On a alors :
n
pn+1
i,j − pc
FM = 2hy (fw )nc K
i,j,c
hx
et
pn+1
i,j − pc
GnMi,j,c = 2hy (fo )nc K
hx
où les valeurs (fw )nc et (fo )nc sont des approximations décentrées de fw (s) et fo (s) sur c à l'instant tn :
b) Calcul de la pression
En additionnant les deux équations, on élimine la saturation. La pression est solution du système linéaire
de nx ny équations à nx ny inconnues :
X
n
FM i,j,c
+ GnMi,j,c = 0, (i, j) ∈ {1, · · · , nx } × {1, · · · , ny }.
c∈C(Mi,j )
Ce système peut s'écrire à l'aide d'une matrice carrée A de taille nx ny et un second membre b de taille nx ny .
La matrice A est alors symétrique dénie positive. Pour résoudre ce système linéaire, on utilise la méthode de
Cholesky. Cette méthode consiste à décomposer A en utilisant le résultat suivant : il existe une unique matrice
réelle triangulaire inférieure L telle que A = LLT et ∀i, Li,i > 0. Ainsi la résolution devient :
Ly = b on obtient y par une méthode de descente
LT x = y on obtient x par une méthode de remontée
Pour factoriser une matrice A de cette manière, on calcule L par récurrence sur les lignes :
p
L1,1 = A1,1 .
Pour i ≥ 2, on résout le système suivant par une méthode de descente (la matrice étant triangulaire inférieure) :
4
L1,1 Li,1 Ai,1
L2,1 L2,2 Li,2 Ai,2
=
. .. . .
. . .
. . . .
Li−1,1 Li−1,2 ··· Li−1,i−1 Li,i−1 Ai,i−1
v
u
u i−1
X
Et on a Li,i = tAi,i − L2i,k .
k=1
Cette décomposition conserve le prol. En eet, si tous les Ai,k sont nuls pour k < i, alors on a la même
propriété pour L : tous les Li,k sont nuls pour k < i.
C'est pour cette raison que l'on adopte ici un stockage prol de la matrice A. Notons N la taille de la
matrice. Ce stockage se réalise à l'aide de deux tableaux :
le premier V alA contient les valeurs des éléments de la matrice stockées ligne par ligne. On stocke
uniquement, pour chaque ligne, les éléments entre le premier non nul et le terme diagonal (inclus).
le deuxième tableau P rof ilA permet de retrouver chaque ligne de la matrice dans le tableau V alA. Il y
a plusieurs possibilités. En général, ce tableau est un tableau d'entiers de taille N qui contient en ieme
place soit le nombre d'éléments de la ligne i stockés dans le tableau V alA soit la place dans le tableau
V alA de l'élément diagonal de la ligne i. Dans le deuxième cas, une astuce consiste à rajouter un zéro
en début de tableau pour faciliter l'utilisation des boucles : en eet la formule Nombre de termes sur la
ligne i = P rof ilA(i + 1) − P rof ilA(i) est alors valable pour i ∈ {1, · · · , N }.
En pratique, pour construire la matrice A, on calcule d'abord sa structure prol càd le tableau P rof ilA.
Comme cela vient d'être précisé, on ne stocke que la partie triangulaire inférieure nécessaire de A. Pour dénir
précisément la matrice A, il faut d'abord numéroter chaque maille. Nous avons choisi de les numéroter de
manière simple càd de gauche à droite et de haut en bas. Puisqu'il y a une équation et une inconnue par maille,
cette numérotation induit une numérotation des équations et des inconnues. La matrice A est alors entièrement
dénie. Chaque maille a au plus quatres mailles voisines et donc notre matrice a au plus cinq coecients non
nuls sur chaque ligne. En eet, l'équation associée à une maille ne fait intervenir que les inconnues liées à cette
maille et à ses voisines. Le tableau P rof ilA vaut [1 2 · · · 2 nx + 1 · · · · · · nx + 1] (si l'on choisi d'y faire gurer
le nombre d'éléments stockés par ligne). En eet, de la première ligne on ne stocke que le terme diagonal, des
lignes 2 jusqu'à nx on ne stocke que le terme diagonal et le terme sous-diagonal ( ce terme correspond à l'inconnu
de la maille située à gauche, les termes correspondant aux mailles situées à droite ou au dessous n'interviennent
pas ici car ils sont dans partie supérieure de la matrice, enn il n'y a pas de maille au dessus car on n'a condidéré
que les mailles sur le bord haut du domaine). On ne stocke pour l'instant que des termes non nuls. Par contre
sur les autres lignes sont non nuls le terme diagonal, le terme sous diagonal si le numéro de ligne ne corres-
pond pas à une maille du bord gauche et un terme situé nx colonnes avant le terme diagonal (correspondant
à l'inconnu de la maille située au dessus). Il faut donc stocker nx + 1 termes pour ces lignes. On constate que
l'on stocke des zéros malgré notre structure prol, celle-ci n'élimine que les zéros avant le premier terme non nul.
Une fois le prol construit, on peut commencer à stocker les valeurs de la matrice et du second membre.
Pour cela, on part d'une matrice et d'un second membre nuls, on eectue un parcours des arêtes en ajoutant
pour chaque arête sa contribution dans la matrice A et dans le second membre b. On distingue le cas des arêtes
intérieures et celui des arêtes extérieures. En eet, une arête intérieure contribue à trois termes dans la matrice
A alors qu'une arête extérieure contribue à au plus un terme dans la matrice A et au plus un terme dans le
second membre b.
Par exemple,
pour une arête intérieure c horizontale séparant la maille numérotée k et la maille numérotée k + nx , on
ajoute trois coecients à A:
hx
Ak,k = Ak,k + ((fw )nc + (fo )nc ) K
hy
hx
Ak+nx,k+nx = Ak+nx,k+nx + ((fw )nc + (fo )nc ) K
hy
hx
Ak+nx,k = Ak+nx,k − ((fw )nc + (fo )nc ) K
hy
pour une arête de la maille k sur le bord à ux imposé a, on ajoute un coecient dans le second membre
bk = bk + a.
pour une arête de la maille k sur le bord à pression imposé pc , on ajoute un coecient dans le second
5
hx
membre bk = bk + 2 ((fw )nc + (fo )nc ) K pc et un coecient dans la matrice
hy
hx
Ak,k = Ak,k + 2 ((fw )nc + (fo )nc ) K
hy
Une fois la matrice A et le second membre b construits, on résout le système par la méthode de Cholesky.
On obtient {pn+1
i,j , (i, j) ∈ {1, · · · , nx } × {1, · · · , ny }}.
Remarque : Le calcul de p1i,j nécessite la connaissance de p0i,j qui n'est pas donnée. Cependant ces valeurs
n'interviennent que dans les choix des décentrements qui n'ont aucune importance au premier pas puisque s
est nulle partout. Il y a seulement une petite diculté au bord, il faut faire en sorte qu'avec la valeur de p0i,j
xée le programme choisisse le bon décentrement.
Le choix du pas de temps kn est fait de manière à respecter des contraintes de stabilité du schéma numé-
rique. On souhaite par exemple que sn+1
i,j ∈ [0, 1] pour (i, j) ∈ {1, · · · , nx } × {1, · · · , ny }.
On pose
( )
hx hy φ
h = min n , (i, j) ∈ {1, · · · , nx } × {1, · · · , ny }
)−
P
cf c∈C(Mi,j ) (HM i,j,c
d) Calcul de la saturation
Une fois la pression à l'instant tn+1 et le pas de temps kn connus, on obtient facilement la saturation :
kn X
sn+1 n
i,j = si,j −
n
FM
hx hy φ i,j,c
c∈C(Mi,j )
On suppose qu'il y a L puits, numérotés de 1 à L, et qu'il y a au plus un puits par maille. Soit l ∈ {1, · · · , L},
on note npl le numéro de la maille qui contient le puits l et rl le rayon du puits. Pour cette maille M de numéro
npl , on associe le couple (i, j) correspondant, et on remplace alors les équations par :
sn+1 n
i,j − si,j
X
n n
hx hy φ + FM = qw,l dans Ω×]0, T [,
kn i,j,c
c∈C(Mi,j )
sn+1 n
i,j − si,j
X
−hx hy φ + GnMi,j,c n
= qo,l dans Ω×]0, T [.
kn
c∈C(Mi,j )
n n
Les quantités qw,l et qo,l sont les ux d'eau et d'huile du puits l , entre l'instant tn et tn+1 .
n n
Si qw,l >0 (respectivement qo,l > 0), il y a injection d'eau (respectivement d'huile) au puits l .
n n
Si qw,l <0 (respectivement qo,l < 0), il y a production d'eau (respectivement d'huile) au puits l .
Soit l ∈ {1, · · · , L}, on suppose que le puits l est à pression imposée. On note pl cette pression imposée. On
pose qln = qw,l
n
+ qo,ln
le débit total au puits. Ce débit total est inconnu. On note M la maille contenant le puits l .
6
On obtient que :
n+1
qln = Il (fw (s) + fo (s))(pl − pi,j ),
avec
K
Il =
− 41 + 1
2π ln
h
rl
(fw )nl
n
qw,l = qn
(fw )nl + (fo )nl l
(fo )nl
n
qo,l = qn
(fw )nl + (fo )nl l
où les valeurs (fw )nl et (fo )nl sont des approximations décentrées de fw (s) et fo (s) au puits l à l'instant tn :
b) Calcul de la pression
On construit la même matrice A et le même second membre b que précédemment, mais on résout le système
suivant :
L
X
Ap = b + qln bl
l=1
où pour l ∈ {1, · · · , L}, bl est un vecteur dont toutes ses composantes sont nulles sauf pour la maille npl on
a blnpl = 1.
Pour cela, on résout (L+1) systèmes linéaires avec la même matrice A mais des seconds membres diérents :
b, b1 , · · · , bL .
Il est intéressant de remarquer que la décomposition de la matrice A n'est à faire qu'une fois, ensuite on résout
seulement 2(L + 1) systèmes triangulaires : (L + 1) descente et (L + 1) remontée.
n+1
On note {p0,i,j , (i, j) ∈ {1, · · · , nx } × {1, · · · , ny }} la solution de Ap = b.
Pour l ∈ {1, · · · , L}, on note {pn+1 l,i,j , (i, j) ∈ {1, · · · , nx } × {1, · · · , ny }} la solution de Ap = bl .
Il faut également calculer les {qln , l ∈ {1, · · · , L}} qui sont solutions d'un système linéaire à L équations à
L inconnues : !
L
X
n+1 n+1
qln = Il ((fw )nl + (fo )nl ) pl − p0,i,j − qkn pk,i,j
k=1
où le couple (i, j) correspond à la maille Mi,j du puits l .
L
X
n+1
pi,j = pn+1
0,i,j +
n+1
qln pl,i,j , (i, j) ∈ {1, · · · , nx } × {1, · · · , ny }
l=1
7
c) Choix du pas de temps
Le choix du pas de temps kn est toujours fait de manière à respecter des contraintes de stabilité du schéma
numérique.
Et pour chaque l ∈ {1, · · · , L}, on a pour le couple (i, j) correspondant à la maille Mi,j du puits l :
hx hy φ
hl = n )− + (qln )+ )
P
cf ( c∈C(Mi,j ) (HM i,j,c
On a en général :
(HMn
i,j,c
)− = 0, si le puits est injecteur, ie (qln )+ = qln > 0
et (HM
n
i,j,c
)− = HMn
i,j,c
< 0, si le puits est producteur, ie (qln )+ = 0.
On pose enn :
h = min {h, min {hl , l ∈ {1, · · · , L}}}
On prend alors kn = γh, avec γ ≤ 1.
d) Calcul de la saturation
Une fois la pression à l'instant tn+1 et le pas de temps kn connus, on obtient facilement la saturation pour
un couple (i, j) ∈ {1, · · · , nx } × {1, · · · , ny } :
Si la maille Mi,j est sans puits, on a :
kn X
sn+1 n
i,j = si,j −
n
FM ,
hx hy φ i,j,c
c∈C(Mi,j )
kn X
sn+1 n
i,j = si,j − n
FM n
− qw,l
hx hy φ i,j,c
c∈C(Mi,j )
3 Cas tests
3.1 Test 1 la pression est indépendante du temps
Flux nul
K=1
Φ=1 Pression
Flux 1 nulle
fw(s) = s
fo(s) = 1 s
Flux nul
Fig. 1 Domaine 1
8
La porosité φ = 1.
La perméabilité absolue K = 1.
Les fonctions sont :
fw (s) = s
fo (s) = 1−s
La condition initiale est s(0, x) = 0, x ∈ Ω.
Les conditions limites sont :
Bords gauche : Flux 1 imposé
Bords bas : Flux nul
Bords haut : Flux nul
Bords droit : Flux à pression nulle imposée et sc = 1 à l'extérieur du domaine.
Avec les choix de maillage et de CFL suivants :
Nombre de mailles en x : 50
Nombre de mailles en y : 50
Le temps T = 0.45, soit 30 pas de temps.
La CFL de 3/4.
On obtient les résultats illustrés sur les gures 2 (courbes de niveaux), 3 (vue en 3d), 4 et 5.
Pression Pression
1.0
1.0
0.9 0.99
0.9
0.8
0.8
0.7 0.74
0.7
0.6
bord gauche
0.6
0.5 0.5
Z
0.5
0.4 0.4
0.2
0.2
0.1
0.1 0.01
0.0
0.0 1.0
0.0 0.1 0.6 0.8
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.2 0.3 0.4 0.5 0.4
bord bas 0.6 0.7 0.8 0.9 0.2 bord droit
0.0
1.0
bord bas
Saturation Saturation
1.0
0.9 1
1.2
0.8
1.0
0.7 0.75
0.6 0.8
bord gauche
bord gauche
0.4 0.4
0.2 0.0
1.0
0.8
0.1 −2.6e−18 0.6
−0.2
0.0 0.4
0.1 0.2 0.3
0.0 0.4 0.5 0.2
0.6 0.7 0.0
0.8 0.9 1.0 bord droit
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
bord bas
bord bas
9
∂φs ∂ ∂p
(x, t) − sK (x, t) = 0 dans ]0, 1[×]0, T [,
∂t ∂x ∂x
∂φ(1 − s) ∂ ∂p
(x, t) − (1 − s)K (x, t) = 0 dans ]0, 1[×]0, T [,
∂t ∂x ∂x
∂p
−K (0, t) = 1 ]0, T [,
dans
∂x
p(1, t) =
0 ]0, T [,
dans
0 0<x<1
si
s(x, 0) = ]0, 1[
dans
1
sinon
En additionnant les deux premières équations, la saturation s'élimine et nous trouvons l'équation suivante
∂2p
sur la pression : = 0. La dérivée de la pression ne dépend ainsi que du temps, sa valeur est imposée par
∂x2
∂p 1
la condition sur le bord (x = 0), on a donc pour tout (x, t) ∈]0, 1[×]0, T [, (x, t) = − . Finallement, p est
∂x K
donné par la condition sur le bord (x = 1). On obtient
1
∀(x, t) ∈ Ω×]0, T [, p(x, t) = (1 − x).
K
∂s 1 ∂s
En réinjectant cette valeur dans les équations ci dessus, nous obtenons (x, t) + (x, t) = 0 dans ]0, 1[×]0, T [.
∂t φ ∂x
Ce qui donne encore
t
1
si 0<x<
∀(x, t) ∈ Ω×]0, T [, s(x, t) = φ .
t
0
si <x<1
φ
Ces solutions exactes coïncident avec celles trouvées numériquement ci dessus (gures 2, 3, 4 et 5). Notre
schéma donne bien une pression dans le réservoir indépendante du temps. Les résultats trouvés numériquement
sont également indépendant de y. On constate néanmoins que le schéma proposé diuse (pour le calcul de la
saturation).
Flux nul
K=1
Φ=1 Pression
Flux 1 nulle
fw(s) = s2
fo(s) = (1 s)2/4
Flux nul
Fig. 6 Domaine 2
10
Bords bas : Flux nul
Bords haut : Flux nul
Bords droit : Flux à pression nulle imposée et sc = 1 à l'extérieur du domaine.
Avec les choix de maillage et de CFL suivants :
Nombre de mailles en x : 50
Nombre de mailles en y : 50
Le temps T = 0.429, soit 54 pas de temps.
La CFL de 1.
On obtient les résultats illustrés sur les gures 7 (courbes de niveaux), 8 (vue en 3d), 9 et 10.
Pression Pression
1.0
0.9 3 3.0
0.8
2.5
0.7 2.3
2.0
0.6
bord gauche
0.5 1.5 Z
1.5
0.4
1.0
0.3 0.78
0.2 0.5
0.1 0.04
0.0 1.0
0.8
0.0 0.1 0.6
0.2 0.3 0.4 0.4
0.0 0.5 0.6 0.7 0.2
0.8 0.9 1.0 0.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 bord droit
bord bas
bord bas
Saturation Saturation
1.0
0.9 0.9
1.0
0.8
0.9
0.7 0.68
0.8
0.6 0.7
bord gauche
bord gauche
0.6
0.5 0.45
0.5
0.4
0.4
0.2 0.2
1.0
0.1 0.8
0.1 0 0.6
0.0 0.4
0.0 0.1 0.2
0.0 0.2 0.3 0.4 0.5 0.6 0.7 0.0 Y
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.8 0.9 1.0
bord bas
bord bas
On constate que la pression dans le réservoir (gure 7, 8) est maintenant dépendante du temps. Elle ets,
par contre, tout comme la saturation (gure 9, 10) toujours indépendante de y.
Cet exemple se ramène encore à un problème une dimension. Moyennant une approximation,
s est solution
∂s ∂ αfw (s) K ∂p
d'une équation de Buckley-Leverett : + = 0 avec α = −(fw (s) + fo (s)) . On
∂t ∂x fw (s) + fo (s) φ ∂x
peut montrer que α est indépendant de x. L'approximation consiste à supposer qu'il est indépendant de t.
Avec cette approximation, on ne peut toujours pas obtenir d'expression exacte de la solution mais on peut
1
cependant démontrer des résultats assez précis sur le saut : sa hauteur est √ ≈ 0.447 et sa position est
5
1
x = tf 0 √ ≈ 1.618t. Ces résultats coïncident avec les valeurs obtenues dans ce projet.
5
11
3.3 Test 3 simulation de puits
Φ=1
Flux 1
Flux nul
Fig. 11 Domaine 3
1. Nombre de mailles en x : 20
Nombre de mailles en y : 20
Le temps T = 0.107, soit 108 pas de temps.
La CFL de 1.
On obtient les résultats illustrés sur les gures 12 (valeurs sur la diagonale reliant le point (0,0) et le point
(1,1)), 14 (courbes de niveaux), 15 (vue en 3d), 13, 16 et 17.
14 1
0.9
12
0.8
10 0.7
0.6
8
0.5
6
0.4
4 0.3
0.2
2
0.1
0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Fig. 12 Pression diagonale pour l'exemple 3-1 Fig. 13 Saturation diagonale pour l'exemple 3-1
12
Pression Pression
1.0
0.9 13 14
0.8
12
0.7 10
10
0.6
bord gauche
bord bas
0.5 7
0.4 6
0.3 4
4
0.2
2
0.1 1 0.0
0 0.5
0.0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.9 1.0 X
bord droit
bord bas
Fig. 14 Pression pour l'exemple 3-1 Fig. 15 Pression en 3D pour l'exemple 3-1
Saturation Saturation
1.0
0.9 0.94
1.0
0.8
0.9
0.6 0.7
bord gauche
0.6
0.5 0.47
bord bas
0.5
0.4
0.4
0.3 0.23
0.3
0.2 0.2
0.0
0.1
0.1 0
0.5
0.0
0.0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 1.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.7 0.8 0.9 1.0 X
bord droit
bord bas
Fig. 16 Saturation pour l'exemple 3-1 Fig. 17 Saturation en 3D pour l'exemple 3-1
2. Nombre de mailles en x : 40
Nombre de mailles en y : 40
Le temps T = 0.107, soit 429 pas de temps.
La CFL de 1.
On obtient les résultats illustrés sur les gures 18 (valeurs sur la diagonale reliant le point (0,0) et le point
(1,1)), 20 (courbes de niveaux), 21 (vue en 3d), 19, 22 et 23.
16 1
0.9
14
0.8
12
0.7
10
0.6
8 0.5
0.4
6
0.3
4
0.2
2
0.1
0 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Fig. 18 Pression diagonale pour l'exemple 3-2 Fig. 19 Saturation diagonale pour l'exemple 3-2
13
Pression Pression
1.0
0.9 15
20
0.8
0.7 12
15
0.6
bord gauche
bord bas
0.5 8.1
10
0.4
0.3 4.5
5
0.2
0.0
0.2
0.1 1 0.4
0
0.6
0.0 0.1 0.2 0.3 0.4 0.8
0.0 0.5 0.6 0.7 0.8 0.9 1.0 X
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.0
bord droit
bord bas
Fig. 20 Pression pour l'exemple 3-2 Fig. 21 Pression en 3D pour l'exemple 3-2
Saturation Saturation
1.0
1.0
0.9
0.9 0.98 0.8
0.7
0.8
0.6
bord gauche 0.5
0.7 0.74
0.4
0.6
bord gauche
0.3
0.2
0.5 0.49
0.1
0.4 0.0
0.0
0.3 0.25
0.2
0.2 0.4
0.6
0.1 0
0.8
bord bas
0.0
1.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.5 0.6 0.7 0.8 0.9 1.0
0.0 0.1 0.2 0.3 0.4
bord droit
bord bas
Fig. 22 Saturation pour l'exemple 3-2 Fig. 23 Saturation en 3D pour l'exemple 3-2
Ce test représente une simulation de puits. En eet, on injecte de l'eau dans la maille bas-gauche, et on
impose la pression nulle dans la maille haut-droit. Les résultats obtenus sont en accord avec l'intuition phy-
sique. L'eau entre par la maille bas-gauche et pénètre dans le domaine alors que dans la maille haut-droit
où la pression est imposée le uide sort du domaine.
Flux nul
Puits producteur -1
Φ=1
Flux nul
fw(s) = s2 Pression
fo(s) = (1 s)2/4 nulle
Puits injecteur 1
Flux nul
Fig. 24 Domaine 4
14
fw (s) = s2
2
fo (s) = (1−s)
4
La condition initiale est s(0, x) = 0, x ∈ Ω.
Les conditions limites sont :
Bords gauche : Flux nul
Bords bas : Flux nul
Bords haut : Flux nul
Bords droit supérieur : Flux nul
Bords droit inférieur : Flux à pression nulle imposée et sc = 1 à l'extérieur du domaine.
Les puits son placés :
Au point (0,0) bas-gauche : puits injecteur de rayon 0.001 et de pression 1.
Au point (1,1) haut-droit : puits producteur de rayon 0.001 et de pression −1.
Avec les choix de maillage et de CFL suivants :
1. Nombre de mailles en x : 20
Nombre de mailles en y : 20
Le temps T = 1.213, soit 208 pas de temps.
La CFL de 1.
On obtient les résultats illustrés sur les gures 25 (valeurs sur la diagonale reliant le point (0,0) et le point
(1,1)), 27 (courbes de niveaux), 28 (vue en 3d), 26, 29 et 30.
1 1
0.8 0.9
0.6 0.8
0.4 0.7
0.2 0.6
0 0.5
-0.2 0.4
-0.4 0.3
-0.6 0.2
-0.8 0.1
-1 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Fig. 25 Pression diagonale pour l'exemple 4-1 Fig. 26 Saturation diagonale pour l'exemple 4-1
Pression Pression
1.0
0.9 0.93
0.8
0.7 0.49
1.0
0.8
0.6
bord gauche
0.6
0.5 0.059 0.4
0.2
bord bas
0.4 0.0
−0.2
0.3 −0.37 0.0
−0.4
−0.6 0.2
0.2
−0.8 0.4
−1.0 0.6
0.1 −0.81
0.0 0.1 0.2 0.8
0.3 0.4 X
0.0 0.5 0.6 0.7 0.8 1.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 bord droit 0.9 1.0
bord bas
Fig. 27 Pression pour l'exemple 4-1 Fig. 28 Pression en 3D pour l'exemple 4-1
15
Saturation Saturation
1.0
0.9 0.96
1.0
0.8 0.9
0.7
0.6
bord gauche
0.6
0.5 0.48
bord bas
0.5
0.4
0.4
0.3 0.24
0.3
0.2
0.2
0.1 0 0.1
0.0
0.0 0.0
0.5
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 bord haut
0.0 0.1 0.2 0.3 bord droit
0.4 0.5 0.6 0.7 0.8 0.9 1.0
bord bas
Fig. 29 Saturation pour l'exemple 4-1 Fig. 30 Saturation en 3D pour l'exemple 4-1
2. Nombre de mailles en x : 40
Nombre de mailles en y : 40
Le temps T = 1.342, soit 864 pas de temps.
La CFL de 1.
On obtient les résultats illustrés sur les gures 31 (valeurs sur la diagonale reliant le point (0,0) et le point
(1,1)), 33 (courbes de niveaux), 34 (vue en 3d), 32, 35 et 36.
1 1
0.8 0.9
0.6 0.8
0.4 0.7
0.2 0.6
0 0.5
-0.2 0.4
-0.4 0.3
-0.6 0.2
-0.8 0.1
-1 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Fig. 31 Pression diagonale pour l'exemple 4-2 Fig. 32 Saturation diagonale pour l'exemple 4-2
On a deux puits, l'un injecteur d'eau et l'autre producteur. On peut remarque que les gures sont semblables
au cas test 3 qui simulait des puits dans les mêmes mailles.
On remarque que la saturation augmente sur la partie supérieure du bord droit. Ceci correspond à de l'eau qui
pénètre par la partie du bord à pression imposée, attirée par le puits producteur et remonte peu à peu vers
ce dernier. Sur la gure 36, l'eau n'est pas encore arrivée dans la maille du puits producteur où la saturation
est encore nulle. La saturation de la maille du puits producteur devient non nulle pour des temps supérieur à
1.7.
16
Pression Pression
1.0
0.9 0.95
1.0
0.8
0.8
0.7 0.49
0.6
0.6 0.4
bord gauche
0.2
bord bas
0.5 0.035
0.0
0.4
−0.2
−0.6
0.2
−0.8 0.0
0.2
0.1 −0.88 0.4
−1.0
0.6
0.0 0.1 0.2 0.3 0.4 0.8
0.0 0.5 0.6 0.7 0.8 0.9 1.0 X
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.0
bord droit
bord bas
Fig. 33 Pression pour l'exemple 4-2 Fig. 34 Pression en 3D pour l'exemple 4-2
Saturation Saturation
1.0
0.8 0.9
0.8
0.7 0.74
0.7
0.6
bord gauche
0.6
bord bas
0.5 0.49
0.5
0.4
0.4
0.3 0.25
0.3
0.2 0.2
0.1 0 0.1
0.0
0.0 0.0
0.5
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 bord haut
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
bord bas bord droit
Fig. 35 Saturation pour l'exemple 4-2 Fig. 36 Saturation en 3D pour l'exemple 4-2
4 Cas réaliste
4.1 Unités pétrolières
Lorsque l'on veut donner des valeurs provenant de situations réelles à nos paramètres, il faut xer un sys-
tème d'unité cohérent. Ici, nous travaillons avec les unités pétrolières.
4.2 Hétérogénéités
On s'intéresse ici au cas où la perméabilité absolue K dépend de la variable d'espace. On suppose que le
maillage est construit de telle manière que la perméabilité absolue soit constante par maille.
La perméabilité n'intervient que dans le calcul des ux càd qu'il est nécessaire de connaître la valeur de K
sur chaque arête du maillage.
17
Pour une arête c située sur le bord du domaine Ω, il n'y a pas de diculté particulière la valeur de K choisie
est celle que la perméabilité absolue prend dans l'unique maille qui contient l'arête c. Par contre quand l'arête
c sépare deux mailles (ceci revient à dire qu'elle est à l'intérieur de domaine Ω), la valeur à choisir n'est a priori
pas dénie. Dans ce cas, un calcul montre qu'il faut choisir comme valeur sur l'arête la moyenne harmonique
2K1 K2
des valeurs de part et d'autre de l'arête càd : K= si K1 et K2 sont les valeurs de la perméabilité
K1 + K2
absolue dans les deux mailles contenant l'arête c.
Dans les exemples suivants , nous considérons des domaines où la perméabilité absolue prend exactement
deux valeurs. Le domaine rectangulaire Ω est séparé en deux parties par une droite horizontale. Dans la
partie supérieure, la perméabilité absolue est constante égale à K1 et dans la partie inférieure elle est constante
égale à K2 . Sur les arêtes situées sur la droite de séparation il faudra considérer que la perméabilité absolue
2K1 K2
vaut . Les autres arêtes sont entièrement incluses dans l'un des deux domaines, on choisit donc la
K1 + K2
perméabilité absolue du domaine correspondant.
Puits producteur
K1=100 150
K2=0,01
Flux nul Flux nul
Φ=0,2
fw(s) = s2
Puits injecteur
350 fo(s) = (1 s)2/5
Pression
200 bars
Fig. 37 Domaine 5-1
Le réservoir est un carré de 500 m sur 500 m, soit [0, 500] × [0, 500].
La porosité φ = 0.2.
La perméabilité absolue K :
Les 100 m supérieurs sont du sable de perméabilités K1 = 100 mdarcy .
Les 400 m inférieurs sont de l'argile de perméabilités K2 = 10−2 mdarcy .
Les fonctions sont en (centipoise)−1 :
fw (s) = s2
2
fo (s) = (1−s)
5
La condition initiale est s(0, x) = 0, x ∈ Ω.
Les conditions limites sont :
Bords gauche : Flux nul
Bords droit : Flux nul
Bords haut : Flux nul
Bords bas : Flux à pression imposée pc = 200 bars et sc = 1 à l'extérieur du domaine.
Les puits son placés :
Au point (150m,150m) : puits injecteur de rayon 10cm et de pression 350 bars.
Au point (450m,450m) : puits producteur de rayon 10cm et de pression 150 bars.
Avec les choix de maillage et de CFL suivants :
Nombre de mailles enx : 55
Nombre de mailles eny : 55
Le temps T = 971000 jours, soit 857 pas de temps.
La CFL de 1.
On obtient les résultats illustrés sur les gures 38 (valeurs sur la diagonale reliant le point (0,0) et le
point (1,1)), 40 (courbes de niveaux), 41 (vue en 3d), 39, 42 et 43.
18
320 1
300 0.9
0.8
280
0.7
260
0.6
240
0.5
220
0.4
200
0.3
180
0.2
160 0.1
140 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Fig. 38 Pression diagonale pour l'exemple 5-1 Fig. 39 Saturation diagonale pour l'exemple 5-1
Pression Pression
1.0
0.9 3.1e+02
320
0.8
300
0.7 2.7e+02
280
0.6
bord gauche
260
0.5 2.3e+02
bord bas
240
0.4 220
0.2 180
0.0
0.1 1.5e+02 160
0.5
0.0 140
1.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 X
0.0 0.1 0.2 0.3 0.4droit
bord 0.5 0.6 0.7 0.8 0.9 1.0
bord bas
Fig. 40 Pression pour l'exemple 5-1 Fig. 41 Pression en 3D pour l'exemple 5-1
Saturation Saturation
1.0
0.9 0.99
1.0
0.8
0.9
0.7 0.74
0.8
0.6 0.7
bord gauche
bord gauche
0.5
0.4
0.4
0.3 0.25
0.3
0.2
0.2
1.0
0.1 0 0.1
0.5
0.0
0.0
0.0 Y
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
bord bas
bord bas
Fig. 42 Saturation pour l'exemple 5-1 Fig. 43 Saturation en 3D pour l'exemple 5-1
Si on laisse ce système évolué dans le temps (gure 44), l'eau du puits injecteur continue de s'étaler
dans l'argile jusqu'à rencontrer la couche de sable. Le comportement de l'eau est alors pertubé, elle
est nettement attirée par le puits producteur (qui n'était pas visible sur les gures précédentes). Ainsi
on constate bien que l'eau progresse plus vite dans le sable que dans l'argile. La gure 44 montre que
l'eau préfère s'écouler dans le sable (moins de résistance) alors qu'elle aurait pu trouver un chemin plus
court dans l'argile.
19
Temps 42286.083 Saturation au puit producteur 0.3674603
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Puits producteur
K1=100 150
K2=0,01
Flux nul Flux nul
Φ=0,2
fw(s) = s2
Puits injecteur
250 fo(s) = (1 s)2/5
Pression
200 bars
Fig. 45 Domaine 5-2
On obtient les résultats illustrés sur les gures 46 (valeurs sur la diagonale reliant le point (0,0) et le
point (1,1)), 48 (courbes de niveaux), 49 (vue en 3d), 47, 50 et 51.
240 1
230 0.9
0.8
220
0.7
210
0.6
200
0.5
190
0.4
180
0.3
170
0.2
160 0.1
150 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Fig. 46 Pression diagonale pour l'exemple 5-2 Fig. 47 Saturation diagonale pour l'exemple 5-2
20
Pression Pression
1.0
0.9 2.4e+02
0.8
240
0.7 2.2e+02
230
0.6 220
bord gauche
bord bas
200
0.4
190
0.3 1.7e+02
180
0.0
0.2
170 0.2
0.4
0.1 1.5e+02 160 0.6
0.8
0.0 150 X
1.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
bord bas bord droit
Fig. 48 Pression pour l'exemple 5-2 Fig. 49 Pression en 3D pour l'exemple 5-2
Saturation Saturation
1.0
0.9 0.97
1.0
0.8
0.9
0.7 0.73
0.8
0.6 0.7
bord gauche
bord gauche
0.5
0.4
0.4
0.3 0.24
0.3
0.2
0.2
1.0
0.1 0 0.1
0.5
0.0
0.0
0.0 Y
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
bord bas
bord bas
Fig. 50 Saturation pour l'exemple 5-2 Fig. 51 Saturation en 3D pour l'exemple 5-2
La seule diérence avec le test précédent est la diminution de la pression dans le puits injecteur, cela a
pour eet de faire apparaître un ux rentrant d'eau au bord bas côté droit. En eet, dans le test précé-
dent la très forte pression imposée au puits injecteur empêchait ce phénomène. Sur la partie inférieure
du domaine, la pression était plus importante, limitant ainsi les ux rentrants.
Si on laisse ce système évolué dans le temps (gure 52), le comportement des ux d'eau est identique
à celui du test précédent. De plus, la gure 52 permet encore de constater la présence de ux entrant
sur le bord bas droit.
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
21
Flux nul
Puits injecteur
350
K2=0,01
Pression
200 bars
Fig. 53 Domaine 5-3
Le réservoir est un carré de 500 m sur 500 m, soit [0, 500] × [0, 500].
La porosité φ = 0.2.
La perméabilité absolue K :
Les 400 m supérieurs sont du sable de perméabilités K1 = 100 mdarcy .
Les 100 m inférieurs sont de l'argile de perméabilités K2 = 10−2 mdarcy .
Les fonctions sont en (centipoise)−1 :
fw (s) = s2
2
fo (s) = (1−s)
5
La condition initiale est s(0, x) = 0, x ∈ Ω.
Les conditions limites sont :
Bords gauche : Flux nul
Bords droit : Flux nul
Bords haut : Flux nul
Bords bas : Flux à pression imposée pc = 200 bars et sc = 1 à l'extérieur du domaine.
Les puits son placés :
Au point (150m,150m) : puits injecteur de rayon 10cm et de pression 350 bars.
Au point (450m,450m) : puits producteur de rayon 10cm et de pression 150 bars.
Avec les choix de maillage et de CFL suivants :
Nombre de mailles enx : 55
Nombre de mailles eny : 55
Le temps T = 257 jours, soit 500 pas de temps.
La CFL de 1.
On obtient les résultats illustrés sur les gures 54 (valeurs sur la diagonale reliant le point (0,0) et le
point (1,1)), 56 (courbes de niveaux), 57 (vue en 3d), 55, 58 et 59.
360 1
340 0.9
0.8
320
0.7
300
0.6
280
0.5
260
0.4
240
0.3
220
0.2
200 0.1
180 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Fig. 54 Pression diagonale pour l'exemple 5-3 Fig. 55 Saturation diagonale pour l'exemple 5-3
22
Pression Pression
360
1.0
340
0.9 3.4e+02
320
0.8
300
0.7 3e+02
280
bord gauche
0.6
bord gauche
260
0.5 2.7e+02
240
0.4
220
0.3 2.3e+02
200
0.2 180
0.0
0.1 1.9e+02
0.5
0.0 1.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 bord bas
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
bord bas bord droit
Fig. 56 Pression pour l'exemple 5-3 Fig. 57 Pression en 3D pour l'exemple 5-3
Saturation Saturation
1.0
0.9 0.98
0.8
1.0
0.7 0.73
0.9
0.6 0.8
bord gauche
0.7
0.5 0.49
bord gauche
0.6
0.4
0.5
Fig. 58 Saturation pour l'exemple 5-3 Fig. 59 Saturation en 3D pour l'exemple 5-3
Les deux couches sont visibles. La pression chute à l'interface gure 56, 57. Et la saturation marque
une coupure à l'interface gure 58, 59, l'eau ne traverse pas (ou peu) l'interface.
Si on laisse ce système évolué dans le temps (gure 60), l'eau du puits injecteur continue de s'étaler
attirée par le puits producteur. Mais l'eau ne rentre pas (ou peu) dans la couche d'argile, c'est comme
si on avait imposé un ux nul sur la bord bas.
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
23