Note: When clicking on a Digital Object Identifier (DOI) number, you will be taken to an external site maintained by the publisher.
Some full text articles may not yet be available without a charge during the embargo (administrative interval).
What is a DOI Number?
Some links on this page may take you to nonfederal websites. Their policies may differ from this site.

Abstract We present simulations of twophase flow using the Rothman and Keller colour gradient Lattice Boltzmann method to study viscous fingering when a “red fluid” invades a porous model initially filled with a “blue” fluid with different viscosity. We conducted eleven suites of 81 numerical experiments totalling 891 simulations, where each suite had a different random realization of the porous model and spanned viscosity ratios in the range
and wetting angles in the range$$M\in [0.01,100]$$ $M\in [0.01,100]$ to allow us to study the effect of these parameters on the fluiddisplacement morphology and saturation at breakthrough (sweep). Although sweep often increased with wettability, this was not always so and the sweep phase space landscape, defined as the difference in saturation at a given wetting angle relative to saturation for the nonwetting case, had hills, ridges and valleys. At low viscosity ratios, flow at breakthrough is localized through narrow fingers that span the model. After breakthrough, the flow field continues to evolve and the saturation continues to increase albeit at a reduced rate, and eventually exceeds 90% for both nonwetting and wetting cases. The existence of a complicated sweep phase space at breakthrough, and continued postbreakthrough evolution suggests the hydrodynamics and sweep is a complicated function of wetting angle, viscosity ratio and time, which has major potential implications to Enhanced Oil Recovery by water flooding, and hence, on estimates of global oil reserves. Validation of these results via experiments is required to ensure they translate to field studies.$$\theta _w\in [180^\circ ,0^\circ ]$$ ${\theta}_{w}\in [{180}^{\circ},{0}^{\circ}]$ 
null (Ed.)Abstract We conduct porescale simulations of twophase flow using the 2D Rothman–Keller colour gradient lattice Boltzmann method to study the effect of wettability on saturation at breakthrough (sweep) when the injected fluid first passes through the right boundary of the model. We performed a suite of 189 simulations in which a “red” fluid is injected at the left side of a 2D porous model that is initially saturated with a “blue” fluid spanning viscosity ratios $$M = \nu _\mathrm{r}/\nu _\mathrm{b} \in [0.001,100]$$ M = ν r / ν b ∈ [ 0.001 , 100 ] and wetting angles $$\theta _\mathrm{w} \in [ 0^\circ ,180^\circ ]$$ θ w ∈ [ 0 ∘ , 180 ∘ ] . As expected, at lowviscosity ratios $$M=\nu _\mathrm{r}/\nu _\mathrm{b} \ll 1$$ M = ν r / ν b ≪ 1 we observe viscous fingering in which narrow tendrils of the red fluid span the model, and for highviscosity ratios $$M \gg 1$$ M ≫ 1 , we observe stable displacement. The viscous finger morphology is affected by the wetting angle with a tendency for more rounded fingers when the injected fluid is wetting. However, rather than the expected result of increased saturation with increasing wettability, we observe a complex saturation landscape at breakthrough as a function of viscosity ratio and wetting angle that contains hills and valleys with specific wetting angles at given viscosity ratios that maximize sweep. This unexpected result that sweep does not necessarily increase with wettability has major implications to enhanced oil recovery and suggests that the dynamics of multiphase flow in porous media has a complex relationship with the geometry of the medium and the hydrodynamical parameters.more » « less

null (Ed.)SUMMARY The lattice Boltzmann method (LBM) is a method to simulate fluid dynamics based on modelling distributions of particles moving and colliding on a lattice. The Python scripting language provides a clean programming paradigm to develop codes based on the LBM, however in order to reach performance comparable to compiled languages, it needs to be carefully implemented, maximizing its vectorized tools, mostly integrated in the NumPy module. We present here the details of a Python implementation of a concise LBM code, with the purpose of offering a pedagogical tool for students and professionals in the geosciences who are approaching this technique for the first time. The first half of the paper focuses on how to vectorize a 2D LBM code and show how if carefully done, this allows performance close to a compiled code. In the second part of the paper, we use the vectorization described earlier to naturally write a parallel implementation using MPI and test both weak and hard scaling up to 1280 cores. One benchmark, Poiseuille flow and two applications, one on sound wave propagation and another on fluidflow through a simplified model of a rock matrix are finally shown.more » « less