Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Chapter 7 — Validation and Benchmarking

Figure 16.1 — Canonical Flow Benchmarks

Computational accuracy is established by comparing against analytical solutions, experimental data, and published benchmark results. CFDrs ships a cfd-validation crate dedicated to this discipline.

Benchmark Hierarchy

LevelDescriptionCFDrs coverage
AnalyticalExact solution exists (Poiseuille, Stokes)✓ Full
Semi-analyticalSimilarity / series solutions (Blasius, Graetz)✓ Partial
Well-documented numericalGhia lid-driven cavity; Moser DNS profiles✓ Full
ExperimentalFDA nozzle benchmark; blood bifurcation✓ Blood flows

Convergence Studies

Richardson extrapolation establishes the observed order of accuracy:

φ_exact ≈ φ_fine + (φ_fine - φ_coarse) / (r^p - 1)
```text

where *r* is the mesh refinement ratio and *p* the expected order.

```rust
use cfd_validation::convergence::RichardsonExtrapolation;

let rich = RichardsonExtrapolation::new(&coarse, &fine, refinement_ratio: 2.0);
let (order, exact_estimate) = rich.compute()?;

The richardson_convergence example confirms 2nd-order accuracy for the finite-volume stencils and spectral convergence for the FFT-based spectral Poisson solver.

Lid-Driven Cavity (Ghia 1982)

The canonical incompressible Navier-Stokes benchmark: unit-square cavity with Re = 100, 400, 1000, 3200.

CFDrs reproduces the Ghia u-velocity profile along the vertical centreline to within 0.5% for Re ≤ 1000:

cargo run -p cfd-suite --example cavity_validation

Hagen-Poiseuille (Pipe Flow)

For a circular pipe of radius R and pressure gradient dP/dx:

u(r) = (1/(4μ)) · (-dP/dx) · (R² - r²)
```console

```rust
cargo run -p cfd-suite --example pipe_flow_validation

Blood-Flow FDA Benchmarks

CFDrs includes the FDA nozzle haemolysis model and hemolysis (Giersiepen-Wurzinger) as validated metrics:

cargo run -p cfd-suite --example blood_flow_1d_validation
cargo run -p cfd-1d --example fda_shear_limit_screening

Examples