Vous êtes sur la page 1sur 127

THÈSE

pour obtenir le grade de docteur délivré par

l'Université des Antilles


Faculté des Sciences Exactes et naturelles
ED 589 - Milieu insulaire tropical à risques :
Protection, Valorisation, Santé et Développement

présentée et soutenue par


Cédrick Copol
le 9 décembre 2016

Études mathématiques et numériques pour la


modélisation des systèmes hydrothermaux
Applications à la géothermie haute énergie
Directeur de thèse : Jacques Laminie, Professeur, Université des Antilles
Co-encadrant de thèse : Simon Lopez, BRGM, Orléans

Rapporteurs
François Alouges Professeur, École Polytechnique
Frédéric Lagoutière Professeur, Université Claude Bernard Lyon 1

Jury
François Alouges Professeur, École Polytechnique Rapporteur
Michel Geoffroy Professeur, Université des Antilles Président
Jacques Laminie Professeur, Université des Antilles Directeur
Simon Lopez Ingénieur, BRGM Co-encadrant
Madalina Petcu Maitre de conférence HDR, Université de Poitiers
Pascal Poullet Maitre de conférence HDR, Université des Antilles
Table des matières

Nomenclature ix

Introduction 1

1 Contextualisation 5
1.1 La géothermie dans le monde . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 La géothermie en Guadeloupe . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Contexte et enjeux . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Les énergies renouvelables en Guadeloupe . . . . . . . . . . . . 6
1.2.3 La géothermie une ressource sous-exploitée . . . . . . . . . . . 6

2 Modélisation des fluides hydrothermaux 11


2.1 Éléments décrivant l’état du réservoir . . . . . . . . . . . . . . . . . . . 11
2.1.1 Propriétés d’un fluide . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2 Propriétés de la roche poreuse . . . . . . . . . . . . . . . . . . . 14
2.2 Concept du milieu poreux . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Le modèle continu du milieu poreux . . . . . . . . . . . . . . . 16
2.3 Évolution du réservoir : le modèle mathématique . . . . . . . . . . . . 16
2.3.1 Modèle continu . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.2 Loi de Darcy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Conditions aux limites et conditions initiales . . . . . . . . . . . . . . . 22
2.5 Lois d’état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.1 Choix des variables pronostiques . . . . . . . . . . . . . . . . . 27
2.5.2 Choix de modélisation . . . . . . . . . . . . . . . . . . . . . . . 28

3 Description du modèle discret 33


3.1 Discrétisation temporelle . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.1 Les méthodes d’Euler . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.2 BDF2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.3 Point fixe sur les méthodes de discrétisation . . . . . . . . . . . 37
3.1.4 Les pas fractionnaires . . . . . . . . . . . . . . . . . . . . . . . 38
3.2 Discrétisation spatiale par les volumes finis . . . . . . . . . . . . . . . . 39

i
ii TABLE DES MATIÈRES

4 Résultats numériques 43
4.1 Heat pipe ou la colonne d’eau chaude . . . . . . . . . . . . . . . . . . . 43
4.1.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.1.2 Quelques résultats sur les heat pipes . . . . . . . . . . . . . . . 44
4.2 Doublet géothermique du Dogger parisien . . . . . . . . . . . . . . . . 47
4.2.1 Introduction et discussion des résultats . . . . . . . . . . . . . . 49
4.2.2 Étude du comportement du code . . . . . . . . . . . . . . . . . 53
4.2.3 Évolution du pas de temps . . . . . . . . . . . . . . . . . . . . . 53
4.3 Haute énergie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.1 Transport d’énergie en 1D . . . . . . . . . . . . . . . . . . . . . 53
4.4 Transport d’énergie en 2D . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.1 Convection naturelle des systèmes hydrothermaux . . . . . . . 58
4.5 Analyse comportementale . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5.1 Obstacles positionnés dans le domaine . . . . . . . . . . . . . . 59
4.6 Influence de la valeur maximale du pas de temps . . . . . . . . . . . . . 59

5 Organisation du code 69
5.1 Le choix des langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2 Communication entre chaque langage . . . . . . . . . . . . . . . . . . . 71
5.3 Architecture objet du code . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3.1 Description des couches . . . . . . . . . . . . . . . . . . . . . . 81
5.3.2 La place de chaque langage . . . . . . . . . . . . . . . . . . . . 83
5.3.3 L’objet dans tout ça ? . . . . . . . . . . . . . . . . . . . . . . . . 84

Bibliographie 87

A Numerical Modeling of Geothermal 91


A.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
A.2 Governing Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
A.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
A.4 Benchmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
A.4.1 Low energy geothermal doublet . . . . . . . . . . . . . . . . . . 93
A.5 Natural Convection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

B Numerical simulation by a random particle method of Deuterium-


Tritium fusion reactions in a plasma 97
B.1 Kinetic modeling of D-T fusion reaction . . . . . . . . . . . . . . . . . . 98
B.1.1 Collision operators . . . . . . . . . . . . . . . . . . . . . . . . . 98
B.1.2 Definition of some physical quantities . . . . . . . . . . . . . . 100
B.1.3 An asymptotic model . . . . . . . . . . . . . . . . . . . . . . . . 101
B.1.4 Explicit solutions in the case of a Maxwellian cross-section . . 101
TABLE DES MATIÈRES iii

B.2 Numerical method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102


B.2.1 Fusion cross-section . . . . . . . . . . . . . . . . . . . . . . . . 103
B.2.2 Maxwellian cross-section . . . . . . . . . . . . . . . . . . . . . 106
B.2.3 Asymptotic model . . . . . . . . . . . . . . . . . . . . . . . . . 107
B.3 Numerical result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
B.3.1 Validation with a Maxwellian cross-section . . . . . . . . . . . 108
B.3.2 Simulation with the fusion cross-section . . . . . . . . . . . . . 110
B.3.3 On the opportunity to use the asymptotic model . . . . . . . . 111
Remerciements

Cette thèse n’aurait jamais pu exister sans le concours financier de la région Gua-
deloupe1 , du BRGM2 , de l’institut Carnot3 et de l’université des Antilles. Grâce à eux,
j’ai eu l’occasion de présenter mes travaux à des congrès internationaux en France, en
Allemagne ou encore aux États-Unis.
Je remercie mon directeur de thèse M. Jacques Laminie et mon co-encadrant M. Si-
mon Lopez. Avec deux encadrants ayant des sensibilités différentes sur un même pro-
blème, l’approche d’un problème se fait sous plusieurs angles qui parfois sont contra-
dictoire. Ce double encadrement a rendu le travail plus enrichissant.
Je tiens maintenant à adresser mes remerciements aux membres du jury de ma
thèse ; merci à M. Michel Geoffroy d’avoir présidé ce jury et de m’avoir encadré
en master 1, merci à mes deux rapporteurs MM. Frédéric Lagoutière et François
Alouges. Je remercie aussi Mme Madalina Petcu et M. Pascal Poullet d’avoir bien
accepté de faire partie de mon jury de thèse.
En devenant doctorant, la frontière étudiant-enseignant devient perméable. Ce qui
m’a permis de découvrir un peu plus le métier d’enseignant mais aussi de découvrir
des personnalités derrière l’homme/la femme qui portait la craie. J’adresse particu-
lièrement mes remerciements à toutes les personnes m’ayant soutenu. Je citerais M.
Paul Nuiro, M. Pascal Poullet ou encore M. Jimmy Nagau dont les discussions sur
l’HTML, le CSS, le PHP, l’impression 3D, git, programme multilangages, sur tout et
rien ont soulagé mon esprit torturé par des lignes de codes, des NaN et autres.
Je finirais avec d’autres personnes qui m’ont soutenu et aidé aussi bien directement
qu’indirectement jusqu’à la thèse, Mme Judy Damo, Mme Carlène Frédéric, M. Ludovic
Malborougt, Mme Cécile Rosemond et Mme Larissa Valmy. Leur aide fût précieuse
tout au long de mon parcours universitaire, sans eux cette thèse n’aurait certainement
pas vu le jour.

1. http ://www.regionguadeloupe.fr/accueil/#_
2. http ://www.brgm.fr
3. http ://www.instituts-carnot.eu/fr/institut-carnot/brgm

