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 |
---|---|
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
To clone all the modules at once, which can be time-consuming to compile, run:
git clone ----recurse-submodules git@github.com:ImperialCollegeLondon/porescale.git
To cherry-pick the submodules, first clone this repository:
git clone git@github.com: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
Instead of running the git commands above, you can run the contents of setup_from_scratch.sh, to generate this repository from scratch.
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
.
For contacts and references, please visit the individual modules or explore our research group's Pore-Scale Modelling page.
Alternatively, contact Sajjad Foroughi:
- Email: s.foroughi@imperial.ac.uk
- Additional Email: foroughi.sajad@gmail.com