Skip to main content

Python bindings for OpenImpala — transport-property computation on 3-D voxel images

Project description

OpenImpala

Banner

Open In Colab PyPI License: BSD-3-Clause DOI GitHub release Build and Test codecov

OpenImpala is a high-performance framework for computing effective transport properties — tortuosity, effective diffusivity tensors, and effective conductivity — directly from 3D voxel images of porous media (X-ray CT, FIB-SEM, synthetic microstructures). It solves the governing PDEs on the Cartesian voxel grid using finite differences, bypassing mesh generation, and scales across MPI ranks and CUDA GPUs via AMReX and HYPRE.

Outputs parameterise continuum-scale models such as PyBaMM.

📖 Documentation: https://base-laboratory.github.io/OpenImpala/ 📓 Tutorials: tutorials/ (runnable on Google Colab)

Quick example

import numpy as np
import openimpala as oi

image = np.zeros((64, 64, 64), dtype=np.int32)
image[:, :, 16:48] = 1   # solid slab through the middle

with oi.Session():
    vf  = oi.volume_fraction(image, phase=0)
    tau = oi.tortuosity(image, phase=0, direction="z", solver="mlmg")
    print(f"Volume fraction: {vf.value:.4f}")
    print(f"Tortuosity:      {tau.value:.4f}")

Install

Python (recommended)

pip install openimpala            # CPU + optional CuPy GPU acceleration
pip install openimpala-cuda       # compiled HYPRE/AMReX CUDA wheel (Linux x86_64)

OpenImpala uses MPI for distributed parallelism — install an MPI runtime (libopenmpi-dev, openmpi, brew install open-mpi, or conda install -c conda-forge openmpi) before pip install. See Getting Started for full details.

Container (HPC)

Pre-built Apptainer/Singularity images are attached to each GitHub Release:

apptainer exec -B "$(pwd):/data" openimpala-vX.Y.Z.sif \
    /usr/local/bin/Diffusion /data/inputs

For batch SLURM scripts, see HPC Usage.

Build from source

See CONTRIBUTING.md for the native and containerised developer build, code style, and test workflow.

Features

  • Steady-state diffusion / conduction on segmented 3D voxel images
  • Tortuosity factor, full 3×3 effective diffusivity tensor, multi-phase transport
  • Microstructural metrics: volume fraction, percolation, particle size, specific surface area
  • TIFF / HDF5 / RAW / DAT image input; JSON output compatible with BPX / BattINFO
  • Solvers: HYPRE (PCG, FlexGMRES, BiCGSTAB; SMG / PFMG preconditioners) and AMReX MLMG (matrix-free, GPU-native)
  • MPI + OpenMP + CUDA parallelism — scales from a laptop to multi-node HPC

Citation

If you use OpenImpala in published work, please cite:

@article{LeHoux2021OpenImpala,
  title   = {{OpenImpala}: {OPEN} source {IMage} based {PArallisable} {Linear} {Algebra} solver},
  author  = {Le Houx, James and Kramer, Denis},
  year    = {2021},
  journal = {SoftwareX},
  volume  = {15},
  pages   = {100729},
  doi     = {10.1016/j.softx.2021.100729},
}

If you use the homogenisation-based effective diffusivity workflow, additionally cite Le Houx et al., Transport in Porous Media 150, 71–88 (2023), doi:10.1007/s11242-023-01993-7.

License

BSD 3-Clause. See LICENSE.

Acknowledgements

This work was financially supported by the EPSRC Centre for Doctoral Training in Energy Storage and its Applications [EP/R021295/1]; the Ada Lovelace Centre (STFC) project CANVAS-NXtomo; the EPSRC prosperity partnership with Imperial College, INFUSE [EP/V038044/1]; the Rutherford Appleton Laboratory; the Faraday Institution Emerging Leader Fellowship [FIELF001]; and Research England's Expanding Excellence in England grant at the University of Greenwich via the M34Impact programme. We acknowledge the use of the IRIDIS HPC facility, Diamond Light Source's Wilson cluster, STFC SCARF, and the University of Greenwich M34Impact cluster, and thank the developers of AMReX, HYPRE, libtiff, and HDF5.

Contact

Issues and feature requests: https://github.com/BASE-Laboratory/OpenImpala/issues. Questions: GitHub Discussions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

openimpala_cuda-4.4.4-cp312-cp312-manylinux_2_34_x86_64.whl (197.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

openimpala_cuda-4.4.4-cp311-cp311-manylinux_2_34_x86_64.whl (197.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

openimpala_cuda-4.4.4-cp310-cp310-manylinux_2_34_x86_64.whl (197.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

openimpala_cuda-4.4.4-cp39-cp39-manylinux_2_34_x86_64.whl (197.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ x86-64

File details

Details for the file openimpala_cuda-4.4.4-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for openimpala_cuda-4.4.4-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5d324e1b8aa156ed37e1f11bc0121379027e33967bbf97defa9c314c045a263a
MD5 fd49c7863808e649e1211013e9afd2e1
BLAKE2b-256 428f85967f0e16a750aff7ea7ab2f12e7c94464dff6ed23d4a524688acbe1f0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for openimpala_cuda-4.4.4-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: pypi-wheels-gpu.yml on BASE-Laboratory/OpenImpala

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openimpala_cuda-4.4.4-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for openimpala_cuda-4.4.4-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c4f79c0e18e8109b541aa555c605224561f72fa57569c8605a2aa31169bfa444
MD5 432d968fcdb563a5f8866f8a67f3ecd3
BLAKE2b-256 04b9e85341d462d8a2bb9ea1d6c24c2ff5288267cff16e502a07c3871c6ec458

See more details on using hashes here.

Provenance

The following attestation bundles were made for openimpala_cuda-4.4.4-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: pypi-wheels-gpu.yml on BASE-Laboratory/OpenImpala

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openimpala_cuda-4.4.4-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for openimpala_cuda-4.4.4-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e2ae5eac77fdbb4b9adbad75b6946520f03683bbfd93c2611e80a2f8c868d872
MD5 b085f3f2983844c6e36edc3f052e8785
BLAKE2b-256 ce7c80fa45c0560574d7416fe0ff2162350a06b3f1c71fb30cbd24ade1f6d2b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for openimpala_cuda-4.4.4-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: pypi-wheels-gpu.yml on BASE-Laboratory/OpenImpala

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openimpala_cuda-4.4.4-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for openimpala_cuda-4.4.4-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 34da59fc2c94ce6fbf8d951fa2fb524f78331437a35fd9369b5f1b61c2eb69b0
MD5 d0407783c02193c931e66e2cabf53f74
BLAKE2b-256 c6a595f3d8e76aecd95c442809ab31c36f8884fa03f3a3cd060fef96483488f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for openimpala_cuda-4.4.4-cp39-cp39-manylinux_2_34_x86_64.whl:

Publisher: pypi-wheels-gpu.yml on BASE-Laboratory/OpenImpala

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page