v1.6.0 — CPU-vs-GPU agreement gated; kOmegaSST validated against a measured experiment
- CPU-vs-GPU agreement is enforced, not remembered:
palace_gpu_agreementsolves the same cavity on CPU and GPU through the product on the same GPU-linked binary (probed by linkage, never names), proves which device actually ran from Palace's own banner, and requires every eigenmode to agree to 1e-6. Measured margins:/gpu/hip/sharedagrees to 2.2e-9; the broken/gpu/hip/genfails at 4.0e-2. - Turbulent natural convection validated against a measured experiment: the cavity writer takes
turbulence="kOmegaSST"andopenfoam_ras_cavitysolves the Betts & Bokhari tall cavity (Ra 8.6e5) through EMStudio's own writer and runner against the digitised measured profiles that ship in the ESI v2512 tree — worst temperature profile 4.8 % of span, worst velocity 8.7 %. The laminar mutation at the same Ra never converges and reads 17.2 % / 50.6 %. Laminar cases are byte-identical with the switch off; the dialogs still run laminar and say so. - Prism boundary layers on both snappyHexMesh paths (
wall_layers, default 3): every quoted reference re-measured on the layered mesh with the move stated in the CHANGELOG — the sphere anchor's Churchill agreement improved from +4.3 % to +2.9 %. run_battery.py --allfixed (it had been dying mid-run on an unhandled requirement kind) — and its first complete run's findings fixed with it: ten FreeCAD-importing gates now route through freecadcmd, three CFD gates carry measured timeouts, and the wind gate asserts its validity note's content instead of a reworded literal.- README's Status line is now gated by the smoke test alongside the three source version strings.
89 automated validation gates in this repository. Full details in CHANGELOG.md.