Skip to main content

GPU-accelerated & parallel simulation of transport phenomena (CFD, DEM, Voronoi) — CPU family metapackage

Project description

Peclet

PyPI version Python License: MIT Docs Docs build DOI

A suite of codes for simulation of transport phenomena — Eulerian (CFD/Navier–Stokes), Lagrangian (DEM/particle packing) and mixed (Voronoi) methods — sharing one MPI block domain decomposition with efficient asynchronous ghost-layer exchange, SDF-described solids, a common immersed boundary methodology, GPU support, and Python bindings.

The name nods to the Péclet number — the ratio of advective to diffusive transport, the dimensionless heart of transport phenomena.

📖 Documentation site: https://computational-chemical-engineering.github.io/peclet/ — the suite's front door (design docs + install/deployment guide + links to each code's Doxygen API). Built from docs/ via MkDocs (mkdocs.yml).

This is an umbrella repository: each code is a git submodule (its own repo and history); this repo pins compatible commits and holds the shared design docs.

Clone

git clone --recursive git@github.com:computational-chemical-engineering/peclet.git
# or, after a plain clone:
git submodule update --init --recursive

Layout

Submodule Role
core/ Shared infrastructure (header-only C++20 + MPI, optional Kokkos): ORB block decomposition, async grid ghost-layer exchange + Lagrangian particle migration/ghosts, SDF geometry, VTI I/O. Every method depends on it.
flow/ Eulerian Kokkos incompressible Navier–Stokes (porous media; staggered MAC grid + cut-cell IBM). Complete, validated, MPI-optional distributed solver on core; pnm is its pore-network-extraction module.
dem/ Lagrangian Kokkos + ArborX DEM/XPBD particle packing. Full XPBD step with a validated distributed step_mpi (core particle halo).
voro/ Mixed Lagrangian/Eulerian dynamic 3D Voronoi tessellation (header-only C++17; periodic & Lees–Edwards).
morton/ Morton/Z-order spatial-index primitive — arithmetic directly in Morton space (header-only C++17 + BMI2/AVX-512, Python).

Both GPU codes are Kokkos-based; the same source runs on CUDA, HIP (AMD/LUMI), and OpenMP backends, chosen by the bootstrapped install prefix (tools/bootstrap_deps.sh). The reusable parts of the original block_decomposer prototype were extracted into core/.

Shared design docs

docs/ is the cross-code contract every method follows: ARCHITECTURE · CONVENTIONS · STYLE · INTERFACES · ROADMAP · PORTABILITY. See CLAUDE.md for an agent-facing overview.

Install & run (Python)

Everything ships under one peclet namespace — installable parts of one family:

PyPI package Import Role
peclet-morton peclet.morton Morton/Z-order spatial index
peclet-flow peclet.flow (+ .pnm) Eulerian incompressible Navier–Stokes solver
peclet-dem peclet.dem Lagrangian DEM/XPBD particle packing
peclet-voro peclet.voro Dynamic Voronoi tessellation + mesh generator
peclet-core peclet.core (.mpi, .amr) Shared infra (particle halo, AMR) — sdist only
peclet metapackage: pip install peclet pulls the CPU family

Multicore CPU (OpenMP): the compute packages ship self-contained wheelspip install peclet (or an individual pip install peclet-flow) just works and runs multi-threaded (OMP_NUM_THREADS).

GPU (CUDA/HIP) and multi-rank MPI: a portable binary wheel is impossible (arch × CUDA/ROCm × MPI-ABI), so you build the packages from source against a Kokkos prefix, or use a container. Because the backend (Serial / OpenMP / CUDA / HIP) is compiled in, you build for your hardware — docs/DEPLOYMENT.md is the guide: the backend×MPI matrix, pip install recipes per environment, and Apptainer containers for Snellius (CUDA) and LUMI (HIP) in containers/.

Continuous integration & docs

Each submodule carries its own .github/workflows/: a CI workflow (build + test where feasible — core and morton run full CPU/MPI suites; flow and dem build the Kokkos OpenMP host backend) and a Documentation workflow that builds the Doxygen API docs and publishes them to that repo's GitHub Pages. Enabling Pages once per repo (Settings → Pages → "Source: GitHub Actions") is the only manual step.

Contributing & community

Contributions are welcome — see CONTRIBUTING.md for the submodule dev setup, build/test, and PR flow. Participation is governed by the Contributor Covenant. Report security issues privately per the Security Policy. Release history lives in the CHANGELOG.

Citing

If you use Peclet in your research, please cite it. Each release is archived on Zenodo:

DOI

Machine-readable metadata is in CITATION.cff — use GitHub's "Cite this repository" button for ready-made BibTeX/APA.

Note on submodule pins

This umbrella pins each submodule to a compatible commit on main. Update to the latest upstream with git submodule update --remote followed by a commit here that bumps the pointers.

Project details


Download files

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

Source Distribution

peclet-0.4.4.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

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

peclet-0.4.4-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file peclet-0.4.4.tar.gz.

File metadata

  • Download URL: peclet-0.4.4.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for peclet-0.4.4.tar.gz
Algorithm Hash digest
SHA256 35269a73a5ec2c0f716096ea914dd99f6dc953662897d7513e4794a58beecafd
MD5 19fb8885b9fdb62e1fcb50d65de826d5
BLAKE2b-256 a223b7d3d5c60a00c2021b2064dfe1964c25f1f9890ee1f9c079e514c9621403

See more details on using hashes here.

Provenance

The following attestation bundles were made for peclet-0.4.4.tar.gz:

Publisher: release.yml on computational-chemical-engineering/peclet

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

File details

Details for the file peclet-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: peclet-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for peclet-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 76550bc5c4fc39a5b87416e8cfffbcf992706e6b7a01f93a345b46fdbda502af
MD5 4c3044973558b2e5d8db9073253f1f89
BLAKE2b-256 7f20e4d59c808c59f64c620c276809e894172c512796572849967e1b2657dadf

See more details on using hashes here.

Provenance

The following attestation bundles were made for peclet-0.4.4-py3-none-any.whl:

Publisher: release.yml on computational-chemical-engineering/peclet

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