JFTS+H: A Julia-Based Parallel Simulator for the Description of the Coupled flow, Thermal and Geochemical Processes in Hydrate-Bearing Geologic Media
Authors: Anno Kotaro , Moridis George J. , Blasingame Thomas A. 
Published: October 2021

Abstract
The objectives of this study are to develop (a) the Julia Flow and Transport Simulator (JFTS), a serial and parallel, high performance non-isothermal, multi-phase, multi-component general simulator of flow and transport through porous/fractured media, and (b) an associated module that describes quantitatively the Equation-of-State (EOS) of the complete H2O+CH4 system by covering all combinations of phase coexistence that are possible in geologic media and including all the regions of the phase diagram that involve CH4-hydrates. The resulting simulator (hereafter referred to as the JFTS+H code) can describe all possible scenarios of hydrate occurrence, dissociation and formation/evolution and is to be used for the investigation of problems of (a) gas production from natural CH4-hydrate accumulations in geologic media, as well as for (b) the analysis of any laboratory experiments involving CH4-hydrates. As indicated by the JFTS name, this simulator is written in the Julia programming language and its parallelization is based on the Message Passing Interface (MPI) approach.
The JFTS+H simulator is a fully-implicit, Jacobian-based compositional simulator that describes the accumulation, flow and transport of heat, and up to four mass components (H2O, CH4, CH4-hydrate and a water-soluble inhibitor) distributed among four possible phases (aqueous, gas, hydrate, and ice) in complex 3D geologic systems. The dissociation and formation of CH4-hydrates can be described using either an equilibrium or a kinetic model. The automatic derivate capability of Julia greatly simplifies and enhances the Jacobian computations. The MPI Interface (Blaise, 2019) is implemented in all components of the code, and the METIS library (Karypis, 2013) is used for the domain decomposition needed for the effective parallelization of the solution of the Jacobian matrix equation that is accomplished using the LIS library (Nishida, 2010) of parallel Conjugate Gradient solvers for large systems of simultaneous linear equations.
The JFTS+H code can model the fluid flow, thermal and geochemical processes associated with the formation and dissociation of CH4-hydrates in geological media, either in laboratory or in natural hydrate accumulations. This code can simulate any combination of the three possible gas hydrate dissociation methods (depressurization, thermal stimulation, and inhibitor effects), and computes all associated parameters describing the system behavior. The JFTS+H results show very good agreement with solutions of standard reference problems, and of large 2D and 3D problems obtained from another well-established and widely used numerical simulator.
The code exploits the speed, computational efficiency and low memory requirements of the Julia programming language. The parallel architecture of JFTS+H addresses the persistent problem of very large computational demands in serial hydrate simulations by using multiple processors to reduce the overall execution time and achieve scalable speedups. The code minimizes communications between processors and maximizes computations within the same computational node, which has important consequences (especially when coupled with the automatic derivative capabilities of Julia) on performance in the development of the Jacobian matrix. An optimal LIS solver is recommended for this type of problem after evaluating different options. This approach provides both speedup and computational efficiency results when different numbers of processors are called in the solution process.
This work is believed to be the first application of Julia (a new, highly efficient language designed for demanding scientific computations) to create a simulator for flow and transport in porous media. JFTS+H is a fast, robust parallel simulator that uses the most recent scientific advances to account for all known processes in a dynamic hydrate system and works seamlessly on any computational platform (from laptop computers to workstations, to clusters and supercomputers with thousands of processors).