Académique Documents
Professionnel Documents
Culture Documents
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
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
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
ix
Introduction
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,
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
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
• 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 .
5
6 CHAPITRE 1. CONTEXTUALISATION
2. www.synergile.fr
1.2. LA GÉOTHERMIE EN GUADELOUPE 7
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..
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
• de sa température T ;
• 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
0.8
fractions volumiques
0.6 xlV
xgV
xlM
0.4 xgM
0.2
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.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
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.
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}
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
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.
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
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).
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ϕ = .
µϕ
1.0
0.6
0.4
0.2
0.0
0.0 0.2 0.4 0.6 0.8 1.0
Saturation liquide
source :[15]
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.
−
→
∇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
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.
super critique
super critique
point critique
Point critique
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)
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.
• en milieu poreux, la loi de Darcy remplace la vitesse dans les équations de conser-
vation,
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}
−
→ −
→
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.
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}
33
34 CHAPITRE 3. DESCRIPTION DU MODÈLE DISCRET
∂p ∂h X −
→ −
→
Cep + Ceh −∇· hϕ ρϕ Mϕ ∇p − ρϕ · ~g = ∇ · (K ∇T ) + Qe (3.2)
∂t ∂t
ϕ∈{l,g}
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
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)
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
→ 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] :
δ 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}
y 0 + g(t, y) · y = f (t, y)
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
• 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σ .
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)
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}
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
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
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.
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
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)
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
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))
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
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)
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.
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
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
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
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.
350
325 3.3
temperature [C] (dashed line)
3.1
275
250
2.9
225
200 2.7
175
150 2.5
250 500 750 1000 1250 1500 1750
Distance [m]
475
0.8
Milieu gazeux
450
temperature [C] (dashed 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
475
0.8
450
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.
475
0.8 1e7
1.0
temperature [C] (dashed line)
450 500
Simulation apres : 722 jours --> 20000 jours Simulation apres : 26458 jours --> 160000 jours
900 35
30
850
25
densite [kg/m3]
densite [kg/m3]
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) (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
(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.
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
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.
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 :
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
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 :
• 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.
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
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.
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.
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.
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 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.
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
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…
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.
(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 peut-être identifié par les coordonnées entières de son centre
(i , j , k).
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
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
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].
FEHM 1500 FE X 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:
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.
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.
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 temperature T0 70 °C
permeability 2. 10-12 m2
porosity 0.1
186,776J. kg-1
Table 2: Parameters corresponding to geothermal exploitation of the Dogger aquifer [Lopez and al., 2010]
3
Copol, Laminie and Lopez
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.
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
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.
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.
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
W (t) = mD ρD uD + mT ρT uT + mα ρα uα + mn ρn un , (12)
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)
4π
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)
λ(ρ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
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.
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
Nα
X
n+1
=ω ϕ(Vα,i )
i=1
that is to say
n+1
Nα
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.
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.
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.
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
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.
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
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.
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)
ρini
D ρini
T
ini
θD θTini uini
D uini
T
0
ND ∆t0
(keV) (keV) (m·s−1 ) (m·s−1 ) (s)
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.
13
Figure 4: Time evolution of kinetic temperatures in the case of the Maxwellian cross-section.
p1 p2 p3 p4 p5
1/2 2 −1
( keV ) (m ) ( keV ) (m2 )
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].
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.
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
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