# Density–momentum coupling and volume display, model register v6

This extends the laminar, incompressible, three-dimensional Boussinesq tank in registers v4/v5. The MAC grid, TEOS-10 density at 10 °C, physical viscosity/diffusivity, rigid lid, no-slip glass, pressure projection, Koren face fluxes and SSPRK3 scalar transport remain. Canonical scalar fields and ledgers are Float64; GPU momentum remains a checked Float32 accelerator. This is a physical approximation with numerical fixture validation, not laboratory calibration or turbulent/free-surface validation.

## Time coupling

Each stability-limited substep consumes intensive salinity (g/kg), pigment fractions (dimensionless) and projected face velocities (m/s). First transport salinity and active pigments for dt/2 with the old projected velocity, then advance momentum for dt using the transported midpoint salinity, then transport the scalars for dt/2 with the new projected velocity. Scalar transport stays conservative: each closed interior face transfer has equal and opposite contributions; no boundary flux or fade is added. The dye sum, physical clock and step count are committed once after the second scalar half-step. No renderer or wall-clock data enters these transitions. The same order applies to reference, WebAssembly and asynchronous GPU paths, including accelerator fallback.

For a remaining requested interval r and computed stability bound h, choose r/ceil(r/h). This distributes the interval without a very short final remainder and remains no larger than h. Recompute h after each committed substep. Reject a nonfinite bound or h < 1e-6 s, not a harmless request remainder smaller than that bound. Preregistered fixtures require a .02 s request with bound .0100003 s to split at .01 s, a healthy 5e-7 s final remainder to be accepted, and a genuinely unstable bound to stop. This avoids a false failure observed in the 64³ browser run and avoids dividing a pressure correction by an unnecessarily tiny final interval.

The buoyancy acceleration is g(rho(S)-horizontal mean rho)/rho0, in m/s²; velocity kicks are acceleration times seconds. Scalar face flux has concentration·m/s units and its divergence has concentration/s. From rest with zero physical diffusion, the semi-discrete short-time scalar change is dt²/2 times L_h(S0,P_h B_h(S0)), in g/kg. The previous endpoint-velocity order produced a coefficient near 1 instead of 1/2. Symmetric transport–momentum–transport addresses this coupling error. Sharp-front limiter activation and momentum splitting still limit general smooth-order claims.

Before implementation, acceptance criteria are: on the independently defined smooth 16³ closed-tank fixture, the leading salinity coefficient lies in [0.49,0.51] at dt=.02 s; salinity and pigment self-convergence ratios over .3 s at dt=.02/.01/.005/.0025 s lie in [3.5,4.5]. Salt and pigment ledger residuals remain below 1e-12 concentration·m³, projected divergence below 1e-8 s^-1, and stable layers/neutral dye stay at rest below 1e-12 m/s. Existing drop grid/timestep, analytic viscous-vortex, GPU/reference and deterministic replay checks remain required. Failures retain the existing visible stop/fallback policy. Temporal convergence of a smooth fixture does not prove resolved plume morphology or entrainment.

## Display

Dye rendering will integrate extinction along view rays and sampled light rays through the calculated pigment volume. Path increments are converted from normalized rendering coordinates into metres. Extinction and scattering coefficients, palette and illumination are artistic parameters, not measured water/dye optics. Sampling, interpolation and tone mapping add no physical resolution, momentum or pigment. Rotation in a 3D volume uses the full calculated curl magnitude; signed direction belongs to the aligned cross-section. The advanced fields remain accessible.

Browser acceptance: desktop/mobile field, geometry, paused state, layering and text-free presentation regressions; no invalid pixels or console errors. On the local Metal browser, the default grid should render at least 45 frames/s and advance at least .3 simulated seconds per wall second over a 5 s sample. Report actual rates separately; slower hardware and the finer physical grid need not meet this hardware-specific threshold.

Sources: [Strang, symmetric splitting](https://doi.org/10.1137/0705041), [Bell and Marcus, second-order variable-density projection](https://doi.org/10.1016/0021-9991(92)90011-M). The latter is related numerical literature; this implementation is not its algorithm.
