Reynolds stress tensor R_ij = ⟨u'_i u'_j⟩ (Pa, after multiplication by ρ
in caller; here a kinematic Reynolds stress in m²/s² is also acceptable).
Symmetric. Diagonal entries are non-negative (variances) — not enforced
by the newtype to keep the constructor cheap; callers passing a tensor
that violates the diagonal-positivity property are responsible for
downstream interpretation.
Strain-rate tensor S = 0.5·(∇u + ∇uᵀ). Symmetric: S_ij = S_ji.
new checks the symmetry invariant by exact equality, matching what natural
construction 0.5·(G + Gᵀ) produces in IEEE 754. Use new_unchecked to
bypass the check in hot kernels where symmetry is guaranteed by the algebra.
Velocity gradient tensor ∇u. Pinned to the Jacobian convention:
value[i][j] = ∂u_i / ∂x_j. Construction-time check is finiteness only —
any finite 3×3 matrix is a valid velocity gradient.
Viscous (deviatoric) stress tensor τ (Pa). Symmetric. Distinct from the
full Cauchy stress σ = −p I + τ — only the viscous part appears in the
dissipation Φ = τ:∇u ≥ 0 and entropy-production guarantees.