• Aucun résultat trouvé

3.5 Biodégradation

4.1.4 Conditions aux limites et gestion des puits d’injection et de production

Dans le code de calcul MATAABIO, plusieurs types de conditions à la limite ont été implémentés. Le premier type de conditions à la limite correspond aux conditions de Dirichlet. Ce sont les plus simples à prendre en compte. Elles consistent à imposer les valeurs des variables à la frontière du domaine. Le second type de condition à la limite correspond aux conditions de flux imposé à la frontière (condition de type Neumann).

Pour obtenir ce type de condition aux frontières, on intègre l’équation de conservation sur la première 1/2 maille afin d’obtenir une relation entre le flux imposé et la valeur des variables au point d’indice 2.

Il nous faudra prendre garde à bien choisir les conditions aux limites que nous utilisons, en particulier en ce qui concerne les conditions que nous imposons pour les variables liées aux écoulement diphasiques, c’est-à-dire la pression gaz et la saturation. Seules certaines combinaisons de conditions aux limites pour ces variables ont un sens. On peut alors décider de fixer :

1. Le débit de liquide. Dans ce cas il faut également fixer le débit de gaz entrant. En revanche, dans ce cas on ne peut pas fixer la pression de la phase gaz, car l’équation décrivant les transferts de la phase gaz dégénère et fixer la pression gaz n’a donc pas de sens.

2. Le débit de gaz. Dans ce cas on peut fixer soit la saturation résiduelle en liquide, soit le débit de liquide.

3. Des conditions de Dirichlet pour la pression gaz (pression atmosphérique par exemple), et pour la saturation.

En ce qui concerne les conditions aux limites utilisées pour les quantités transportées (fractions massiques et chaleur) on imposera principalement des conditions de Dirichlet ou des conditions de flux nul. Lorsque l’on injecte ponctuellement l’une des deux phases mobiles, on pourra imposer des conditions de Dirichlet sur les fractions massiques et la température afin de donner la composition et la température de la phase injectée.

D’autres conditions à la limite doivent être considérées. Ce sont les conditions liées à l’introduction dans le milieu des dispositifs d’injection de lixiviats. En règle générale, la dimension des mailles que nous utilisons pour résoudre le système d’équations aux dérivées partielles est de dimension très supérieure à la dimension des drains utilisés, dont le diamètre est de l’ordre de la dizaine de centimètres. Par conséquent, il ne nous est pas possible de prendre en compte les écoulements de fluide dans ces dispositifs. Pour pallier à ce problème, les industriels du secteur pétrolier ont développé des modèles que l’on appelle "modèles de puits" et qui permettent de relier le débit injecté en un nœud du maillage à la différence de pression entre le dispositif d’injection et le milieu poreux environnant. Ce type de relation a été introduit par Peaceman (1983) et est présenté par l’équation 4.5.

qw,i = −Tw,i(pw,i− pw,bhp) (4.5)

Dans la relation 4.5, qw,i représente le débit du puits w dans la maille i, Tw,i représente

la transmissivité autour du puits w, pw,i représente la pression de fluide dans la maille i

analytique proposée par Peaceman (1983). Dans cette relation, la transmissivité dépend à la fois des propriétés physiques du milieu poreux, des dimensions de la maille d’injection, ainsi que d’un facteur prenant en compte un effet de peau. En effet, la plupart des puits sont issus de forages. Lors de ces forages, la région proche du puits est modifiée dans sa structure. Par exemple, on peut retrouver des amas de particules fines introduites lors du forage ou bien au contraire une déformation du massif favorisant l’apparition de zone de porosité plus importante. Par conséquent, la perméabilité locale peut être diminuée ou augmentée. Cet effet est appelé effet de peau (skin), car il concerne une zone restreinte autour du puits. L’introduction d’un tel modèle consiste à considérer une zone de dimension finie autour du puits pour laquelle la perméabilité est changée. Le diamètre d’une telle zone peut être estimé à l’aide de tests de puits par exemple.

La relation proposée par Peaceman (1983) suppose des flux uniformes et un écoule- ment radial autour du puits. Ceci est valable lorsque les dimensions des mailles sont bien plus importantes que la dimension du système d’injection. Ceci n’est malheureusement pas le cas pour les simulations des ISD que nous réalisons. Néanmoins, les tubes utilisés pour injecter les lixiviats dans les ISD sont de longueur relativement restreinte au regard des tubes utilisés dans l’industrie pétrolière. La zone crépinée est elle aussi relativement restreinte (1 mètre environ), par conséquent la perte de charge entre l’entrée et la sortie de la zone crépinée peut être négligée. La pression dans le milieu poreux au voisinage du dis- positif d’injection peut également être considérée relativement uniforme. Par conséquent, nous pouvons simplifier le modèle de puits proposé par Peaceman (1983) et le remplacer par la relation 4.6.

qw,i = constante (4.6)