v
Abstract
The purpose of our study is to model a geothermal reservoir. When geothermal reser-
voirs are assumed to be composed of pure water, the transfer of mass and energy is clas-
sically described by two balance equations: the mass balance equation and the energy
balance equation. In addition to those equations, fluid velocity is classically given by the
Darcy law while thermodynamic properties, inferred from theoretical or empirical equa-
tions of state, are used to close the mathematical system. Once this system is closed, there
exist different solutions. The first one is to solve for pressure and temperature with a vari-
able switch to saturation in the two-phase region (e.g. TOUGH2). The second one is to solve
for pressure and enthalpy to increase the stability of phase transition between single and
two-phase states (e.g. Hydrotherm). We adopted the second option. We solve the system by
using a splitting method — to get rid of the complexity of coupling equations — and a finite
volume method for the spatial discretization. We offer some freedom to users thanks to the
implementation of several methods like explicit or implicit Euler, Runge-Kutta or BDF2 for
time solvers or GMRES and BICGSTAB for the linear solver. We can handle several bound-
ary conditions like no-flow — describing a boundary which cannot exchange matter with
the exterior — or like a mixed-therm condition — a Dirichlet condition to the pressure and
a Dirichlet or an outflow condition to the temperature in order to describe a recharge or
a discharge zone — …Selecting object-oriented languages, we developed a multi-language
framework, combining Python, Fortran and a C++ implementation of IAPWS (from the
freesteam project) including the supercritical equations. To close the system physical prop-
erties are determined by the IAPWS- IF97 thermodynamic formulation.
We’ve applied this simulation model to the dogger in Paris, France, to several one-
dimensional systems and a two-dimensional one made by Coumou with the CSMP++
platform. The dogger is a reservoir exploited to produce heat by pumping water at 70 ◦C
and reinjecting it in the reservoir at 40 ◦C. In the one-dimensional systems we wanted
to observe the process of heat transfer from a higher temperature boundary to a smaller
one in a high-energy domain. The last simulation shows the natural convection of water
in a fault. For every simulation we compared the solutions we found with another code
(TOUGH2 or CSMP++) and they agreed.
Résumé
L’objectif de notre étude est de modéliser un réservoir géothermique. Si nous supposons que
le réservoir géothermique n’est composé que d’eau pure le transfert de matière et d’éner-
gie est classiquement décrit par deux équations de conservation : la conservation de la
matière et la conservation de l’énergie. À ces deux équations vient s’ajouter la vitesse du
fluide classiquement donnée par la loi de Darcy tandis que les propriétés thermodyna-
miques, obtenues grâce à des équations théoriques ou empiriques (les équations d’état),
ferment le modèle mathématique. Dès lors, ce modèle fermé, il existe différents schémas
de résolution. Le premier est de résoudre en pression et température puis de procéder à un
changement de variables lors du passage de monophasique à diphasique ou de diphasique
à monophasique. TOUGH2 utilise le couple pression-saturation dans la zone diphasique.
La seconde approche est de résoudre en pression et enthalpie afin d’accroître la stabilité lors
de la transition entre l’état monophasique et l’état diphasique (voir Hydrotherm). Nous
avons adopté la seconde option, résoudre en pression et enthalpie. De plus la résolution
spatiale est faite avec les volumes finis.
La modélisation d’un réservoir géothermique fait intervenir des équations fortement
dépendantes l’une de l’autre. Cependant nous avons fait le choix de découpler la résolu-
tion afin de se libérer de la complexité de la résolution du système couplé. En effet, cette
méthode possède l’avantage d’être moins consommatrice de mémoire puisque nous tra-
vaillons toujours avec le même nombre de données, mais dans une matrice deux fois moins
importante. Nous montrerons que cette méthode demeure suffisamment précise pour une
utilisation aussi bien dans le domaine industriel que dans celui de la recherche.
Nous offrons à l’utilisateur une grande liberté grâce à l’implémentation de plusieurs
méthodes : Euler implicite, explicite, Runge-Kutta ou BDF2 pour les solveurs temporels ou
GMRES et BICGSTAB pour les solveurs linéaires. Nous pouvons gérer des conditions aux
limites très variées telles que des flux nuls (décrivant une frontière qui n’échange pas de
matière avec l’extérieur) ou une condition mixte (un Dirichlet sur la pression et un Diri-
chlet ou condition « sortie libre » sur la température… Cette dernière situation décrit une
zone de recharge ou de décharge. Nous avons développé un outil multilangage : Python,
Fortran et C++ (une implémentation de l’IAPWS provenant du projet freesteam incluant la
zone supercritique). Tous ces langages sont orientés objet. L’IAPWS est l’outil permettant
de calculer les propriétés physiques inconnues et par conséquent il ferme le système.
Enfin nous avons appliqué le modèle sur le bassin parisien, France, sur plusieurs sys-
tèmes 1D et un autre système 2D réalisés par Coumou avec la plateforme CSMP++. Le
bassin parisien est un réservoir exploité pour produire de la chaleur par le biais du pom-
page d’une eau à 70 ◦C et réinjecté à 40 ◦C. Les simulations 1D permettent de visualiser le
déplacement d’un front de chaleur en haute enthalpie. La simulation 2D montre la convec-
tion naturelle de l’eau dans une faille. Chaque simulation a été comparée aux résultats
obtenus avec un autre code (CSMP++, HYDROTHERM ou TOUGH2) et les résultats sont
en accord.
Nomenclature

ϕ ϕ peut-être l (liquide) ou g gaz -


p pression Pa
h enthalpie massique J kg−1
H enthalpie volumique de roche saturée J m−3
ϕ l (liquide) ou g (gaz) -
hϕ enthalpie spécifique à la phase ϕ J kg−1
T température K
ω porosité -
~g accélération gravitationnelle m s−2
ρϕ densité spécifique à la phase ϕ kg m −3
k perméabilité m2
kϕr perméabilité relative à la phase ϕ -
cV capacité thermique isochore J m−3 /◦C
K conductivité thermique W m−1 ◦C−1
µϕ viscosité de la phase ϕ
Qm terme source de la masse kg m−3 s−1
Qe terme source de l’énergie J m−3 s−1 = W m−3
Tab. 1: Liste de notations

cV est la quantité d’énergie nécessaire pour monter la température d’un m3 de ma-


tériel de 1 °K ou 1 ◦C à volume constant.

ix
Introduction

L’objectif de notre étude est de modéliser un réservoir géothermique dans son


état naturel ou en cours d’exploitation. Les phénomènes géothermiques ont lieu dans
des zones inatteignables, dans la croûte terrestre, parfois dans le sous-sol marin et
peuvent se manifester à la surface par des fumerolles (près de volcan), sources chaudes
(Baillif, Guadeloupe, France), des cheminées hydrothermales (black–smoker [14])…
Dans ces conditions, l’acquisition de données est souvent très difficile, en conséquence
les scientifiques ont peu de mesures. Face à ces difficultés, la modélisation numérique
est l’unique moyen d’avoir une idée de ce qui se passe (forces en jeux) pour expliquer
les observations en surface.
Des simulateurs hydrothermaux sont développés depuis des années. Ingebritsen
et al. [32] donnent les propriétés de certains d’entre eux dans un article détaillé (voir
le tableau 2 extrait de l’article).

Tmax Pmax Numeri- Reactive


cal

Name C MPa Method Trans- Deforma- CO2 NaCl
port tion
CSMP++ 1000 500 FE-FV X
FEHM 1500 FE X X X
HYDRO- 1200 1000 FV
THERM
NaCl- 620 100 IFD X
TOUGH2
TOUGH2 350 100 IFD X X

Tab. 2 : Relative capabilities of selected multiphase numerical codes commonly


applied in simulations of magmatic hydrothermal systems (extracted from [32])
FE : Finite Elements, FV : Finite Volumes, IFD : Integrated Finite Differences

Parmi ces codes, TOUGH2 est largement utilisé par les industriels de l’univers géo-
thermal pour modéliser l’exploitation des réservoirs géothermiques. HYDROTHERM
est utilisé pour modéliser des systèmes hydrothermaux à haute énergie et situé à des
profondeurs élevées, notamment l’intrusion de magma [29]. CSMP++ est un outil dé-

1
2 Introduction

veloppé plus récemment qui a été utilisé pour modéliser l’écoulement des fluides dans
des systèmes proches de failles [14]. Les premiers codes développés utilisent les dif-
férences finies, puis d’autres créés plus tard utilisent les éléments finis (TOUGH2) et
enfin les plus récents utilisent les volumes finis ou encore un mélange de volumes finis
et éléments finis (CSMP++). Cette dernière méthode consiste à éclater les équations en
termes qui par leur forme sont tout naturellement résolus par éléments finis et d’autres
termes par volumes finis. Les deux solutions sont ensuite regroupées dans une équation
qui sera résolue et donnera la solution finale du problème. Cette approche a l’avantage
d’utiliser la méthode la plus adaptée et donc la plus sûre pour chaque type de données,
mais elle a aussi le désavantage d’accroître significativement la complexité de la mé-
thode numérique, double maillage… Nous avons fait le choix d’utiliser une méthode de
volumes finis, car les équations sont essentiellement hyperboliques. Ce choix se justifie
par notre cahier des charges.
Au début de cette thèse, nous avons mis en place un cahier des charges à respecter.
Il s’agit de construire un outil numérique pour la modélisation des systèmes hydro-
thermaux. Le développement de cet outil a été soumis à de fortes contraintes : le code
doit

• être pérenne,

• être multiplateforme,

• être collaboratif,

• et permettre des mises à jour aisées.

Le processus de développement du code s’est déroulé sur Linux, Mac et Windows ce


qui a permis de s’assurer qu’il était bien multiplateforme. Pour assurer la pérennité de
celui-ci, nous avons choisi de travailler en suivant les principes de la programmation
orientée objet. La programmation orientée objet est bien un atout pour pérenniser un
code, car la vision en objet facilite l’extraction ou la modification d’une partie du code
sans altérer le reste. Ceci est obtenu grâce à un stricte respect des spécifications de
chaque classe et méthodes. La grande majorité des codes en analyse numérique sont
développés en Fortran. Nous n’allons pas déroger à cette tradition. Remarquons tout
de même que bien que Fortran 2003 et Fortran 2008 soient orientés objet, les implé-
mentations de Fortran (Intel, GNU…) n’étaient pas encore totalement orientés objet à
la réalisation de ce code. Nous avons fait de notre mieux pour suivre et intégrer les
ajouts permettant d’être le plus orienté objet. La progression d’implémentation des
normes de Fortran dans les compilateurs peut être suivie sur [23] et [24]
Afin d’améliorer la pérennité du code, nous souhaitions offrir une interface moins
« austère » au sens plus facile à apprendre, à prendre en main et enfin à maitriser que
Fortran. Cette contrainte conduira à l’écriture d’un code multilangage. Nous avons
3

choisi Python, comme langage interface. Il s’associe parfaitement à Fortran et à C++


(langage utilisé par Freesteam [46], l’outil fermant le système en donnant une approxi-
mation des propriétés physiques non déterminées). Python aura le pouvoir décisionnel
et Fortran se chargera de l’opérationnel.

Conclusion et perspectives
À la rédaction de ce document, nous avons produit un outil utilisant les dernières
tables d’états fournit par l’IAPWS et dont la mise à niveau de celles-ci dans les an-
nées futur se fera aisément. Nous avons un code multilangage (Python, C et Fortran).
La résolution du système se fait par une méthode découplée, par des volumes finis
et des schémas d’Euler explicite ou implicite avec la possibilité de les encapsuler par
une méthode de point fixe. L’utilisateur a une palette de choix à sa disposition pour
choisir une méthode répondant à ses besoins (convergence plus rapide ou meilleure
approximation…). Les conditions aux limites sont totalement indépendantes, en effet
l’utilisateur peut par exemple, imposer des conditions de type Dirichlet sur une face et
imposer une condition de flux nul sur la face voisine. Citons enfin l’implémentation de
la gestion du pas de temps adaptatif en fonction de la condition de stabilité. TOUGH2
diminue son pas de temps si la résolution par Newton n’a pas convergé. Cette ges-
tion est importante dans le contexte géologique, les pas de temps y sont élevés mais
nos conditions initiales (non physiques) nécessitent souvent de commencer avec des
pas de temps petit puis d’accroître celui-ci pour atteindre des pas de temps beaucoup
plus grand, exemple : dans certaines des simulations décrites dans ce document nous
passons de 0,1 s à 107 s.
Vous trouverez dans le chapitre 4 et dans l’article p.96 des comparatifs de simula-
tions ayant permis de valider notre code et de faire apparaître certaines limitations de
celui-ci. L’une des difficultés que nous avons rencontrés dans notre code est la gestion
de fort gradient d’enthalpie apparaissant par exemple dans un système ayant une per-
méabilité très faible (10−14 m2 ) et chauffé par la présence du chambre magmatique à
900 ◦C. Avec une perméabilité plus élevée (10−12 m2 ) la simulation se déroule sans au-
cune difficulté. Plus la perméabilité est faible plus l’énergie ou la pression s’accumule
dans les volumes jusqu’à atteindre les limites des tables d’états. Pour résoudre ce pro-
blème, une solution serait d’utiliser un maillage non rectangulaire car ce dernier peu
avoir tendance à rester en équilibre.
Nous souhaitons donner davantage de pouvoir décisionnel à Python. En effet, nous
pensons que Python devrait gérer l’appel des méthodes de résolution temporelle pour
chaque équation. À l’heure actuelle, des schémas de résolution sont écrites pour les
deux équations et implémentées en Fortran ce qui fait que l’utilisateur aura peu de
contrôle sur cette partie essentielle.
Enfin, ces problèmes étant très consommateurs de ressources nous envisageons de
4 Introduction

paralléliser une partie du code pour améliorer les performances.

Ce document est organisé comme suit. Le premier chapitre relate brièvement « l’his-
toire » de la géothermie dans le monde et plus particulièrement en Guadeloupe. Le
chapitre 2 propose quelques éléments de la modélisation des fluides hydrothermaux.
Il en sortira les équations que nous étudirons dans ce travail. Le chapitre 3 est dédié à
la discrétisation de ces équations. Puis il vient le chapitre sur les résultats numériques.
L’organisation du code de calcul de DloCho construit à l’occasion de cette thèse est
multi-langage et object. Le chapitre 5 en explique les choix, les finalités et les enjeux et
leurs influences sur l’architecture du programme. Il suit, en annexe, un proceeding de la
39ième « Workshop on Geothermal Reservoir Engineering » (Stanford, USA 2014)[13]
et un travail totalement disjoint du sujet de la géothermie fait à l’occasion du CEM-
RACS 2011 [8].
Chapitre 1

Contextualisation

1.1 La géothermie dans le monde


La terre est active et la géothermie (mot issu du grec « geo » = terre et « ther-
mos » = chaud) est une spectaculaire manifestation de son énergie. La première uti-
lisation d’eaux chaudes naturelles remonte à des milliers d’années avant J-C.
La géothermie occupe actuellement en France la 3e place des énergies renouve-
lables, en terme d’énergie produite, derrière la biomasse et l’hydraulique. En quelques
années, l’image de la géothermie a énormément évolué. Depuis l’utilisation des pompes
à chaleur, de la cogénération et de la filière sèche, les handicaps dont souffrait cette fi-
lière énergétique (corrosion, faible rentabilité…) ont désormais disparu.
La géothermie est une ressource présentant plusieurs points forts :

• un fort taux de disponibilité : le taux de disponibilité potentiel de 80 % à 90 %


de cette énergie renouvelable est très élevé, car elle n’est pas soumise aux aléas
climatiques.

• un coût de production plus faible que les filières classiques : le tarif d’achat a
récemment été revalorisé pour la géothermie pour atteindre 13 cts/kWh, bien
inférieur au coût moyen de production en Guadeloupe estimé à 20 cts/kWh1 .

1.2 La géothermie en Guadeloupe


1.2.1 Contexte et enjeux
Comme toutes les îles de l’outremer, la Guadeloupe possède un système énergé-
tique très fragile du fait de son insularité et de l’absence de ressources d’hydrocarbure
1. source CRE

5
6 CHAPITRE 1. CONTEXTUALISATION

sur son sol. La forte croissance de la consommation électrique et l’augmentation im-


portante du prix des hydrocarbures entraînent l’envol de la facture d’électricité de l’île.
Dans ce contexte, nous voyons clairement que l’île a tout intérêt à investir dans
les énergies renouvelables (EnR) pour subvenir par elle même, au moins en partie, à
ses besoins énergétiques, mais aussi à prendre part à l’émergence d’une société plus
respectueuse de l’environnement (en diminuant les émissions de gaz à effet de serre
ou par une meilleure gestion des ressources).
Le Grenelle de l’environnement (2007) établit des projets très ambitieux pour les
îles d’outre-mer, notamment pour la Guadeloupe. D’ici 2020, 50 % de l’énergie consom-
mée devra être produite par les énergies renouvelables. L’indépendance énergétique est
évidemment l’objectif final. Depuis 2009, c’est-à-dire à compter des états généraux de
l’outre-mer, l’État et les collectivités locales s’investissent énormément dans les EnR.
Cet investissement des pouvoirs publics se traduit notamment par le financement de
recherches (de thèses, de programmes de prospection, de forages…), par une politique
d’exigence énergétique (obligation de s’équiper en chauffe-eau solaire pour tout nou-
veau logement, seuls des climatiseurs de classe A sont disponibles sur le marché gua-
deloupéen) ou encore par la création d’un pôle de compétitivité : Synergîle 2 .

1.2.2 Les énergies renouvelables en Guadeloupe


La situation géographique de la Guadeloupe est un atout. En effet, l’île bénéficie
d’un fort ensoleillement tout au long de l’année (énergie solaire), est constamment
balayée par des alizés (éolien) et a une histoire volcanique récente (moins de 500 000
ans [49]).
Il y a de nombreux sites d’exploitation des EnR en Guadeloupe, comme le réperto-
rie la figure 1.1. On dénombre aussi bien des parcs éoliens que des fermes photovol-
taïques hors sol ou encore de l’hydraulique. Pour autant en 2011 la contribution des EnR
dans la production d’électricité ne représente que 12 % (se référer au camembert 1.2).
Les deux principaux sites producteurs d’électricité d’origine renouvelable sont la cen-
trale géothermique de Bouillante et la centrale thermique du Moule (CTM) à travers sa
consommation de biomasse.

1.2.3 La géothermie une ressource sous-exploitée


L’histoire de la centrale
La centrale de Bouillante a connu plusieurs phases. Entre 1970 et 1977, quatre puits
d’exploration, dont deux producteurs, ont été forés. Entre 1986 et 1992, la ressource est
exploitée sur le site de Bouillante 1. La centrale étant unique en France à l’époque (à

2. www.synergile.fr
1.2. LA GÉOTHERMIE EN GUADELOUPE 7

source :PRERURE [27]

Fig. 1.1: Les EnR en Guadeloupe


8 CHAPITRE 1. CONTEXTUALISATION

source :PRERURE [27]

Fig. 1.2 : Part de la production d’électricité d’origine renouvelable en 2011 en Guade-


loupe

ce jour encore), le site était un laboratoire inestimable. Cette période a permis d’acqué-
rir, d’améliorer nos connaissances de la géothermie, d’engranger du savoir-faire dans
l’exploitation d’un site et dans la technicité. En 1995, Bouillante 1 est entièrement ré-
habilité pour une exploitation industrielle et a une production annuelle de 30 GWh.
Entre 1999 et 2004, trois nouveaux puits de production sont forés et Bouillante 2, une
nouvelle unité de production, est construite et mise en service en 2005. Cette dernière
produit 72 GWh/an..

Développement de la géothermie dans la Caraïbe


La géothermie, qui comptait en 2011 pour 28 % dans les EnR, possède à ce jour un
potentiel sous-exploité. Depuis 1998 le potentiel du réservoir géothermique est bien
connu. La construction d’une nouvelle unité, Bouillante 3, à la bordure nord de la baie
de Bouillante est en projet. Bouillante 3 devrait délivrer une puissance d’un peu plus
de 30 MW soit le double de Bouillante 2.
Une autre ville de la Guadeloupe est susceptible de posséder un réservoir géother-
mal. Du fait de la jeunesse de son histoire volcanique, Baillif présente des indices
structuraux, volcaniques et sismiques favorables à l’existence d’un réservoir géother-
mal haute énergie. Le projet GHEZAB a débuté en janvier 2013 avec des prospections
en mer et sur terre.
1.2. LA GÉOTHERMIE EN GUADELOUPE 9

L’arc antillais étant né de l’activité volcanique, c’est la Caraïbe tout entière qui
possède un potentiel inexploité. Conscient de ce fait, les îles développent des projets. En
effet nous pouvons citer les travaux d’études menées en Martinique (géothermie basse
énergie),il existe également un projet bien plus avancé et plus ambitieux. Des travaux
récents en Dominique, cofinancés par des fonds européens dans le cadre du programme
Interreg-Caraïbe IV et par le Fonds de coopération régionale ont permis d’évaluer à
100 MW le potentiel de Wotten-Waven. Ce projet a dépassé les phases d’exploration
du sous-sol et est entré dans une phase de communication visant à obtenir le soutien de
la population. La production de cette future centrale est destinée à l’approvisionnement
local et à l’exportation d’électricité vers la Guadeloupe et la Martinique via un câble
sous terrain.
Tous ces développements laissent entrevoir un avenir énergétique prometteur pour
chacune de ces îles.

Retombées économiques
La Guadeloupe, ayant la seule centrale géothermique dans la Caraïbe et seule cen-
trale haute énergie conventionnelle en France, fait office de pionnier et à ce titre elle
devra donc jouer un rôle important dans le développement de cette énergie aussi bien
dans les îles françaises que dans les autres îles de la Caraïbe. Il lui faudra aussi mettre
ses compétences et ses expériences en ce qui concerne la gestion de l’usine, mais aussi
l’intégration de celle-ci dans son environnement. Un projet similaire initié à la Réunion
a été rejeté par la population, car l’intégration environnementale n’avait pas été suffi-
samment prise en compte en amont. Les îles ont des contraintes fortes de protection de
l’environnement ou encore des contraintes foncières. La Guadeloupe pourra aussi par-
tager ses réflexions sur la fiscalité, car contrairement aux hydrocarbures l’exploitation
géothermique ne verse pas de revenus aux collectivités locales.
Rayonner dans la Caraïbe est un développement à ne pas négliger et un rendez-
vous à ne pas manquer, mais la géothermie en Guadeloupe n’a pas encore dévoilé tout
son potentiel. La centrale de Bouillante ne nécessite pas de réinjecter dans le réservoir
toute l’eau pompée. Cette eau chaude (∼ 110 °C) est rejetée dans la mer après mélange
pour abaisser sa température (< 45 ◦C) sans être valorisée. Nous pouvons imaginer de
nombreuses utilisations : climatisation, activités thermales ce qui sera un atout touris-
tique indéniable ou son utilisation par des pressings.
Chapitre 2

Modélisation des fluides


hydrothermaux

2.1 Éléments décrivant l’état du réservoir


2.1.1 Propriétés d’un fluide
Il existe de nombreuses propriétés physiques pour décrire un fluide : nous pouvons
citer (liste non exhaustive)
• de sa pression p, force exercée par le fluide sur les parois ;

• de sa température T ;

• de son enthalpie massique h ;

• de sa densité ρ, soit la quantité de matière présente dans un volume donné ;

• de sa viscosité dynamique µ, qui peut être définie comme sa résistance à l’écou-


lement ;

• de sa compressibilité…
Un fluide peut être constitué de plusieurs composants (eau, huile, sel…) et chacun de ces
composants peut exister sous différentes phases (liquide, gazeux ou solide) en même
temps. Nous parlons de fluide monophasique si le fluide n’a qu’une seule phase, un
fluide totalement liquide par exemple, et de fluide multiphasique si dans celui-ci sont
présentes au moins deux phases distinctes, de la vapeur humide par exemple. Dans
notre étude, le fluide sera potentiellement diphasique 1 . En effet, nous considérons de
l’eau pure qui pourra être sous ses formes liquide ou gaz (le « ou » n’étant pas exclusif).
1. L’ajout d’une troisième phase, le sel, est envisageable, les fluides géothermaux étant minéralisés.

11
12 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

En considérant un fluide diphasique, deux visions sont possibles : observer celui-


ci comme une entité unique ou comme une somme d’entités qu’il faut être capable
de décrire. Excepté la pression et la température, nous pouvons définir pour chaque
phase une des propriétés précédemment listées. En effet, nous pouvons considérer la
densité du liquide et celle du gaz, de l’enthalpie massique spécifique du liquide et de
celle spécifique aux gaz, pour ne citer que ces deux paramètres. Les propriétés qui
se verront affecter l’indice l seront celles du liquide (ρl , µl …) et celles du gaz auront
l’indice g (hg , µg …). Une propriété physique sans indice fait référence alors à l’entité
« fluide ». Il existe des liens entre la vision diphasique et celle du fluide comme une
entité, mais pour les donner nous avons besoin de définir avant deux propriétés : la
fraction massique et la fraction volumique. Soient V , un volume donné et ϕ une phase
de l’eau, nous définissons la fraction massique (ou qualité de vapeur) comme étant le
rapport de la masse Mϕ de la phase ϕ sur la masse totale M

xM
ϕ = (2.1)
M
La fraction volumique (ou saturation) est le rapport du volume Vϕ occupé par la phase
sur le volume occupé par l’eau V :

xVϕ =
. (2.2)
V
Par définition, nous avons M = Ml + Mg et V = Vl + Vg . Il s’en déduit que
xVl + xVg = xM M
l + xg = 1. (2.3)
Remarquons que la définition des fractions volumique et massique s’étendent en mono-
phasique. En effet si par exemple seule la phase liquide est présente alors xM V
l = xl = 1
puisque Ml = M et Vl = V .
La figure 2.1 représente une évolution des fractions volumiques (cercle et triangle)
et massiques (croix et losange) en fonction de l’enthalpie massique pour un système
diphasique à une température de 200 ◦C et une pression de saturation de 15 bars. Elle
montre qu’à pression constante plus on augmente l’enthalpie plus la proportion de
vapeur augmente : le liquide se vaporise. En observant les fractions volumiques, nous
remarquons que très rapidement la partie gazeuse occupe l’essentiel du volume même
si elle n’est pas prépondérante en masse.
Il existe une deuxième définition pour la fraction massique qui permettra de la
formuler en fonction des enthalpies massiques spécifiques. D’après le théorème des
moments, en milieu diphasique tout point M situé sur une isotherme (ou une isobare2 )
vérifie les relations suivantes (voir schéma 2.2) :
LM MG
xM
g = et xM
l = (2.4)
LG LG
2. En diphasique, pression constante est équivalent à température constante.
2.1. ÉLÉMENTS DÉCRIVANT L’ÉTAT DU RÉSERVOIR 13

0.8
fractions volumiques

0.6 xlV
xgV
xlM
0.4 xgM

0.2

1000 1250 1500 1750 2000 2250 2500 2750


h (kJ/kg)

Fig. 2.1 : Évolution des fractions volumiques pour l’eau pure par rapport à h ∈
[hl , hg ].d

La figure 2.2 schématise la présence des phases (liquide et gaz) dans le plan enthalpie-
pression : sous la cloche 3 (trait gras) coexistent les phases liquide et gazeuse, à gauche
de celle-ci seule la phase liquide est présente tandis qu’à sa droite seule la phase gazeuse
est présente. Le point au sommet de cette courbe est le point critique (220,55 bars et
2086 kj/kg). Considérons un fluide diphasique à la pression p et à l’enthalpie massique
h représenté par le point M sur le diagramme. En traçant l’isobare passant par le point
M nous définissons l’enthalpie massique spécifique du liquide noté hl comme étant
l’abscisse du point L et hg l’abscisse du point G. On peut alors reformuler (2.4) en
termes d’enthalpie massique et non plus en distances nous déduisons que :
h − hl hg − h
xM
g = et xM
l = (2.5)
hg − hl hg − hl
puis
h = xM M
l hl + xg hg (2.6)
Nous pouvons aussi démontrer (voir annexe ⁇ page ⁇) que :

xVϕ ρϕ = xM
ϕ ρ (2.7)

1
et ρ = xVl ρl + xVg ρg = xM xM
(2.8)
g
l
ρl
+ ρg
3. Aussi appelée courbe d’ébullition ?
14 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

102

pression (megapascals)
101

L M G
100

10 1
500 1000 1500 2000 2500 3000
enthalpie massique (kJ/kg)

Fig. 2.2: Définition de la fraction massique dans le diagramme de Mollier.

2.1.2 Propriétés de la roche poreuse


Le milieu poreux est un domaine multiphasique constitué d’au moins une phase
solide appelée matrice solide, et de vides appelés pores. Ces vides sont remplis par
des liquides (eau, hydrocarbure…) et/ou des gaz (air, hydrogène…) et/ou des matériaux
solides (non constituant de la matrice solide résultant de l’évolution chimique des pores
et de l’eau contenue). En plus de la matrice solide, nous pouvons définir la matrice qui
est la réunion de la matrice solide et des pores non connectés, vides, partiellement ou
totalement remplis de fluide. La matrice est donc tout l’espace où il ne peut y avoir de
circulation. Il s’en suit que la partie où circule le fluide est donc le complémentaire de
la matrice.
Le milieu poreux est caractérisé par deux paramètres : la porosité ( ω) et la perméa-
bilité intrinsèque (k). Nous définissons le premier comme le rapport entre le volume
des vides et le volume total du milieu poreux. La porosité est donc le pourcentage de
vides par unité de volume dans un sédiment ou une roche. Le second paramètre est
une caractéristique physique qui représente la facilité qu’a un matériau à permettre le
transfert de fluide au travers du réseau de pores connectés sous l’effet d’un gradient de
charge ou de pression. On utilise parfois le terme de porosité effective pour référer au
volume des pores qui sont connectés entre eux donnant une perméabilité à la roche ou
au sédiment.
En d’autres termes, pour qu’un sédiment ou une roche soient perméables, il faut
au moins que les pores soient connectés entre eux (figure 2.4). Remarquons que la
perméabilité intrinsèque est indépendante des propriétés du fluide. Selon la taille et
l’agencement de leurs particules ou des fractures qui les affectent, les matériaux du
sous-sol seront plus ou moins perméables. Il faut distinguer ces deux concepts souvent
très près l’un de l’autre. Bien qu’une perméabilité élevée indique une porosité élevée,
2.2. CONCEPT DU MILIEU POREUX 15

Fig. 2.3 : Vue microscopique conceptuelle de milieu poreux où l’on peut voir la matrice
solide (hachurée) et l’espace des vides (blanc).

pores non
connectés pores
inter-connectés

pores en
cul de sac

Fig. 2.4: Schéma 2D montrant la circulation du fluide dans le milieu poreux

l’inverse n’est pas toujours vrai. En diphasique deux nouveaux termes sont introduits,
la perméabilité relative du liquide et celle du gaz. Pour ce travail, nous supposons que
la porosité ne dépend que de l’espace, c’est-à-dire que le milieu est indéformable et qu’il
n’y a ni apparition ni disparition de pores due à un dépôt de sédiments par exemple.

2.2 Concept du milieu poreux


Le milieu poreux est la réunion de la matrice (la roche poreuse) et du liquide qui
parcourt la matrice connectée. Dans la section 2.1, nous avons mis en place les para-
mètres permettant de décrire un réservoir d’un point de vue microscopique. Bien qu’à
l’échelle microscopique les propriétés physiques du fluide et de la roche soient cor-
rectement définies en tout point, cette échelle est contraignante pour la suite, car les
propriétés (densité du fluide, porosité…) ont peu de chance d’être continues du fait de
16 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

Fig. 2.5: Visualisation de volume représentatif possible (cercle discontinu).

la complexité de la géométrie. En effet, l’exemple le plus éloquent est celui de la poro-


sité qui ne prend que les valeurs 0 et 1 (voir schéma 2.3) ; c’est-à-dire soit nous sommes
dans la matrice solide (0), soit nous sommes dans le vide poral (1).
Afin de contourner cette difficulté, nous nous intéresserons à une échelle supé-
rieure, l’échelle macroscopique. Le lecteur pourra se diriger vers [38] qui décrit un
écoulement monophasique en milieu poreux et pose « les bases de la description ma-
croscopique des phénomènes en milieu poreux ».

2.2.1 Le modèle continu du milieu poreux


On définit arbitrairement un volume représentatif sur lequel est moyennée cha-
cune des propriétés microscopiques du fluide et de la roche pour obtenir leurs pro-
priétés macroscopiques (voir schéma 2.5). À cette échelle, un volume représentatif Vr
contient plusieurs particules de pores et de la matrice où existent de manière générale,
différentes pressions, densités… du fait de la taille variable des pores. Une moyenne est
effectuée sur ce volume pour définir chacune de ces propriétés, mais à l’échelle macro-
scopique. La difficulté qui apparaît est d’obtenir une variation « lisse » de ces propriétés
en parcourant les volumes élémentaires. Afin d’éviter les fluctuations, Bear ([3]) définit
le volume élémentaire représentatif (VER). La longueur caractéristique d’un VER est
suffisamment grande par rapport à celle du pore, mais suffisamment faible par rapport à
la taille du domaine pour éviter les fluctuations indésirables des moyennes volumiques
calculées. La figure 2.6 schématise le concept de VER.

2.3 Évolution du réservoir : le modèle mathématique


Nous sommes en mesure de décrire parfaitement un réservoir à un instant t en
donnant aussi bien les propriétés physiques de la roche que celles du fluide ; or ce qui
nous intéresse davantage c’est l’évolution de celui-ci : peut-on prédire son évolution,
peut-on retracer son histoire. Nous y répondrons dans la suite.
2.3. ÉVOLUTION DU RÉSERVOIR : LE MODÈLE MATHÉMATIQUE 17

Fig. 2.6 : Porosité comme une moyenne volumique sur le volume Vt . Lorsque Vt ∼ 0 la
porosité est soit 1 soit 0. La valeur calculée de la porosité se stabilise en accroissant pro-
gressivement le volume sur lequel se fait la moyenne. Le long d’un volume élémentaire
représentatif ou VER (Bear, 1972), la valeur devient relativement constante (modifié de
[33])
.

Équation des flux Pour connaître l’évolution d’un réservoir, il est nécessaire de
pouvoir évaluer la quantité de matière entrante et sortante dans un volume représen-
tatif à un instant donné, en d’autres mots évaluer le flux entrant et sortant. La défini-
tion du flux de matière est donnée par le produit de la densité du fluide et de la vitesse
d’écoulement de celui-ci, soit :

q−→ (2.9)
mϕ = ρϕ~ v
où ~v est la vitesse de filtration du fluide sur une section. Nous en déduisons alors le
flux d’énergie transportée par cette matière :

q→ (2.10)
eϕ = hϕ ρϕ~
v
Puis les flux totaux (liquide + gaz) :

q→ −
q−
→ ρϕ −

X X
m = mϕ = vϕ (2.11)
ϕ∈{l,g} ϕ∈{l,g}


→ −
q→ hϕ ρϕ −

X X
qe = eϕ = vϕ (2.12)
ϕ∈{l,g} ϕ∈{l,g}

2.3.1 Modèle continu


La modélisation des écoulements se base sur un principe élémentaire de la physique
qui exprime que la variation d’une quantité conservative contenue dans un volume de
18 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

contrôle est égale à ce qui y entre moins ce qui en sort. C’est le principe de la conser-
vation. En effet, les flux sous-terrains de matière et d’énergie peuvent être décrits par
un ensemble d’équations exprimant la conservation de la masse et de l’énergie comme
décrit par Ingebritsen [33]. De manière générale cette modélisation tient en trois équa-
tions de conservation : la conservation de la masse, la conservation de l’énergie et la
conservation de la quantité de mouvement. Cette dernière permet d’avoir des informa-
tions sur la vitesse du fluide.
Pour finaliser la modélisation, nous avons besoin de fournir les conditions initiales
du réservoir (pression et enthalpie) et une description de ses frontières (les conditions
aux limites). Les frontières du réservoir sont à des conditions très variables suivant
le cas test étudié. En effet, une partie de la frontière peut-être isolée (pas d’échange
de matière ni d’énergie), une autre peut interdire l’échange de matière, mais autoriser
l’échange d’énergie, voire autoriser tous ces échanges. Dans le cas d’un réservoir chauf-
fé par une chambre magmatique situé sous celui-ci, il n’y a pas d’échange de matière,
mais échange d’énergie provenant de la chaleur dégagée par le magma.
Avant de s’attarder sur les conditions aux limites, intéressons-nous aux équations
de conservation. En particulier, les équations de conservations de l’énergie et de ma-
tière la conservation de la quantité de mouvement ayant une forme particulière dans
un milieu poreux. En effet, en milieu poreux la loi de Darcy (voir section 2.3.2) est
largement utilisée pour décrire les vitesses des fluides. Elle remplace donc la loi de
conservation de la quantité de mouvement.
L’équation continue de l’équation de la conservation de la matière peut s’écrire
sous la forme suivante :
∂ωρ
ρϕ −

X
+∇· vϕ = Qm (2.13)
∂t
ϕ∈{l,g}

où Qm (kg s−1 m−3 ) est un terme source (recharge de l’aquifère, pompage, injection…).
Nous y retrouvons la formule ∇ · (ρl −→vl + ρ g −

vg ) qui décrit le transport d’éléments par
le déplacement du fluide dans le milieu poreux. − →
vϕ représente la vitesse de filtration de
la phase ϕ qui multipliée par sa densité ρϕ (kg m−3 ) donne le flux massique de la phase
ϕ. Enfin, la quantité de matière contenue à un instant t dans le volume est donnée
par le produit de la porosité ω (sans dimension) et de la densité du fluide ρ (kg m−3 ).
Rappelons qu’elle est donnée par la relation (2.8) soit ρ = xVl ρl + xVg ρg .
De manière analogue, la variation de la quantité d’énergie dans le volume de contrôle
dépend de la quantité d’énergie transportée par le déplacement du fluide ; à cela il faut
rajouter l’énergie transmise par diffusion et par dispersion. Ainsi, nous écrivons la
conservation de l’énergie comme suit :
 
∂H −
→ −

(hϕ ρϕ −

X
+∇· vϕ ) + D(~v ) ∇h = ∇ · (K ∇T ) + Qe (2.14)
∂t
ϕ∈{l,g}
2.3. ÉVOLUTION DU RÉSERVOIR : LE MODÈLE MATHÉMATIQUE 19

Fig. 2.7 : Profil de vitesses paraboliques lors du passage des particules au sein des pores

où ~v est la vitesse du fluide, H 4 comprend l’énergie stockée par la roche, Hr = cV T


et l’énergie contenue dans le fluide, Hf = xVl ρl hl + xVg ρg hg et s’obtient de la manière
suivante :
H = (1 − ω)Hr + ωHf . (2.15)

cV (J m−3 ◦C−1 ) est la capacité thermique isochore de la roche ; c’est la quantité d’éner-
gie nécessaire pour augmenter la température d’un mêtre cube de roche d’un degré ;
K(W m−1 K−1 ) le coefficient de diffusion thermique ; T (K) la température de la roche
saturée ; Qe un terme source (réinjection d’eau froide, source de chaleur liée à l’intru-
sion de magma…) et D est le tenseur X de dispersivité thermique.
5
Le terme advectif est ∇ · (hϕ ρϕ −

vϕ ). Il est accompagné du terme diffusif
ϕ∈{l,g}

→ −

K ∇T , et du terme dispersif 6 D ∇h. La dispersion est fortement liée au mouvement
du fluide. Elle s’explique du point de vue microscopique principalement par un profil
de vitesse parabolique lors du passage des particules au sein des pores, phénomène
schématisé dans la figure 2.7 et par le chemin plus ou moins long que suit le fluide.
La diffusion est un phénomène dû à l’agitation thermique des molécules et se met en
place en présence d’un gradient de température. Elle a tendance à homogénéiser la
température du milieu.

4. H est l’enthalpie volumique de la roche saturée


5. Le flux advectif traduit un échange d’énergie dû au déplacement d’un fluide
6. Le terme dispersif représente l’impact des hétérogénéités du milieu qui ne pourraient être prises
en compte de manière discrète
20 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

Discussion sur les équations Le système défini par les équations (2.13) et (2.14)
est un système dit d’advection-diffusion où nous y retrouvons des termes hyperbo-
liques découlant de l’advection (convection) et des termes paraboliques modélisant la
diffusion et la dispersion, voir la schématisation avec les équations 2.16 et 2.17. Sans
trop présumer de la suite, la présence des termes hyperboliques nous oriente vers une
résolution par la méthode des volumes finis puisque le paramètre ρ est transporté à
une vitesse ~v . De même l’idée de résoudre l’équation de conservation de la masse en
ρ s’impose au premier abord ; tandis que l’équation de conservation de l’énergie sug-
gère une résolution en T . En effet, l’équation de conservation de la masse décrivant
des modifications dans l’état de la quantité de matière, il est donc cohérent de choisir
ρ comme inconnue à obtenir par la résolution de cette équation, la densité étant une
grandeur qui décrit la quantité de matière dans un volume à un instant donné.

∂ωρ
ρϕ −

X
+∇· vϕ = Qm (2.16)
∂t
ϕ∈{l,g}
| {z }
hyperbolique

∂(1 − ω)cV T ∂ωHf −


→ −

(hϕ ρϕ −

X
+ +∇· vϕ )+ ∇ · (D(~v ) ∇h)= ∇ · (K ∇T) + Qe
∂t ∂t
ϕ∈{l,g}
| {z } | {z } | {z }
hyperbolique parabolique parabolique
(2.17)

Hypothèses implicitement formulées

Pour écrire les équations de conservations (2.13) et (2.14) en particulier celle de


l’énergie nous avons déjà fait quelques hypothèses. En effet, nous supposons qu’il y a
équilibre thermique instantanément entre la roche et le fluide ou encore, par l’utilisa-
tion d’une pression unique pour les deux phases, que les effets de la pression capillaire
sont négligeables.
De plus amples explications sur ces différentes hypothèses sont données par [33,
p.136].

Équilibre thermique instantané L’équilibre thermique local instantané entre la


roche et le fluide signifie que la température du fluide et celle de la roche sont égales
instantanément, sans transition. Cette hypothèse est très souvent faite pour la modéli-
sation des réservoirs géothermaux et se justifie du fait de la valeur relativement élevée
de la conductivité thermique des matériaux composant la croûte terrestre par rapport
aux vitesses de fluides de subsurface faibles.
2.3. ÉVOLUTION DU RÉSERVOIR : LE MODÈLE MATHÉMATIQUE 21

Dispersion négligeable De même, le choix de négliger la dispersion du « fluide »


est souvent pris et se justifie aussi par la valeur relativement élevée de la conductivité
thermique des matériaux composant la croûte terrestre. De plus, la diffusion thermique
a tendance à homogénéiser localement la température ce qui diminue l’influence de la
dispersion. Par conséquent dans le reste de ce document D = 0.

Pressions capillaires [33, p.137]. Une partie des effets des pressions capillaires sont
pris en compte par les perméabilités relatives notamment par le biais des saturations
volumiques résiduelles (phase immobile pour des saturations inférieures à la saturation
résiduelle).

2.3.2 Loi de Darcy


La conservation de la quantité de mouvement donne des informations sur la vitesse,
mais en milieu poreux, la loi physique dynamique qui décrit l’écoulement d’un fluide
monophasique dans un milieu saturé est la loi de Darcy. Elle permet de calculer le
flux du fluide à travers une section d’écoulement c’est-à-dire le volume d’eau passant
par unité de surface et par unité de temps à travers le matériau poreux. Cette équation
intègre les causes du déplacement du fluide en milieu poreux qui sont : les gradients de
pression d’une part et les forces extérieures d’autre part soit ici la force gravitationnelle
~g . Pour un écoulement monophasique la vitesse de filtration ~v est donnée par :


~v = −M( ∇p + ρ · ~g ) (2.18)

Le tenseur de mobilité du fluide M caractérise sa résistance à l’écoulement. Pour un


écoulement monophasique, il s’agit du produit de l’inverse de la viscosité dynamique
du fluide par la perméabilité intrinsèque : M = k/µ. Le tenseur de perméabilité in-
trinsèque k est caractéristique du milieu et dépend de la géométrie du milieu poral via
une fonction plus ou moins complexe de la porosité (on pourra consulter avec profit
l’analyse dimensionnelle aboutissant à la formule 5.31 de Coussy [19]). Nous compre-
nons donc que le fluide s’écoulera plus difficilement lorsque sa viscosité est élevée et
que le milieu est moins perméable. La propriété rocheuse k est généralement choisie
constante dans le temps, mais pas forcément en espace.
Pour un écoulement diphasique, on introduit deux variables sans dimension, les
perméabilités relatives krϕ , ϕ étant l ou g, pour décrire la diminution de la vitesse
d’écoulement d’une phase à cause des interactions qui se créent en présence de l’autre.
Ces grandeurs sont comprises entre 0 et 1 et sont obtenues via des fonctions empi-
riques de la saturation volumique 7 . Les deux fonctions que nous utiliserons le plus
couramment sont la formulation linéaire et celle correspondant à un écoulement en
7. Ceci exprime la dépendance de la perméabilité relative vis-à-vis de l’espace poral occupé par la
phase
22 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

fracture (« fracture-flow ») (voir la Fig. 2.8). Quelle que soit la formulation choisie, on
définit la saturation résiduelle de la phase ϕ qui rend compte de l’absence de flux, donc
d’une vitesse nulle tant que la saturation volumique de la phase ϕ est inférieure à la
saturation résiduelle. Pour plus d’informations, on se reportera au livre [33, page 132].
Notons Slv la saturation volumique résiduelle de la phase liquide, krl la perméabilité
relative du liquide et krg celle du gaz, la formulation linéaire s’écrit alors :

xVl − SlV
krl = si xVl ≥ SlV (2.19)
1 − SlV
et la formulation « fracture-flow » :

0
 si x ≤ Slv ,
4
krl = x − SlV (2.20)

 sinon
1 − SlV

Dans le cas de ces deux précédentes formulations, la perméabilité relative du gaz vérifie
krl + krg = 1. Cette égalité ne se vérifie pas pour toutes les formulations. Remarquons
aussi que si nous supposons l’absence d’interactions entre les deux phases alors la
perméabilité relative ne dépend que de l’espace poral occupé et s’écrit simplement
kϕr = xVϕ , ce qui vérifie aussi krl + krg = 1 d’après (2.3).
Pour un écoulement diphasique, la vitesse de filtration est donnée par une généra-
lisation de la loi de Darcy :


→ −

vϕ = −Mϕ ( ∇p − ρϕ · ~g ), ϕ ∈ {l, g} (2.21)
kkrϕ
où Mϕ = .
µϕ

2.4 Conditions aux limites et conditions initiales


Les conditions initiales sont données par la pression et l’enthalpie du domaine qui
nous intéresse à l’instant initial de notre étude. Selon [33, p. 139] dans une grande majo-
rité de cas, le système à l’équilibre est indépendant des conditions initiales ; une excep-
tion remarquable est la convection dans un « HeatPipe ». Pour la plupart des problèmes
étudiés, tel que la circulation de fluide proche d’un corps magmatique, un gradient de
pression hydrostatique et le gradient géothermal local sont de bonnes conditions ini-
tiales. Très souvent, la frontière supérieure du domaine représente la surface terrestre ;
aussi, nous y imposons la pression atmosphérique (0,1 MPa). Les conditions aux limites
se présentent sur diverses formes. Elles sont énumérées dans la suite et sont fortement
liées aux différents tests que nous souhaitons réaliser. Sur chaque face se définit une
condition indépendamment des autres faces. Dans la plupart des cas, il est faut définir
2.4. CONDITIONS AUX LIMITES ET CONDITIONS INITIALES 23

1.0

Perméabilité relative 0.8

0.6

0.4

0.2

0.0
0.0 0.2 0.4 0.6 0.8 1.0
Saturation liquide

source :[15]

Fig. 2.8 : Fonctions des perméabilités relatives : linéaire et « fracture-low » (Sorey et


al., 1980). Dans cet exemple la saturation résiduelle du liquide est 0,3 et celle du gaz
est 0

une condition aux limites sur la pression et sur l’enthalpie, mais dans d’autres cas, il
sera nécessaire de rajouter une condition aux limites pour la température.

Dirichlet Cette condition sert à décrire des parois de réservoir soumises à des condi-
tions invariables dans le temps, exemple : la pression et la température sont figés. Une
utilisation possible de cette condition est la simulation d’une source de chaleur située
à proximité du réservoir.

Flux nul (No-flow) Dans certaines situations une partie du réservoir peut être im-
perméable. L’imperméabilité de la frontière se traduit par l’absence de flux sur cette
frontière. Cependant, cela ne signifie absolument pas qu’il n’y aura pas d’échange de
chaleur. En effet, dans le cas de la présence d’une chambre magmatique, il n’y a pas de
transfert de matière, mais il y a bien transfert de chaleur. Les termes
X kkϕr −
→ 
ρϕ ∇p + ρϕ~g · ~n
µϕ
ϕ∈{l,g}

et
X kkϕr −
→ 
hϕ ρϕ ∇p + ρϕ~g · ~n
µϕ
ϕ∈{l,g}
24 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX


→ −

sont nuls sur ces interfaces, mais ∇h et ∇T ne le sont pas nécessairement.

Frontière ouverte (Outflow) Cette condition est détaillée dans [1]


Dans certaines situations (avancement d’un front par exemple) nous pouvons avoir
besoin de spécifier qu’une propriété du fluide n’a aucune contrainte sur une ou plu-
sieurs frontières. Cette condition permet dans certaines situations de supprimer des
résultats non physiques. Elle consiste à dire que le gradient normal à cette frontière
est nul. C’est une condition aux limites de type « continuité ». Dans notre étude, seule
l’enthalpie peut avoir cette condition.



∇h · ~n = 0 sur la frontière

Sortie libre, mais entrée contrôlée (Opening boundary condition) Cette condi-
tion est également détaillée dans [1]. Cette condition est notemment utilisée par [34]
et [35].
Pour modéliser des systèmes hydrothermaux sous-marins, nous avons besoin de mo-
déliser sur la frontière représentant le fond marin un flux entrant et un flux sortant. Le
flux entrant dépendra des propriétés de la masse d’eau se trouvant au-dessus du do-
maine tandis que le flux sortant dépendra du fluide intérieur au domaine. Les frontières
sont caractérisées par la pression imposée par la profondeur. Celles où le flux est sor-
tant ont une enthalpie évoluant librement alors que celles où le flux est entrant seront
caractérisées par l’enthalpie du fluide au-dessus. Cette condition est une combinaison
de condition de type Dirichlet (le flux entrant) et de type outflow (le flux sortant). Cette
condition définit aussi bien une condition pour p et h et par conséquent pour T . Avec
cette condition, il est possible que le flux soit entrant, sortant voire une combinaison
des deux sur toute la surface.
Soit Γ une partie de la frontière du domaine. Soient ~v la vitesse du fluide sur cette
frontière ~n un vecteur normal à Γ et (pext , hext ) ∈ (R × R). pext et hext sont la pression
et l’enthalpie du milieu extérieure.

( (
p = pext p = pext 
Si ~v · ~n < 0 sinon −

h = hext ∇h · ~n |Γ = 0

Isolé Une paroi est isolée s’il n’y a ni échange de matière ni échange de chaleur. Le
premier critère est la condition de flux nul et le second est un système adiabatique se
traduisant par un gradient de température nul.
2.5. LOIS D’ÉTAT 25

2.5 Lois d’état


À ce niveau, notre système est défini par deux équations de conservations (2.13)
et (2.14), et par la loi de Darcy, mais ainsi défini ce système ne peut être résolu, car
il possède une multitude d’inconnues et seulement trois équations descriptives. Il est
nécessaire d’avoir un outil permettant de calculer ou d’obtenir une estimation de ces
valeurs.
L’International Association for the Properties of Water and Steam [31](IAPWS) a
développé des tables d’états de l’eau pure comportant les phases vapeur et liquide. Ces
tables permettent de calculer toutes les propriétés thermodynamiques d’un fluide en
fonction de deux paramètres (les variables d’états). Grâce à ces lois d’états empiriques,
nous sommes capables de calculer un grand nombre de propriétés du système avec la
seule connaissance de deux variables. En effet, ceci se visualise très bien avec le dia-
gramme de Mollier (figure 2.9) : sur le plan pression-enthalpie, nous pouvons évaluer
la densité, la viscosité µ, la température…
L’IAPWS est une association internationale à but non lucratif, d’organisations na-
tionales concernées par les propriétés de l’eau et de la vapeur, particulièrement les
propriétés thermophysiques et d’autres aspects liés aux cycles thermiques et à d’autres
applications industrielles. Les objectifs de l’IAPWS sont :
• de fournir des formulations internationalement reconnues pour les propriétés de
la vapeur sèche et humide, de l’eau et certaines solutions aqueuses pour des ap-
plications scientifiques et industrielles. (La documentation officielle de ces for-
mulations est dans la section Releases and Guidelines 8 mise en ligne sur leur
site) ;
• de définir les besoins de la recherche, de promouvoir et coordonner la recherche
sur la vapeur, l’eau et les systèmes aqueux importants dans les cycles thermiques ;
• de recueillir et d’évaluer les données obtenues, de communiquer et de diffuser
les résultats ;
• de fournir un forum international d’échange d’expériences, d’idées et des résul-
tats de la recherche sur les hautes températures des milieux aqueux.
La version IAPWS-IF97 de ces lois d’états est implémentée dans la librairie C Frees-
team [46]. Freesteam permet de calculer les propriétés de l’eau et de la vapeur pour un
large éventail de pressions et de températures : nous pouvons spécifier l’état du fluide
en termes d’une variété de combinaisons de propriétés « connues », puis Freesteam
calculera les valeurs de l’ensemble des propriétés inconnues. Exemple : en précisant la
pression p et la température T (deux variables décrivant l’état de la vapeur) Freesteam,
renvoie, entre autres, les propriétés suivantes
8. http ://www.iapws.org/release.htm
26 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

viscosity (kg/(m.s) x 10 4) Density (kg/m3x103) Temperature C


T=50 C 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800
103 0.5

0.4
00 3
0.8
0.800

0.70.9

0.7
0.3
0
1.0
0.900
1.000

00
0.5
0.3 0.100
1.5

0.6
2.0
pression absolue (bars)

102
5.0
10.0

0.010

0.2
1 4 2
101

0.001

x=25 % 50 % 75 %

100
0 500 1000 1500 2000 2500 3000 3500 4000
enthalpie massique (kJ/kg)

Fig. 2.9 : Diagramme de Mollier montrant l’évolution de la température (en ◦C) de l’eau
pure dans l’espace enthalpie massique (abscisse) pression (ordonnée). La zone 1 est la
zone liquide, la 2 celle de la phase diphasique, la 3 est celle de la vapeur sèche et la 4
est la zone supercritique [33]
2.5. LOIS D’ÉTAT 27

h enthalpie s entropie
cp capacité thermique isobare cV capacité thermique isochore
ρ densité u énergie interne
k conductivité thermique mu viscosité
Notons qu’il faut connaître au moins deux propriétés de l’état du fluide pour pouvoir
calculer toutes les autres. Voici quelques paires implémentées en entrée dans Frees-
team :
• (p , T ), pression–température ;
• (p , h), pression–enthalpie ;
• (T , x), température–saturation.
Nous appellerons ces paires variables principales ou prognostiques par comparaison
aux variables qu’elles permettent de calculer qui sont appelées des variables secon-
daires ou diagnostiques.

2.5.1 Choix des variables pronostiques


Lors d’une première discussion sur les équations (voir paragraphe 2.3.1), nous avions
suggéré de réaliser la résolution en ρ et T . La quantité de matière présente dans un vo-
lume, influence sans aucun doute la quantité de matière pouvant être déplacée, mais il
est plus intéressant de se focaliser sur la source de ce déplacement. D’après les lois de
Darcy (1856), il apparaît que les flux sont fonction des forces s’exerçant sur le fluide :
pression et gravité. Ainsi il est essentiel de calculer les flux en fonction de ces forces. Le
choix de la pression est alors le plus approprié. Nous sommes alors tentés de résoudre
en p et T , en nous accordant avec notre précédente discussion. Cela est possible car
ces deux paramètres sont des variables d’états. Mais ce couple possède un inconvénient
important. En utilisant ce couple p-T, il n’est pas possible de déterminer précisément
les caractéristiques d’un fluide diphasique. En effet, dans le plan pression-température
la zone diphasique se matérialise par une simple courbe (voir figure 2.10) autrement dit
il n’est pas possible d’obtenir les proportions de liquide et de gaz en connaissant uni-
quement la pression et la température. En effet, considérons une eau pure à la pression
atmosphérique (0,1 MPa) et à une température de 100 ◦C (eau en ébullition). Cet unique
couple couvre à lui seul une densité du mélange variant entre 0,6 kg m−3 et 987 kg m−3
et une enthalpie variant entre 418 kJ kg−1 et 2676 kJ kg−1 (chiffres donnés par [33]). Ce
couple couvre donc un large éventail de propriétés. Ceci est dû au fait qu’en diphasique,
la pression et la température ne sont pas indépendantes, mais vérifient l’équation
P = Psat (T ).

Pour gérer ce problème, il existe deux approches :


28 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

super critique
super critique
point critique
Point critique

pression absolue (bars) liquide liquide

100 gaz gaz

di-phasique

10
0 400 800 0 2000 4000
temperature (C) enthalpie (J/kg)

Fig. 2.10 : Positionnement des zones de phases dans le plan P-T (à gauche) et P-h (à
droite)

• choisir la pression et la température comme variables pronostiques en mono-


phasique puis changer pour la pression et la saturation (proportion de gaz) en
diphasique,

• choisir des variables pronostiques (pression-enthalpie) qui demeurent tout le


temps indépendant même lors des changements de phases.

Différents codes ont déjà testé chacune de ces stratégies. Nous pouvons citer notam-
ment, TOUGH2 [45] qui a adopté la première stratégie, HYDROTHERM [36] et CSMP++ [32]
qui ont adopté la seconde. La seconde approche est celle que nous avons choisie. Ce
changement de variables pronostiques aura un impact sur la modélisation du réservoir
que nous décrirons dans la suite.

2.5.2 Choix de modélisation


Dans les paragraphes précédents, nous avons détaillée certains de nos choix de
modélisation :

• le sol est indéformable (voir p.15)

• en milieu poreux, la loi de Darcy remplace la vitesse dans les équations de conser-
vation,

• utilisation des tables développées par IAPWS, elles ferment le problème,

• le choix des variables pronostiques a été de prendre la pression et l’enthalpie.


2.5. LOIS D’ÉTAT 29

• et enfin ∀~v ∈ R3 , D(~v ) = 0 (voir p.21)

Ces choix ont un impact sur l’écriture du système et sur les choix de méthodes de
résolution. Rappelons d’abord les équations :
∂ωρ
ρϕ −

X
+∇· vϕ = Qm
∂t
ϕ∈{l,g}

∂(1 − ω)cV T ∂ωHf −


→ −

hϕ ρϕ −

X
+ +∇· vϕ + ∇ · (D(~v ) ∇h) = ∇ · (K ∇T ) + Qe
∂t ∂t
ϕ∈{l,g}


→ −

vϕ = −Mϕ ( ∇p − ρϕ · ~g ), ϕ ∈ {l, g}
puis détaillons ces impacts.

Lois de Darcy Dans un premier temps, nous pouvons intégrer les lois de Darcy dans
les équations de conservations, traiter le fait que le sol est indéformable et que la disper-
∂w
sivité est négligeable. Un sol indéformable se traduit par = 0. Ainsi nous avons :
∂t
∂ρ X −

ω −∇· ρϕ Mϕ ( ∇p − ρϕ · ~g ) = Qm (2.22)
∂t
ϕ∈{l,g}

∂cV T ∂Hf X −
→ −

(1 − ω) +ω −∇· hϕ ρϕ Mϕ ( ∇p − ρϕ · ~g ) = ∇ · (K ∇T ) + Qe (2.23)
∂t ∂t
ϕ∈{l,g}

Pression et enthalpie Un autre impact sur les équations est que les dérivées tempo-
relles ne portent plus directement sur les inconnues, mais sur des fonctions de celles-
ci. Cela signifie qu’il faudra réaliser, au moins une décomposition de ces dérivées pour
faire apparaître les dérivées temporelles par rapport à p et h, ou utiliser des méthodes
de point fixe. En faisant apparaître toutes les dépendances à p et h nous nous rendons
compte de la non-linéarité des équations.

∂ ϕ∈{l,g} xVϕ [p, h]ρϕ [p, h]


P
X −

ω −∇· ρϕ [p, h]Mϕ [p, h]( ∇p − ρϕ [p, h] · ~g ) = Qm
∂t
ϕ∈{l,g}
(2.24)

∂cV [p, h]T [p, h] ∂Hf [p, h] X −



(1−ω) +ω −∇· hϕ [p, h]ρϕ [p, h]Mϕ [p, h]( ∇p−ρϕ [p, h]·~g )
∂t ∂t
ϕ∈{l,g}


= ∇ · (K ∇T [p, h]) + Qe (2.25)
30 CHAPITRE 2. MODÉLISATION DES FLUIDES HYDROTHERMAUX

À ce point, il faut exprimer les équations en fonction des dérivées partielles de p et h


pour pouvoir travailler avec les méthodes de résolution.
Pour tout ϕ ∈ {l , g} nous avons :
!
∂xVϕ [p, h]ρϕ [p, h] ∂xVϕ V ∂ρϕ [p, h] ∂p
= ρϕ [p, h] + xϕ [p, h]
∂t ∂p ∂p ∂t
!
∂xVϕ ∂ρϕ [p, h] ∂h
+ ρϕ [p, h] + xVϕ [p, h] (2.26)
∂h ∂h ∂t

Prenons quelques notations pour alléger les équations. Soit α = p , h


!
X ∂xVϕ [p, h] ∂ρϕ [p, h]
Cmα [p, h] = ω ρϕ [p, h] + xVϕ [p, h] (2.27)
∂α ∂α
ϕ∈{l,g}

ainsi
∂xVϕ [p, h]ρϕ [p, h] ∂p ∂h
ω = Cmp [p, h] + Cmh [p, h]
∂t ∂t ∂t

1 ∂ρ
Remarquons qu’en monophasique on appelle la compressibilité du fluide le terme
ρ ∂p T
−1
(Pa ), noté χ. La compressibilité du fluide représente la variation du volume occupé
par celui-ci lorsque la pression varie à température constante. Le gaz a une compres-
sibilité très élevée tandis que celle du liquide est faible. Par analogie en diphasique la
compressibilité du fluide est donnée par

1 1
X Cmp [p, h] (2.28)
xVϕ ρϕ ω
ϕ∈{l,g}

qui n’est rien d’autre que la formule de χ en diphasique. Nous dérivons de même le
terme traduisant l’apport d’énergie découlant de la convection. En posant pour α ∈
{p , h} :
!
∂xVϕ [p, h] V ∂ρϕ [p, h]
Aeα [p, h] = hϕ [p, h] ρϕ [p, h] + xϕ [p, h]
∂α ∂α
!
∂xVϕ [p, h] V ∂hϕ [p, h] (2.29)
+ρϕ [p, h] hϕ [p, h] + xϕ [p, h]
∂α ∂α
 
V ∂ρϕ [p, h] ∂hϕ [p, h]
+xϕ [p, h] hϕ [p, h] + ρϕ [p, h]
∂α ∂α
2.5. LOIS D’ÉTAT 31

nous avons
∂xVϕ [p, h]ρϕ [p, h]hϕ [p, h] ∂p ∂h
= Aep [p, h] + Aeh [p, h] (2.30)
∂t ∂t ∂t
Puis celui découlant de l’énergie stockée dans la roche
 
∂cV [p, h] · T [p, h] ∂cV [p, h] ∂T [p, h] ∂p
= T [p, h] + cV [p, h]
∂t ∂p ∂p ∂t
 
∂c [p, h] ∂T [p, h] ∂h
+ T [p, h] V + cV [p, h] (2.31)
∂h ∂h ∂t
Nous adoptons alors les notations suivantes :
 
∂cV [p, h] ∂T [p, h]
α ∈ {p, h} Ceα [p, h] = (1 − ω) T [p, h] + cV [p, h] + ωAeα [p, h]
∂α ∂α
(2.32)
ainsi
∂H ∂p ∂h
= Cep + Ceh (2.33)
∂t ∂t ∂t
Notre système s’écrit alors (les dépendances en p et h ont été enlevées pour alléger
l’écriture) :
∂p ∂h X −→ 
Cmp + Cmh −∇· ρϕ Mϕ ∇p − ρϕ · ~g = Qm (2.34)
∂t ∂t
ϕ∈{l,g}

∂p ∂h X −
→  −

Cep + Ceh −∇· hϕ ρϕ Mϕ ∇p − ρϕ · ~g = ∇ · (K ∇T ) + Qe (2.35)
∂t ∂t
ϕ∈{l,g}

Reprenons la discussion débutée dans les équations (2.16) et (2.17), sur les propriétés
des équations. La loi de Darcy et surtout le changement de variables pronostiques ont
un impact sur les propriétés des équations de la manière suivante :
Les termes X
∇· ρ2ϕ Mϕ~g
ϕ∈{l,g}

de la première équation et X
∇· hϕ ρ2ϕ Mϕ~g
ϕ∈{l,g}

de la seconde donnent le caractère hyperbolique de ces équations, les autres termes en


p ou en T sont plutôt elliptiques.
Cette dernière remarque a influé sur le choix de la méthode de discrétisation spa-
tiale. Les plus communément utilisées sont les éléments finis pour la résolution de
termes paraboliques, les volumes finis pour les termes hyperboliques. Comme nous
avons fait le choix d’utiliser une seule méthode, comme nous le développerons ci-après,
la méthode des volumes finis a été sélectionnée.
Chapitre 3

Description du modèle discret

L’étape précédente consistant à exprimer le système d’advection-convection a fait


apparaître clairement la très forte non-linéarité des équations, ceci s’expliquant entre
autres par les équations empiriques des lois d’états de l’IAPWS.
L’un des objectifs de cette thèse étant d’utiliser des méthodes avec une mise en
œuvre relativement simple et rapide nous avons opté pour une méthode à pas fraction-
naire (aussi appelée « splitting ») Afin justement d’éviter l’usage de méthodes couplées
un peu plus complexes à implémenter. Signalons tout de même que ce choix n’est pas
fait au détriment de la justesse de la simulation. Le schéma à pas fractionnaire consiste
à résoudre une équation après l’autre en considérant toutes les variables constantes
excepté celle que nous cherchons à évaluer. C’est-à-dire que la première équation est
résolue pour obtenir une des inconnues du problème puis la suivante est résolue en
y mettant à jour l’inconnue précédemment obtenue ; elle permettra d’obtenir une se-
conde inconnue. Nous avons choisi de résoudre en premier lieu l’équation de conser-
vation de la masse puis celle de l’énergie. Par conséquent, nous estimons en premier
lieu la pression puis enfin l’enthalpie. Rappelons que la conservation de la masse dé-
crit le déplacement du fluide et que celui-ci est dû en grande partie à la pression. Il
est donc naturel de la résoudre en p ce qui laisse l’enthalpie pour la seconde équation.
La pression étant une grandeur variant et se stabilisant très rapidement par rapport à
l’enthalpie, c’est pour cela que nous avons choisi de la résoudre en premier.
Dans la suite nous décrirons les choix de modélisation faits.

3.1 Discrétisation temporelle


Soit une discrétisation temporelle T = (t0 , . . . , tN ), une suite strictement crois-
sante de N + 1 réels positifs. Les pas de temps sont alors introduits de la manière
suivante : ∆tn = tn+1 − tn ,

33
34 CHAPITRE 3. DESCRIPTION DU MODÈLE DISCRET

Considérons le problème de convection-diffusion suivant, défini sur Ω :


∂p ∂h X −
→ 
Cmp + Cmh −∇· ρϕ Mϕ ∇p − ρϕ · ~g = Qm (3.1)
∂t ∂t
ϕ∈{l,g}

∂p ∂h X −
→  −

Cep + Ceh −∇· hϕ ρϕ Mϕ ∇p − ρϕ · ~g = ∇ · (K ∇T ) + Qe (3.2)
∂t ∂t
ϕ∈{l,g}

p(x, t0 ) = p0 (x) h(x, t0 ) = h0 (x) x ∈ Ω̊ (3.3)


et les conditions aux limites sont multiples (voir section 2.4, page 22). Citons par exemple :

p(x, t0 ) = pbc (x) ou ~v · ~n = 0 x ∈ ∂Ω (3.4)

où ~v est une des lois de Darcy.



→ −

h(x, t0 ) = hbc (x) ou ∇h · ~n = 0 ou ∇T · ~n = 0 x ∈ ∂Ω (3.5)

p0 et h0 sont des fonctions d’initialisation décrivant le fluide à l’état t0 . Lorsqu’elles sont


données, hbc et pbc sont des fonctions décrivant le fluide sur les frontières du domaine.
Ces fonctions peuvent dépendre du temps.

3.1.1 Les méthodes d’Euler


Discrétisation de l’équation 3.1
Euler semi-implicite

Soit n ∈ J0 , N K, pour mettre en place notre schéma en temps, nous formulons les
approximations suivantes :

∂p pn+1 − pn ∂h hn − hn−1 ∂h
∀x ∈ Ω (x, tn ) ≈ , (x, tn ) ≈ n>1 et (x, t0 ) = 0.
∂t ∆tn ∂t ∆tn−1 ∂t
∂p
L’approximation de est standard puisque nous cherchons à évaluer p au temps tn+1
∂t
∂h
tandis qu’ est approchée par une valeur au temps précédent, car nous ne sommes
∂t
∂h
pas encore en mesure de calculer ni hn+1 ni (x , t0 ). hn+1 sera calculé à la deuxième
∂t
étape du spliting (voir section 3.1.1 page ci-contre).

n pn+1 − pn n
n h −h
n−1 X
n n −
→
n+1 n

Cmp + C mh − ∇ · ρ M
ϕ ϕ ∇p − ρ ϕ · ~
g = Qnm (3.6)
∆tn ∆tn−1
ϕ∈{l,g}
3.1. DISCRÉTISATION TEMPORELLE 35

La grande majorité des grandeurs tabulées par Freesteam (contenues dans Cmp et Cmh )
sont évaluées en pn , hn tandis que le gradient est évalué en n+1 . C’est cette combinaison
qui donne son caractère semi-implicite à la méthode de résolution.
L’objectif de cette étape est de faire apparaître un système linéaire à résoudre.
L’équation (3.6) page précédente devient

n n−1
 
n
X −
→ n h −h
Cmp pn+1 n
− ∆t ∇ · ρnϕ Mnϕ ∇pn+1 n n
= ∆t Qm − Cmh

 

∆tn−1

ϕ∈{l,g}
X 2
− ∆tn ∇ · Mnϕ ρnϕ · ~g (3.7)
ϕ∈{l,g}

L’équation 3.2
Euler explicite

Contrairement à notre précédente équation, nous offrons la possibilité d’utiliser


la méthode d’Euler explicite pour résoudre l’équation (3.2) page ci-contre. Ce choix
peut se justifier par l’expérience : p varie beaucoup plus vite que h (dans les premières
itérations). De plus, l’expérience montre que l’inversion de matrice (pour l’utilisation
d’une méthode implicite) demande moins d’itérations pour la résolution de h.
L’équation (3.2) page précédente se discrétise comme suit par la méthode d’Euler
explicite :

n pn+1 − pn n h
n+1
− hn X
n n n −
→
n+1 n

Cep + C eh − ∇ · h ρ M
ϕ ϕ ϕ ∇p − ρ ϕ · ~
g
∆tn ∆tn ϕ


= ∇ · (K ∇T n ) + Qne (3.8)

que nous réécrivons


n+1
− pn 
 
n n+1 n n n −
→ n n n p
Ceh h = Ceh h + ∆t ∇ · (K ∇T ) + Qe − Cep

 
∆tn

X −
→ 
+ ∆tn ∇ · hnϕ ρnϕ Mnϕ ∇pn+1 − ρnϕ · ~g (3.9)
ϕ

Remarquer que toutes les fonctions de p et h ayant l’exposant n sont évaluées en pn+1
(calculée à l’étape précédente1 ) et hn+1 . Il serait peut-être plus judicieux de mettre un

1. Ce qui se traduit dans le code par l’obligation de mettre à jour les tables avant de commencer une
quelconque méthode
36 CHAPITRE 3. DESCRIPTION DU MODÈLE DISCRET

n+ 1
 
exposant du type n + 12 ρϕ 2 au lieu de ρnϕ pour éviter toutes confusions, mais les
notations risquent de devenir de plus en plus lourdes.
Lors de nos simulations, nous avons constaté que la pression converge rapide-
ment vers une solution tandis que l’enthalpie varie encore fortement allant parfois
jusqu’à donner une solution oscillante qui finit par sortir des limites de l’IAPWS-IF97
(voir [12]). Ce comportement nous a poussés à mettre en place des méthodes connues
pour donner des solutions plus proches de celle recherchée : des méthodes implicites,
d’ordre plus élevé…

Euler semi-implicite

Pour rendre le schéma en temps semi-implicite nous avons décidé d’évaluer T au


temps tn+1 , c.-à-d. T (pn+1 , hn+1 ). Il convient donc de dire que :

→ n+1 ∂T n −
− → n+1 ∂T n − → n+1
∇T = ∇p + ∇h
∂p ∂h
et de réécrire l’équation (3.8) page précédente comme suit :

n n+1 ∂T n −
→ n+1 ∂T n −
→ n+1
Ceh h − ∆tn ∇ · K ∇h n n
= Ceh h + ∆tn ∇ · K ∇p
∂h ∂p
 
n+1 n −

 p − p X → 
+ ∆tn 
 n n
Q − Cep + ∇· hnϕ ρnϕ Mnϕ ∇pn+1 − ρnϕ · ~g  (3.10)

 e ∆tn

 

ϕ

Dans le cas particulier où les conditions aux limites décrivent une absence d’échange
de matière, mais un échange de chaleur par le biais d’une chambre magmatique, cette
méthode pose quelques problèmes de résolution. En effet, soit ~n un vecteur normal à
la frontière, ces conditions se traduisent par :
(
~v · ~n = 0
T, donnée sur la frontière

avec ces conditions nous ne savons pas calculer le gradient de h sur la frontière, mais
nous savons calculer le gradient de T . Une solution est donc de ne pas décomposer


∇T pour le calcul sur la frontière.

3.1.2 BDF2
La méthode BDF2 (Backward Differentiation Formulas) est une méthode à 2 pas et
d’ordre 2. Si δ est le pas en temps que l’on suppose constant, sa forme générale est [7] :
3.1. DISCRÉTISATION TEMPORELLE 37

3 n+2 1
y − 2y n+1 + y n = δf n+2 (3.11)
2 2
∂y
L’équation (3.11) a pour but de résoudre = f (x , y) où y est l’inconnue. Remarquons
∂t
que la méthode BDF1 (méthode à un pas) est la méthode d’Euler implicite. Avec un pas
de temps non constant, la méthode BDF2 s’écrit [2] [25] :

3y n+2 − (3 + θ2 )y n+1 + θ2 y n = 2δ n+2 f n+2 − (θ − 1)δ n+1 f n+1 (3.12)

δ n+2
avec θ = n+1 .
δ
Dans notre étude, nous avons adapté l’équation (3.11) pour faire du semi-implicite.
Bien que nos simulations se déroulent souvent à pas de temps adaptatif2 cette méthode
conviendra aussi à notre cas. En effet, l’un des principaux atouts d’avoir un pas de
temps adaptatif, est de pouvoir utiliser de grand pas de temps. Une fois ce pas de temps
maximal atteint, nous nous retrouvons dans la situation d’une discrétisation temporelle
à pas de temps constant. Ce qui donne pour l’équation de l’énergie :

∂T n − n+1
− pn
 
n 3 n+2 n+1 1 n n → n+1 n p
Ceh h − 2h + h − ∆t ∇ · K ∇h = −∆tn Cep
2 2 ∂h ∆tn
 
n
n n n − → n+1 ∂T − → n+1

 X   

+ ∆tn  ∇ · h ρ M ∇p − ρ n
· ~
g + ∇ · K ∇p + Q n
(3.13)
 
ϕ ϕ ϕ ϕ e
∂p

 
 
ϕ∈{l,g}

Précisons que la méthode de BDF2 a aussi été implémentée pour la résolution de la


pression, mais elle ne sera pas détaillée ici.

3.1.3 Point fixe sur les méthodes de discrétisation


Précédemment nous vous avons présenté l’ajout de deux méthodes semi-implicites.
Notre objectif dans l’apport de nouvelle méthode est d’apporter des méthodes connues
plus stables et moins contraignantes. L’ajout de méthode semi-implicite (versus expli-
cite) apporte des méthodes qui sont moins contraintes par la condition de Courant-
Friedrich-Lewy [18] (condition de CFL). Cette conditon est un limitateur du pas de
temps en fonction des pas d’espace (voir tab. 4.3 page 66, tab. 4.4 page 67 et tab. 4.5
page 68). Dans notre contexte de simulation de phénomène géothermique il est impor-
tant de pouvoir atteindre des pas de temps élevés.
Nous finirons ce tour des méthodes de discrétisation par l’implémentation d’une
méthode de point fixe englobant les deux équations qui permet, à convergence d’avoir
résolu les versions implicites des méthodes proposées ci-dessus.
2. l’utilisateur peut choisir d’utiliser un pas de temps constant où variable
38 CHAPITRE 3. DESCRIPTION DU MODÈLE DISCRET

La discrétisation des équations en p et en h pour leurs versions semi-implicites peut


être résumée sous la forme suivante :

y 0 + g(t, y) · y = f (t, y)

où g(t , y) · z est un opérateur linéaire en z et f est non linéaire. Discrétisé avec la


méthode d’Euler implicite cela donne

y n+1 + ∆tg(tn+1 , y n+1 ) · y n+1 = y n + ∆tf (tn+1 , y n+1 ).

Pour résoudre cette équation, on utilise une méthode de point fixe de la façon suivante :
on pose y n+1,0 = y n et pour i = 1 , . . . jusqu’à convergence on résout

y n+1,i+1 + ∆tg(tn+1 , y n+1,i ) · y n+1,i+1 = y n + ∆tf (tn+1 , y n+1,i ) (3.14)

À gauche on a un opérateur linéaire en y n+1,i+1 le second membre à droite est connu.


À convergence on pose y n+1 = y n+1,i+1 . On a bien résolu avec une méthode d’Euler
implicite.

3.1.4 Les pas fractionnaires


Nous avons décrits quelques unes des méthodes de discrétisation en temps plus ou
moins implicite, d’ordre un ou deux et combinées avec le point fixe ou non. Chacune
d’elles peut être adaptée à l’une ou l’autre des équations pour p et pour h. Cela nous
donne de nombreuses combinaisons. Quelques une d’entre elles ont été testées, les
résultats obtenus et leur comportement vous sont présentés au chapitre 4 page 43.
Remarquons aussi qu’il est possible d’utiliser le point fixe (section 3.1.3 page pré-
cédente) sur la résolution des deux équations. Il s’agira de chercher à déterminer le
couple (pn+1,i+1 , hn+1,i+1 ), soit le schéma suivant :

1. Initialisation du point fixe à (pn,0 , hn,0 ) = (pn , hn )

2. Résoudre la conservation de la masse qui donne pn+1,i+1

3. Résoudre la conservation de l’énergie qui donne hn+1,i+1

4. Itérer jusqu’à convergence.

Cette approche permet de retrouver un peu de couplage perdu par la méthode de


« splitting ».
3.2. DISCRÉTISATION SPATIALE PAR LES VOLUMES FINIS 39

Fig. 3.1: Grille admissible pour le schéma volumes finis

3.2 Discrétisation spatiale par les volumes finis


Définition 1 (Maillage admissible τ ).
Un maillage admissible [4, 5] est constitué de :

1. une famille finie de sous-domaines compacts, polyhédraux, convexes, non vides


de Ω notée K et appelée volumes de contrôle qui vérifie les conditions suivantes :

• si K 6= L , on a K̊ ∩ L̊ = ∅.
[
• Ω̄ = K̄.
K∈ τ
2. une famille de points (xK )K∈τ telle que

• pour tout K ∈ τ , xK ∈ K̊ .
• pour tout K , L ∈ τ , K 6= L , si K ∩ L est de dimension d–1, alors c’est
une face de K et de L, notée K|L et qui de plus, vérifie la condition d’or-
thogonalité
[xK , xL ]⊥K|L (3.15)

Le maillage que nous utiliserons est une grille (Fig. 3.1) où la famille (xK )K∈τ est la
famille des centres de chaque parallélépipède. Il s’agit bien d’un maillage admissible
au sens de la définition 1. Cette grille est caractérisée par 3 paramètres : le nombre de
subdivisions selon l’axe (Ox), selon l’axe (Oy) et selon l’axe (Oz). Ces paramètres ne
sont pas nécessairement égaux ni même constant, de sorte que les arrêtes n’ont pas
toutes la même surface.
Définition 2 (Notations). [22] Soit K ∈ τ
E, EK : Notons E l’ensemble des arêtes (des faces en 3D, des segments en 2D et des
points en 1D) du maillage et EK l’ensemble des arêtes formant la frontière ∂K du
volume de contrôle K.
40 CHAPITRE 3. DESCRIPTION DU MODÈLE DISCRET

Fig. 3.2 : Grandeurs caractérisques d’un volume de contrôle dans son environnement.
Nous pouvons remarquer que pour tout L ∈ EK , le support du segment [xK , xL ] est
dirigé par le vecteur ~nσ .

m(K), m(σ) la mesure du volume de contrôle K et celle de l’arête σ.

dK,σ , dK,L (ou dσ ) sont des distances définies sur la figure 3.2.

Définition 3 (Voisinage V(K) de K). On dit que L appartient au voisinage de K (ou est
un voisin de K) si et seulement si il existe une interface σK|L appartenant à la frontière
de K et de L.
V(K) = {L | ∃ σ ∈ EK ∩ EL 6= ∅} (3.16)

Soient deux entiers n et N , K ∈ τ , (τ un maillage admissible au sens de la défini-


tion 1) et (tk )0≤k≤N une subdivision quelconque de [0 , T ]. En appliquant la méthode
des volumes finis associée à la méthode d’Euler semi-implicite pour l’équation en p le
problème semi-discret s’écrit :
3.2. DISCRÉTISATION SPATIALE PAR LES VOLUMES FINIS 41

n n−1
 

→ n h −h
Z Z X Z
n
Cmp pn+1 dx − ∆t n
∇· ρnϕ Mnϕ ∇pn+1 dx = ∆t n n
Qm − Cmh dx

 
∆t n−1

K K K
ϕ∈{l,g}
Z
n
X 2
− ∆t ∇· Mnϕ ρnϕ · ~g dx
K
ϕ∈{l,g}
(3.17)

Il s’agit ensuite de construire la famille discrète utilisée en volumes finis est donnée
par la moyenne de notre inconnue sur le volume K.
Z Z
n 1 n 1 n
pK = p (x) dx et hK = hn (x) dx (3.18)
m(K) K m(K) K

Posons
 V n n

∂x [p , h ] n n
X  ϕ K K ∂ρ [p
ϕ K , h ]
MnK = Cmp [pnK , hnK ] = ωK n n
+ xVϕ [pnK , hnK ] K 

ρϕ [pK , hK ]

 
∂p ∂p 
ϕ∈{l,g}

 V n n

∂x [p , h ] n n
X  ϕ K K ∂ρ ϕ [p , h ]
NKn = Cmh [pnK , hnK ] = ωK n n
+ xVϕ [pnK , hnK ] K K 

ρϕ [pK , hK ]

 
∂h ∂h 
ϕ∈{l,g}

L’équation (3.17) devient :


n n−1
 
n−→ n+1 n hK − hK
Z
n n+1 n n n
m(K)MK pK − ∆t ∇· Mm ∇p dx = m(K)∆t QmK − NK

 

∆tn−1

K
Z
n n
− ∆t ∇ · Nm ~g dx
K

n
X X 2
où Mm = ρnϕ Mnϕ et Nm
n
= Mnϕ ρnϕ
ϕ∈{l,g} ϕ∈{l,g}

n n−1
 

→ −
Z
h h
m(K)MnK pn+1 − ∆tn n
∇ · Mm ∇pn+1 = m(K)∆tn 
QnmK − NKn K K
 

K n−1
∆t

K
Z
n n
− ∆t ∇ · Nm ~g
K

L’ultime étape de discrétisation est d’utiliser la formule de Green-Ostrogradski et


d’écrire le schéma décentré en amont des flux. Soit K ∈ τ , σ une arrête du volume K.
42 CHAPITRE 3. DESCRIPTION DU MODÈLE DISCRET

Si ~nσ est dans l’intérieur de τ alors il existe L tel que σ = L ∩ K. Le flux numérique
sur l’arrête σ décentrée en amont est donnée par la relation suivante :

fnϕ −
Z → 
n
Fm,ϕ,σ = cnϕ M
ρ ∇pn+1 − ρnϕ~g · ~nσ dγ
σ
 n+1 n+1

n p − p
= m(σ)ρ cnϕ M
fϕ ± K L
− ρ¯nϕ~g · ~nσ (3.19)
∆x

où Xb est la valeur X de la cellule amont. La cellule amont est donnée par la vitesse du
fluide. En effet, si −

vϕ · ~nσ > 0 le fluide quitte la cellule K, ce qui en fait la cellule amont.

n n n
ρϕ (pK , hK ) si le fluide provient de K

cnϕ =
ρ (3.20)

 n n n
ρϕ (pL , hL ) sinon

Nous laissons l’utilisateur choisir d’approcher la mobilité par la mobilité en amont


ou par la moyenne harmonique. Ce choix est laissé, car il est possible de montrer par
calcul que pour que les flux (sortant et entrant) traversant une arrête σ soient égaux,
la mobilité doit être approchée par une moyenne harmonique. Cependant dans le cas
d’une simulation 1D particulière, l’état d’équilibre du système est plus difficilement
atteint (voir article [42]).

n n−1
 

→ −
Z
h h
m(K)MnK pn+1 − ∆tn n
Mm ∇pn+1 · ~nσ d(γ) = m(K)∆tn 
QnmK − NKn K K
 

K n−1
∆t

σ
Z
n n
− ∆t Nm ~g · ~nσ d(γ) (3.21)
σ
Chapitre 4

Résultats numériques

Avant d’appliquer le code à des situations réalistes et très complexes, il est essen-
tiel d’effectuer des simulations de systèmes dont le comportement est connu, soit grâce
à une analyse théorique soit grâce aux résultats de simulations obtenus par d’autres
codes. L’objectif de cette étape est de valider notre modèle et par conséquent les résul-
tats qu’il nous renverra. La partie à venir sera donc l’occasion de montrer que notre
code simule correctement les différents tests connus. Ce qui validera les choix pris
jusque là.
Nous présenterons des résultats de simulation de « heat pipes » (domaines 1D verti-
caux), de simulation d’un doublet géothermique du type du bassin parisien, de simula-
tions de propagation d’un front chaud dans un domaine 1D horizontal et nous finirons
avec un phénomène souvent rencontré dans les systèmes hydrothermaux soumis à
de fortes températures, la convection naturelle créant des doigts. Avec ces simulations,
nous parcourons un large spectre d’enthalpie et des températures comprises entre 70 ◦C
et 350 ◦C.

4.1 Heat pipe ou la colonne d’eau chaude

L’intérêt de ce premier test se retrouve dans sa simplicité (domaine 1D) et parce


que nous connaissons son comportement ([42]). En plus de sa simplicité, ce système
est intéressant, car il est rencontré dans des systèmes géothermaux naturels ou par
des réalisations humaines ([42]). Dans un premier temps nous résolvons uniquement
l’équation de conservation de la matière en considérant que l’enthalpie est constante
puis nous résoudrons le système complet. Dans les deux cas, nous montrons que nos
résultats correspondent à ceux attendus, notamment un flux total de matière constant.

43
44 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

4.1.1 Description
Un heat pipe est la simulation d’un réservoir vertical fermé diphasique. Il est très
favorable au transfert de chaleur. Ce système possède deux états stables : un état où le
liquide est prédominant et un autre où le gaz est prédominant dans le réservoir. L’eau
(au contact d’une source magmatique) à la base se vaporise et se dirige vers le haut, à
la surface au contact de roche froide elle se condense et redescend.
Dans la suite nous simulerons un réservoir de 2 km de haut dont les parois verticales
sont isolées. Il n’y a donc n’y flux de matière ni flux d’énergie et ni échange de chaleur
sur ces parois. Les parois horizontales (haut et bas) seront maintenues à des conditions
thermodynamiques constantes (pbot , hbot , ptop , htop ). Le réservoir est discrétisé par 200
volumes de 10 m.
Les propriétés physiques du domaine sont uniformes et identiques pour tous les
tests. Celles-ci sont résumées dans le tableau 4.1. Dans tous les tests, la pression au
sommet sera la pression atmosphérique. Les autres conditions aux limites seront dé-
crites pour chaque test réalisé.

perméabilité 1 × 10−12 m2
porosité 0,15
conductivité thermique 2,25 W m−1 ◦C−1
capacité thermique isochore 2200 J m−1 ◦C−1

Tab. 4.1: Propriétés physiques des heat pipes

4.1.2 Quelques résultats sur les heat pipes


Dans la suite nous effectuerons 4 tests à des enthalpies différentes hcol = 1000,
1500, 2000 et 3000 kJ kg−1 . Les interactions entre les phases seront caractérisées par
une perméabilité relative linéaire (cf formule 2.19 p. 22) et une saturation volumique
résiduelle liquide et gazeuse de 0. Le gaz et le liquide sont donc toujours mobiles. Les
conditions aux limites en pression sont au sommet ptop = 1 bar et à la base pbot =
220 bar. L’état initial est défini par une enthalpie constante hcol, et la pression par la
fonction linéaire satisfaisant les conditions de Dirichlet.
Sous de telles conditions, le système converge vers une solution stable où le flux
de matière est constant dans le domaine comme le montrent les figures 4.2. Les figures
4.1(a), 4.1(b), 4.1(c) et 4.1(d) sont la superposition de profils de pression dans la co-
lonne à différents temps. Il y a dix profils de pression pris à des temps différents. Cette
disposition permet de visualiser l’évolution de la pression au cours du temps jusqu’à
convergence du modèle de simulation. Dans chacune des simulations, l’état initial im-
pose un flux non constant puis en convergeant vers l’état d’équilibre nous obtenons
un flux total constant (voir figure 4.2).
4.1. HEAT PIPE OU LA COLONNE D’EAU CHAUDE 45

t=0.0E+00 t=2.6E+05 t=1.6E+07 t=0.0E+00 t=5.1E+05 t=3.3E+07


t=4.0E+03 t=2.0E+06 t=1.7E+08 t=4.0E+03 t=4.1E+06 t=3.8E+08
t=3.2E+04 t=3.2E+04
0 0
250 250
500 500
750 750
z (m)

z (m)
1000 1000
1250 1250
1500 1500
1750 1750
2000 2000
0 50 100 150 200 0 50 100 150 200
pressure (bar) pressure (bar)

(a) h = 1000 kJ kg−1 (b) h = 1500 kJ kg−1

0 0
250 250
500 500
750 750
z (m)

z (m)

1000 1000
1250 1250
1500 1500
1750 1750
2000 2000
0 50 100 150 200 0 50 100 150 200
pressure (bar) pressure (bar)
t=0.0E+00 t=2.6E+05 t=1.6E+07 t=0.0E+00 t=5.1E+05 t=3.3E+07
t=4.0E+03 t=2.0E+06 t=1.3E+08 t=4.0E+03 t=4.1E+06 t=4.6E+08
t=3.2E+04 t=3.2E+04

(c) h = 2000 kJ kg−1 (d) h = 3000 kJ kg−1

Fig. 4.1: Profil de pressions pour différentes enthalpies


46 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

t=0.0E+00 t=2.6E+05 t=1.6E+07 t=0.0E+00 t=5.1E+05 t=3.3E+07


t=4.0E+03 t=2.0E+06 t=1.7E+08 t=4.0E+03 t=4.1E+06 t=3.8E+08
t=3.2E+04 t=3.2E+04
0 0
250 250
500 500
750 750
z (m)

z (m)
1000 1000
1250 1250
1500 1500
1750 1750
2000 2000
0.0025 0.0050 0.0075 0.0100 0.0125 0.0150 0.0175 0.0200 0.005 0.010 0.015 0.020 0.025 0.030 0.035 0.040
Total flux (kg/(m^2.s)) Total flux (kg/(m^2.s))

(a) h = 1000 kJ kg−1 (b) h = 1500 kJ kg−1

0 0
250 250
500 500
750 750
z (m)

z (m)

1000 1000
1250 1250
1500 1500
1750 1750
2000 2000
0.01 0.02 0.03 0.04 0.05 0.000 0.005 0.010 0.015 0.020 0.025 0.030
Total flux (kg/(m^2.s)) Total flux (kg/(m^2.s))
t=0.0E+00 t=2.6E+05 t=1.6E+07 t=0.0E+00 t=5.1E+05 t=3.3E+07
t=4.0E+03 t=2.0E+06 t=1.3E+08 t=4.0E+03 t=4.1E+06 t=4.6E+08
t=3.2E+04 t=3.2E+04

(c) h = 2000 kJ kg−1 (d) h = 3000 kJ kg−1

Fig. 4.2: Évolution du flux total de matière


4.2. DOUBLET GÉOTHERMIQUE DU DOGGER PARISIEN 47

Evolution of pressure (the python version) Evolution of pressure (the fortran version)
0 0
250 250
500 500
750 750
z (m)

z (m)
1000 1000
1250 1250
1500 t=0.00e+00s 1500 t=0.00e+00s
t=1.58e+08s t=3.15e+07s
1750 t=3.15e+08s 1750 t=6.30e+07s
t=4.72e+08s t=9.45e+07s
t=5.98e+08s t=1.26e+08s
2000 2000
25 50 75 100 125 150 175 200 0 50 100 150 200
pressure (bar) pressure (bar)

Fig. 4.3 : Comparaison des profils de pression entre le code 1D (à gauche) et DloCho (à
droite)

L’équation régissant le problème se simplifie de la manière suivante :


 
∂ρ ∂p ∂ X ∂p
ω · + Mϕ − ρϕ g = 0 (4.1)
∂p ∂t ∂z ∂z
ϕ∈{l,g}

Nous avons écrit un code python pour ne résoudre que l’équation (4.1) pour vérifier la
cohérence des résultats de notre code 3D. Nous obtenons des profils de pressions iden-
tiques pour les deux codes (figure 4.3) et des solutions à l’équilibre identiques puisque
l’écart entre les deux est faible (figure 4.4).
Les conclusions pour la modélisation du système complet sont identiques à celles
obtenues plus haut, c’est-à-dire que le code 3D renvoie des résultats identiques à la
version python 1D spécifique à notre système.

4.2 Doublet géothermique du Dogger parisien


Un doublet géothermique est l’exploitation de la chaleur d’un réservoir via deux
puits, un puits de production et un d’injection (cf figure 4.6). Le fluide chaud est pompé
dans un premier temps, via le puits de production (ou d’extraction) puis une partie de
la température de ce fluide est récupérée grâce à un échangeur thermique et enfin le
fluide moins chaud est réinjecté dans le réservoir géothermique, via le puits d’injection.
Remarquons qu’il est important que ces deux puits soient suffisamment éloignés l’un
de l’autre pour ne pas trop refroidir le réservoir au niveau du puits producteur. Nous
voyons donc qu’il est important de pouvoir quantifier l’impact de l’injection de ce fluide
froid sur le réservoir.
Nous montrerons que les résultats de notre simulation notamment la percée ther-
mique rejoignent les résultats de la simulation faite avec TOUGH2 [45], une référence
dans le monde industriel et universitaire.
48 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

1e 10+1.84157727
63.0

62.5

62.0

61.5

61.0

60.5

60.0
0.4 0.6 0.8 1.0 1.2
time (s) 1e8

Fig. 4.4 : Écart absolu entre la solution à l’équilibre obtenue par le code 1D et celle de
DloCho

Total flux (the python version) Total flux (the fortran version)
0 0
250 250
500 500
750 750
z (m)

z (m)

1000 1000
1250 1250
1500 t=0.00e+00s 1500 t=0.00e+00s
t=1.58e+08s t=3.15e+07s
1750 t=3.15e+08s 1750 t=6.30e+07s
t=4.72e+08s t=9.45e+07s
2000 t=5.98e+08s 2000 t=1.26e+08s
0.005 0.010 0.015 0.020 0.025 0.030 0.035 0.040 0.005 0.010 0.015 0.020 0.025 0.030 0.035 0.040
kg/(m^2.s) kg/(m^2.s)

Fig. 4.5 : Flux total de matière du heat pipe obtenue par le code 1D (à gauche) et par
DloCho (à droite)
4.2. DOUBLET GÉOTHERMIQUE DU DOGGER PARISIEN 49

source : Aéroport de Paris

Fig. 4.6: Le doublet géothermique de Paris-Orly en situation

4.2.1 Introduction et discussion des résultats


Ce système est modélisé par un domaine 2D (horizontal) avec termes sources non
nuls1 au niveau des puits. Le positionnement de ces puits est schématisé sur la fi-
gure 4.7. Dans le bassin parisien, l’aquifère profond du Doggeur est un réservoir géo-
thermique à faible enthalpie (70 ◦C). La zone étudiée est un doublet de dimension 5,1 km
× 3,1 km. 200 m3 /h d’eau sont pompées via le puits producteur, refroidi à 40 ◦C lors du
processus et réinjecté totalement dans l’autre puits. Le tableau 4.2 résume les proprié-
tés physiques et le maillage. Nous simulerons l’évolution de ce réservoir sur 10 ans à
partir de l’état initial donné par P0 = 15 MPa et T0 = 70 ◦C. Nous supposons de plus
que les frontières sont suffisamment éloignées pour ne pas interférer avec l’évolution
du système. Ayant l’objectif de réduire le temps CPU nous avons choisi de prendre un
maillage grossier. Les comparaisons des résultats obtenus avec TOUGH2 et DloCho
seront réalisées sur trois cellules (figure 4.7), au niveau des 2 puits et de la cellule se
situant entre ces deux dernières. Les puits sont les lieux où les vitesses de filtration de
l’eau sont les plus élevées. Ainsi s’il y a une différence avec TOUGH2 elle se manifestera
dans ces deux cellules.
L’injection d’une eau froide conduit à une augmentation de la pression et une di-

1. Le terme source sera positif pour l’injection et négatif pour l’extraction.


50 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

15

20 30

Fig. 4.7 : Maillage du doublet : le puits producteur est représenté par la cellule rouge,
le puits d’injection par la cellule bleue et la cellule rose est le troisième point de relevé
de l’historique des données pour la comparaison

Perméabilité 2.10−12 m2
Porosité 0.1
Cv 2650 .0 × 800 J/(m3 .C)
Grille 51×31 cellules in (x , y) et ∆x = ∆y = 100

Tab. 4.2: Paramètres du doublet

minution de la température respectivement dû à l’apport de matière et l’introduction


d’une eau plus froide. Ce phénomène est montré dans les figures 4.9(a) et 4.9(b). De
manière équivalente une diminution de la pression au puits producteur est attendue
puisque le puits pompe la matière des cellules voisines (figure 4.9(e)). Remarquons aus-
si que plus le pompage est important plus les chances de pomper de l’eau froide sont
élevées (4.9(f)) et qu’un maillage raffiné (figure 4.8) révèle que la propagation de l’eau
froide suit une forme de goutte caractéristique d’un doublet.
Comme le montrent les figures 4.9, les résultats obtenus par les deux codes sont
proches. En effet, nous observons, à l’exception de la pression dans la maille centrale,
une évolution similaire de la pression et de la température. Il est difficile de faire une
analyse plus fine en comparant l’erreur entre nos solutions par exemple, car les sorties
ne sont pas faites aux mêmes temps. De plus les tables d’état ne sont pas les mêmes.
4.2. DOUBLET GÉOTHERMIQUE DU DOGGER PARISIEN 51

Fig. 4.8 : Visualisation de la forme en goutte d’eau prise par la température en prenant
un maillage plus fin.
52 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

40.00
161.00
39.95
160.75
39.90
160.50
39.85
P (bars)

160.25

T (C)
39.80
160.00 39.75

159.75 39.70

159.50 39.65

39.60
0.5 1.0 1.5 2.0 2.5 3.0 0.5 1.0 1.5 2.0 2.5 3.0
time (s) 1e8 time (s) 1e8

(a) Évolution de la pression au puits d’injec- (b) Évolution de la température au puits d’in-
tion jection

70
150.4
65
150.3
60
150.2
P (bars)

T (C) 55
150.1
50
150.0
45
149.9
40
0.5 1.0 1.5 2.0 2.5 3.0 0.5 1.0 1.5 2.0 2.5 3.0
time (s) 1e8 time (s) 1e8

(c) Évolution de la pression dans la maille cen- (d) Évolution de la température dans la maille
trale centrale

143.0 70

142.8 68

142.6 66
P (bars)

142.4
T (C)

64
142.2
62
142.0
60
141.8
58
0.5 1.0 1.5 2.0 2.5 3.0 0.5 1.0 1.5 2.0 2.5 3.0
time (s) 1e8 time (s) 1e8

(e) Évolution de la pression au puits de pro- (f) Évolution de la température au puits de


duction production

Fig. 4.9 : Comparaison de la pression (colonne de gauche) et de la température (colonne


de droite) obtenus avec TOUGH2 (losange) et DloCho (rond). La première ligne repré-
sente les données du puits d’injection, la seconde, les données de la cellule au centre
et la dernière est celle du puits producteur.
4.3. HAUTE ÉNERGIE 53

4.2.2 Étude du comportement du code


Le schéma temporel pour la masse et l’équation est une méthode d’Euler implicite.
Le solveur linéaire utilisé est GMRES avec 10−5 comme critère d’erreur de convergence.
Le pas de temps est augmenté avec un facteur multiplicatif de 2. DloCho atteint la fin
de la simulation au bout de 70 s (intel i7) et 313 itérations contre 82 s et 255 iterations
pour TOUGH2.

4.2.3 Évolution du pas de temps

4.3 Haute énergie


Les précédentes simulations correspondent à des conditions de faible et moyenne
énergie (par exemple 70 ◦C dans le cas du doublet) pour lesquelles le fluide exploité
reste toujours liquide. Nous allons nous intéresser dans la suite à des simulations en
haute énergie avec des températures supérieures à 350 ◦C. Remarquons qu’une tempé-
rature élevée n’implique pas forcément la présence d’une phase gazeuse. Nous consi-
dérerons 3 systèmes : 2 systèmes 1D et monophasiques (liquide et gaz) et 1 système 2D
vertical. Nous finirons avec des observations de comportement de notre code dans une
situation où des contrastes de densité importants sont présents dans le domaine. Cette
dernière situation se retrouve fréquemment dans les systèmes hydrothermaux et est à
l’origine de « doigts » convectifs. Nos supports de comparaison sont les résultats ob-
tenus par Coumou dans sa thèse [14]. Cette section montre le bon fonctionnement de
notre code en haute énergie et les limites de celui-ci dans la modélisation de la convec-
tion naturelle. Il est primordial de signaler que cette limite n’est pas insurmontable
et qu’elle s’explique par un maillage trop symétrique qui conserve un état d’équilibre
physique instable.

4.3.1 Transport d’énergie en 1D


Les 2 simulations ci-dessous modélisent la pénétration d’un flux chaud dans un
domaine 1D horizontal. Le domaine étant horizontal le fluide se déplace sous l’effet
d’un gradient de pression. Cette pénétration a pour conséquence de déplacer le fluide
froid et de réchauffer le domaine. Nous observerons le déplacement du front chaud de
l’extrémité à haute température vers celle de température moindre.
Pour réaliser ces simulations, nous imposons un couple pression-température élevé
à l’extrémité gauche du domaine et un couple faible à l’autre extrémité. L’état initial du
domaine est donné par le couple pression-température faible. Le domaine spatial est
discrétisé par 200 cellules de 10 m. Les propriétés physiques de la roche sont uniformes,
porosité de 0,1, capacité thermique isochore cV de 242 × 104 J m−3 ◦C−1 , perméabilité
10−4 m2 et conductivité thermique égale à 2,25 W m−1 ◦C−1 .
54 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

350 3442 j 500 657 j


12959 j 58680 j
325 20000 j 475 113356 j

300 450
temperature [C]

temperature [C]
275 425
250 400
225 375
200 350
175
325
0 250 500 750 1000 1250 1500 1750 2000 0 250 500 750 1000 1250 1500 1750 2000
distance [m] distance [m]

Fig. 4.10 : Déplacement du front chaud de gauche à droite. La figure de gauche montre
les résultats du milieu liquide et celle de droite ceux du milieu gazeux.

Ces tests et leurs paramètres proviennent de la thèse de Coumou ([14, chapitre 6])
et constituent la référence à laquelle nous comparons les résultats de notre code.

Test liquide et test vapeur


Nous réalisons un test en milieu liquide et un autre en milieu gazeux. Le milieu li-
quide est caractérisé par les couples pression-température 35 MPa-350 ◦C et 25 MPa-170 ◦C
et le milieu gazeux par les couples 10 MPa-500 ◦C et 1 MPa-350 ◦C.
Les figures 4.11 montrent les profils de pressions et de températures obtenus avec
DloCho (figures de gauche) et via CSMP++ et HYDROTHERM (figures de droite 2 )
pour des conditions identiques et à des temps de simulation identiques. Les résultats
de CSMP++ sont représentés en trait continu et ceux de HYDROTHERM en pointillé.
Les points (rond et losange) aux extrémités de chaque courbe des figures de gauche
permettent de visualiser les conditions aux limites. Le déplacement du front chaud est
représenté dans la figure 4.10. La progression du front chaud ainsi que sa pente coïn-
cident avec les résultats de CSMP++ et HYDROTHERM pour la simulation en milieu
liquide. En revanche il semblerait que DloCho soit en avance pour le cas du milieu
gazeux par rapport aux deux autres codes, une avance très élevée, de 60 000 jours. En
effet la figure 4.12 montre qu’après 100 000 jours de simulation le profil de pression-
température coïncide avec celui que Coumou présente comme étant les résultats après
160 000 jours. Nous observons dans les trois codes une chute de la température en sor-
tie, un peu moins de 25 ◦C de perdu. Ce phénomène ne s’explique pas physiquement.
À la section suivante, nous discutons des problèmes de mauvaise condition aux limites
se traduisant par ses comportements non physiques.

2. Les figures sont extraites de [14].


4.3. HAUTE ÉNERGIE 55

DloCho CSMP++ et HYDROTHERM

375 1e7 3.5

350
325 3.3
temperature [C] (dashed line)

pressure [Pa] (solid line)


300
Milieu liquide

3.1
275
250
2.9
225
200 2.7
175
150 2.5
250 500 750 1000 1250 1500 1750
Distance [m]

500 1e7 1.0

475
0.8
Milieu gazeux

450
temperature [C] (dashed line)

pressure [Pa] (solid line)

425 0.6
400

375 0.4

350
0.2
325

300 0.0
250 500 750 1000 1250 1500 1750
Distance [m]

Fig. 4.11 : Profil de pression-température après 20 000 jours pour le milieu liquide et
160 000 jours pour le milieu gazeux pour les codes DloCho (à gauche), CSMP++ et
HYDROTHERM (à droite). Les profils correspondent, progression et pente identiques
à l’exception du test en milieu gazeux où nous constatons une avance de nos résultats.
56 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

500 1e7 1.0

475
0.8
450

temperature [C] (dashed line)

pressure [Pa] (solid line)


425 0.6
400

375 0.4

350
0.2
325

300 0.0
250 500 750 1000 1250 1500 1750
Distance [m]

Fig. 4.12 : Profil de pression-température après 100 000 jours de simulation du test
en milieu gazeux. Les résultats correspondent à ceux présentés par Coumou à la fi-
gure 4.11.

Une autre condition à la limite droite pour le test en domaine gazeux


Le test du milieu gazeux montre un comportement peu physique : les cellules proches
du bord droit ont une température nettement inférieure à celle imposée en sortie. Ce
comportement fait penser à des problèmes de mauvaise condition à la limite. Nous
changeons cette condition en une condition de type outflow ainsi le fluide est libre de
sortir avec n’importe quelle température. Le résultat est immédiat (fig. 4.10 page 54)
la température n’étant plus contrainte elle décrit un comportement plus physique.
L’autre interrogation est de comprendre pourquoi il y a une chute globale de la tem-
pérature dans le domaine. Contrairement au liquide, le gaz est très compressible donc
il y a accumulation de matière dans les premières cellules. L’énergie apportée par la li-
mite gauche est donc d’abord stockée dans ces cellules puis distribuée dans les cellules
voisines. Ce phénomène progresse le long du domaine comme le montre l’évolution
de la densité en milieu liquide (Fig. 4.14(a)) et gazeux (Fig. 4.14(b)). Le déplacement du
front est donc plus lent et de ce fait la température du reste du domaine a le temps de
se refroidir du fait du flux sortant à la limite droite.

4.4 Transport d’énergie en 2D


Les simulations qui vont suivre sont dérivées du test 1D en milieu liquide précédent.
Dans un premier temps nous étalons le domaine dans la direction de l’axe y puis dans
celle de l’axe z. La première simulation a été réalisée pour s’assurer qu’ DloCho a bien
un comportement symétrique lorsque nous sommes sur un plan Oxy, la seconde a pour
4.4. TRANSPORT D’ÉNERGIE EN 2D 57

160000.00 days 1e7


1.0
500

475
0.8 1e7
1.0
temperature [C] (dashed line)

450 500

pressure [Pa] (solid line)


475
425 0.6 0.8

temperature [C] (dashed line)


450

pressure [Pa] (solid line)


400 425 0.6
0.4
375 400
375 0.4
350
0.2 350
325 0.2
325
300 0 500 1000 1500 20000.0 300 0.0
Distance [m] 0 250 500 750 1000 1250 1500 1750 2000
Distance [m]

(a) Condition dirichlet (b) Condition outflow

Fig. 4.13: profil pression-température

Simulation apres : 722 jours --> 20000 jours Simulation apres : 26458 jours --> 160000 jours

900 35

30
850
25
densite [kg/m3]

densite [kg/m3]

800 progression temporelle pro


20 gre
ssi
o nt
750 em
15 por
elle
700 10

650 5
0 250 500 750 1000 1250 1500 1750 2000 0 250 500 750 1000 1250 1500 1750 2000
Distance [m] Distance [m]

(a) Milieu liquide (b) Milieu gazeux

Fig. 4.14: Déplacement de l’onde de compression (courbe de densité)


58 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

(a) Profil de température sur le plan Oxy

(b) Profil de température sur le plan Oxz

Fig. 4.15: Photo après le même temps de simulation

but de s’assurer de l’impact de la profondeur sur la convection.Les deux simulations


seront initialisées avec une pression et une enthalpie constante donnée par le test 1D.
La simulation sur le plan Oxy peut se voir comme une superposition de plusieurs tests
1D puisqu’aucun terme ne vient se rajouter dans nos équations, ainsi nous espérons
voir un déplacement uniforme d’un front chaud de la gauche vers la droite comme dans
le cas 1D (figure 4.10) mais en 2D (figure 4.15(a)).
Pour le plan Oxz, sous l’effet de la gravité, les cellules du haut viennent alimenter
les cellules du bas. Ceci accroît la convection des cellules du bas. Acquièrant de l’eau
chaude venant de l’extérieur et des cellules du haut, Elles se réchauffent plus rapide-
ment comme le montre la figure Fig. 4.15(b)

4.4.1 Convection naturelle des systèmes hydrothermaux


Dans cette partie nous modéliserons un phénomène fréquemment rencontré dans
les systèmes hydrothermaux à haute température : la convection via des « doigts ».
La convection de la chaleur ne se produit pas uniformément dans le domaine et on
observe une localisation des zones montantes (« upflow ») et descendantes (« down-
flow »). Certaines zones du domaine auront des flux importants. Ce phénomène se
4.5. ANALYSE COMPORTEMENTALE 59

réalise en présence d’un fort contraste de densité/viscosité entre le fluide chaud et le


fluide froid.
La simulation qui suit est réalisée sur un domaine vertical de 1500 m par 1000 m et
liquide. Elle est caractérisée par une porosité égale à 0,1 ; une conductivité thermique
de 2,25 W m−1 ◦C−1 , une perméabilité à 1 × 10−12 m2 et une conductivité thermique
isochore à 2420 × 103 J m−3 ◦C−1 . Au sommet nous imposons une pression de 0,2 MPa
et une température de 10 ◦C. À la base nous imposons un flux entrant de 6 W m−2 .
Cette simulation modélise un réservoir sous-maris où se forment les fumeurs noirs
(black-smokers).

4.5 Analyse comportementale


Afin de continuer l’étude comportementale du code, nous proposons quelques si-
mulations pour s’assurer que le code se comporte comme attendu. Ces tests ne pro-
viennent pas de la littérature ou situation réelle.

4.5.1 Obstacles positionnés dans le domaine


Pour simuler des obstacles dans le domaine, nous avons mis des perméabilités plus
faibles (1E − 14) que le reste (1E − 12) du domaine. Le champ de vitesse (Fig. 4.17(a))
permet de visualiser le positionnement de ces obstacles. Ces perméabilités ne sont vo-
lontairement pas nulles pour autoriser la traversée de ces cellules par le fluide. Le com-
portement attendu est que le fluide évite tous ces obstacles afin de minimiser ses efforts
de propagation dans le domaine. Dans un second temps, on laisse la simulation se dé-
rouler suffisamment longtemps pour voir l’effet de la condition de Dirichlet placé au
sommet. Elle est telle qu’une partie du réservoir est refroidie par le fluide provenant
de l’extérieur (voir Fig. 4.17(e) et 4.17(f)).
La mise en mouvement du réservoir est provoquée initiée par un terme source en
énergie uniquement se trouvant à la base et au centre du domaine.
Dans les premiers moments des petits doigts apparaissent puis se rejoignent en un
seul (Fig. 4.17(a)) qui passe entre les deux premiers obstacles Fig. 4.17(b). Comme at-
tendu, l’eau chaude s’accumule sous les trois premiers obstacles, contourne le troisième
par les deux côtés et reprend la direction du centre du domaine pour éviter les deux
derniers obstacles.

4.6 Influence de la valeur maximale du pas de temps


Bien souvent, en analyse numérique nous travaillons avec des pas de temps très pe-
tits ; 0,1 est déjà un pas de temps que nous considérons comme grand. Travailler avec
60 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

Fig. 4.16: Convection naturelle des systèmes hydrothermaux en forme de doigts


4.6. INFLUENCE DE LA VALEUR MAXIMALE DU PAS DE TEMPS 61

(a) (Cliquer pour jouer la vidéo) Pour toutes les images qui suivent, les figures représentent de
gauche à droite la température et le flux de matière. L’état initial est un domaine à température
constante 10 ◦C. Le flux de matière est constant (en excluant les zones de faible perméabilité)
descendant.

(b) Le terme source en énergie provoque une percée du fluide chaud, visible sur le champ de
vecteur
62 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

(c) Accumulation sous les trois premiers obstacles


4.6. INFLUENCE DE LA VALEUR MAXIMALE DU PAS DE TEMPS 63

(f) Ici et dans les deux figures au-dessus, nous observons que le fluide chaudremonte le ré-
servoir par la gauche. Ceci est dû à un flux descendant d’eau froide par la droite venant de
l’extérieur. Rappelons qu’au sommet l’eau pénétrant le domaine est à 10 ◦C
64 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

des très petits pas de temps à des conséquences sur les temps d’exécution, le nombre
d’itérations a réalisé pour atteindre le temps simulé désiré. Tout numéricien ou exploi-
tant3 d’un outils numérique cherchera a maximiser ce pas de temps autant que possible.
Malheureusement, certaines méthodes imposent cette valeur maximale. En effet, toute
résolution utilisant Euler explicite est soumise à une CFL (Courant–Friedrichs–Lewy).
Cette condition limite le pas temps maximal utilisable en fonction du pas d’espace. La
solution permettant d’accroître le pas de temps et donc diminuer le temps d’exécu-
tion et le nombre d’itérations est d’impliciter les méthodes de résolution. En effet, une
méthode implicite n’est pas contrainte par la CFL, car souvent inconditionnellement
stable.
L’objectif de cette partie, de ses figures et de ses tableaux est de vérifier cette asser-
tion et de montrer qu’il est possible de gérer de grand pas de temps.
Remarquons aussi que les raisons d’augmenter les pas de temps peuvent s’expli-
quer non seulement par la volonté de l’utilisateur d’écourter le temps de calcul, mais
aussi par le fait qu’il est primordial d’utiliser de grand pas de temps dans une étude
géologique.
Voici quelques informations sur les simulations servant de sujet d’étude. Trois tests
seront utilisés un test 2D avec basse enthalpie (eau à 70 ◦C, le doublet parisien et deux
autres tests en haute enthalpie, 170 ◦C et 350 ◦C). Pour chaque test, nous partons avec
une pas de temps valant 0,1 s que l’on augmente d’un facteur 1,1 au temps suivant et
qu’on diminue d’un facteur 0,9 jusqu’à ce que la CFL soit respectée. Pour plus d’in-
formation sur les propriétés de ces trois tests, veuillez-vous référez aux pages 47 et
53.

Légende des tableaux Dans les tableaux, vous trouverez les raisons de l’arrêt de la
simulation. Ces raisons sont les suivantes :
ET (EndingTime). Le code s’arrête, car le temps simulé a dépassé ou est égal à la durée
maximale que nous souhaitions simuler.

Cv (Convergence). Le code s’est arrêté, car le système a convergé. Il a atteint un état


stationnaire.

FS (Freesteam) Arrêt anormal du code à cause d’une sortie des tables.

None Arrêt anormal du code pour une raison à déterminer.


La première ligne de chaque tableau donne les méthodes de résolution (en temps)
pour les équations de conservation. Le schéma est le suivant : imaginons la méthode
suivante XXXX–YYYY ; les méthodes XXXX et YYYY sont respectivement celles utili-
sées pour la résolution de la conservation de la matière et de l’énergie.
3. Utilisateurs, industriel…
4.6. INFLUENCE DE LA VALEUR MAXIMALE DU PAS DE TEMPS 65

IE–E L’équation de conservation de la masse est résolue en utilisant une méthode


d’Euler semi-implicite tandis que celle de l’énergie est résolue via Euler explicite.

IE–IE L’équation de conservation de la masse est résolue en utilisant une méthode


d’Euler semi-implicite tandis que celle de l’énergie est résolue via Euler semi-
explicite.

F_IE–IE_F L’équation de conservation de la masse est résolue en utilisant une mé-


thode d’Euler semi-implicite tandis que celle de l’énergie est résolue via Euler
semi-explicite que l’on combine à une méthode de point fixe naïve : xn+1 =
xn + f (xn ).

Les tableaux 4.3 à 4.5 démontrent qu’il y a un vrai gain à utiliser des méthodes
semi-implicites plutôt que celle où l’équation en enthalpie est explicite. En effet, pour
les trois pas de temps que nous avons choisi, la diminution du nombre d’itérations et du
temps de simulation diminuent significativement, et ceci en convergeant des solutions
proches de la solution de référence. Ces propos sont à nuancer en regardant plus en
détail les tableaux. Pour le test 1DTest01, le pas de temps 1 × 106 s est suffisamment
petit pour que la simulation de référence ne soit pas contrainte par la CFL. Autrement
dit, la quantité de matière transportée n’est pas trop élevée. Nous voyons que la CFL
n’intervient pas par le fait que le nombre d’itérations et le motif d’arrêt du code sont
identiques pour chacune des méthodes utilisées à ce pas de temps limite.
Néanmoins, il ne faut pas perdre de vu que plus la valeur maximale du pas de temps
est grande et plus les solutions s’éloignent de la référence. Les méthodes d’Euler utilisée
même implicite restent des méthodes d’ordre 1.
66 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

IE–E IE–IE F_IE–IE_F

max(dt) = 1,00 × 106 s


Tps simulation 1444.5794 44.375941 111.02285
Nb iter. 15980 476 476
Arrêt ET | 3.16E+08 ET | 3.17E+08 ET | 3.17E+08
Err. rel. max. p|h sol. réf. 3E-07 | 8E-05 1E-07 | 5E-05

max(dt) = 1,00 × 107 s


Tps simulation 1467.8368 36.905619 224.13803
Nb iter. 15980 291 323
Arrêt ET | 3.16E+08 ET | 3.18E+08 ET | 3.17E+08
Err. rel. max. p|h sol. réf. 6E-04 | 2E-02 5E-04 | 1E-02

max(dt) = 3,14 × 107 s


Tps simulation 1424.0676 35.384258 245.0448
Nb iter. 15980 290 323
Arrêt ET | 3.16E+08 ET | 3.18E+08 ET | 3.17E+08
Err. rel. max. p|h sol. réf. 1E-04 | 2E-02 5E-04 | 1E-02

Tab. 4.3: Résultats pour doublet.


4.6. INFLUENCE DE LA VALEUR MAXIMALE DU PAS DE TEMPS 67

IE–E IE–IE F_IE–IE_F

max(dt) = 1,00 × 106 s


Tps simulation 39.456873 46.787242 147.00976
Nb iter. 1890 1890 1890
Arrêt ET | 1.73E+09 ET | 1.73E+09 ET | 1.73E+09
Err. rel. max. p|h sol. réf. 1E-06 | 2E-04 1E-05 | 8E-04

max(dt) = 1,00 × 107 s


Tps simulation 38.913413 7.307645 56.877214
Nb iter. 1684 357 359
Arrêt ET | 1.73E+09 ET | 1.74E+09 ET | 1.74E+09
Err. rel. max. p|h sol. réf. 6E-05 | 4E-03 7E-04 | 4E-02

max(dt) = 3,14 × 107 s


Tps simulation 39.28895 6.243143 29.624868
Nb iter. 1684 267 262
Arrêt ET | 1.73E+09 ET | 1.74E+09 ET | 1.74E+09
Err. rel. max. p|h sol. réf. 1E-03 | 6E-02 2E-03 | 8E-02

Tab. 4.4: Résultats pour 1DTest01.


68 CHAPITRE 4. RÉSULTATS NUMÉRIQUES

IE–E IE–IE F_IE–IE_F

max(dt) = 1,00 × 106 s


Tps simulation 4906.5785 1072.1985 657.01003
Nb iter. 441617 47496 10438
Arrêt ET | 4.73E+10 ET | 4.73E+10 Cv | 9.85E+09
Err. rel. max. p|h sol. réf. 7E-04 | 3E-03 6E-03 | 7E-02

max(dt) = 1,00 × 107 s


Tps simulation 4551.8697 120.3399 None
Nb iter. 441617 4917 707
Arrêt ET | 4.73E+10 ET | 4.73E+10 None | 0.00E+00
Err. rel. max. p|h sol. réf. 7E-04 | 3E-03 9E-02 | 5E-03

max(dt) = 3,14 × 107 s


Tps simulation 4526.1172 39.981108 NoFile
Nb iter. 441617 1703 NoFile
Arrêt ET | 4.73E+10 ET | 4.73E+10 NoFile
Err. rel. max. p|h sol. réf. 1E-03 | 1E-02 NoFile

Tab. 4.5: Résultats pour 1DTest03.


Chapitre 5

Organisation du code

Introduction
Dans cette partie, nous verrons les orientations de programmation choisies. Nous
expliquerons les choix faits sur les langages de programmation et sur la méthode de
programmation. Pourquoi avoir choisi de coder en Python et Fortran ? Nous expli-
querons comment ces deux langages communiquent entre eux, pourquoi en plus des
2 langages précédemment cités nous utilisons le C et enfin nous détaillerons pour-
quoi ces choix répondent aux objectifs fixés en début de thèse ; à savoir outil pé-
renne, facilement modifiable et autorisant un travail collaboratif sur celui-ci. L’autre
aspect développé dans ce chapitre est la structuration du code au-delà du multi lan-
gage. Pour finir, Fortran et Python étant des langages-objets, nous décrirons comment
cette programmation-objet est utilisée et pour quels objectifs.

5.1 Le choix des langages


Fortran [50] est utilisé depuis des années et par de nombreux scientifiques dans le
domaine du calcul scientifique. Ces années d’utilisation et ces scientifiques ont pu mon-
trer la robustesse et l’efficacité de ce langage. De plus, c’est un langage en constante
évolution (Fortran 77, Fortran 90, Fortran 2003 et Fortran 2008). En effet, Fortran dé-
bute par sa version 77 qui était un langage complètement procédural puis depuis la
version 90 le langage se dirige progressivement vers un langage complètement objet.
Avec Fortran 90, il était possible de mimer de l’objet, depuis Fortran 2003 les notions
de programmation orientée objet (POO) y sont intégrées [43] tous les compilateurs ont
déjà implémentés les outils nécessaires pour en faire. Il est possible de suivre ces inté-
grations sur les pages web [23, 24] rassemblant dans un tableaux une série d’articles
[9, 10, 11]. À la lecture de ceci, Fortran possède des avantages qui font de lui le langage
de prédilection pour cette thèse. Le Langage C++ aurait pu être choisi, le langage-objet

69
70 CHAPITRE 5. ORGANISATION DU CODE

par excellence, mais qui nécessite pour retrouver un confort de programmation avec
les tableaux l’usage de classe de tableaux pour finalement faire comme Fortran.
Notons aussi que Fortran est un langage compilé et non interprété. Cette dernière
remarque a son importance. Dans le monde du calcul scientifique, le nombre de calculs
et la difficulté de ceux-ci (linéarisation, résolution…) demandent un langage compilé
qui ne ralentira pas l’exécution du programme à cause de la phase d’interprétation du
code. En effet, un langage compilé est plus rapide qu’un langage interprété (la phase
conversion langage humain vers langage machine, binaire, n’est réalisée qu’une seule
fois). Dès le départ de la conception de DloCho nous avons fait le choix d’offrir un
outil modifiable, adaptable au besoin de chacun. Pour répondre à cette volonté, nous
pouvons simplement fournir les sources de celui-ci pour que chacun y apporte ces
modifications. L’inconvénient de cette solution est qu’à chaque modification il faut
recompiler l’ensemble du code. Devoir recompiler pour l’ajout de quelques tracés de
courbes, d’évaluation ou de traitement (comparaison, calcul de normes, vérification du
domaine) de variables peut vite devenir pénible. Bien sûr avec la plupart des langages,
il est possible de tout faire grâce aux nombreuses bibliothèques existantes, mais au
regard de la facilité offerte par un langage interprété nous sommes prêts à perdre un
peu de performance. La solution que nous offrons est de sortir certaines couches de
ce processus et de fait d’utiliser un langage interprété (qu’il reste à choisir). Quand on
compare un langage interprété à un langage compilé, on oppose l’efficacité au confort.
Notre option offrira un confort suffisant et une efficacité certaine.
Nous avons choisi d’utiliser un langage interprété : Python. Le choix de ce langage
s’est fait sur plusieurs critères :

• c’est un langage très prisé par la communauté des développeurs/codeurs (anciens


et nouveaux),

• une documentation riche et bien fournie,

• de nombreux outils déjà développés pour le calcul scientifique. Avec Numpy1 , il


est possible de faire les opérations classiques (addition, multiplication, tri, mini-
mum, puissance…) sur des vecteurs,

• la possibilité de visualiser dans des graphiques 2d ou 3d,

• un effort d’apprentissage faible par rapport à beaucoup d’autre langage,

• tout comme Fortran il est orienté objet.

Python est intuitif. Par exemple, parcourir une liste, un tableau, une chaîne de carac-
tères se fait de la manière suivante :
1. http ://www.numpy.org
5.2. COMMUNICATION ENTRE CHAQUE LANGAGE 71

1 for elmt in iterable :


2 print (elemt)

où iterable est une liste, une chaîne de caractères… C’est presque du langage naturel.
En conclusion, nous avons choisi d’utiliser les langages de programmation Py-
thon [47], pour sa flexibilité, et Fortran [50] pour son efficacité éprouvée. Python offrira
à nos utilisateurs une interface interactive tandis que le cœur numérique du code est en
Fortran. En choisissant de coder en Python et en Fortran, nous bénéficions du meilleur
de ces deux styles de langage de programmation. En effet, cette approche à l’avantage :

• d’une part d’affranchir l’utilisateur de l’étape de compilation évitant ainsi des


résultats faussés dus à l’oubli de compiler après modification,

• et d’autre part d’avoir le cœur du programme (là où se font les opérations les
plus volumineuses et donc coûteuses en temps) compilé une seule et unique fois.

En plus de ceux-ci, une partie de DloCho est en C. Ce sont les tables de l’eau. Cette
partie provenant de l’IAPWS le langage a donc été imposé.
Remarquons que bien que DloCho soit multi langage, l’installation de celui-ci est
très aisé pour un utilisateur final. En effet, il ne devra installer que le langage Python
puisque les autres parties étant compilées, elles se suffisent à elles-mêmes. Elles n’ont
donc pas besoin des interpréteurs (Fortran et C) pour convertir le langage en code
machine.
Pour un utilisateur lambda, cette stratégie est très avantageuse, car il ne devra gérer
que l’interface en Python ; Python étant un des langages les plus faciles à appréhender
même pour un néophyte. Durant la conception de DloCho, nous avons aussi pensé aux
utilisateurs avertis, qui voudront apporter des modifications telles que mettre à jour
les tables, une des méthodes de résolution, rajouter d’autres méthodes de résolution
ou d’inversion de matrice…, ceci se traduit presque naturellement par la création d’un
code orienté objet plutôt que procédural. L’analyse en sera faite ci–après.
Et pour finir, nous pouvons ajouter que tous ces langages sont multi-plates-formes
ce qui fait de DloCho un code multi-plate-forme. Ce qui a pu être vérifié et validé tout
au long de son développement puisque le développement s’est fait sur les trois systèmes
d’exploitation suivants : Linux, Mac OS X et Windows. Les compilateurs utilisés ont
été les compilateurs GNU et Intel.

5.2 Communication entre chaque langage


Nous avons vu les avantages et les raisons du choix des langages Python et For-
tran. Mais afin de vraiment profiter du meilleur des deux mondes de façon efficace,
il est possible de faire communiquer ces deux langages via une interface. L’objectif
d’une interface est de pouvoir transférer des données (entiers, flottants, tableaux…)
72 CHAPITRE 5. ORGANISATION DU CODE

d’un langage vers un autre, de manipuler des tableaux créés par l’un des langages (afin
par exemple, de faire un traitement sur ceux-ci pour savoir si une action doit être re-
lancée, écourtée ou si le programme continue normalement) et surtout d’appeler des
fonctions implémentées dans le second langage (pour par exemple, accélérer certains
traitements : inversion de matrice, résolution de système…). Selon les besoins de la pro-
grammation, ce transfert peut-être unidirectionnel ou bidirectionnel. Dans notre cas,
il y aura une communication bilatérale pour les échanges de données et unidirection-
nelle en ce qui concerne les appels de fonctions (Fortran n’appellera aucune fonction
de Python).
Pour interfacer Python et Fortran, il existe plusieurs solutions :
– pyfort : http://pyfortran.sourceforge.net
– f2py : http://docs.scipy.org/doc/numpy-dev/f2py
– Cython : http://cython.org
– Forthon : https://pypi.python.org/pypi/Forthon
– ctypes : https://docs.python.org/2/library/ctypes.html
Nous avons écarté pyfort, car projet obsolète puisque développé pour Fortran 77, Cy-
thon, car il nécessite d’avoir des connaissances en C, f2py, car il ne gère pas les types
dérivés et Forthon à cause d’une documentation insuffisante. Notre choix s’est donc
arrêté sur ctypes qui a aussi l’avantage de ne nécessiter aucune librairie python tierce.
Du côté de Fortran, le module iso_c_binding depuis Fortran 2003 assure la conversion
des objets Fortran vers des objets C. Grâce à ctypes et iso_c_binding nous sommes en
mesure d’échanger des données entre Python et Fortran. De plus, l’emploi du module
iso_c_binding a l’avantage de ne pas être dépendant du langage choisi pour l’inter-
face avec l’utilisateur (Python). En effet, les directives placées dans Fortran ne sont pas
spécifiques à Python contrairement à f2py. En d’autres termes, les fonctions Fortran
accessibles par Python sont construites de sorte qu’elles le soient aussi via d’autres
interfaces, C, C++… Les utilisateurs finaux pourront opter pour un autre langage que
Python sans avoir à remanier le code compilé, dès que celui-ci possède une méthode
pour s’interfacer avec du C. Un dernier argument non négligeable sont qu’en utilisant
« ctypes » et « iso_c_binding » nous utilisons des concepts appartenant aux normes et
aux définitions des langages.
Nous proposons à titre d’exemple une méthode pour transférer 4 données : une
chaîne de caractères, un entier, un flottant et un tableau de nombres à virgule flottante.
Tout d’abord, il s’agit de créer une librairie dynamique (« shared library » en anglais)
de la partie fortran que Python saura exploiter. Bien entendu Fortran n’étant capable
de gérer que des tableaux contenant un unique type de données, il sera impossible
de transférer une liste quelconque de Python. Nous avons choisi d’échanger des don-
nées via des structures. Intéressons-nous d’abord à la partie Fortran, nous créons une
structure avec des types en C (voir 5.1).
5.2. COMMUNICATION ENTRE CHAQUE LANGAGE 73

Listing 5.1: (Fortran) Structure avec attribut bind(C)


1 type , bind(C) :: dataC
2 integer (c_int) :: i
3 real( c_double ) :: r
4 type(c_ptr) :: str_ptr
5 integer (c_int) :: str_length
6 type(c_ptr) :: arr_ptr
7 integer (c_int) :: arr_length
8 end type dataC

Dans cette exemple, nous pouvons y voir qu’à chaque variable il faut rajouter dans
la déclaration le type C associé et la déclaration « bind(C) ». De plus, les tableaux et
chaînes de caractères ont un traitement particulier. En effet, pour une donnée de ce
type il est nécessaire de donner un pointeur vers elle et le nombre d’éléments qu’elle
contient.
Listing 5.2: (Python) Configuration des champs de l’objet Python
1 class PassingDataToFortran ( ctypes . Structure ) :
2
3 _fields_ = [( ” i ” , ctypes .c_int ),
4 (” r ” , ctypes . c_double ),
5 (” char ” , ctypes . c_char_p ),
6 ( ” c h a r _ l e n g t h ” , ctypes .c_int ),
7 (” array ” , ctypes . POINTER ( ctypes . c_double )),
8 ( ” a r r a y _ l e n g t h ” , ctypes .c_int )]

Veuillez noter que l’ordre de déclaration des variables dans la structure est primordial.
Il faut respecter le même ordre pour les deux structures. La classe déclarée dans Python
se termine en ajoutant la méthode d’initialisation
Listing 5.3: (Python) Écriture complète de la classe
1 class PassingDataToFortran ( ctypes . Structure ) :
2
3 _fields_ = [( ” i ” , ctypes .c_int ),
4 (” r ” , ctypes . c_double ),
5 (” char ” , ctypes . c_char_p ),
6 ( ” c h a r _ l e n g t h ” , ctypes .c_int ),
7 (” array ” , ctypes . POINTER ( ctypes . c_double )),
8 ( ” a r r a y _ l e n g t h ” , ctypes .c_int )]
9
10 def __init__ (self ,i,r,char ,array):
11 self.i = i
12 self.r = r
13 self.char = char
14 self. char_length = len(char)
15
16 array_p = array. ctypes . data_as ( ctypes . POINTER ( ctypes .
c_double ))
74 CHAPITRE 5. ORGANISATION DU CODE

17 self.array = array_p
18 self. array_length = len(array)

Après cette mise en place des prérequis, il reste à créer des fonctions pour tester le
tout. Les exemples 5.4 et 5.5 sont des scripts complets de mise en œuvre.

Listing 5.4: Partie Fortran de l’exemple


1 module F2C_interface
2 use iso_c_binding
3
4 type , bind(C) :: dataC
5 integer (c_int) :: i
6 real( c_double ) :: r
7 type(c_ptr) :: str_ptr
8 integer (c_int) :: str_length
9 type(c_ptr) :: arr_ptr
10 integer (c_int) :: arr_length
11 end type dataC
12
13 contains
14
15 subroutine print_data (C) bind(c)
16 implicit none
17 type(dataC), intent (in) :: C
18
19 ! local variables
20 character (C% str_length ) :: fname
21 real (8) , dimension (:) , pointer :: buffer
22 integer :: i
23
24 print *, ’ Data from Python ’
25 print *, ’ i = ’ , C%i
26 print *, ’ r = ’ , C%r
27
28 call Cptr_Char_to_Char_F90 (C%str_ptr , C%str_length , fname)
29 print *, ’ s t r = ’ , ’ > ’ // fname // ’ < ’
30 print *, ’ t r i m ( s t r ) = ’ , ’ > ’ // trim(fname)// ’ < ’
31
32 call c_f_pointer (C%arr_ptr ,buffer ,(/C% arr_length /))
33 do i = 1, C% arr_length
34 print *, i, buffer (i)
35 end do
36 end subroutine print_data
37
38 subroutine Cptr_Char_to_Char_F90 (cname , clength , fname)
39 type(c_ptr) , intent (in ) :: cname
40 integer (c_int) , intent (in ) :: clength
41 character ( clength ), intent ( out) :: fname
42
5.2. COMMUNICATION ENTRE CHAQUE LANGAGE 75

43 integer :: i
44 character , dimension (:) , pointer :: buffer
45 call c_f_pointer (cname ,buffer ,(/ clength /))
46
47 do i=1, clength
48 fname(i:i) = buffer (i)
49 end do
50 end subroutine Cptr_Char_to_Char_F90
51
52 end module F2C_interface

Les objets et fonctions ayant l’attribut bind(c) sont partagés ; toutes les autres ne seront
pas accessibles par Python.

Listing 5.5: exemple Python


1 import ctypes
2 lib = ctypes .cdll. LoadLibrary ( ’ . / l i b . s o ’ )
3 import numpy as np
4
5 class PassingDataToFortran ( ctypes . Structure ) :
6 # WARNING The order of the fields must be exactly the same in
python and Fortran
7 _fields_ = [( ” i ” , ctypes .c_int ),
8 (” r ” , ctypes . c_double ),
9 (” char ” , ctypes . c_char_p ),
10 ( ” c h a r _ l e n g t h ” , ctypes .c_int ),
11 (” array ” , ctypes . POINTER ( ctypes . c_double )),
12 ( ” a r r a y _ l e n g t h ” , ctypes .c_int )]
13
14 def __init__ (self ,i,r,char ,array):
15 self.i = i
16 self.r = r
17 self.char = char
18 self. char_length = len(char)
19
20 array_p = array. ctypes . data_as ( ctypes . POINTER ( ctypes .
c_double ))
21 self.array = array_p
22 self. array_length = len(array)
23
24
25 # Creation d'un tableau ( numpy . array ) a manipuler
26 array = np.array ([ i** cos*i for i,cos in enumerate (np.cos(np.ones
(20)))])
27 # Creation d'une instance de la classe PassingDataToFortran
28 C= PassingDataToFortran (1 ,2.0 , ’ T e s t r e u s s i t ’ , array)
29
30 # Appel de la fonction fortran via python
31 lib. print_data ( ctypes .byref(C))
76 CHAPITRE 5. ORGANISATION DU CODE

Dans cet exemple 5.4, les types C sont directement utilisés par les fonctions Fortran.
Signalons que dans DloCho, contrairement à ce qui est fait dans cet exemple l’objet
dataC sera transmis par Python puis nous convertissons chaque élément de type C en
élément Fortran2 . DloCho a un processus particulier. Fortran gère quasiment toutes
les variables puisqu’il alloue les tableaux nécessaires aux calculs, tels que la pression,
l’enthalpie, la porosité…, puis communique les adresses de ces tableaux à Python. Ainsi
Python et Fortran travaillent sur le même tableau, évitant ainsi d’avoir à gérer des mises
à jour de tableaux dans les deux langages ; ce qui aurait eu un impact négatif sur le
temps d’exécution et aurait été une source d’erreurs potentielles difficiles à déboguer.
Le fait de donner à Python les adresses vers ces tableaux permet entre autres d’alléger la
consommation mémoire puisqu’il ne s’agit pas de copie, mais du même objet sur lequel
les deux langages travaillent. Cependant, dans la construction actuelle de DloCho il
y a un point négatif à soulever : ces tableaux alloués par Fortran le sont déjà par
Python puisque ce sont les données initiales renseignées par l’utilisateur. Il y a donc
des doublons. Ce processus s’explique par le fait que le code a d’abord été écrit en
Fortran et l’interface Python a été rajoutée par la suite. Connaissant cet historique,
l’on comprend qu’il est plus facile de partir de l’existant soit la déclaration des tableaux
faite par Fortran, puis de communiquer les adresses à Python.

5.3 Architecture objet du code


Ce n’est pas le lieu pour faire un cours sur la programmation-objet. Cependant sur
l’exemple d’un rectangle et des notions qui lui sont rattachées nous souhaitons vous
donner quelques idées de ce qu’est l’approche objet pour la conception d’un code de
calcul scientifique.
L’idée de la programmation-objet (POO) peut se décrire comme le fait de structurer
en fonction d’objets qui réunissent un ensemble de variables et de méthodes directe-
ment affectées à des entités. Par exemple, un rectangle est une entité qui est définie par
une longueur et une largeur (ce sont les variables). On peut calculer son aire ou encore
son périmètre (ce sont les méthodes). Dans cet exemple, on crée l’objet rectangle qui
possède deux attributs : rectangle.longueur et rectangle.largeur, et deux mé-
thodes : rectangle.aire et rectangle.perimetre. De même un carré possède un
attribut longueur et les mêmes méthodes « aire » et « périmètre ». Ces méthodes sont
strictement identiques à celles d’un rectangle, car après tout un carré est un rectangle.
Puisqu’un carré est un rectangle, il paraît judicieux de déclarer un carré comment étant
un rectangle afin de récupérer le travail préalablement fait lors de la création de l’ob-
jet rectangle. Il est possible d’aller encore plus loin en parlant de figures géométriques
2. Cette étape n’est peut-être pas nécessaire. Il nous paraissait plus sûr de réaliser cette conversion afin
de toujours travailler avec le même type d’objet et de précision identique. De plus, concernant la gestion
de tableaux ou de chaînes de caractères la conversion offre une manipulation plus aisée de ceux-ci.
5.3. ARCHITECTURE OBJET DU CODE 77

pour lesquelles on définit de façon abstraite le périmètre et l’aire ; c.-à-d. la définition


qui sera faite ultérieurement lors de l’héritage. Le rectangle n’est alors qu’une réalisa-
tion de cette notion ou classe abstraite. Voici une implémentation possible en Python
des exemples rectangle et carré.

Listing 5.6: Classes rectangle et carré


1 import math
2
3 class rectangle ( object ) :
4
5 def __init__ (self , longueur , largeur ) :
6 self. longueur = longueur
7 self. largeur = largeur
8
9 def aire(self) :
10 return self. longueur *self. largeur
11
12 def perimetre (self) :
13 return 2*( self. longueur +self. largeur )
14
15 class carre( rectangle ) :
16
17 def __init__ (self , longueur ) :
18 self. longueur = longueur
19 self. largeur = longueur
20
21 class triangle_rectangle ( object ) :
22
23 def __init__ (self , lngur1 =None , lngur2 =None) :
24 ''' Entrée les longueurs des côtés formant l'angle droit
25 '''
26 self. lngur1 = lngur1
27 self. lngur2 = lngur2
28 self. lngur3 = math.sqrt( lngur1 **2 + lngur2 **2)
29
30 def aire(self) :
31 return self. lngur2 *self. lngur2 / 2
32
33 def perimetre (self) :
34 return self. lngurhyp + self. lngur1 + self. lngur2ui
35
36 # Creation de deux instances de rectangle
37 tennis = rectangle (10.97 , 23.77)
38 basket = rectangle (26, 14)
39 baseball = carre (27.43)
40 trirec = triangle_rectangle (3, 4)
41
42 print ( ” L ’ a i r e du t e r r a i n t e n n i s e s t ” , tennis .aire ())
78 CHAPITRE 5. ORGANISATION DU CODE

43 print ( ” L ’ a i r e du t e r r a i n b a s k e t e s t ” , basket .aire ())


44 print ( ” L ’ a i r e du champ i n t e r i e u r e s t de ” , baseball .aire ())
45 print ( ” L ’ a i r e du t r i a n g l e e s t de ” , trirec .aire ())

Cet exemple illustre le fait que la classe carre possède les méthodes aire et périmetre,
que lors du calcul de l’aire l’utilisateur ne manipule pas les attributs ce qui évite de
calculer une aire en utilisant les longueurs d’un autre rectangle. L’ajout de l’exemple
triangle permet de mettre en avant que des méthodes ayant la même fonction (calcul
de l’aire d’un objet) portent le même nom et non « aire_triangle » et « aire_rectangle »,
ce qui apporte davantage de cohérence.
La programmation-objet oblige à avoir une vision modulaire, organisée et hiérar-
chisée du code. Ces obligations ne peuvent être que bénéfiques pour l’utilisateur aver-
ti. En effet, la vision modulaire permet de cibler rapidement quelle partie du code fait
quelle opération, de pouvoir modifier, supprimer ou remplacer facilement cet objet. De
plus, nous avons créé des outils les plus indépendants possible ce qui rend plus aisé
de remplacer, d’importer ou d’exporter un outil. Au vu de tout ceci, il apparaît que
programmer en objet est un avantage indéniable pour le travail collaboratif.
Il est possible de visualiser le code comme étant une superposition de couches qui
sont des décompositions du problème à résoudre et qui réfèrent à des métiers et savoir-
faire différents :

Couche continue : C’est le niveau où sont définies les données du problème à ré-
soudre sans prévaloir sur les méthodes qui seront utilisées.

Couche de la discrétisation temporelle : C’est le niveau de la discrétisation en temps.


On y définit le pas de temps dt, l’intervalle d’intégration (de 0 à T ) et la méthode
d’intégration par exemple les méthodes Euler implicite/semi-implicite…

Couche de la discrétisation spatiale : on y construit le maillage du domaine de cal-


cul, les opérateurs deviennent discrets comme les vecteurs inconnus. Tout ou
presque devient matrice et vecteur.

Couche de l’algèbre linéaire : ici sont définis les méthodes de stockage des matrices
et des vecteurs et pour les opérations sur ceux-ci comme les produits matrice-
vecteur, les résolutions de systèmes linéaires et autres produits scalaires.

Chaque couche interagit avec au moins une autre(voir figure 5.1).


La conception du code est tel que nous avons deux types d’utilisateurs cibles : ce-
lui que nous nommerons « utilisateur final » et celui que nous qualifierons d’« utili-
sateur avancé ». Par exemple, un utilisateur final peut-être un physicien dont le seul
objectif est de lancer le code avec ses paramètres sans réellement maitriser les diffé-
rentes couches (ce qu’est une méthode de point fixe, à quoi sert GMRES ?). Même sans
connaître précisément les différentes méthodes, il aura toujours la possibilité de les
5.3. ARCHITECTURE OBJET DU CODE 79

tester et de connaître par expérience ou par expériences ou lectures que pour tel type
de simulation telle méthode répond mieux aux critères : rapidité, fiabilité… Une autre
possibilité est encore d’utiliser les « defaults » proposés par le code lui-même.
L’autre utilisateur dit avancé est capable de prendre en main l’ordre des méthodes et
d’apporter des modifications, d’en comprendre les paramètres et d’analyser les sorties
numériques et graphiques de chaque méthode ou algorithme utilisés.
Fig. 5.1: Description du code en couche métier. Le code couleur est expliqué à la page 83.
5.3. ARCHITECTURE OBJET DU CODE 81

5.3.1 Description des couches


Niveau continu
C’est l’unique couche qu’un utilisateur final doit connaître. On le nomme « conti-
nu », car les équations qui régissent le phénomène étudié y sont écrites sous leur forme
mathématique appliquée à des fonctions explicites. Le niveau continu est la partie pré-
processing et post-processing. Plus précisément, l’utilisateur répertorie toutes les don-
nées nécessaires à la définition d’une simulation. Citons par exemple3 les données phy-
siques du problème (porosité, perméabilité…), le domaine de calcul, les conditions ini-
tiales (pression, enthalpie, température…). Il décide de comment traiter son problème
en définissant les méthodes de résolution, de discrétisation spatiale et temporelle… et
ce même s’il n’est pas spécialiste. C’est la partie pré-processing, avant que la résolu-
tion par le code ne fasse ce qu’on lui a demandé de faire. Nous comprenons donc que
dans un premier temps, l’utilisateur doit fournir au code un certain nombre de don-
nées et de paramètres ; des données pour initialiser le problème (maillage, variables
discrétisées…) et des paramètres qui vont contrôler le processus itératif (redémarrage)
ou qui sélectionneront les méthodes numériques. De ces données va dépendre la taille
et le temps de calcul de chaque simulation. Il est clair que certaines de ces données
dépendent les unes des autres et que la compréhension des méthodes de discrétisation
et des méthodes numériques associées devrait être indispensable.
Durant l’exécution du code, l’utilisateur obtiendra des données discrètes4 à traiter
qu’il extrapolera pour se ramener au niveau continu. Par le biais de graphiques ou de
logiciel de visualisation, il aura une vue de l’évolution des variables. Ce qui lui permet-
tra d’analyser la solution pour conclure ou ajuster les paramètres de simulation. C’est
le post-processing.

Niveau semi-discret
Pour mieux comprendre le schéma, nous exposerons quelques exemples simples.
Considérons un problème à résoudre défini par l’équation différentielle
∂u
= f (t, u), u(0) = u0 . (5.1)
∂t
Pour illustrer le contenu des boîtes du niveau discrétisation temporelle, suppo-
sons implémentées les méthodes Euler explicite et Runge Kutta d’ordre 4. Rappelons
que l’objectif de cette discrétisation est d’obtenir (tn+1 , un+1 ) connaissant le point
(tn , un )5 . La méthode d’Euler explicite permet de passer directement de l’un à l’autre
tandis que celle de Runge-Kutta crée une autre division du temps en passant par deux
3. Évidemment cela dépend du problème à résoudre.
4. données sauvegardées tout au long du processus de résolution
5. dans le cas d’une méthode à plusieurs pas, il y aura davantage de points.
82 CHAPITRE 5. ORGANISATION DU CODE

points intermédiaires. En effet du point (tn , un ), on obtient le point (tn+ 1 , un+ 1 ) puis
2 4
(tn+ 1 , un+ 2 ) et enfin (tn+1 , un+1 ). La boîte discrétisation contient ces différents sché-
2 4
mas. Elle répond donc à la question : comment passer de (tn , un ) à (tn+1 , un+1 ) ?
Avant même de considérer cette boîte, l’utilisateur aura déjà pris la décision de dis-
crétiser le temps par une subdivision à pas constant ou à pas variable. En effet, il spécifie
un pas de temps maximal dtmax et un booléen indiquant si il souhaite travailler avec
un pas de temps adaptatif. Remarquons qu’en indiquant un dtmax grand, l’utilisateur
s’intéresse au comportement asymptotique de la solution (simulation moins précise)
et avec un dtmax petit il s’intéresse à une évolution précise de la solution.
La gestion du pas de temps introduit nécessairement des prises de décision selon des
critères qui conduiront à l’ajustement du pas de temps. Ces critères sont par exemple :
la vérification des conditions de CFL ou la non-convergence d’une méthode (méthode
de point fixe, inversion de matrice…) Le niveau de discrétisation temporelle est le seul
à contenir cette fonction de prise de décision.
C’est au niveau discret que sera réellement résolu le problème en combinant ré-
solution algébrique et résolution temporelle (intégration). Chacune de ces étapes peut
se conclure par un échec6 . Il est donc essentiel de traquer ces échecs et de réagir en
fonction. Nous avons fait le choix de traquer le comportement de ces deux processus.
La réaction la plus simple est d’arrêter le code dès lors que la résolution échoue et
d’envoyer une description (si possible) de l’échec à l’utilisateur. C’est la partie du code
effectuant la résolution qui contrôle l’arrêt du code, c’est-à-dire au niveau semi-discret.
Cette méthode est très limitante, car elle ne permet pas de réagir face à cette dif-
ficulté, mais cela peut être voulu, par exemple dans le cas d’une division par zéro. Une
autre réaction est de retourner un booléen vers les niveaux supérieurs. Plus haut ces
informations remontent, plus aisé sera la mise en place d’un traitement plus complet
ou plus complexe. Nous pouvons décider d’arrêter le code à la détection de l’erreur,
mais imprimer davantage d’informations (variables inaccessibles par le bout de code)
ou faire du redémarrage en modifiant certains paramètres comme le pas de temps.
Dans cette partie, il peut y avoir des schémas plus complexes pour la résolution des
équations non linéaires : méthode de point fixe, méthode multi-pas…

Niveau discrétisation spatiale


Au niveau supérieur, il s’agissait de rendre discontinu vis-à-vis du temps des va-
riables telles que la pression, la température. Mais elles restent encore continues dans
l’espace, ce niveau s’attache à gérer cette discrétisation. Dans un premier temps, l’uti-
lisateur fournit (paramètres entrés) le maillage et des variables discrétisées selon ce
maillage. Donc dès l’initialisation nous connaissons le maillage du domaine de calcul
et par conséquent la boîte « domaine discret » est souvent vide, mais il possible d’ima-
6. nombre d’itérations insuffisant pour atteindre la convergence, non-convergence.
5.3. ARCHITECTURE OBJET DU CODE 83

giner que le code génère un nouveau maillage (pourquoi pas plus fin autour d’un puits
pour mieux capter les modifications rapides dues à des vitesses plus élevées dans cette
zone). La boîte discrétisation peut contenir des méthodes telles que les différences fi-
nies, les éléments finis, les volumes finis …
Rajoutons que le maillage devra correspondre au mieux à la physique de la roche,
c’est-à-dire qu’il faudra que l’on puisse considérer les propriétés physiques de la roche
constantes sur un volume de contrôle.

Niveau algébrique

Ce niveau est le plus calculatoire, en effet il gère tous les processus liés aux matrices,
produit vectoriel et inversion matricielle (GMRES, BDF2…) et est appelé à chaque ité-
ration. Les fonctions de ce niveau peuvent être appelées plusieurs fois lors d’une seule
itération.
Comme il a été suggéré, c’est aussi le niveau où sont définies les matrices de façon
abstraite sur lesquelles sont définies les opérations entre matrice et vecteur. Comme
au niveau semi-discret pour les méthodes d’intégrations en temps.

5.3.2 La place de chaque langage


Une fois cette description en couche faite, il ne reste plus qu’à déterminer le rôle de
chaque langage de programmation. En faisant une réflexion à priori tenant compte des
raisons choix de Python et Fortran et considérant les objectifs que nous avons définis
pour chacun, nous pouvons faire une première sélection des éléments qui seront gérés
par l’un ou l’autre des langages. En effet, Python gérera l’initialisation (il joue ici son
rôle d’interface), les sauvegardes de données et les procédures de prise de décisions (la
sauvegarde et les prises de décision nécessitent d’être suffisamment haut/en surface
du code afin d’avoir le maximum d’informations à jour.). Tandis que Fortran gérera les
procédures très calculatoires : produit scalaire, résolution de systèmes linéaires…
Ceci se traduit par le fait que Fortran ne possédera que des outils travaillant sur un
pas de temps, tandis que Python à un rôle plus complexe, il gère l’évolution, la progres-
sion d’un pas de temps à un autre en faisant appel aux fonctions Fortran nécessaires
via c_interface, gère les problèmes de non-convergence en diminuant le pas de temps
puis en rappelant ces mêmes fonctions. En tant qu’interface, il récupère les données
du problème entrées par l’utilisateur pour les transférer à Fortran via geotherm, da-
ta_class…
Tout ceci est résumé dans fig. 5.1 page 80. Les cadres verts représentent les modules
codés en python, les cadres rouges et sans couleur sont les modules codés en Fortran.
84 CHAPITRE 5. ORGANISATION DU CODE

5.3.3 L’objet dans tout ça ?


La séparation du code en couche métier, les « boîtes » mises en évidence dans la
couche semi-discrète figurant les différentes méthodes d’intégrations en temps, la mo-
tion de matrice abstraite pour lesquelles sont écrites les méthodes de résolutions de
systèmes linéaires et l’existence de méthodes de stockages et sans oublier la boîte
de décision mise en évidence pour l’analyse comportementale du code sont déjà la
parfaite illustration d’une architecture objet du code. La structuration objet s’exprime
également dans fig. 5.1 page 80, mais cette fois lue verticalement qui rend visible les
niveaux d’abstraction successifs.
Avant d’aller plus loin, il est nécessaire de préciser quelle a été l’évolution structu-
relle du code actuel. En fait les premières ébauches étaient pur Fortran-90. Donc mono
langage et un peu mieux que procédural comme le permet le Fortran-90. Puis est inter-
venu le python et enfin l’analyse objet du code. Cette analyse est perfectible. Et le code
est dans un état intermédiaire entre le pur procédural et le complètement objet. L’esprit
de notre analyse objet est décrit ci-dessus. Il vient maintenant quelques remarques sur
la structure actuelle.
En résumé dans la partie Python, on trouve la couche continue avec

• la définition de l’ensemble des données nécessaires à un calcul

• dont la sélection de la méthode d’intégration en temps, ses paramètres et ses


critères comportementaux.

• et le post traitement comme quelques visualisations pour une exécution interac-


tive ou des écritures dans des fichiers pour une analyse des résultats a posteriori.

Et en fortran tout le reste, c’est-à-dire :

• la discrétisation en espace (avec l’allocation des tableaux partagés avec python


en particulier)

• le calcul matriciel (stockage ou recalcule des matrices), produits matrice-vecteur,


méthodes itératives de résolutions de systèmes linéaires, et plus encore)

• la remontée des informations comportementales

Construction des objets


À ce niveau de la documentation, nous avons identifié les données d’initialisation
transitant de Python vers Fortran, les processus d’algèbre linéaire qui dépendent des
équations et des méthodes d’intégrations, le maillage qui donne les dimensions des
tableaux… Nous avons choisi de créer un objet unique pour les données d’initialisations
5.3. ARCHITECTURE OBJET DU CODE 85

(excluant pression et enthalpie) ce qui permet de n’avoir à gérer qu’une entité lors de
la communication des données du problème.
Un objet pour le maillage, bien entendu il permettra de décrire chaque volume : lon-
gueur, largeur, profondeur (ce sont les données), volume, aire de chaque surface d’un
volume, une normale à chaque face… (ce sont les méthodes). Un volume est identifié
de deux manières :

• chaque volume est numéroté. On commence à numéroter en partant du coin


inférieur gauche avant.

• chaque volume peut-être identifié par les coordonnées entières de son centre
(i , j , k).

Des méthodes permettent de passer de l’une à l’autre.


Cet objet possède donc tout ce qui est utile pour décrire finement la géométrie
du domaine. En plus de cela, il contient la description des conditions aux limites, car
DloCho permet de contrôler individuellement les conditions aux limites de chaque face.
Les conditions aux limites étant alors fortement liées aux maillages de la frontière, il
nous a paru normal de les intégrer en tant que données dans l’objet mesh.
Chacune des équations de conservation a un objet permettant de les décrire. Les
méthodes de résolution de système linéaire sont non seulement regroupées dans un
même objet. De nombreuses données et méthodes communes sont regroupées dans
une classe abstraite et chaque équation possède sa propre réalisation. Cet ensemble est
évidemment très lié aux classes d’algèbre linéaire.
Il est clair que cette algèbre linéaire est très propice à une écriture objet. Par exemple,
l’implémentation d’une méthode de résolution de systèmes linéaires nécessite de calcu-
ler un produit matriciel qui est une fonction indépendante des méthodes de résolution,
son contenu n’est donc pas essentiel pour l’implémentation de celle-ci. En revanche,
les arguments que je passe à ce produit et le résultat qu’il me renvoie sont importants.
Ceci démontre clairement l’indépendance de cet objet vis a vis du reste du code.
Bibliographie

[1] Nasser Ashgriz et Javad Mostaghimi. « An Introduction to Computational Fluid


Dynamics ». In : Fluid flow handbook. Chap. 20.
[2] BDF Methods - sundials.
[3] Jacob Bear. Dynamics of fluids in porous media. T. 120. 2. Elsevier, août 1972,
p. 162–163. doi : 10.1097/00010694-197508000-00022.
[4] Franck Boyer. Volumes finis pour les problèmes elliptiques hétérogènes anisotropes
sur maillage généraux - Partie 1. 2009.
[5] Konstantin Brenner. « Méthodes de volumes finis sur maillages quelconques
pour des systèmes d’évolution non linéaires. » Thèse de doct. Université Paris-
Sud XI, 2011.
[6] J. Carpio et M. Braack. « The effect of numerical methods on the simulation
of mid-ocean ridge hydrothermal models ». In : Theoretical and Computational
Fluid Dynamics 26.1-4 (mai 2011), p. 225–243. issn : 0935-4964. doi : 10.1007/
s00162-011-0232-z.
[7] E. Alberdi Celaya, J. J. Anza Aguirrezabala et P. Chatzipantelidis. « Imple-
mentation of an Adaptive BDF2 Formula and Comparison with the MATLAB
Ode15s ». In : Procedia Computer Science 29 (2014), p. 1014–1026. issn : 18770509.
doi : 10.1016/j.procs.2014.05.091.
[8] Fréderique Charles et al. « Numerical simulation by a random particle method
of Deuterium-Tritium fusion reactions in a plasma ». In : ESAIM : Proceedings 38
(déc. 2012). Sous la dir. de F. Coqel et al., p. 220–240. issn : 1270-900X. doi :
10.1051/proc/201238012.
[9] Ian D. Chivers et Jane Sleightholme. « Compiler support for the Fortran 2003
and 2008 standards ». In : ACM SIGPLAN Fortran Forum 29.1 (avr. 2010), p. 29–
34. issn : 10617264. doi : 10.1145/1753166.1753169.
[10] Ian Chivers et Jane Sleightholme. « Compiler Support for the Fortran 2003
and 2008 Standards Revision 17 ». In : ACM SIGPLAN Fortran Forum 34.3 (nov.
2015), p. 7–27. issn : 10617264. doi : 10.1145/2851087.2851088.

87
88 BIBLIOGRAPHIE

[11] Ian Chivers et Jane Sleightholme. « Compiler Support for the Fortran 2003
and 2008 Standards Revision 18 ». In : ACM SIGPLAN Fortran Forum 35.1 (avr.
2016), p. 9–29. issn : 10617264. doi : 10.1145/2922512.2922513.
[12] J R Cooper et R B Dooley. « The International Association for the Properties
of Water and Steam Revised Release on the IAPWS Industrial Formulation 1997
for the Thermodynamic Properties of Water and Steam ». In : (2007).
[13] Cédrick Copol, Jacques Laminie et Simon Lopez. « Numerical modeling of geo-
thermal systems ». In : (2014), SGP–TR–202.
[14] Dingeman Coumou. « Numerical simulation of fluid flow in mid-ocean ridge hy-
drothermal systems ». Thèse de doct. 2008. doi : 10.3929/ethz-a-005682173.
[15] Dingeman Coumou, Thomas Driesner et Christoph A Heinrich. « Heat trans-
port at boiling, near-critical conditions ». In : Geofluids 8.3 (2008), p. 208–215.
issn : 1468-8123. doi : 10.1111/j.1468-8123.2008.00218.x.
[16] Dingeman Coumou et al. « A parallel FE–FV scheme to solve fluid flow in com-
plex geologic media ». In : Computers & Geosciences 34.12 (déc. 2008), p. 1697–
1707. issn : 0098-3004. doi : 10.1016/j.cageo.2007.11.010.
[17] Dingeman Coumou et al. « The dynamics of mid-ocean ridge hydrothermal sys-
tems : Splitting plumes and fluctuating vent temperatures ». In : Earth and Plane-
tary Science Letters 245.1–2 (2006), p. 218–231. issn : 0012-821X. doi : 10.1016/
j.epsl.2006.02.044.
[18] R Courant, K Friedrichs et H Lewyt. « On the Partial Difference Equations of
Mathematical Physics ». In : IBM journal (1967).
[19] Olivier Coussy. Mechanics and Physics of Porous Solids. Wiley, 2011, p. 296. isbn :
1119956161.
[20] Henry Darcy. Les fontaines publiques de la ville de Dijon : exposition et applica-
tion des principes à suivre et des formules à employer dans les questions de distri-
bution d’eau. Sous la dir. de Victor Dalmont. Dalmont, 1856, p. 647.
[21] Sarah Delcourte. « DEVELOPPEMENT DE METHODES DE VOLUMES FINIS
POUR LA MECANIQUE DES FLUIDES ». Thèse de doct. Université de toulouse,
2007.
[22] R Eymard, T Gallouët et R Herbin. Finite volume methods (Schemes and Ana-
lysis course at the University of Wroclaw). 2000.
[23] Fortran 2003 status in Fortran Wiki.
[24] Fortran 2008 status in Fortran Wiki.
[25] Bill Gear. « Backward differentiation formulas ». In : Scholarpedia 2.8 (2007),
p. 3162. issn : 1941-6016. doi : 10.4249/scholarpedia.3162.
BIBLIOGRAPHIE 89

[26] S Geiger et al. « On the dynamics of NaCl-H2O fluid convection in the Earth’s
crust ». In : Journal of Geophysical Research : Solid Earth 110.B7 (2005), n/a–n/a.
issn : 2156-2202. doi : 10.1029/2004JB003362.
[27] Guadeloupe Énergie. Plan énergétique Régional pluriannuel de prospection et
d’exploitation des Énergies Renouvelables et d’Utilisation Rationnelle de l’Énergie
de la Guadeloupe (PRERURE). Rapp. tech. Guadeloupe Énergie, Région guade-
loupe, 2012.
[28] Nusair Hasan et Bakhtier Farouk. « Buoyancy driven convection in near-critical
and supercritical fluids ». In : International Journal of Heat and Mass Transfer
(2012). issn : 00179310. doi : 10.1016/j.ijheatmasstransfer.2012.03.
062.
[29] Daniel O Hayba et Steven E Ingebritsen. « Multiphase groundwater flow near
cooling plutons ». In : J. Geophys. Res 102.12 (1997), p. 235–252.
[30] Hayba et Steve Ingebritsen. The computer model HYDREOTHERM, a three-dimensional
finite-difference model to simulate ground-water flow and heat transport in the
temperature range of 0 to 1,200 C. Rapp. tech. 1994.
[31] IAPWS. International Association for the Properties of Water and Steam.
[32] S E Ingebritsen et al. « Numerical simulation of magmatic hydrothermal sys-
tems ». In : Reviews of Geophysics 47.2009 (2010), p. 1–33. issn : 8755-1209. doi :
10.1029/2009RG000287.1.PURPOSE.
[33] Steve Ingebritsen, Ward Sanford et Chris Neuzil. Groundwater in geologic
processes, 2nd edition. Cambridge University Press, 2006. isbn : 9780521603218.
[34] T Jupp et Adam Schultz. « A thermodynamic explanation for black smoker
temperatures ». In : Nature 403.6772 (fév. 2000), p. 880–3. issn : 1476-4687. doi :
10.1038/35002552.
[35] Tim Jupp et Adam Schultz. « Physical balances in subseafloor hydrothermal
convection cells ». In : Journal of Geophysical Research 109.B5 (2004), B05101.
issn : 0148-0227. doi : 10.1029/2003JB002697.
[36] Kenneth L. Kipp, Paul A. Hsieh et Scott R. Charlton. « Guide to the Revised
Ground-Water Flow and Heat Transpor t Simulator : HYDROTHERM — Version
3 ». In : U.S. Geological Survey Techniques and Methods 6-A25 (2008), p. 160.
[37] P. Lachassagne, J. C. Marechal et B. Sanjuan. « Hydrogeological model of
a high-energy geothermal field (Bouillante area, Guadeloupe, French West In-
dies) ». In : Hydrogeology Journal 17.7 (juin 2009), p. 1589–1606. issn : 1431-2174.
doi : 10.1007/s10040-009-0486-3.
[38] C. M. Marle. « Écoulements monophasiques en milieu poreux ». In : Institut
français du pétrole et annales des combustibles liquides 10 (1967).
90 BIBLIOGRAPHIE

[39] Georges Matheron. « L’émergence de la loi de Darcy ». In : Annales des Mines


(1984).
[40] M. J. McGuinness. « Steady solution selection and existence in geothermal heat
pipes—I. The convective case ». In : International Journal of Heat and Mass Trans-
fer 39.2 (1996), p. 259–274. doi : 10.1016/0017-9310(95)00128-V.
[41] M. J. McGuinness. « Steady-solution selection and existence in geothermal heat
pipes—II. The conductive case ». In : International Journal of Heat and Mass Trans-
fer 40.2 (jan. 1997), p. 311–321. issn : 00179310. doi : 10.1016/0017-9310(96)
00108-1.
[42] Mark J. McGuinness et al. « Geothermal heat pipe stability : solution selection
by upstreaming and boundary conditions ». In : Transport in Porous Media 11
(1993), p. 71–100.
[43] Michael Metcalf, Malcolm Cohen et John Reid. Fortran 95/2003 explained. Ox-
ford University Press, USA, 2004, p. 416.
[44] George Shu Heng Pau et al. « An adaptive mesh refinement algorithm for com-
pressible two-phase flow in porous media ». In : Computational Geosciences 16.3
(déc. 2011), p. 577–592. issn : 1420-0597. doi : 10.1007/s10596-011-9270-2.
[45] Karsten Pruess, Curt Oldenburg et George Moridis. Tough2 user’s guide. Rapp.
tech. November. Berkeley National Laboratory, 1999.
[46] John Pye. freesteam : Steam Tables, Open Source, IAPWS-IF97.
[47] Python Programming Language – Official Website.
[48] Yousef Saad. Iterative methods for sparse linear systems. 2003.
[49] Bernard Sanjuan et al. « Géothermie haute température : le défi énergétique
pour 2020 ». In : géosciences 14 (2011), p. 32–41.
[50] The Fortran company. The Fortran Company.
[51] Juan Luis Vázqez. The porous medium equation : mathematical theory. Oxford
University Press, USA, 2007.
Author manuscript, published in "39th Workshop on Geothermal Reservoir Engineering, Stanford : États-Unis (2014)"
PROCEEDINGS, Thirty-Ninth Workshop on Geothermal Reservoir Engineering
Stanford University, Stanford, California, February 24-26, 2014
SGP-TR-202

91
Numerical Modeling of Geothermal Systems
Cédrick Copol*, Jacques Laminie* and Simon Lopez**
*LAMIA - Université des Antilles et de la Guyane Pointe-à-Pitre. **BRGM - Orleans -France
cedrick.copol@univ-ag.fr, jacques.laminie@univ-ag.fr, slopez@brgmn.fr

Keywords: geothermal reservoir, simulation

ABSTRACT
The purpose of our study is to model a geothermal reservoir. When geothermal reservoir are assumed to be composed of pure
water, the transfer of mass and energy is classically described by two balance equations: a mass balance equation and an energy
balance equation. In addition to those equations, fluid velocity is classically given by the Darcy law. Thermodynamic properties are
given by a set of equations from the IAPWS-IF97 thermodynamic formulation. This system is solved with pressure and enthalpy as
the primary variables to increase stability of phase transition between single and two-phase states. We have chosen to use a splitting
method to get rid of the complexity of coupling equations and a finite volume method for the spatial discretization. Selecting
object-oriented languages, we developed a multi-language framework, combining Python, Fortran and C implementation of IAPWS
(from the Freesteam project) including the supercritical regions.

We have applied this simulation model to a low temperature case in Paris basin, France, and to several one-dimensional systems
and a two-dimensional system and a two-dimensional one.
hal-00944133, version 1 - 10 Feb 2014

1. INTRODUCTION
The purpose of our study is to model a geothermal reservoir in its natural or exploitation state. Geothermal phenomena often occur
in unattainable places, in the Earth's crust, sometimes below the sub-seafloor. In such conditions data acquisition is often difficult
and scientists have few measurements. Numerical modeling is often the unique way to have an idea of what happens, to explain
surface observations. Numerical geothermal/hydrothermal simulators have been developed for many years now. Ingebritsen and al.
(2010) give attributes of such simulators in a detailed review (see table 1 extracted from their article). Among these codes,
TOUGH2 is widely used in the geothermal industry to model geothermal reservoir exploitation. HYDROTHEM is used to model
hydrothermal deep high energy systems, including magmatic intrusion [Hayba and Ingebritsen,1997]. CSMP++ is a recent generic
platform which has been used to model fluid-flow in mid-ocean rife hydrothermal systems [Coumou, 2008].

Tmax Pmax Numerical Reactive

Name °C MPa Method Transport Deformation CO2 NaCl

CSMP++ 1000 500 FE-FV X

FEHM 1500 FE X X X

HYDROTHERM 1200 1000 FV

NaCl-TOUGH2 620 100 IFD X

Tough2 350 100 IFD X X

Table 1: Relative capabilities of selected multiphase numerical codes commonly applied in simulations of magmatic
hydrothermal systems extracted from Ingebritsen and al. (2010) FE: Finite Elements, FV: Finite Volumes, IFD:
Integrated Finite Differences
2. GOVERNING EQUATIONS
The flow of fluid through a porous medium is supposed to be Darcian [Bear, 1972] so that the flow rate of a fluid through a given
section, that is to say the volume of water passing through the porous medium, by unit of surface of time, is written for each phase:

where subscript l represents liquid water and subscript v the vapor water, k(x) is the intrinsic permeability, kl and kv are relative
permeabilities,  is the fluid's dynamic viscosity, p is the fluid pressure (Pa) and  is the fluid's density (kg.m3). This equation
assumes that the movement of the fluid in a porous environment is the result of an instantaneous equilibrium between local pressure
gradients on the one hand and external gravity forces on the other hand with the gravity acceleration given by . This
experimental law can be viewed as a degenerated momentum equation.

1
Copol, Laminie and Lopez

In order to model hydrodynamic systems in a porous medium, the Darcy law (1) is injected into two equations describing mass
balance and energy balance. The mass balance for a two-phase fluid can be written as:
92 ANNEXE A. NUMERICAL MODELING OF GEOTHERMAL

where is the porosity of the porous medium (dimensionless), Q(x,t) a source term (kg.s-1.m-3) (refill of the aquifer, pumping,
injection). The energy balance can be written as:

where h is the specific enthalpy (J.kg-3), T the temperature (measured in Kelvin (K)) of saturated rock. We made the usual
assumption of local thermal equilibrium between rock and the fluid flowing through it. K(x) is the thermal conductivity and Φ(x,t) a
source term (injection of cold water, source of heat because of the presence of magma). In this classic formulation, potential and
kinetic energies have been neglected (see Ingebritsen and al. (2006) for further discussion).

At this step there are two ways to solve this two-equation system. The first one is to use pressure and temperature as primary
variables and solve for their transient values (which is the strategy adopted in TOUGH2). The alternative option is to retain
pressure and enthalpy as primary variables (HYDROTHERM, or CSMP++ [Coumou, 2008]). The pressure-temperature
hal-00944133, version 1 - 10 Feb 2014

formulation may present some numerical difficulties when the system switches from one-phase to two-phase conditions. The reason
behind this instability is that it is not possible to describe uniquely a two-phase system with only pressure and temperature and an
additional variable must be introduced (vapor saturation) [Ingebritsen and al., 2006]. As we choose to work with p and h as primary
variables we write partial derivatives in terms of p and h and insert (1) in (2) and (3). Considering that there are no mechanical
effects and that the rock porosity does not change (i.e. solid matrix is unaffected by fluid pressure variations) (2) and (3) become:

Equation for pressure

where α measures the fluid’s compressibility, and α is a proxy for its thermal dilatancy. Both variables are derived from the
p h
fluid’s equation of state.

Equation for the enthalpy

3. MATERIALS
We use the equation of state for pure water given by the International Association for the Properties of Water and Steam (IAPWS-
97) [IAPWS] to compute all coefficients as functions of p and h. IAPWS gives a set of equations for each phase region: liquid,
vapor, supercritical and two-phase. The formulation is valid from 273.15K to 1073.15K at pressures up to 100MPa, and there is a
high-temperature region extending to 2273.15K at pressures up to 50MPa.

Equations (4) and (5) are strongly coupled so that we use a splitting resolution method. First we start by solving (4) to obtain p then
we solve (5) to obtain h. We used a finite volume method. We offer some freedom to users thanks to the implementation of several
methods like explicit or implicit Euler, Runge-Kutta or BDF2 for time solvers or GMRES and BICGSTAB for the linear solver. We
can handle several boundary conditions like no-flow – describing a boundary which cannot exchange matter with the exterior – or a
mixed thermal condition – a Dirichlet in pressure with a Dirichlet in temperature or an outflow condition in temperature in order to
describe a recharge or a discharge zone. We are developing a multi-language framework, combining Python, Fortran and the C
implementation of IAPWS (from the Freesteam project). The high level part is in Python to keep all the facility and flexibility of an
interpreted language. The computation part is written in Fortran to keep the efficiency of a compiled language. In this way we have

2
Copol, Laminie and Lopez

a flexible and efficient framework. Both languages (Python and Fortran 90/2003) are object languages which provide a good
adaptability which is the main property needed by a research computational code.
A.4. BENCHMARK 93
4. BENCHMARKS
In the following section we present the results from benchmark simulations taken from literature. In all cases we get either a good
agreement with the other simulators or the expected behavior.

4.1 Low energy geothermal doublet


We consider a two-dimensional horizontal problem which represents geothermal production from a low enthalpy geothermal
aquifer whose size is 5km × 4km. Cold water (40°C) is injected through an injection well into a geothermal reservoir of pure water
at 70°C and water is pumped from the extraction well located 1km apart. Table 2 summarizes the geometry, properties and
discretization of this problem. Values correspond roughly to those encountered in the modeling of the geothermal resource of the
Dogger aquifer of the Paris basin [Lopez and al., 2010].

Our test simulates the evolution of the reservoir over 10 years from an initial state, characterized by p and h . As our model is full
0 0
3D this simulation is a pseudo-2D case with horizontal bottom and top boundaries (z sections) which are no-flow boundaries. All
vertical boundaries (x and y sections) are Dirichlet boundaries held constant to their initial states. As this problem is well known it
is an efficient way to validate our code. Results are compared with TOUGH2 [Pruess and al., 1999]. Comparisons are done in two
cells, the injection one and the extraction one (see table 2).

Injecting cold water involves an increase in pressure and a decrease in temperature respectively due to a mass supply and the
introduction of colder water. This is what the figures 1 and 2 show. In the same way, a pressure drop is expected at the extraction
cell because the production well attracts mass from its neighbors (figure 1). The more intensive the pumping is the more cold water
will be sucked out of the extraction well (figure 2). Figures 1-2 show that results from our code are in good agreement with those
from TOUGH2. Slight differences come from the fact that we use a more recent equation of state.
hal-00944133, version 1 - 10 Feb 2014

initial pressure p0 15. 106 Pa

initial pressure h0 305,249J. kg-1

initial temperature T0 70 °C

permeability 2. 10-12 m2

porosity 0.1

geometry of flow domain 2-D horizontal (x,y) section

gridding 51x31x1 blocks in (x,y,z)

block volume 100x100x10

injection well 50 kg.s-1 at the position (15,15,1)

186,776J. kg-1

production well 50 kg.s-1 at the position (30,15,1)

Table 2: Parameters corresponding to geothermal exploitation of the Dogger aquifer [Lopez and al., 2010]

3
Copol, Laminie and Lopez

94 ANNEXE A. NUMERICAL MODELING OF GEOTHERMAL

Figure 1: Comparison of pressure between TOUGH2 (diamond) and our code (circle). The left picture plots data from the
injection well whereas the right picture plots data from the extraction well.
hal-00944133, version 1 - 10 Feb 2014

Figure 2: Comparison of temperature between TOUGH2 (diamond) and our code (circle). The left picture plots data from
the injection well whereas the right picture plots data from the extraction well.
4.2 Transport of hot water in one dimensional
We performed two tests in a 1D horizontal domain showing the progress of a thermal front. Both case studies are borrowed from
[Coumou, 2008] who run a comparison between CSMP++ and HYDROTHERM. Once again, our results show good agreement
with the two other simulators (figure 3).

The flow is modeled along a 2 km long horizontal column assigning fixed p-h values at both ends of the column. The left limit was
held at higher p-h values than the right limit resulting in the injection of hotter water in the domain from the left boundary. As the
field is horizontal the flow is driven only by pressure gradients. Rock properties were uniform and constant. Porosity, rock isobaric
heat and heat conductivity were respectively 0.1, 242E+4 J.m-3.s-1 and 2.25W.m-1.s-1. We studied both a liquid domain – setting left
boundary at p-T 35MPa-350°C and right boundary at 25MPa-170°C – and a vapor domain – setting at 10MPa-500°C and 1MPa-
350°C.

Figure 3 shows p-T profiles obtained with our code on the left part and results from HYDROTHERM and Coumou/CSMP++ on
the right part. Fluid pressure and temperature calculated by our code and CSMP++, HYDROTHERM show a very good match for
the liquid domain. In the vapor domain our results remain consistent with the other results but they are slightly ahead of Coumou’s

4
Copol, Laminie and Lopez

results.
A.5. NATURAL CONVECTION 95
hal-00944133, version 1 - 10 Feb 2014

Figure 3: Pressure and temperature vs distance. Results from our code are plotted of the left figures and results from
CSMP++ and HYDROTHERM are plotted on the right figures. The first line of figures shows the liquid domain
after 20000 days of simulation and the second line of figures shows the vapor domain after 160000 days.
As mentioned by Coumou (2008) the last test shows a non-physical behavior. In fact we observe that temperature in cells near the
right boundary drop under 350°C. We propose to use an outflow boundary at the right limit (see figure 4) instead of a Dirichlet one.

(a) Condition dirichlet (b) Condition outflow


Figure 4: By setting an outflow boundary condition on the right (outflow) side, the enthalpy is no more constrained and
drops in a more physical way.

5 NATURAL CONVECTION
In this part we have tried to model natural convection in hydrothermal systems. Jupp and Schult (2004) and Coumou (2008) show
systems where plumes are constantly evolving: appearing or disappearing, dividing or merging. We did a simulation with a high
−12 2
intrinsic permeability k=10 m . The top represents the seafloor at 2.4km. If the fluid’s flow enters in the domain we use Dirichlet
conditions: p=25MPa and T is held to 10 else we use an outflow boundary. All the other boundaries are impermeable and adiabatic.
To model the presence of a source of heat outside of the domain we use the heat source term Q of equation (5). Such a discrete a
e
5
Copol, Laminie and Lopez

heat source is put in every bottom cell. We start with a hydrostatic pressure and a fluid at 10. The domain is a 2D domain with
width 1500m and height 1000m. Figure 5 shows that vigorous convection cells develop as expected.
96 ANNEXE A. NUMERICAL MODELING OF GEOTHERMAL
hal-00944133, version 1 - 10 Feb 2014

Figure 4: Natural convection


6 CONCLUSION
This paper illustrates the ability of our code to model geothermal reservoir. At this point we validated our code using benchmarks
from the literature. Simulation of a real reservoir (Bouillante field, Guadeloupe) is currently a work in progress.

ACKNOWLEDGEMENTS
All computations were been done on the computational center of the University, C3I. Funding was provided by BRGM Institut
Carnot and Région Guadeloupe.

REFERENCES
Jacob Bear. Dynamics of fluids in porous media. Elsevier, August 1972.
Dingeman Coumou. Numerical simulation of fluid flow in mid-ocean ridge hydrothermal systems. PhD thesis, ETH Zurich, 2008.
Daniel O Hayba and Steven E Ingebritsen. Multiphase groundwater flow near cooling plutons. Journal of Geophysical Research,
102(B6):12235–12252, 1997.
IAPWS. freesteam: Steam Tables, Open Source, IAPWS-IF97.
S E Ingebritsen, S Geiger, S Hurwitz, and T Driesner. Numerical simulation of magmatic hydrothermal systems. Reviews of
Geophysics, 48(1):RG1002, March 2010.
Steven E Ingebritsen, Ward E Sanford, and Christopher E Neuzil. Groundwater in geologic processes, 2nd edition. Cambridge
University Press, 2006.
Tim Jupp and Adam Schultz. Physical balances in subseafloor hydrothermal convection cells. Journal of Geophysical Research,
109(B5):B05101, 2004.
Simon Lopez, Virginie Hamm, Morgane Le Brun, Lionel Schaper, Fabrice Boissier, Catherine Cotiche, and Elodie Giuglaris.
Geothermics 40 years of Dogger aquifer management in Ile-de-France , Paris Basin , France. Geothermics, 39(4):339–356,
2010.
Karsten Pruess, Curt Oldenburg, and George Moridis. Tough2 user’s guide. Technical Report November, Berkeley National
Laboratory, 1999.

6
Numerical simulation by a random particle method of
Deuterium-Tritium fusion reactions in a plasma.
Fréderique CHARLES1 , Cédrick COPOL2 , Stéphane DELLACHERIE3 ,
Jean-Marc MOUNSAMY2

1
Laboratoire Jacques-Louis Lions, UMR 7598,
CNRS & Université Pierre et Marie Curie (Paris VI),
F-75005 Paris

2
Laboratoire de Mathématiques Informatique et Applications,
Université des Antilles et de la Guyane,
BP 592 Campus de Fouillole, 97157 Pointe-à-Pitre Cédex.

3
Laboratoire de Modélisation et simulation à l’Échelle Composant,
CEA, DEN, DM2S, STMF,
F-91191 Gif-sur-Yvette Cédex.

10 february 2012

Abstract
We propose and we justify a Monte-Carlo algorithm which solves a spatially homogeneous
kinetic equation of Boltzmann type that models the fusion reaction between a deuterium ion and
a tritium ion, and giving an α particle and a neutron. The proposed algorithm is validated with
the use of explicit solutions of the kinetic model obtained by replacing the fusion cross-section by
a Maxwellian cross section.

Résumé
On propose et on justifie un algorithme de type Monte-Carlo permettant de résoudre un modèle
cinétique homogène en espace de type Boltzmann modélisant la réaction de fusion entre un ion
deutérium et un ion tritium, et donnant une particule α et un neutron. L’algorithme proposé
est par ailleurs validé via des solutions explicites du modèle cinétique obtenues en remplaçant la
section efficace de fusion par une section efficace maxwellienne.

Introduction
One of the goals of the futur International Thermonuclear Experimental Reactor is to obtain fusion
reactions between two isotopes of hydrogen in a confined plasma. We study here one of the possible
reaction: T(d,n)4 He, between Deuterium (D) and Tritium (T ) ions producing an α particle and a
neutron (n) with the following scheme:

D + T → α + n + 17, 59 MeV.

When two particles of Deuterium and Tritium fuse, they disappear and produce an α particule and
a neutron with a mass default ∆M . According to Einstein’s law, the energy produced by this mass

1
is Q := ∆M c2 = 17, 59 MeV (where c is the light speed). Here we assume that this energy is fully
converted into kinetic energy. The very energetical α particles produced have a significant role in
ITER: they take part in the heating of the plasma, contribute to the evolution of the electrical field
and can cause instabilities. For these reasons, the study of their trajectories and their interactions with
other species is an important point for the comprehension of instabilities in a fusion plasma. In [5] for
example, the α particles current drive and heating is studied, using an expression of the fusion reaction
rate τ which is the rate of α particles produced per unit volume per second (see §1.2). However, in areas
where the plasma may not be at thermodynamical equilibrium, it is more appropriated – in particular
because classical expressions of the nuclear fusion rate are not true – to use a kinetic modelling and
to compute the velocities distribution of the α particles. In [3], Dellacherie and Sentis introduced a
kinetic model to describe nuclear collisions. In a spatially homogeneous context, the model writes:
 ∂f
 D

 = −PD (fD , fT ), (a)

 ∂t





 ∂fT

 = −PT (fD , fT ), (b)
 ∂t
(1)

 ∂fα

 = Gα (fD , fT ), (c)



 ∂t





 ∂fn = Gn (fD , fT ), (d)
∂t
where fa : R+ × R3 7→ R+ is a non negative function, for a ∈ {D, T, α, n} ; fa (t, va ) corresponds
to the number densities 1 in ions Deuterium, ions Tritium, neutrons, and α particles respectively at
time t ∈ R+ at velocity va ∈ R3 . In (1), operators Pa (fD , fT ), a ∈ {D, T } are loss operators, which
modelize the disappearing of a D or T particle after a collision, wheras Ga (fD , fT ), a ∈ {α, n} are gain
operators, corresponding to the creation of a neutron or an α particle. An asymptotic analysis of the
gain operator when the energy of the reaction Q → +∞ is also performed, and leads to an approched
model where the gain operators are substituted by Dirac masses on S2 .
We propose here a random particle method simulation of the model (1), and we compare this
last model with another model obtained as a limit when the ratio between the kinetic temperature
of the plasma and Q tends to 0. The paper is organized as follows. In the first Section, we present
the collision model introduced by Dellacherie and Sentis in [3] and the asymptotic model. We also
establish expression of explicite solutions in the case of a Maxwellian cross-section of collision. In the
second Section, we present the numerical method we developped to solve the model (1). This method
is based on a Monte-Carlo simulation of the loss and Gain operators, and is close from the Nanbu’s
method for Boltzman operator. The third Section is devoted to numerical results. First, we validate
our algorithm thanks to explicit solutions obtained in the case of the Maxwellian cross-section. Then,
we present the numerical simulation of model (1) with the fusion cross-section. Finally, we investigate
the behaviour of the function density in energy of α particles when the kinetic temperature of the
plasma decreases, in order to discuss the oportunity of using an asymptotic model.

1 Kinetic modeling of D-T fusion reaction


1.1 Collision operators
The model established in [3] is based on the following hypothesis:
– the energy corresponding to the mass default Q = ∆M c2 is totally converted into kinetic energy
on α particles and neutron,
– we neglect the mass default ∆M with respect to the masses of particles which means that we
assume that
mD + mT = mα + mn (2)
1. fa (t, va ) is in s3 ·m−3

2
where mD , mT , mα and mn are the masses of ions Deuterium, Tritium, α and of a neutron
respectively,
– the momentum is conserved during a collision.
Consequently, the momentum conservation and the energy balances write
m D v D + m T v T = m α v α + mn v n , (a)
2
(3)
mD v D + mT vT2 + 2Q = mα vα2 + mn vn2 . (b)
Let us define the following notations:
mD mT mα mn p
µDT = , µα n = , ζ= 2Q/µαn . (4)
mD + mT m α + mn
From (3), we deduce that there exists Ω ∈ S2 such that the velocities of the created particles vα and
vn write
r
mD vD + mT vT µαn µDT
vα = vα (vD , vT , Ω) = +Ω ζ2 + |vD − vT |2 , (a)
m D + mT mα µαn
r (5)
mD vD + mT vT µαn µDT
vn = vα (vD , vT , Ω) = −Ω ζ2 + |vD − vT |2 . (b)
m D + mT mn µαn
It is then possible to derive the expression of the loss and gain operators. The loss operator PD writes
(we have a similar expression for PT ):
ˆ ˆ
PD (fD , fT )(vD ) = fD (vD ) fT (vT )q(|vD − vT |, Ω)dvT dΩ, (6)
R3 S2

and the gain operator Gα writes on a weak form 2 (we have a similar expression for Gn ):
ˆ ˆ ˆ ˆ
Gα (fD , fT )(vα )ϕ(vα )dvD = fD (vD )fT (vT )ϕ(vα )q(|vD − vT |, Ω)dvD dvT dΩ, (7)
R3 R3 R3 S2

where vα depends on vD , vT and Ω through (5). The collision kernel q is here isotrope – that is
q(|vD − vT |, Ω) = q(|vD − vT |) – and is defined by
q(|vD − vT |) = |vD − vT |σ(|vD − vT |),
where σ(|vD − vT |) is called the collision cross-section. We will here consider two types of collision
cross-section:
– the nuclear cross-section which has the following form 3
p5 + p2 /[(p4 − p3 E)2 + 1]
σf (|vD − vT |) = √ (8)
E[exp(p1 / E) − 1]
where E = 12 mD |vD − vT |2 and pi ∈ R+ are the Duane coefficients [4, 8],
– the Maxwellian cross-section 4 given by
λ
σm (|vD − vT |) = (9)
4π|vD − vT |
where λ is a constant (in m3 ·s−1 ). Thus, we have q(|vD − vT |) = λ/4π. We use this cross-section
to obtain explicit solutions which enables us to validate the numerical method.
Remark 1. It should be possible to prove the existence and uniqueneess of non-negative solutions
of (1) with initial conditions with appropriated assumptions on q and on the initial condition in
the same spirit as in [2]. However, we do not study this problem here and we assume that the
moments of order 0, 1 and 2 in velocity of the density functions fa (a ∈ {D, T, α, n}) are well
defined.
2. It is also possible to obtain an expression of Gα on a strong form [3] but we do not need it here.
3. Other expressions of fusion cross-section could be found, such the one of [11].
4. The Maxwellian cross-section, which corresponds to the cross-section of the model of ”Maxwellian molecules” for
Boltzman operator, should be considered as a theoretical model. However, it is widely used in kinetic theory (see [14])
to perform many explicit calculations.

3
Figure 1: Cross-section σf (in Barns, 1 Barn=10−28 m2 ) according to E (in keV) in log-log scale.

1.2 Definition of some physical quantities


We define here some physical quantities used in the following. For each species a ∈ {D, T, α, n}, we
define the number density ρa (without unit), the macroscopic velocity ua (in m·s−1 ) and the kinetic
temperature θa (here in Joules 5 ) with


 ρa (t) = hfa (t, ·)i,


 1
ua (t) = hfa (t, ·)vi if ρa (t) > 0, (10)
 ρa

 m

 θa (t) = a
hfa (t, ·)(v − ua )2 i if ρa (t) > 0,
3ρa

where hgi represents the average in velocity of a function g ∈ L1v , that is R3 g(v)dv. We also define
´

the fusion reaction rate which corresponds to the number of particles α (or of neutrons) created per
unit of volum and of time:
ˆ ˆ ˆ
τ (t) = τ (fD , fT )(t) := fD (t, vD )fT (t, vT )q(|vD − vT |, Ω)dΩdvT dvD , (11)
R3 R3 S2

the total momentum W :

W (t) = mD ρD uD + mT ρT uT + mα ρα uα + mn ρn un , (12)

and the total kinetic energy Etot :


2
2Etot (t) = mD hfD (t, vD )vD i + mT hfT (t, vT )vT2 i + mα hfα (t, vα )vα2 i + mn hfn (t, vn )vn2 i. (13)

Let us underline that τ corresponds to hPa (fD , fT )i (a ∈ {D, T }) and to hGa (fD , fT )i (a ∈ {α, n}).
Moreover if fa , a ∈ {D, T, α, n} are solutions of (1) then, thanks to relation (3), we have:

 d d d d

 τ = − ρD = − ρT = ρα = ρn , (a)

 dt dt dt dt

dW
= 0, (b) (14)

 dt



 dEtot = Qτ (t). (c)
dt
5. We can also define in Kelvin the temperature Ta of the particles of type a by using the relation θa = kB Ta where
kB = 1.3806 · 10−23 J·K−1 is the Boltzmann constant.

4
1.3 An asymptotic model
p
Let us introduce the thermal velocities Vath := 2θa /ma (a ∈ {D, T }), Vpth = max(VDth , VTth ) and
Vpth
ε= . (15)
ζ
For θD = θT = 10 keV 6 (which corresponds to a temperature in K of TD = θD /kB = 1.16 · 108 K,
which is the classical order of magnitude of the temperature in a Tokamak plasma), we have ε = 0.015.
In this situation, we see in (5) that, formally, we have
µαn µαn
|vα | ≈ Vα := ζ and |vn | ≈ Vn := ζ.
mα mn
Then, the velocities of created particles α and n are very close to the standard creation velocities Vα
and Vn , which correspond to the well-know values of energy

 1 2
 Eα = mα Vα = 3.52 MeV,
2 (16)
 En = 1 mn Vn 2 = 14.08 MeV.

2
More precisely, one can prove that if q ∈ L∞ (R), fD and fT are in L1 (R3 ; (1 + |v|2 )dv), the term
Ga (fD , fT ) 1
(a ∈ {α, n}) converges weakly in the sens of measures to the Dirac mass on S2 4π δa
hGa (fD , fT )i
defined by ˆ ˆ
ϕ(v)δa (v)dv = ϕ(Va Ω)dΩ, ∀ϕ ∈ C(R3 ). (17)
R3 S2
When ε ≪ 1 in (1), we can therefore consider an approached model by replacing the gain operator Ga
by its weak limit, which gives

 ∂fD

 = −PD (fD , fT ), (a)

 ∂t



 ∂fT = −PT (fD , fT ),

 (b)
 ∂t
∂fα 1 (18)

 = τ (f , f ) δ , (c)

 D T α

 ∂t 4π



 ∂f n 1

 ∂t = τ (fD , fT ) δn , (d)

where τ (fD , fT ) is defined by (11).


Remark 2. On the contrary of model (1), density functions solutions of model (18) does not verify
equations (14)(b,c).

1.4 Explicit solutions in the case of a Maxwellian cross-section


Proposition 1. We consider the system (1) with the following initial conditions
ini
fD (0, v) = fD (v) ≥ 0, fT (0, v) = fTini (v) ≥ 0, fα (0, v) = 0, fn (0, v) = 0, (19)
where the cross-section σ in the operators PD , PT , Gα and Gn is given by the Maxwellian cross-section
σm (9). When 0 < ρD (0) = ρT (0) =: ρini (where ρD and ρT are defined by (10)), fD and fT are given
by  ini

 fD (vD )

 f D (t, v D ) = ,
λρ t + 1
ini
(20)

 fTini (vT )

 Tf (t, v T ) =
λρini t + 1
6. 1 keV=1.602 · 10−16 J

5
and fα and fn are given by the weak forms
λ(ρini )2 t ini
hfα (t, ·)ϕi = Rα (fD , fTini )(ϕ),
λρini t + 1
(21)
λ(ρini )2 t ini
hfn (t, ·)ϕi = ini Rn (fD , fTini )(ϕ),
λρ t + 1
for all ϕ such that hfa ϕi (a ∈ {α, n}) is well defined, Ra (a ∈ {α, n})) being given by
1
ˆ ˆ ˆ
ini ini
Ra (fD , fT )(ϕ) = f ini (vD )fTini (vT )ϕ(va )dvD dvT dΩ, a ∈ {α, n}, (22)
4π(ρini )2 R3 R3 S2 D
where va = va (vD , vT , Ω) is given by (5).
We deduce from Proposition 1 that the fusion reaction rate τ is given by
λ(ρini )2
τ (t) = , (23)
(λρini t + 1)2
that the number densities are given by
ρini λ(ρini )2 t
ρD (t) = ρT (t) = , ρα (t) = ρn (t) = for t ≥ 0, (24)
λρini t + 1 λρini t + 1
that the macroscopic velocities are given by
ini
uD (t) = uD (0), uT (t) = uT (0), ua (t) = Ra (fD , fTini )(1 7→ v) for t > 0, a ∈ {α, n}, (25)

and that the kinetic temperatures are given by


ma ini
θD (t) = θD (0), θT (t) = θT (0), θa (t) =
Ra (fD , fTini )(1 7→ (v − ua )2 ) for t > 0, a ∈ {α, n}.
3
(26)
Let us remark that the time (λρini )−1 defines an order of magnitude of the scale of time of the fusion
reaction. Moreover, we have lim ρD (t) = lim ρD (t) = 0 and lim ρα (t) = lim ρn (t) = ρini .
t→+∞ t→+∞ t→+∞ t→+∞

We can also obtain explicit solution in the case of model (18).


Proposition 2. We consider system (18) with initial conditions (19) where the cross-section σ in the
operators PD , PT is given by the Maxwellian cross-section σm (9). Then, fα and fn are given by

λ(ρini )2 t δa (va )
fa (t, va ) = · , a ∈ {α, n}, (27)
λρini t + 1 4π
and the macroscopic quantities are given by:
λ(ρini )2 t
ρα (t) = ρn (t) = for t ≥ 0, (28)
λρini t + 1
mα 2 mn 2
uα (t) = un (t) = 0, θα (t) = Vα , θn (t) = Vn for t > 0. (29)
3 3

2 Numerical method
The numerical resolution of systems (1) and (18) is based on a particle method coupled to a Monte-
ini
Carlo simulation of fusion operators, like in Nanbu’s method [9, 12, 13]. The initial densities fD and
ini
fT are approached by the linear combination of Dirac masses
0
Na
X
faini (v) ≈ fa0 (v) := 0
ωa,k δ(v − Va,k ) for a ∈ {D, T }, (30)
k=1

6
which corresponds to represent the distribution of particles of species a by Na0 numerical particles
0
having a numerical weight ωa,k and a velocity Va,k . In order to use a symetrical method, we choose
the same numerical weight ωa,k for all numerical particles and for both species D and T . The number
0
ND being fixed, we then take
ρini ρini
ω = D0 and NT0 = T . (31)
ND ω
0
The velocities Va,k of numerical particles are computed thanks to a Monte-Carlo method following the
initial density of probability faini /ρini
a . The derivative in time is approched by an explicit Euler scheme,
and the computation of gain and loss operators is based on a Monte-Carlo simulation. Moreover,
the initial densities fαini and fnini are supposed to be equal to zero. Finally, the densities fan (a ∈
{D, T, α, n}) at any time tn are given by
n
Na
X
fan (v) =ω n
δ(v − Va,i ) for a ∈ {D, T, α, n} (32)
i=1

where Nan and (Va,i


n
){1≤i≤Nan } are deduced from the Monte-Carlo simulation. In the sequel, we detail
the Monte-Carlo algorithm, firstly, for any cross-section such that q ∈ L∞ (R+ ) (the fusion cross-section
given by (8) – see also Figure 1 – satifies q ∈ L∞ (R+ )) and, secondly, for a Maxwellian cross-section
(9). We only present the algorithm for the densities fD and fα , the principle being the same for fT
and fn .

2.1 Fusion cross-section


2.1.1 Other expressions of PD (fD , fT ) and Gα (fD , fT )
n
The computation of the terms Pa (fD , fTn )(v) and Ga (fD
n
, fTn )(v) with a fusion cross-section is based
on the following propositions (see Annex A for the proofs):

Proposition 3. Let ϕ be a test function (for example ϕ ∈ Cc (R3 )) and let PD be the loss operator
given by (6) where the collision kernel q is in L∞ (R+ ). Let qmax be an upper bound of q. We set
n
Na
X
fan (v) =ω n
δ(v − Va,i ) for a ∈ {D, T }.
i=1

We assume that
 
n+1 n 1 1 1
∆t := t −t ≤ min , n , with λmax = 4πqmax . (33)
λmax ω NTn ND

Then, we have
n
N
ω XX
ˆ ˆ 1
n
∆t ϕ(v)PD (fD , fTn )(v)dv =η n n
ϕ(VD,r ) 1{0≤u≤pnr ,s } du (34)
R3 ♯P k
0
k k
P k=1

where  n n n
 N = ⌊ND NT ω∆tλmax ⌋,




 n N n N n ω∆tλmax
η = D T n , (35)
 N

 n n

 q(|VD,r − VT,s |)
 pn = k k
,
rk ,sk
qmax
and P is the set of possible ways to make N n distinct pairs (rk , sk ){1≤k≤N n } among {1, . . . , ND
n

{1, . . . , NTn }.

7
Proposition 4. Let Gα be the gain operator defined by (7). Under assumptions of Proposition 3, we
have
n
N ˆ ˆ 1
ω XX dΩ
ˆ
n
∆t ϕ(v)Gα (fD , fTn )(v)dv =η n n
ϕ(Vα,r k ,sk ,Ω
)1{0≤u≤pnr ,s } du (36)
R3 ♯P S2 0
k k 4π
P k=1

n n n
where Vα,r k ,sk ,Ω
= vα (VD,r k
, VT,s k
, Ω) is given by formula (5)(a).

Let us note that, typically, N n is of the order of 103 . Thus, we can approximate η n with 1.

2.1.2 Monte-Carlo approximation


The terms that we have obtained are then computed by a Monte-Carlo procedure. More precisely,
we approach
n n
N N
ω XX X
ˆ 1
n n
ϕ(VD,rk ) 1{0≤u≤pnr ,s } du by ω ϕ(VD,r )1{0≤uk ≤pnr } (37)
♯P 0
k k k k ,sk
P k=1 k=1

and
n n
N ˆ ˆ 1 N
ω XX n dΩ X
n
ϕ(Vα,r k ,sk ,Ω
)1{0≤u≤pnr ,s } du by ω ϕ(Vα,r k ,sk ,Ωk
)1{0≤uk ≤pnr } (38)
♯P S2 0
k k 4π k ,sk
P k=1 k=1

where the set of pairs (rk , sk ){1≤k≤N n } is chosen randomly among P with an uniform law, uk is
randomly computed with an uniform law on [0, 1] and Ωk is randomly computed with an uniform law
on S2 . Let us denote Pf f
D and Gα the approximated operators PD and Gα that we obtain by using
respectively approximations (37) and (38), which means that (by approximating η n with 1)
 Nn


ˆ X


 ∆t ϕ(v)Pf n n
D (fD , fT )(v)dv = ω
n
ϕ(VD,r )1{0≤uk ≤pnr ,s } , (a)

 R 3
k k k
k=1
(39)

 Nn


ˆ X

 fα (f n , f n )(v)dv = ω n
 ∆t ϕ(v)G D T ϕ(Vα,r k ,sk ,Ωk
)1{0≤uk ≤pnr ,s } . (b)
k k
R3 k=1

n
Moreover, we use an explicit Euler scheme for the time discretization of equations (1). Then, if fD
n n n n n+1
and fα are the approximation at time t of the exact densities fD (t , ·) and fα (t , ·), we define fD
and fαn+1 by 
 fD n+1 n
= fD − ∆tPf n n
D (fD , fT ), (a)
(40)
 n+1 fα (fD
fα = fαn + ∆tG n
, fTn ). (b)
Thus, by using (32), (39)(a) and (40)(a), we obtain
n n
ND N
ˆ X X
n+1 n n
ϕ(v) fD (v)dv =ω ϕ(VD,i ) −ω ϕ(VD,r k
)1{0≤uk ≤pnr }
k ,sk
R3 i=1 k=1
n
ND
X X
n n
=ω ϕ(VD,i )−ω ϕ(VD,r k
)
i=1 k∈A
X
n
=ω ϕ(VD,r k
)
n }\A
k∈{1,...,ND

where we set
n+1
A = {k ∈ {1, . . . , N n }/ 0 ≤ uk ≤ pnrk ,sk } and ND n
= ♯({1, . . . , ND } \ A). (41)

8
n+1
ND
ˆ X
n+1 n+1
Thus, we have ϕ(v) fD (v)dv =ω ϕ(VD,i ) that is to say
R3 i=1

Nan+1
X
n+1 n+1
fD (v) =ω δ(v − Va,i )
i=1

n+1 n+1 n n
where {VD,1 , . . . , VD,N n+1 } is the set of velocities obtained when we remove {VD,r1 , . . . , VD,r n } from
N
D
n n
{VD,1 , . . . , VD,N n }. In the same way, we deduce from (32), (39)(b) and (40)(b) that
D

n n
Nα N
ˆ X X
ϕ(v) fαn+1 (v)dv =ω ϕ(Vαn ) +ω n
ϕ(Vα,r k ,sk ,Ωk
)1{0≤uk ≤pnr }
k ,sk
R3 i=1 k=1
n+1

X
n+1
=ω ϕ(Vα,i )
i=1

that is to say
n+1

X
n+1
fαn+1 (v) =ω δ(v − Vα,k )
k=1

where
Nαn+1 = Nαn + ♯A
and 
n+1 n
 Vα,i = Vα,i if 1 ≤ i ≤ Nαn ,
 {V n+1 , N n < i ≤ N n+1 } = {V n
α,i α α α,rk ,sk ,Ωk , k ∈ A}.

2.1.3 Algorithm
We therefore deduce the following algorithm:
Algorithm 1. Random Particle method for the model (1) with a fusion cross-section.

At time step tn , we perform the following operations:

i) We compute N n = ⌊ND n n
NT ω∆tλmax ⌋. The times step ∆t = tn+1 −tn (which could depend of n) is
such that condition (33) is satisfied. Thus, N n is smaller than ND
n
and NTn . If N n ≪ min(ND
n
, NTn ),
one can increase ∆t.

ii) We select successively N n distinct numerical particles of D (respectively of T ) the k th particle


n
being randomly chosen with an uniform discret law among the ND −k +1 (respectively NTn −k +1)
remaining particles. This corresponds to draw the pairs (rk , sk )k∈{1,...,N n } with an uniform law
among the ♯P possible set of N n pairs.

iii) For each of the N n pairs of velocities (VD,rk , VT,sk ), we draw uk following an uniform law on [0, 1]
and we compute the term
q(VD,rk − VT,sk )
prk ,sk = ,
qmax
where q(ξ) = |ξ|σf (|ξ|), σf being given by (8). If prk ,sk > uk , the two particles of velocities VD,rk
and VT,sk interact (in other word, we have k ∈ A, where A is defined by (41)).

9
iv) For each pair of interacting particles (that is to say for each k ∈ A), we draw 7 Ωk with an uniform
law on S2 , and Vα,rk ,sk ,Ωk and Vn,rk ,sk ,Ωk are computed thanks to formulae (5).

v) The ♯A pairs of interacting numerical particles of D and T are removed, and ♯A pairs of particles of
α and n particles are created with the previous velocities Vα,rk ,sk ,Ωk and Vn,rk ,sk ,Ωk , 1 ≤ k ≤ N n .
The velocities of other particles remain unchanged.
Remark 3. Since a numerical fusion reaction represents ω real fusion reaction, the total number of
Nn
X
fusion reactions during a time step ∆t is ω 1{0≤uk ≤prk ,sk } which corresponds to a Monte-Carlo
k=1
approximation of
n n n
N ˆ ND NT
ω XX 1 Nn X X q(VD,i
n n
, VT,j )
1{0≤u≤prk ,sk } du = n n ω
♯P 0 ND NT i=1 i=1 qmax
P k=1
n n
ND NT
ηn N n X X q(VD,i n n
, VT,j )
≃ n n ω (since η n ≃ 1)
ND NT i=1 i=1 qmax
ˆ ˆ
n
= 4π∆t fD (vD )fTn (vT )q([vD − vT |)dvD dvT
R3 R3
= ∆t τ (fD , fTn )
n
≃ ∆ tτ (tn ),

where τ (tn ) is the exact fusion reaction rate given by (11) at time tn .
Remark 4. Algorithm 1 preserves exactly the total number of particles and the total momentum W .
n+1 n n
Moreover, the total energy verifies Etot = Etot + Q∆t τ (fD , fTn ). In other words, (14) is satisfied at
the discrete level.

2.2 Maxwellian cross-section


The numerical method introduced in §2.1 for any cross-section can be simplified for a Maxwellian
λ
cross-section. Indeed, by taking qmax = q = 4π , we have pi,j = 1 for all couple of velocity (VD,i , VT,j ),
and then 1{0≤uk ≤prk ,sk } = 1 for all k ∈ {1, . . . , N n }. Consequently, there is no need to draw uk .
n
Thus, denoting fD and fαn the approximation of the exact density fD (tn , ·) and fα (tn , ·) at time tn ,
n+1
we approach the exact densities at time tn+1 by fD and fαn+1 with
n+1 n+1
ND Nα
X X
n+1 n+1 n+1
fD (v) =ω δ(v − VD,k ), fαn+1 (v) =ω δ(v − Vα,k ) (42)
k=1 k=1

n+1 n+1 n n
where {VD,1 , . . . , VD,N n+1 } is the set of velocities obtained when we remove {VD,r1 , . . . , VD,r n } from
N
D
n n n+1
{VD,1 , . . . , VD,N n }, Nα = Nαn + N n and
D


n+1 n
 Vα,k = Vα,k for 1 ≤ k ≤ Nαn
 V n+1n n
= Vα,r for 1 ≤ k ≤ N n .
α,N +kα k ,sk ,Ωk

This leads to the following simplified algorithm:


Algorithm 2. Random Particle method for the model (1) with Maxwellian cross-section:

At time step tn , the steps (i) and (ii) are the same as in Algorithm 1. Steps (iii)–(v) are replaced by:

q
7. We can set Ωk = (ak cos(2πǫk ), ak sin(2πǫk ), bk ) with bk = 1 − 2uk , ak = 1 − b2k , uk and ǫk being computed
following an uniform law on [0, 1].

10
iv) For each of the N n pairs of velocities (VD,rk , VT,sk ) selected, we compute Ωk with an uniform law
on S2 , and Vα,rk ,sk ,Ωk and Vn,rk ,sk ,Ωk are computed thanks to formulae (5).

