Pore-scale analysis and characterization of reservoir rocks provide valuable information for the definition and management of underground hydrogen storage and CO2 storage or sequestration.This article presents an optimized implementation of the A* algorithm, the most popular pathfinding method in the presence of obstacles. In this context, the algorithm is applied to recognize the minimum length connected paths through each flow direction of 3D images of a porous medium representative of a reservoir rock. The identification of the main paths allows the characterization of the pore space and the calculation of fundamental petrophysical properties such as tortuosity and effective porosity, which can be used for permeability estimation. Compared to other algorithms available for pore-scale characterization, such as the pore centroid, A* provides a better approximation of the pore space available for the flow and, therefore, a reliable characterization of the petrophysical properties. On the other hand, path identification is significantly consuming in terms of time and memory. In this paper, an efficient and optimized implementation based on C++/OpenMP programming language is presented.The proposed implementation aims to the analysis of large-scale models profiting from parallelization, memory optimization, and enhanced managing of dead paths. Three test cases of increasing sizes are presented, to analyze the advantages and the disadvantages of the algorithm as the number of explored points increases. The 3D binary images analyzed are related to a synthetic domain (1 million voxels) and two actual sandstone samples (about 4 and 64 million voxels respectively). The code is validated against a Matlab serial implementation, showing a significant improvement in efficiency. Remarkable test cases of several millions of voxels were afforded, overcoming the memory and execution slowness issues. Moreover, the proposed implementation is suitable for large pore-scale models run in HPC environments.
Read full abstract