H088-0016
PySolute: A Python based Solute Transport Simulator

Thursday, 10 December 2020
Poster
Sulav Dhakal, Louisiana State University, Baton Rouge, LA, United States and Ipsita Gupta, Louisiana State University, Craft & Hawkins Department of Petroleum Engineering, Baton Rouge, LA, United States
Abstract:
Solute transport in porous media is driven by three phenomena: advection, dispersion and reaction. Together, these processes form the basis for reactive transport modeling. However, solute transport in geological systems is also dependent on fluid flow, heat transport, and geomechanical properties. Coupled Thermo-Hydro-Mechanical-Chemical (THMC) modeling is required to accurately model these interdependent processes. Depending upon the application and computational constraints, there have been a number of numerical approaches to coupled THMC modeling. In this study, the widely accepted integrated finite difference formulation for coupled THMC processes is adopted.

The numerical method is implemented in Python and the code is henceforth referred to as PySolute. Centered difference method is implemented for space discretization and backward Euler method for time discretization, which makes the code implicit and stable. The Jacobian matrix is calculated for each process and then combined to solve for the primary variables, pressure, temperature, concentration and mean stress. Geomechanical parameters such as stresses, displacements, and rock deformation are calculated from the mean stress. The result is a stable, smooth solution with, boundary conditions and source/sink terms playing a major role.

An example one-dimensional problem is simulated using PySolute. The solute considered in the problem is assumed to be soluble in water and as the concentration rises, it precipitates and reduces porosity and permeability of the rock. The geomechanical stress regime is initialized based on the initial pore pressure and temperature. The implicit nature of the code gave very small residual error of the order 10-10 to 10-8 and convergence was achieved at each timestep. Such accuracy helped simulate a large simulation time (1500 years) in a short computational time (70.80 seconds). The modular nature of Python and the ease of implementing makes it robust and highly adaptable. The restriction in computational efficiency associated with Python can be overcome by embedding codes of more efficient language such as FORTRAN within the PySolute code using tools such as F2Py.