v) The N n selected pairs of numerical particles of D and T are removed, and N n pairs of α and n
particles are created with the previous velocities Vα,rk ,sk ,Ωk and Vn,rk ,sk ,Ωk , 1 ≤ k ≤ N n . The
velocities of other particles remain the same.

2.3 Asymptotic model


We now consider the system (18) with a collision cross-section q ∈ L∞ in the operators Pa (fD , dT )
(a ∈ {D, T }). This system is an approximation of system (1). The numerical resolution of equations
(18)(a,b) does not change since (18)(a,b) and (1)(a,b) are identical. For the resolution of (18)(c,d),
we write thanks to definition (17) of δa the equation on fa (a ∈ {α, n}) on the following weak form:

d dΩ
ˆ
hfa (t, ·)ϕi = τ (fD , fT )(t) ϕ(Va Ω) . (43)
dt S2 4π

Similar computations to those of Proposition 4 show that under condition (33) on the time step ∆t,
we can approach by a Monte-Carlo procedure
n
N
X
dΩ
ˆ
n
∆t τ (fD , fTn ) ϕ(Va Ω) by ηn ω ϕ(Va Ωk )1{0≤uk ≤prk ,sk }
S2 4π
k=1

where uk , rk , sk are the random variables drawn for the numerical simulation of equation (1)(a,b)
(steps (ii) and (iii) of Algorithm 1), and where (Ωk )k∈{1,...,N n } are drawn following an uniform law on
S2 . Thus, by applying as previously an Euler scheme for the time discretization, we obtain (by using
the fact that η n ≃ 1)
Nn
X
n+1 n
hfa ϕi = hfa ϕi + ω ϕ(Va Ωk )1{0≤uk ≤prk ,sk } . (44)
k=1

