Skip to content

Add MRT-3D, porous media, geometry import, wind tunnel, DLPack, and CI - #1

Merged
leonardoaraujosantos merged 1 commit into
mainfrom
feat/dynamics-geometry-wind-tunnel
Jul 5, 2026
Merged

leonardoaraujosantos merged 1 commit into
mainfrom
feat/dynamics-geometry-wind-tunnel

Conversation

@leonardoaraujosantos

Copy link
Copy Markdown
Contributor

Summary

Delivers the M1 (dynamics), M2 (geometry & I/O), and remaining M4 (multiphysics) milestones
as validated, spec-driven capabilities. All 36 tests pass; each capability was reviewed and
archived through OpenSpec.

What's included

  • MRT-3D — D3Q19 multiple-relaxation-time collision (plus a forced variant); BGK-reduction
    is bit-exact, forced variant validated against the analytic 3D Poiseuille parabola.
  • Porous media — partial bounce-back (PorousForcedBGKdynamics) with an analytic Darcy oracle.
  • Geometry import — optional STL/OBJ voxelization via CyberMeshGenerator (CYBERFLUIDS_GEOMETRY),
    re-indexed onto the lattice and driving off-lattice no-slip through the porous operator. Core
    stays dependency-free.
  • 3D wind tunnel — external flow past an imported mesh, exposed via the C ABI and a Python
    WindTunnel class; examples/wind_tunnel.py runs a mesh end-to-end, writes VTK for ParaView,
    and renders side/top slice figures.
  • DLPack — zero-copy interop for lattice fields (numpy / torch from_dlpack).
  • CI — GitHub Actions: Linux build + full ctest, macOS Metal build, OpenSpec validation.
  • Docs & licensing — README wind-tunnel showcase; Feature Status and Backends moved to
    docs/; project licensed under MIT.

Validation

  • 36/36 CTest targets pass (core, dynamics, multiphase, thermal, porous, geometry, wind tunnel,
    oracle, bindings).
  • Self-contained oracles where possible (analytic Darcy, sphere voxel-volume convergence,
    Poiseuille parabola, wind-tunnel wake/stagnation/deflection signatures); Palabos oracle for
    the 2D + 3D cavity.

Delivers the M1 (dynamics), M2 (geometry & I/O), and remaining M4 (multiphysics)
milestones as a set of validated, spec-driven capabilities.

Dynamics & stencils
- D3Q19 MRT collision (MRTdynamics3D / ForcedMRTdynamics3D) with the d'Humieres
  moment basis; BGK-reduction is bit-exact and the forced variant is validated
  against a 3D Poiseuille parabola.

Physical models
- Porous media via partial bounce-back (PorousForcedBGKdynamics): ns=1 is exact
  node bounce-back, ns=0 is BGK, graded in between. Validated with an analytic
  Darcy oracle and a self-contained forced-box test.

Geometry & I/O
- STL/OBJ import + voxelization behind an optional CyberMeshGenerator component
  (CYBERFLUIDS_GEOMETRY); the core stays dependency-free. Signed-distance grids
  are re-indexed into the lattice's cell order and drive off-lattice no-slip
  through the porous operator (voxel_field / cmg_loader).

Solvers, bindings & interop
- WindTunnel3D: external flow past an imported obstacle (far-field inlet + walls,
  zero-gradient outlet, voxelized body). Exposed through the C ABI and a Python
  WindTunnel class; examples/wind_tunnel.py runs a mesh end-to-end, writes VTK for
  ParaView, and renders side/top slice figures with a live progress readout.
- Zero-copy DLPack interop for lattice fields (numpy/torch from_dlpack).

Infrastructure
- GitHub Actions CI: Linux build + full ctest (with libstdc++ par_unseq linked),
  a macOS Metal build, and an OpenSpec validation job.

Docs & licensing
- README showcase of the wind-tunnel result; Feature Status and Backends moved to
  docs/features.md and docs/backends.md. Project licensed under MIT.

All 36 tests pass; every capability was reviewed and archived through OpenSpec.
@leonardoaraujosantos
leonardoaraujosantos merged commit 8181c38 into main Jul 5, 2026
2 of 3 checks passed
@leonardoaraujosantos
leonardoaraujosantos deleted the feat/dynamics-geometry-wind-tunnel branch July 5, 2026 03:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant