Files
CelerisLab/docs/development/les_dev8403956_integration.md
T

3.7 KiB

Selective LES normalization integration on dev8403956

This change reuses the reviewed correction from 5465832 without merging its branch history. The only production change is the two closed-form coefficients 18 -> 18 sqrt(2) and their explanatory comments in turbulence_smag.cuh. Its SHA256 is a3db46c2e7d27530b2d1436e65cdbed0b72cc7e047bfbeef2a640877271b51aa. Defaults, iterative/deviatoric/capped closure, collision dispatch, AMR guards, and all other production source files are unchanged.

Separate source contract; unchanged experiment

The single existing flow runner now accepts --experiment dev8403956. Its separate source_pins_dev8403956.json pins all 101 production files from the committed 8403956 baseline; corrected mode permits only the exact reviewed header substitution. Results record the actual checkout commit, import path, experiment name and manifest SHA256. No arbitrary manifest-path override exists.

Omitting the option still selects the original historical source manifest. That manifest, the original paired receipts, scalar preparation manifests and independent continuum oracle are unchanged. Historical baseline and corrected receipts remain evidence for their own exact sources, not new dev receipts. Historical guards intentionally reject this different dev source tree. Eight production files already differed between the historical source snapshot and 8403956; neither the old manifest nor its acceptance is silently regenerated.

The physical experiment and every numerical acceptance threshold are unchanged: 8 x 34 nodes, halfway y walls, periodic x, unforced D2Q9/SRT, shifted FP32, double-buffer streaming, Cs=0/.16/1, checkpoints 519/1038/2075. Each case has one actual advancing warm-up followed by complete initial-state restoration before READY. Total launches are 6,225 measured plus three warm-ups. Cs=1 remains an amplified diagnostic, not a physical coefficient recommendation.

Host checks

PYTHONDONTWRITEBYTECODE=1 python -m unittest discover -s tests/unit -p 'test_smagorinsky_normalization.py' -v
PYTHONDONTWRITEBYTECODE=1 python -m unittest discover -s tests/unit -p 'test_les_flow_*.py' -v

The direct-current-header test is copied unchanged from reviewed 5465832: 120 tensor parameter cases, Cs=0/equilibrium and omega guards, converged trace-free iterative comparison, and mutation detection in both lattice algebras. This is scalar D2/D3 algebra coverage, not 3D-flow qualification. Flow tests retain analytic/reference checks and add current named-source, reverse-patched baseline, variant rejection, unrelated-source tampering and immutable historical-default checks. The temporary baseline is constructed only inside a test directory; production is never reverse-patched.

Pending final-commit GPU gate

After independent review and explicit executor authorization, run from the exact committed candidate checkout, selecting the authorized physical GPU:

CUDA_VISIBLE_DEVICES=<physical-GPU> PYTHONDONTWRITEBYTECODE=1 python tests/validation/run_uniform_les_flow.py --root "$PWD" --experiment dev8403956 --variant corrected --run-gpu --device 0 --output <new-evidence-directory>/corrected.json

Retain all source hashes, exact commit/import/device identity, manifest hash, three READY/reset records, complete result JSON, stdout/stderr and actual exit. Require all frozen gates, DONE passed=true and exit 0. Compare with historical corrected evidence without relabeling it as current evidence. The old-vs-new normalization discrimination already exists; no new baseline GPU run is needed unless review finds a changed exercised uniform solver path.

No GPU result is claimed by this integration preparation. This does not expand LES qualification to MRT, forcing, AMR LES or three-dimensional turbulent flows.