Skip to main content

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/ Kokkos pore-network extraction from SDF geometry (pores, watershed segmentation, throat topology). Split out of flow.
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 Eulerian incompressible Navier–Stokes solver
peclet-pnm peclet.pnm Pore-network extraction from SDF geometry
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.

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.6.0.tar.gz (8.6 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.6.0-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for peclet-0.6.0.tar.gz
Algorithm Hash digest
SHA256 44c2dd6cf59efeed899c3497f09af1849d57dc012f045feb5841e8af6cb79a53
MD5 756b4a9a48d43b0f97b2f206e191f20c
BLAKE2b-256 d84733433ca70081a1da096d08b217e853051f94babbcac8779eadda2489e819

See more details on using hashes here.

Provenance

The following attestation bundles were made for peclet-0.6.0.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.6.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for peclet-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 93d0012c8cd46800b653feb42f6478c4f6e88f291370648a9ff6bf3c4c5fc4d6
MD5 2e6ecc39a0903aee11642b8f7be6a696
BLAKE2b-256 bef6ebea19f8f481c4c9f3e4c29a35c674c40a89b4b4b163ea40c7d0b4095532

See more details on using hashes here.

Provenance

The following attestation bundles were made for peclet-0.6.0-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.

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 files

0.5.0

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

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