Skip to main content

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

Project description

peclet

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.

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.1.0.tar.gz (6.3 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.1.0-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for peclet-0.1.0.tar.gz
Algorithm Hash digest
SHA256 215c86306f485654fccb58bf47c284407e9fec7a98ff17e308e7dad1b0af7c03
MD5 36b0e07e004e1f0fb2f747fec69e3dbe
BLAKE2b-256 b553c9853a9c7203d792cc2014e8fed8d7156e072febfe950407067481707dc3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: peclet-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.1 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 050a1a8e2ff14cb7df67bb236bf5d1faad0ae650ddb54629b989869f2a79f298
MD5 c6b7dcf18f4ef3b72e9f18282f3584d3
BLAKE2b-256 045a652ac6181fd42e9d15e342b5f3865faff5cfd591020142afdafe36b855ae

See more details on using hashes here.

Provenance

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

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