Skip to content

ImperialCollegeLondon/porescale

Repository files navigation

Pore-Scale Modelling

Flow in porous media occurs is ubiquitous in natural and manufactured settings, from rainfall falling on soil and transpiration in plants, to filling a baby’s nappy and fluid exchange in electrochemical devices, such as electrolysers and fuel cells. Underground, most of the world’s fresh water is held in porous rock and soil, while deeper formations may contain oil and gas; otherwise the pore space is filled with salty water which can be displaced to store carbon dioxide or hydrogen.

The design and management of flow processes in porous media require accurate tools for analysis and modelling. The advent of micron-resolution three-dimensional X-ray imaging has allowed us to image the pore space and the fluids within it. However, how do we make sense of images that often contain 10s of billions of voxels? This challenge is met through pore-scale modelling.

This repository has been established to facilitate access to all pore-scale modelling codes developed under the supervision of Professor Martin Blunt and Dr. Branko Bijeljic at Imperial College London. Below are the links to each of these repositories, complete with descriptions for each:

Repository Description

Pore Network Extraction from Micro-CT Images of Porous Media

Analysis Software for Quantification of Pore and Throat Occupancy in 3D Micro-CT Images

Pore Network Flow Simulation

Pore Network Flow for Ostwald Ripening Simulation

Direct Numerical Simulation (DNS) of Incompressible Single Phase Flow on 3D Images of Porous Media Using OpenFOAM Finite-volume Library

Direct Numerical Simulation (DNS) of Incompressible Two-phase Flow on 3D Images of Porous Media Using OpenFOAM Finite-volume Library

Automatic Measurements of Contact Angle, Interfacial Curvature, and Surface Roughness in Pore-Scale 3D-Images

A Novel Method That Corrects Steady-State Relative Permeability Calculations for Inhomogeneous Saturation Profiles Along the Flow Direction

Implementing a Novel Capillary Pressure Model: Fitting Experimentally Measured Data Across Diverse Wettability Conditions

Enhanced Intelligent Segmentation with Grey Scale Image Gradients

Porous Media Generation

Multiphase Images Generation


Pore-scale modules for code developers

This repository serves as developer guide for integrating different git codes/submodules linked here and contains no code of its own.

The script setup_from_scratch.sh can be used to regenerate this repository from scratch.

You need to set up a ssh key and add it to your Github account for the instructions here to work. Otherwise you can modify the git commands and replace the all the git: addresses with corresponding https: addresses, if you do not want to push your changes back to Github.


See doc folder and doc and README files in each modules directory for further details


Cloning codes


To clone all the modules at once, which can be time-consuming to compile, run:

git clone ----recurse-submodules [email protected]:ImperialCollegeLondon/porescale.git


To cherry-pick the submodules, first clone this repository:

git clone [email protected]:ImperialCollegeLondon/porescale.git

or

git clone https://github.com/ImperialCollegeLondon/porescale.git

and then update the common modules:

git submodule update --init src/script src/include pkgs/zlib pkgs/libtiff src/libvoxel

Finally to get other codes run any combination of the following commands.

Pore-network model, pnextract and pnflow:

git submodule update --init pkgs/hypre src/pnm

Contact angle code:

git submodule update --init pkgs/foamx4m src/ContAngle

Porefoam two-phase flow solver:

git submodule update --init pkgs/foamx4m src/porefoam2f

Porefoam single-phase flow solver:

git submodule update --init pkgs/foamx4m src/porefoam1f


Create from scratch

Instead of running the git commands above, you can run the contents of setup_from_scratch.sh, to generate this repository from scratch.


Build and test

Compilation requires gnu and cmake and a c++ compiler. Compilation of porefoam and ContactAngle codes additionally requires libscotch-dev and openmpi-dev, in Ubuntu Linux.

Once you have the prerequisites installed, to compile the codes, run make, or make -j for parallel build.

To test the compilation run make test.


Contact and References

For contacts and references, please visit the individual modules or explore our research group's Pore-Scale Modelling page.

Alternatively, contact Sajjad Foroughi: