Moment-Based Boundary Conditions¶
In Nassu’s RR-BGK solver a boundary node stores hydrodynamic moments, not individual populations (see Recursive Regularized-BGK). A boundary condition is therefore defined by the moments imposed at the boundary node: density \(\rho\), velocity \(u_\alpha\), and rate-of-strain \(S_{\alpha\beta}\) (equivalently the non-equilibrium stress \(\Pi^{\mathrm{neq}}_{\alpha\beta}\)). The populations are not bounced, reflected, or copied direction by direction; they are reconstructed from the imposed moments by the third-order Hermite expansion at the start of the next collision step. This is the regularized, moment-target formulation of Latt et al.[1] and Malaspinas[2], organised on the moment hierarchy following the moment-based boundary conditions of Bennett, Dellar, and Reis [3][4][5][6].
Principle
A boundary condition imposes macroscopics, not populations. It writes the boundary node’s \(\{\rho,\ u_\alpha,\ S_{\alpha\beta}\}\); the next bulk collision rebuilds \(f_i\) from them. There is no population-level reflection step.
The moment-group rule¶
The discrete velocity set carries more populations than there are physically meaningful boundary constraints, so the unknown inward populations must be closed by a finite set of macroscopic conditions. The moment-based rule [4][5] is to close them one macroscopic per moment group, in hierarchy order:
the conserved moments first - density \(\rho\) (zeroth) and momentum \(\rho u_\alpha\) (first);
then the second moment - the stress \(\Pi^{\mathrm{neq}}_{\alpha\beta}\) (equivalently \(S_{\alpha\beta}\)).
In practice each boundary family imposes one or two moments directly and derives the remaining one from a closure. A no-slip wall imposes velocity, fixes density, and derives the stress from a wall-normal finite difference. A velocity inlet imposes density and velocity and sets the stress to its equilibrium value. An outlet fixes density and takes velocity and stress from the interior. Higher moments beyond the second carry no independent boundary physics; the recursive expansion fills them from the imposed moments (Eq. (22)), which is exactly the regularization that discards ghost content.
General reconstruction¶
Given the boundary moments \(\{\rho,\ u_\alpha,\ S_{\alpha\beta}\}\), the populations follow from the same third-order Hermite expansion used by the collision operator. The non-equilibrium stress is recovered from the rate-of-strain by inverting the macroscopic relation,
and the populations are assembled as the truncated equilibrium plus non-equilibrium expansions,
with \(f_{i}^{\mathrm{eq}}\) given by Eq. (14) and \(f_{i}^{\mathrm{neq}}\) by Eq. (25). A boundary family is then fully specified by which of \(\{\rho,\ u_\alpha,\ S_{\alpha\beta}\}\) it imposes and how it closes the rest.
Wall-normal finite-difference closure¶
Every closure that derives a gradient at the boundary uses a single stencil convention. The wall-normal derivative is the second-order one-sided finite difference, evaluated at the boundary node \(x_0\) and reaching two nodes into the fluid along the inward normal (with \(\Delta x = 1\) at each level):
The rate-of-strain is built from these one-sided derivatives,
consistent with the regularized solid-wall stencil (Eqs. (2), (3)) and the scalar wall reconstructions. This is the same off-wall stencil whose lattice-Boltzmann use traces to Skordos[7]. It is the only wall-normal difference used by any fluid boundary condition.
Note
The stencil is one-sided and reaches into the fluid. It is well defined wherever two interior nodes exist along the inward normal; edges and corners follow the overwriting order set in the chapter introduction.
Density at the boundary node¶
The density closure depends on the boundary type, because the density carries the pressure (\(p = \rho c_s^2\)):
Density rule
A solid wall takes its density zero-normal-gradient from the interior neighbour (the default). An outlet fixes its density to impose a pressure.
At a stationary or moving solid wall the wall-normal pressure gradient is essentially zero (the wall-normal momentum balance leaves \(\partial p / \partial n \approx 0\)), while the pressure varies along the wall. The correct closure is therefore a zero wall-normal gradient: the wall density is read from the wall-normal neighbour, \(\rho_b = \rho_{d1}\), letting the wall pressure follow the interior flow. Pinning the wall density to a single uniform constant would impose a spurious uniform wall pressure; it agrees with the zero-gradient closure only when the true wall pressure is itself uniform (fully-developed channel or Couette flow), and degrades the solution wherever the wall pressure varies - a recirculating cavity, a bluff body, a building - which is most of computational wind engineering.
An outlet is the opposite case: there the imposed quantity is the pressure, so the regularized Neumann outlet fixes \(\rho(\mathbf{x}_{\mathrm{out}}) = \rho_{\mathrm{cte}}\), holding a stable outlet pressure where a plain zero-gradient condition would let the density float.
The wall density treatment is selectable per wall: the default is the zero-normal-gradient extrapolation above, and a wall may instead pin its density to a prescribed value when the pressure there is genuinely uniform. Velocity and stress are likewise taken zero-gradient from the interior only where the boundary models an open surface.
Boundary families as moment closures¶
Each bulk boundary condition is one instance of impose -> derive -> reconstruct. The per-type pages carry the geometry and use cases; this section states only the moment closure.
Family |
Impose |
Derive |
Reconstruct |
|---|---|---|---|
No-slip wall |
\(u_\alpha = 0\); \(\rho\) zero-normal-gradient |
\(S_{\alpha\beta}\) from Eq. (4) |
Eq. (2) |
Moving wall |
\(u_\alpha = u_{\mathrm{w},\alpha}\); \(\rho\) zero-normal-gradient |
\(S_{\alpha\beta}\) from Eq. (4) |
Eq. (2) |
Velocity inlet |
\(\rho\) and \(u_\alpha\) |
\(S_{\alpha\beta} = 0\) (equilibrium) |
\(f_i = f_i^{\mathrm{eq}}\) |
Outlet (reg. Neumann) |
fix \(\rho = \rho_{\mathrm{cte}}\) |
\(u_\alpha\), \(S_{\alpha\beta}\) zero-gradient from interior |
Eq. (2) |
Free surface / slip |
\(u_n = 0\); \(\rho\) zero-normal-gradient |
tangential \(u_t\), \(S_{\alpha\beta}\) zero-gradient |
Eq. (2) |
Wall-modeled rough wall |
\(u_\alpha\), \(S_{\alpha\beta}\) from modeled \(\tau_w\) |
\(\tau_w\) from log-law / TBL |
Eq. (2) |
No-slip solid wall - impose \(u_\alpha = 0\) and take the density zero-normal-gradient from the interior; derive \(S_{\alpha\beta}\) from the one-sided strain (Eq. (4)); reconstruct via the third-order Hermite expansion. See Solid Wall.
Moving wall - identical to the no-slip wall but with \(u_\alpha = u_{\mathrm{w},\alpha}\); same zero-normal-gradient density and derived-stress treatment. See Moving Wall.
Velocity inlet - impose both \(\rho\) and \(u_\alpha\) and set the state to equilibrium (\(S_{\alpha\beta} = 0\)), so \(f_i = f_i^{\mathrm{eq}}\). See Inlet.
Outlet (regularized Neumann) - fix the density (pressure) and take velocity and stress as zero-gradient from the interior node. See Outlet.
Free-surface / slip - impose zero normal velocity, fix the density, and zero-gradient the tangential velocity and stress. See Free Surface.
Wall-modeled rough wall - set the velocity and stress from the modeled wall stress \(\tau_w\) (log-law / TBL); the moment-based wall stress route follows Malaspinas and Sagaut[8]. The closure for \(\tau_w\) is not re-derived here; see the Wall model chapter.
Velocity-set independence¶
The closures are derived on the hydrodynamic moment hierarchy, not on a particular discrete velocity set, so they are velocity-set agnostic. The published three-dimensional moment-based boundary conditions are formulated on D3Q19 [6]; they transfer to Nassu’s production D3Q27 lattice unchanged, with no expected physical difference, because the imposed moments \(\{\rho,\ u_\alpha,\ \Pi^{\mathrm{neq}}_{\alpha\beta}\}\) and their Hermite reconstruction are identical on both sets (D3Q27 simply carries the complete third-order Hermite basis exactly).
Relation to population bounce-back¶
Population bounce-back is the legacy local alternative: at streaming it reflects the post-collision population back along the opposite direction, \(f_{\bar{i}}(t+\Delta t) = f_{i}^{*}(t)\) (Eq. (1)). This places the wall on the link midway between nodes, half a lattice spacing off the boundary node, and the effective wall position drifts with the relaxation time as the viscosity or LES eddy viscosity changes - so the wall is only first-order accurate in its location [1][9]. Moment imposition instead places the wall exactly on the boundary node and reconstructs from imposed macroscopics, removing the relaxation-time offset.
Bounce-back vs moment imposition
Moment imposition is node-coincident and reads the wall macroscopics directly; population bounce-back is strictly local but viscosity-dependent and offset by half a node. Moment imposition is the formulation used throughout this chapter; bounce-back remains documented as the local, viscosity-dependent legacy form.
BC contract (engineering spec)¶
Boundary-condition contract
This is the implementation contract every bulk BC targets. It is normative.
A boundary condition determines the boundary node’s moments and writes them: for a fluid field \(\{\rho,\ u_\alpha,\ S_{\alpha\beta},\ \theta\}\); for a transported scalar field \(\{\phi,\ q_\alpha\}\). The next bulk collision rebuilds the populations from those moments. The BC owns the moments; it never owns populations.
Disqualifying anti-pattern. Any population round-trip is forbidden: reconstructing populations, reflecting them (\(f_i = f_{\bar i}\)), and re-deriving moments (moms2pops -> reflect -> pops2moms) is the exact pattern this formulation removes. A BC that touches individual \(f_i\) to enforce a wall is wrong by construction.
Shared invariants.
One finite-difference stencil. Every wall-normal gradient uses Eq. (3) (second-order, one-sided, two interior nodes along the inward normal). No BC introduces its own stencil.
Density closure follows the boundary type. Solid walls take \(\rho\) zero-normal-gradient from the interior neighbour by default (a wall may instead pin \(\rho\) where the wall pressure is uniform); the regularized outlet fixes \(\rho\) to impose a pressure. Velocity and stress are zero-gradiented only for open-surface families.
One shared symbolic closure per field, parameterized by face normal. There is exactly one reconstruction routine per field (fluid, scalar), parameterized by the boundary normal \(\hat m\) and the imposed-moment set. There are no per-BC copies of the reconstruction, and no per-face copies of the closure - the normal is an argument, not a fork. This is the no-duplication mandate applied to boundaries: the same code, the same path, one closure differing only by its genuine variation points (which moments are imposed, the face normal).