H088-0016
PySolute: A Python based Solute Transport Simulator
Abstract:
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.