La relation 4.6 traduit le fait que la totalité du débit injecté est réparti de façon uniforme sur l’ensemble de la zone crépinée. Cette relation sera utilisée en première ap- proximation pour décrire l’injection de lixiviats dans les ISD bioréacteurs. Le traitement de ce type de condition à la limite consistera à introduire un terme source explicite dans les équations de transport.

4.1.5

Méthode de résolution du système

Résolution du système Le système que l’on obtient une fois l’ensemble des équations discrétisées (que ce soit en FIM ou en IMPSAT) est formé d’une matrice creuse de grande dimension. Une inversion directe de ce type de système peut s’avérer relativement coû- teuse en terme de temps de calcul. En effet, la méthode la plus classique d’inversion d’un système linéaire est la méthode d’élimination de Gauss. Cette méthode devient vite très coûteuse quand la dimension du système à résoudre est trop grande car elle ne permets pas

de prendre en compte de manière avantageuse le caractère creux de la matrice. On choisira donc une méthode de résolution du système linéaire en fonction du type de matrice que l’on obtient. En effet, la matrice pourra être caractérisée par sa structure (creuse, diago- nale, bande, matrice par blocs, triangulaire, etc...) ou par d’autres propriétés particulières (symétrique, définie positive, semi-définie positive, matrice de Hankel, de Vandermonde, etc...). Dans notre cas, la matrice est creuse et de dimension élevée. Elle comporte donc un nombre important de valeurs nulles. Une première étape consiste donc à stocker la matrice sous une forme plus adaptée, nous permettant de supprimer les valeurs nulles. Le stockage que nous choisissons est appelé C.S.R. (Compressed Sparse Row). Il permet de stocker la matrice creuse en trois vecteurs. Le premier de dimension NNZ (nombre de valeurs non nulles) stocke l’ensemble des valeurs non nulles de la matrice à inverser. Le second vecteur est de dimension NNZ et donne l’indice (j) de la colonne de l’élément aij

stocké dans le premier vecteur. Enfin, le troisième vecteur de dimension N+1 (nombre de colonne + 1) contient les pointeurs donnant l’indice de début des lignes réelles dans les deux précédents vecteurs. Il indiquera donc l’ensemble des indices des deux vecteurs précédents correspondant à un "saut" de ligne dans la matrice réelle. Cette méthode de stockage permet d’utiliser un espace mémoire limité.

Dans le cas des matrices creuses, les méthodes d’inversion directes effectuent un grand nombre d’opérations redondantes du fait qu’elles impliquent des coefficients de valeur nulle. Il est possible d’adapter les méthodes directes à la structure creuse du système, mais cela n’est pas trivial. Par conséquent, nous utiliserons des méthodes itératives de type BiGradient Conjuqué Stabilisé (BICGSTAB) ou GMRES. Ces méthodes itératives procèdent simplement à des produits matrice-vecteur, et il devient aisé de programmer ce produit de sorte à éviter des opérations redondantes impliquant des éléments nuls de la matrice. Ces méthodes sont relativement classiques et se basent sur une série d’approxi- mations de la solution (cf Saad (2000)). Leur efficacité dépend donc de la vitesse avec laquelle l’approximation converge vers la solution. Afin d’accélérer la convergence de ces méthodes, nous utilisons une méthode de préconditionnement de la matrice à inverser basée sur la factorisation LU incomplète. Ceci permet de restructurer la matrice avant de l’inverser afin de lui donner une structure plus favorable. Nous ne décrirons pas en détail l’ensemble de ces méthodes. Pour plus d’informations, on pourra se référer à l’ouvrage de Saad (2000). Nous utilisons la bibliothèque SPARSKIT2 pour mettre en oeuvre ces méthodes (Saad, 1994).

Résolution temporelle Du fait des non linéarités du système, nous avons linéarisé le système avant inversion et nous utilisons un algorithme de type "Picard" pour obtenir la solution du système au pas de temps n+1. D’autres méthodes sont très couramment

utilisées dans les outils de simulation numérique, en particulier l’algorithme de Newton- Raphson. Ces deux algorithmes itératifs (Picard et Newton-Raphson) utilisent le théorème du "point fixe" pour faire converger la solution du système. Dans le code de calcul MA- TAABIO, nous utilisons un algorithme de Picard. Ce type d’algorithme est extrêmement simple à mettre en oeuvre et est souvent plus robuste que l’algorithme de Newton-Raphson pour des performances équivalentes. Pour une comparaison des performances de ces deux types d’algorithmes dans le cas de problèmes d’écoulements diphasiques en milieu poreux, on pourra se référer aux travaux de Lehmann and Ackerer (1998).

Algorithme utilisé par le code calcul MATAABIO Finalement, l’algorithme uti-

lisé par le code de calcul MATAABIO est présenté sur la figure 4.2.

Cet algorithme est évolutif et le développement futur du code de calcul pourra nous amener à reconsidérer la structure des différentes étapes de l’algorithme.