Files
CelerisLab/docs/development/les_normalization_candidate.md
T

4.0 KiB

Minimal Smagorinsky normalization integration candidate

This local candidate changes only the two closed-form D2Q9/D3Q19 coefficients from 18 to 18 sqrt(2), plus their convention comments. The intended convention is |S| = sqrt(2 S:S), with self-consistent effective tau. No Cs default, iterative formula/cap/iteration count, collision dispatch, AMR guard, inlet, channel-parity rule, or unrelated source file changes.

The resulting turbulence_smag.cuh SHA256 is a3db46c2e7d27530b2d1436e65cdbed0b72cc7e047bfbeef2a640877271b51aa, exactly the independently reviewed temporary correction used in the paired scalar and end-to-end flow experiments. Its uncorrected baseline remains at validation checkpoint 9805383f9c50d867e8555471baf5dbda8333a652.

Evidence and limits

The separately audited scalar-helper GPU diagnostic on the cd3 source campaign covered 48 cases per variant. All 32 paired iterative results were bit-identical; maximum patched closed-form error was approximately 1.19e-7, versus 0.06454 for the baseline against the same standard convention. This is scalar evidence, not full-collision or turbulence qualification.

The independently reviewed wall-bounded, x-periodic SRT/shifted-FP32/double-buffer shear experiment distinguished baseline from corrected source under identical predeclared criteria. Baseline Cs=1 SGS decrement errors at the last two checkpoints were approximately 28.50% and 28.05%; corrected errors were 0.0628% and 0.00612%. Corrected maximum Cs=1 profile error was approximately 0.11344%, and the Cs=0 observations were identical between variants. Cs=1 is an amplified normalization diagnostic, not a recommended physical coefficient. These data qualify this bounded normalization comparison, not general turbulence accuracy.

The current direct-header host regression uses the existing independent Hermite tensor construction and quadratic bisection oracle. It covers 120 parameter subcases across D2/D3, Cs=0/.16, rho=.7/1/1.3, tau0=.56/.8, equilibrium, both signs of shear and trace-free extension, including a 3D axis. It also checks converged iterative agreement, Cs=0 omega guard bounds, and explicitly proves that removing sqrt(2) in temporary headers fails the oracle. No stored candidate header or full solver fixture is added.

MRT full-trace/bulk coupling, forcing/Guo correction, other streaming/storage paths, three-dimensional turbulent flows, and AMR LES remain uncertified. Full-stress closed form and deviatoric/capped iteration intentionally need not agree on isotropic or cap-active stresses. Existing guards remain unchanged.

Run and retain provenance

From this candidate checkout:

PYTHONPATH=src python tests/unit/test_smagorinsky_normalization.py -v
PYTHONPATH=src python tests/unit/test_les_flow_runner.py -v

The flow runner already supports --variant corrected against the exact reviewed helper hash. Its source-pin tests now exercise that current variant; they still verify that the archived baseline variant rejects the corrected source and that unrelated source tampering is rejected.

Historical Re100, Jet, matched-DFG and paired-scalar manifests/runners are not repinned or weakened. Their baseline-source guards are expected to reject this changed production tree. Run those archived source-specific checks on the clean 9805383 checkpoint; their old GPU evidence does not become evidence for this candidate. The new direct-current-header test is the regression for corrected production. Do not describe the historical full suite as passing on this tree.

Before publication or main integration, obtain final independent diff review and rerun the applicable scalar/flow GPU commands on the exact final candidate commit after the executor reconnects. Retain new checkout/import/source-hash receipts and compare against the frozen baseline using separate processes. A new commit receipt is required even though its corrected header matches the previously tested temporary correction. No GPU rerun, publication, or main merge is claimed by this candidate preparation.