Introduction#

CFD-Bench implements a 3D structured incompressible Navier-Stokes solver using finite difference discretization on a staggered grid, as described in Numerical Simulation in Fluid Dynamics by Michael Griebel et al. The solver supports VTK output for visualization with Paraview.

Dwarf Classification#

CFD-Bench combines the Structured Grids and Sparse Linear Algebra dwarfs from the Berkeley taxonomy. The velocity update uses explicit stencil operations on a structured 3D grid (structured grid pattern), while the pressure Poisson equation requires an iterative solver (sparse linear algebra pattern). Chorin’s projection method decouples the velocity and pressure computations: velocities are advanced explicitly, then the pressure is solved implicitly to enforce incompressibility.

Key Features#

  • Numerical method: Chorin’s projection method with staggered grid discretization
  • Time integration: Explicit Euler for velocities, implicit pressure solve
  • Spatial discretization: Central differences with Donor cell differencing for convective terms
  • Equation solvers: Red-Black SOR, Geometric Multigrid
  • Parallelism: Sequential, MPI, OpenMP
  • MPI features: Derived datatypes, Cartesian topology, neighborhood collectives, MPI IO
  • Output: Sequential and MPI IO output in VTK format

Getting Started#

Clone the CFD-Bench repository and follow the build and usage instructions in the README.

Performance Characteristics#

CFD-Bench exhibits a mixed performance profile. The explicit velocity update is a structured grid stencil operation that is typically memory-bandwidth bound due to its low arithmetic intensity. The pressure solve (SOR or multigrid) involves iterative sweeps with data dependencies that limit parallelism and introduce synchronization overhead. The staggered grid layout requires careful handling of halo exchanges in the MPI-parallel version. Key tuning dimensions include the choice of pressure solver, the MPI domain decomposition topology, and the balance between MPI ranks and OpenMP threads.

Citations#

TODO

Credits & License#

CFD-Bench is developed by the Erlangen National High Performance Computing Center (NHR@FAU) at the University of Erlangen-Nuremberg.

Licensed under the MIT License.