Finally, we obtain
Nan+1
X
n+1
fan+1 (v) =ω δ(v − Va,k ) for a ∈ {α, n}
k=1

with Nan+1 = Nan + ♯A and



n+1 n
 Va,i = Va,i for 1 ≤ i ≤ Nan ,
 {V n+1 , N n < i ≤ N n+1 } = {V Ω , k ∈ A},
a,i a a a k

A being defined by (41). This leads to the following simplified algorithm:

Algorithm 3. Random Particle method for the model (18) with fusion cross-section.

At time step tn , steps (i) and (iii) are the same as in Algorithm 1. Steps (iv)–(v) are replaced by:

iv) The ♯A pairs of interacting numerical particles of D and T are removed. The velocities of other
particles of species D and T remain the same.

v) We draw ♯A vectors of S2 Ω1 , . . . Ω♯A uniformly on S2 , and ♯A pairs of particles of α and n are


created with velocities {Va Ωk , k ∈ A}. The velocities of other particles α and n remain the same.

Remark 5. We can easily adapt Algorithm 3 for a Maxwellian cross-section: the step (iii) is removed,
and we replace ♯A by N n in steps (iv) and (v).

11
Remark 6. We see that the model (18) is as costely to compute as model (1), and therefore does not
present any numerical interest. However, if we are only interested in the evolution of fα and f n, we
can introduce the following model
 ∂f 1
 α
 = τ (t) δα ,
