Skip to content

Releases

brae v0.4.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 17:18
8ecfc74

brae 0.4.1

interFoam - two-phase volume-of-fluid flow on the GPU.

A case whose controlDict says application interFoam now runs with the one command, brae.

  • All 42 interFoam tutorials of OpenFOAM v2412 run.
  • Laminar, RAS (k-epsilon, k-omega SST) and LES (kEqn). MULES and CMULES, alpha sub-cycling,
    Euler / CrankNicolson / localEuler, adjustable time step, restart, ASCII and binary output.
  • Held to OpenFOAM, not to expectations. The solver's steps are compared with serial OpenFOAM field by
    field on staged tutorial rows; the suite is 856 tests.
  • The pressure solve is brae's own. Whatever a case names for p_rgh, brae runs an AMG-preconditioned
    conjugate gradient on the GPU and says so. Everything else follows the case.
  • Speed, per time step against OpenFOAM on all 20 cores of the same GB10: ahead on 30 of the 42 tutorials
    at their shipped size, and on all 42 once the mesh is scaled up (1.1x to 4.9x at up to 3.6 million cells).
    Meshes of a few thousand cells are still faster on the CPU.

brae v0.4.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 22:39
86b55ef

What's Changed

Full Changelog: v0.3.1...v0.4.0

brae v0.3.1

Choose a tag to compare

@github-actions github-actions released this 30 Jul 06:52

brae 0.3.1

The solver is unchanged from 0.3.0; this adds the command surface around it. The public GPU network is not open
yet, so brae node ships for review rather than use.

  • brae benchmark — run a standard workload and compare machines. Every run writes brae-benchmark.json;
    there is no flag to remember.
  • brae benchmark --list — samples are branches of
    simd-ai/brae-bench, pulled and cached on first use: 4 for timing,
    12 covering one brae capability each.
  • brae node register | status | unregister — execs brae-agent, a separate binary linking neither CUDA
    nor the solver, so a machine keeps reporting when its brae build is broken.
  • Samples containing codedFixedValue / codedMixed are refused: brae compiles those on the GPU, so a
    benchmark carrying code would run it on every machine that benchmarks.
  • The transient solver refuses adjustTimeStep yes, an active MRFProperties, and any fvOptions file rather
    than marching without that physics.
  • Unified-memory GPUs (GB10) now report their memory instead of appearing to have none.
  • install.sh installs brae-agent when libcurl is present, and says so when it is not.

Upgrade with git pull && cmake --build build -j --target brae. 269 ctests on a GB10; sm_80/sm_90
compile-checked.

brae v0.3.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 04:05

brae 0.3.0, transient pimpleFoam

Brae now runs transient incompressible flow, and it runs it from the same command.

One command

You always type brae. It reads the application entry your case already has in controlDict and runs the
matching solver:

cd yourTransientCase  && brae     # application pimpleFoam  -> transient

New: transient incompressible PIMPLE

Fully device-resident, sharing its momentum, pressure and turbulence phases with the validated steady solver:

  • Time schemes: Euler, backward, CrankNicolson (with off-centring coefficient)
  • Implicit fvm::ddt on the turbulence transport too — true URANS, not a quasi-steady turbulence field
  • Turbulence: laminar; k-epsilon, realizable k-epsilon, k-omega SST, k-omega SST-LM, Spalart-Allmaras;
    and the hybrid set — SA-DDES, SA-IDDES, k-omega SST-DDES, k-omega SST-IDDES, Smagorinsky LES
  • Seamless restart: writes and re-reads phi and the ddt0(...) state, so startFrom latestTime continues
    the same trajectory rather than restarting the history
  • PIMPLE controls: nOuterCorrectors, nCorrectors, nNonOrthogonalCorrectors, relaxationFactors
  • Standard OpenFOAM time directories out (U, p, phi, turbulence), ASCII or binary mesh in

Accuracy

pitzDaily, k-omega SST, marched to steady: velocity within 0.07% of OpenFOAM v2412 pimpleFoam on the same
case.

Speed

1× H100 80GB, pitzDaily developed then advanced at fixed deltaT, both solvers converged at the same tolerance:

cells brae SPUMA (OpenFOAM-GPU, best config)
4.9M 56 s 255 s 4.5× faster

Zero bytes move between CPU and GPU per time step.

Also in this release

  • codedFixedValue / codedMixed boundary conditions, compiled onto the device at run time, on both solvers
  • DES/LES models (SA-DDES/IDDES, SST-DDES/IDDES, Smagorinsky) available to the steady solver's shared core
  • The AMG-hierarchy cache is reused by the transient solver, so repeat runs start warm
  • nNonOrthogonalCorrectors documented correctly for simpleFoam, it was supported, the docs said otherwise

Upgrading

Nothing to change.

git pull && cmake --build build -j --target brae

Full solver scope: docs/solvers/pimplefoam.md ·
docs/solvers/simplefoam.md. ctest 261/261 on GB10; sm_80/sm_90 compile-checked.

brae v0.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 12:14

What's Changed

New Contributors

Full Changelog: v0.1.1...v0.2.0

brae v0.1.1

Choose a tag to compare

@github-actions github-actions released this 11 Jul 12:47

Full Changelog: v0.1.0...v0.1.1

brae v0.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Jul 18:27

Brae 0.1.0

The first public release of brae, a GPU-native CFD engine that runs OpenFOAM's steady-state incompressible solver entirely on a single GPU.

Point it at an existing OpenFOAM case and it solves the whole SIMPLE loop, assembly, momentum, turbulence, and the pressure multigrid, on the device from the first iteration to the last, with no per-iteration copies back to the CPU. It writes standard OpenFOAM time directories, so it drops into your existing ParaView / postProcess workflow unchanged.

  • Device-resident simpleFoam. The entire solver loop lives on the GPU: no host/device migration tax, no serial-CPU bottleneck.
  • Validated against OpenFOAM v2412, cell by cell. A clean-room reimplementation that agrees to sub-1% on the fields that matter (see the motorBike pressure comparison in the README).
  • Fast. Roughly 5x faster than OpenFOAM's own GPU offload (AMGX, PETSc) on the same GPU, and parity-to-ahead of a 20-core CPU node once the mesh is large.
  • Turbulence. k-epsilon, k-omega SST, Spalart-Allmaras, realizable k-epsilon, and the Langtry-Menter kOmegaSST transition model.
  • Broad GPU support. Ampere, Ada, Hopper, and Blackwell (sm_80 through sm_121).
  • Drop-in. Reads your existing 0/ constant/ system/ case (ASCII or binary mesh), auto-partitions for the GPU (no decomposePar), and writes ordinary OpenFOAM output.

Notes on the claims (all traceable to your validation, so nothing here overreaches):

  • "~5x vs AMGX/PETSc" and "parity-to-ahead of a 20-core node".
  • "sub-1%, cell by cell" and the turbulence-model list are what you validated against OF v2412.
  • "Ampere through Blackwell" is true as of the cluster-guard fix.

Full Changelog: https://github.com/simd-ai/brae/commits/v0.1.0