∂t 4π
(45)

 ∂fn = 1 τ (t) δ
n
∂t 4π
where τ (t) is a given fusion reaction rate. Then, at each time step, we only need to compute the step
∆t τ (tn )
(v) of Algorithm 3 (with ⌊ ⌋, ω being the numerical weight we choose for numerical particles,
ω
instead of ♯A). The numerical cost is lower than the one of Algorithm 3.

3 Numerical results
We now present results obtained with a code (3 dimensionnal in velocity) developped following
methods proposed in Section 2 to solve model (1) with initial condition (19). The initial density
ini
functions fD (v) and fTini (v) are Maxwellian distributions of density ρini ini
a , velocity ua and temperature
θaini that is to say  
ρini
a |v − uini
a |
2
faini (v) = exp − , a ∈ {D, T }. (46)
(2πθaini )3/2 2θaini
We use the physical values given in Table 1 and the values of numerical parameters given in Table 3.
Moreover, the initial density functions fαini (v) and fnini (v) are equal to zero. The initial time step ∆t0
is chosen in such a way condition (33) is satisfied for the proposed test-cases.

mD mT mα mn Q
(kg) (kg) (kg) (kg) (MeV)

3.34 · 10−27 5.01 · 10−27 6.68 · 10−27 1.67 · 10−27 17.59

Table 1: Physical constants.

ρini
D ρini
T
ini
θD θTini uini
D uini
T
0
ND ∆t0
(keV) (keV) (m·s−1 ) (m·s−1 ) (s)

1020 1020 15 20 0 0 104 10−1

Table 2: Initial values of macroscopic quantities and initial numerical parameters.

3.1 Validation with a Maxwellian cross-section


We first validate the numerical method proposed in §2.2 for a Maxwellian cross-section (9), with
λ = 10−21 m3 ·s−1 , thanks to the explicit time evolution of macroscopic quantities obtained in §1.4.
We can see on Figure 2 that the evolution of the number densities of all species are very close to the
one of the explicit solution (24).

12
Figure 2: Time evolution of number densities ρa , a ∈ {D, T, α, n}: comparison between the numerical
solutions obtained by Algorithm 2 and explicit solutions given by expressions (24).

h h
Figure 3 presents the density functions fD,1 and fT,1 of the first component of the velocity of D and
T ions at different times. The density functions are reconstruted from the values of the velocities of
numerical particles with a convolution with a B-splines of order 3 like in [15]:
n
Na
h,n n
ˆ X

fa,1 (t , v) = (S3,h ∗ n
fa,1 )(v) = S3,h (v − v n
)fa,1 (v ′ )dv ′ = n
ωS3 (v − Vi,a ),
R3 i=1

where  
 x 3

 2− if h ≤ |x| < 2h,
 h
1  
S3,h (x) = x 2  x 3
6h 
 4 − 6 + 3 if 0 ≤ |x| < h,

 h h

0 otherwise.
We can observe that if initialy fa,x (a ∈ {D, T }) is a Maxwellian distribution, it seems that it remains
a Maxwellian distributions at t > 0 which is in agrement with (20). Moreover, Figure (4) shows that

Figure 3: Reconstructed density functions of the first component of the velocity of Deuterium and
Tritium ions at different instants in the case of the Maxwellian cross-section.

the kinetic temperatures of every species are constant as it is predicted by (26).

13
Figure 4: Time evolution of kinetic temperatures in the case of the Maxwellian cross-section.

3.2 Simulation with the fusion cross-section


We consider here the model (1) where the cross-section is a fusion cross-section σf given by (8)
with the values of Duane coefficients given by Table 3. Figure 5 presents the time evolution of the

p1 p2 p3 p4 p5
1/2 2 −1
( keV ) (m ) ( keV ) (m2 )

45.95 5.02 · 10−24 1.368 · 10−2 1.076 4.09 · 10−26

Table 3: Values of Duane coefficients in fusion cross-section σf (8).

number densities of D and T ions on one hand and of α particles and neutrons on the other hand, and
the evolution of the total energy of the plasma Etot .

Figure 5: Time evolution of number densities ρa , a ∈ {D, T, α, n} and of the total energy in the case
of the fusion cross-section.

Figure 6 presents the time evolution of kinetic temperatures (in keV) of the species. We observe
that the kinetic temperatures of D and T are not constant but are decreasing, contrary to the case
of the Maxwellian cross-section (compare with Figures 4). Moreover, if we compute the values of the
kinetic energy of α particles and of neutrons from kinetic temperatures Tα and Tn of Figure 6, we

14
Figure 6: Time evolution of kinetic temperatures in the case of the fusion cross-section.

obtain
3 3
Tα ≃ 3.5 MeV and Tn ≃ 14.1 MeV,
2 2
which are very close to standard values (16) of energy of α particles and neutrons.

Figures 7 and 8 present the reconstructed density functions respectively of the first component of
the velocity and of the energy of each species. Figure 7 shows that the density functions in velocity of
α and n are clearly not Maxwellian distributions. Figure 8 shows that the energy density functions of
α and n seem quite close to a Maxwellian distribution and are centered around the standard values (16).

Finally, we compare on Figure 9 the computed fusion reaction rate τ with explicit expression (23)
which corresponds to a Maxwellian cross-section. Since the parameter λ in (23) is not defined for
0
fusion cross-section (23), we compute it from the value τfusion of τ computed at t = 0 for the fusion
0 ini 2
cross-section: thus, we set λ = τfusion /(ρ ) . This explicit expression gives a quite good approximation
of the computed values of τ as we see on Figure 9. This expression should be compared to results of
computations of the fusion rate obtained in [6] or in [7].

3.3 On the opportunity to use the asymptotic model


We now discuss the opportunity to use the asymptotic model (18) instead of model (1). Figure 10
presents the reconstructed energy density function of α particles for different values of θ = min(θD , θT )
at time t = 107 s (at this time, almost every possible fusion reactions have been made and fα (t, v)
ini
is close to lim fα (t, v)). Initial conditions are again given by (19) with the initial density fD and
t→+∞
fTini given by (46) with parameters (3) except for the initial kinetic temperatures θD ini
and θTini . Indeed,
ini
we now take θD = θTini ∈ {5, 10, 15, 20} keV. We see that the sprawl of the distributions in energy
of α particles becomes smaller when θ decreases. This confirms at the discrete level that the energy
density functions of α becomes closer to a Dirac mass centered at energy Eα (given by (16)) when
the parameter ε defined by (15) tends to zero. We verify that this numerical result is also valid for
the neutrons (by replacing Eα with En ). Consequently, when the temperature of the plasma (that is
ini
to say θD and θTini ) is not too high, it seems to be valid to approach model (1) by (18). However, as
explained in Remark 6, the numerical cost of the resolution of model (18) is the same as the one of the
resolution of model (1) because of the calculus of the fusion reaction rate τ (t). Then, an interesting
possibility to compute evolution of α particles and neutrons could be to use (45) with the explicit
expression of (23) of τ (t) since Figure 9 shows that this expression – with an adequate value of λ – is
a good approximation of the fusion reaction rate. Nevertheless, we should make further investigations
to compare the evolution of the distributions in velocity of α particles and neutrons of model (45)
with model (1), in particular in the case of non Maxwellian initial Deuterium and Tritium distribution
densities.

15
Figure 7: Reconstruted density functions of the first component of the velocity for each species in the
case of the fusion cross-section.

Conclusion
We have proposed and justified a Monte-Carlo algorithm – adapted from a Monte-Carlo algorithm
for the Boltzmann equation – to resolve the homogeneous kinetic model (1) describing the nuclear
fusion reaction between a Deuterium ion and a Tritium ion and giving an α particle and a neutron.
We have also developed a spacially homogeneous code (3D in velocity) based on this Monte-Carlo
algorithm. We can thus obtain the evolution of the distributions in velocity, distributions in energy,
and macroscopic quantities of Deuterium and Tritium ions, α particles and neutrons starting from
initial density functions. The initial distributions used in the presented examples are only Maxwellian
distributions but we can also use other initial distributions such as a sum of Maxwellian distributions
with different densities, velocities and temperatures.

We validated the proposed Monte-Carlo algorithm thanks to the use of a Maxwellian cross-section
instead of the fusion cross-section. Indeed, the use of a Maxwellian cross-section allows to obtain
explicit solutions. Moreover, the numerical cost of our computations is very moderate: a few minutes
for a computation with physical and numerical parameters of Table 1 and pratically immediate if the
0
number of initial numerical particles ND is 103 instead of 104 . However, it could be interesting to
have a model less costly in order to use it in non-homogeneous simulations with thousands of cells.
If we are only interested in the evolution of α particles – because they are the ones who can trigger
instabilities in the plasma – and neutrons, a possibility could be to use asymptotic model (45) with an
explicit value of the fusion reaction rate τ (t). This method is already used as for example in [5]. Here,
we proposed to approach the fusion reaction rate τ (t) by using the explicit formula obtained when
the cross-section is a Maxwellian cross-section. Nevertheless, further investigations should be made to
validate this approach, especially when the plasma is not initially at the thermodynamical equilibrium.

16
Figure 8: Reconstruted energy density functions in the case of the fusion cross-section.

Figure 9: Comparison between the time evolution of the computed fusion rate τ in the case of fusion
cross-section and the explicit expression (23) of τ in the case of the Maxwellian cross-section.

Finally, we wish to underline that this study is a first step for the study of a more complet model
with feedback effect of α particles on Deuterium-Tritium plasma.

17
Figure 10: Reconstructed energy density function of α particles for different initial values of θ =
min(θD , θT ).

Acknowledgment
The autors would like to thank the financial support of the Large Scale Initiative FUSION of
INRIA.

Annex A: proof of Propositions 3 and 4


n
Proof. We use the fact that for every integer N ≤ min(ND , NTn ) and every function g : {1, . . . , ND
n

n
{1, . . . , NT } 7→ R, we have
n n
ND NT N
1 1 X X 1 1 XX
n Nn g(i, j) = g(rk , sk ),
ND T i=1 j=1 ♯P N
P k=1

n
where P is the set of possible ways to make N distinct pairs (rk , sk ){1≤k≤N } among {1, . . . , ND }×
n
{1, . . . , NT }. For each test function ϕ, we get

q(|vD − vT |)
ˆ ˆ ˆ
n n n
∆t ϕ(v)PD (fD , fT )(v)dv = ∆tλmax ϕ(vD )fD (vD )fTn (vT ) dvD dvT
R 3 R 3 R 3 qmax
n n
ND NT
X X
n
= ∆tλmax ω 2
ϕ(VD,i )pni,j
i=1 j=1
n
N
ωη XXn ˆ 1
n
= ϕ(VD,rk ) 1{0≤u≤pnr ,s } du,
♯P 0
k k
P k=1

where N n is defined by (35) and where we have set


n n
q(|VD,i − VT,j |)
pni,j = .
qmax

18
For the gain term, we have:

q(|vD − vT |) dΩ
ˆ ˆ ˆ ˆ
n n n
∆t ϕ(v)Gα (fD , fT )(v)dv = λmax ∆t ϕ(vα )fD (vD )fTn (vT ) dvD dvT
R3 S2 R3 R3 qmax 4π
n n
ND NT ˆ
X X dΩ
2 n
= λmax ∆tω ϕ(Vα,i,j,Ω )pi,j
i=1 j=1 S2 4π
n
N ˆ ˆ 1
ω ηn X X n dΩ
= ϕ(Vα,r k ,sk ,Ω
)1{0≤u≤pnr ,s } du .
♯P S 2 0
k k 4π
P k=1

References
[1] Bird, G.A. Molecular gas dynamics and the direct simulation of gas flows. Oxford University
Press (1994).
[2] Charles, F. Modélisation mathématiques et étude numérique d’un aérosol dans un gaz raréfié.
Application à la simulation du transport de particules de poussière en cas d’accident de pert de
vide dans ITER. PhD Thesis, École Normale Supérieure de Cachan, p. 69–115 (2009).
[3] Dellacherie, S. and Sentis, R. Nuclear Collisions Models with Boltzmann Operators. Mathematical
Models and Methods in Applied Sciences, 10, No 4, p. 479–506 (2000).
[4] Duane, B.H. Fusion cross-section theory. Rapport du Battelle Pacific Northwest Laboratory
(Université du Michigan), BNWL-1685 (1951).
[5] Farengo, R. and Zarco, M. and Ferrari, H.E. Simulation of alpha particle current drive and
heating in spherical tokamaks. Proceeding of 12th IAEA Technical Meeting on Energetic Particles
in Magnetic Confinement Systems(2011).
[6] Goncharov, P.R. Practical Calculation of Nuclear Fusion Power for a Toroidal Plasma Device with
Magnetic Confinement. Plasma and Fusion Research, J-STAGE, 5, No 0, p.1028–1028 (2010).
[7] Heltemes, T.A. and Moses, G.A. and Santarius, J.F. Analysis of an Improved Fusion Reaction
Rate Model for Use in Fusion Plasma Simulations. Technická zpráva, Duben, (2005).
[8] Huba, J.D. NRL plasma formulary. Naval Research Laboratory, p. 44–45 (1980).
[9] Lapeyre, B. and Pardoux, E. and Sentis, R. Méthodes de Monte-Carlo pour les équations de
transport et de diffusion. Springer (1998).
[10] Larroche, O. Kinetic simulation of a plasma collision experiment. Phys. Fluids B5, p. 2816–2840
(1993).
[11] Li, X.Z. and Liu, B. and Chen, S. and Wei, Q.M. and Hora, H. Fusion cross-sections for inertial
fusion energy. Laser and Particle Beams, Cambridge Univ Press 22, No 4, p. 469–477 (2004).
[12] Pareschi, L. and Russo, G. An introduction to Monte Carlo methods for the Boltzmann equation.
In ESAIM: Proceedings (1999).
[13] Perthame, B. Introduction to the theory of random particle methods for Boltzmann equation.
Technical Report 2218, INRIA (1994).
[14] Villani, C. A review of mathematical topics in collisional kinetic theory. Handbook of mathemat-
ical fluid dynamics, 1, p. 71–305 (2002).
[15] Wollman, S. On the approximation of the Vlasov-Poisson system by particle methods. SIAM J.
Numer. Anal., 37 p. 1369–1398 (2000).

19

Vous aimerez peut-être aussi