Track the research dossiers, section freezes, supporting manuscript materials, and round-aware agent controls so future drafting decisions can be reviewed across both repository mirrors. Co-authored-by: Cursor <cursoragent@cursor.com>
28 KiB
CelerisLab Validation Dossier for JFM Writing
Purpose. This document is an agent-facing index of the CelerisLab solver, its validation contracts, and the qualification artifacts currently retained under CelerisLab/tests/output/steady_jfm_qualification/. It is intentionally more detailed than manuscript prose. It records what was validated, how it was measured, what the reference papers establish, and what must not be claimed.
Scope. CelerisLab is the current CFD tool library developed for the DynamisLab programme. LegacyCelerisLab is the preceding solver generation and is a separate evidence chain. This dossier concerns current CelerisLab only unless explicitly stated otherwise.
Status date. 2026-08-09.
Important evidence warning. The qualification directory contains complete physics runs for only Kan99b K2 and Sah04 S2. The validation runners define larger K1--K5 and S1--S4 matrices, but those other cases are not present in this qualification directory. Smoke runs are wiring/development diagnostics and are not physics qualification.
1. Fast agent index
| Question | Read this first |
|---|---|
| What is CelerisLab? | CelerisLab/README.md |
| What is the current solver revision? | parent gitlink c918ac0...; submodule commit 6e3756c... |
| What exact outputs were retained? | CelerisLab/tests/output/steady_jfm_qualification/MANIFEST.json |
| What is the rotating-cylinder contract? | CelerisLab/tests/specs/Kan99b_validation.md and tests/validation/run_kan99b_rotating_cylinder.py |
| What is the confined-cylinder contract? | CelerisLab/tests/specs/Sah04_validation.md and tests/validation/run_sah04_st_matrix.py |
| What passed in the retained artifacts? | Sections 7 and 8 below |
| What failed or remains incomplete? | Section 10 below |
| How are forces and sensors read? | CelerisLab/README.md, Sections “Obs telemetry model” and “Sensor special handling” |
| What can be written in a JFM methods section? | Section 11 below |
| What should not be written? | Section 12 below |
Search terms for later agents: CelerisLab validation, steady_jfm_qualification, Kan99b K2, Sah04 S2, MRT, D2Q9, Bouzidi, curved boundary, neq_extrap, channel_stabilized, St_error_pct, mean_Cd, sensor accuracy, FP32, EsoPull, FP16S.
2. Software identity and solver role
DynamisLab is the larger research programme for ML-assisted CFD and active flow control of a two-dimensional fluidic pinball. CelerisLab was written as the modern CFD infrastructure for that programme. It provides:
- GPU-accelerated D2Q9 and D3Q19 LBM;
- SRT, TRT and MRT collision operators;
- optional Smagorinsky LES;
- double-buffer and EsoPull streaming paths;
- moving curved boundaries using Bouzidi interpolation;
- runtime rotating-body actuation;
- force, torque and area-averaged velocity-sensor readback;
- Python control-loop and asynchronous CUDA-stream APIs;
- checkpoint/snapshot and runtime body-topology synchronization.
The qualification experiments are not a proof that every solver feature is equally validated. They are targeted anchors for the combinations needed by the current research and paper setting.
Solver revision provenance
- DynamisLab parent revision that points to the solver:
c918ac0de44d4f5106249c31ad7f8a10f4c53450. - CelerisLab submodule revision:
6e3756c587ec08ab6a55c4a1a5f4671822d3f0a0. - Submodule commit message:
fix(esopull): correct init layout and pre-streaming semantics (v0.5.1). - Parent commit message:
Update CelerisLab submodule to v0.5.1 (6e3756c).
For a reproducible paper, cite the solver revision actually used by the run and preserve the artifact manifest. Do not cite only the repository name while omitting the solver version and configuration.
3. Governing numerical model and core implementation
The solver advances a low-Mach incompressible approximation using a D2Q9 lattice in the retained two-dimensional qualification cases. The collision path used by the retained Kan99b and Sah04 full runs is MRT. The main stepping path is GPU CUDA code orchestrated through Python/PyCUDA.
The qualification configurations use:
- lattice model: D2Q9;
- collision: MRT;
- storage: FP32;
- LES: disabled;
- streaming: double buffer;
- curved-body treatment: current Bouzidi moving-wall implementation;
- outlet:
neq_extrap; - rotating-cylinder validation inlet: uniform profile with
regularizedprimary inlet and onezou_he_localsensitivity run; - confined-cylinder validation inlet: parabolic profile with
channel_stabilizedinlet; - open-domain lateral boundaries: free slip for Kan99b;
- confined-channel lateral boundaries: no slip, represented by the channel geometry/configuration for Sah04.
Configuration semantics that matter for writing
inlet.profile and inlet.scheme are different concepts:
profiledefines the physical target profile, uniform or parabolic;schemedefines the numerical inlet closure, e.g.regularized,zou_he_localorchannel_stabilized.
The body rotation input is a runtime angular velocity. Changing omega does not require recompilation because it does not change object topology or telemetry layout. Geometry changes do require topology rebuilding/reinitialization.
The solver-generated kernel configuration headers under src/CelerisLab/lbm/kernels/config/*.h are generated artifacts. They are not hand-edited scientific inputs; the JSON config and compiler generation path are authoritative.
4. Telemetry, force and sensor contracts
The GPU body kernels accumulate telemetry in the obs_gpu buffer. The buffer has force, torque and sensor segments. The standard run(steps) path clears the observation buffer and resets the internal accumulated-step count by default, advances the requested number of LBM steps, and downloads telemetry to a pinned host buffer.
For force and torque:
read_force(id, normalize=True)returns the accumulated force divided by the number of accumulated time steps;read_force(id, normalize=False)returns the raw accumulated sum;- the validation runners explicitly use
normalize=Falseafter a one-step accumulation in their fine-grained loop, so each recorded force is a one-step quantity.
For sensors:
- sensor readings are always area-normalized by the number of cells in the sensor footprint;
normalize=Trueadditionally divides by the accumulated time count;- the sensor area normalization is independent of the time normalization flag.
This distinction is essential when comparing solver readback with a manually computed field average or when reconstructing force coefficients from CSV output.
The dedicated sensor test places four circular sensors at (120,50), (120,64), (120,78) and (150,64) on a 256 x 128 D2Q9 MRT free-slip uniform-flow setup. It compares each GPU sensor value with a CPU arithmetic mean over exactly the sensor cell footprint and uses an absolute tolerance of 1e-4 in each velocity component. The test is an implementation/readback validation, not a fluid-physics validation.
5. Validation architecture
The CelerisLab test hierarchy has three levels:
tests/unit/: CPU-only isolated logic such as pending edits, flag masks and equilibrium helpers.tests/integration/: GPU tests for body-topology synchronization, DDF patching, unified action/observation handling and stream APIs.tests/validation/: long GPU physics-regression runners against published rotating-cylinder and confined-cylinder references, plus sensor accuracy and performance diagnostics.
The two physics references serve different purposes:
- [Kan99] is an open-flow rotating-cylinder benchmark. It checks the moving curved boundary, rotation input, force integration, shedding frequency and rotation-dependent mean/fluctuating force coefficients.
- [Sah04] is a confined stationary-cylinder benchmark. It checks parabolic channel inflow, no-slip wall confinement, blockage mapping, developed velocity normalization, wake shedding frequency and high-blockage geometry handling.
These are validation anchors for solver behaviour. They are not validation of the full fluidic-pinball DRL controller, the symbolic-regression pipeline, or any hydrodynamic-cloaking claim.
6. Kan99b rotating-cylinder contract
6.1 Reference problem
[Kang, Choi and Lee, “Laminar flow past a rotating circular cylinder”] studies fully developed two-dimensional flow around a circular cylinder rotating steadily in a uniform viscous stream. The paper uses
[ Re = U_\infty D/\nu, \qquad \alpha = \frac{\omega D}{2U_\infty}, ]
and reports Strouhal number, mean lift and drag, and lift/drag fluctuation amplitudes. It also studies suppression of vortex shedding as the rotation parameter increases.
The strongest exact numeric anchor selected in the repository is the paper's Re=100, alpha=1.0 convergence case:
| Quantity | Kan99 reference |
|---|---|
St |
0.1655 |
mean C_L |
-2.4881 |
mean C_D |
1.1040 |
C'_L |
0.3631 |
C'_D |
0.0993 |
The paper also supports a low-rotation lift trend near Re=100, approximately mean C_L ≈ -2.48 alpha, and qualitative suppression thresholds near alpha=1.4 at Re=60, alpha=1.8 at Re=100, and alpha=1.9 at Re=160. The repository correctly treats those threshold values as regime guides rather than exact single-point gates.
6.2 Lattice mapping
The runner fixes:
[ U_\infty=0.03,\qquad D=30,\qquad R=15, ]
so
[ \nu=\frac{U_\infty D}{Re}=\frac{0.9}{Re}, \qquad \omega_{body}=\frac{2\alpha U_\infty}{D}=0.002\alpha. ]
For the retained K2 run:
Re=100;alpha=1.0;nu=0.009;- body omega
=0.002; - medium domain
M = 1351 x 601; - cylinder diameter
D=30lattice cells; - total steps
280000(80000burn-in +200000measured); - force recorded every 100 steps;
- 2800 recorded samples per run.
The runner uses the exact force definitions
[ C_D=\frac{2F_x}{U_\infty^2D}, \qquad C_L=\frac{2F_y}{U_\infty^2D}. ]
The fluctuation amplitude is half the peak-to-peak range over the post-burn time series, using cycle-aware crossing logic when sufficient crossings are present.
6.3 Primary and sensitivity variants
The retained full package has two K2 runs:
- Primary baseline: MRT + uniform profile +
regularizedinlet. - Inlet sensitivity: MRT + uniform profile +
zou_he_localinlet.
Both use double-buffer streaming, FP32 storage, no LES, free-slip y boundaries and neq_extrap outlet. The second run is not a separate physical reference case; it tests sensitivity to the inlet numerical closure.
6.4 Retained full results
| Variant | St | St error | mean CL | mean CD | C'L | C'D |
|---|---|---|---|---|---|---|
| MRT + regularized | 0.1696483 | 2.5065% | +2.5881365 | 1.1430751 | 0.3529538 | 0.0984419 |
| MRT + zou_he_local | 0.1685349 | 1.8338% | +2.5764851 | 1.1294693 | 0.3488342 | 0.0952994 |
| Kan99 reference | 0.1655 | — | -2.4881 | 1.1040 | 0.3631 | 0.0993 |
The frequency, drag and fluctuation magnitudes are close to the reference. The mean lift has the opposite sign relative to the stored Kan99 anchor in both variants, with a relative magnitude error of approximately 204%. The manifest therefore classifies the Kan99b full result as a partial pass, not an aggregate pass: St, C_D and fluctuation amplitudes pass their declared bands, but the mean-C_L sign/convention mismatch fails the all-metric gate.
This is scientifically important. Do not write “all Kan99b metrics agree” or call the sign mismatch a minor rounding issue. Before using the rotating-cylinder lift in a mechanism argument, the object orientation, wall-point velocity convention, positive rotation direction, force sign convention and reference-paper coordinate convention must be audited.
6.5 Declared K2 bands
The spec declares the following preferred relative bands:
St: within 3%;- mean
C_L: within 4%; - mean
C_D: within 5%; C'_L: within 8%;C'_D: within 10%.
For the two retained runs, the band results are:
| Variant | St | mean CL | mean CD | C'L | C'D | aggregate |
|---|---|---|---|---|---|---|
| regularized | pass | fail | pass | pass | pass | partial pass |
| zou_he_local | pass | fail | pass | pass | pass | partial pass |
6.6 Matrix specified but not retained here
The runner/spec defines:
- K1:
Re=100,alpha=0.5, lift-trend check; - K2:
Re=100,alpha=1.0, hard anchor; - K3:
Re=60,alpha=1.6, suppression classification; - K4:
Re=100,alpha=2.0, suppression classification; - K5:
Re=160,alpha=2.0, suppression classification; - optional K0:
Re=100,alpha=0.
Those cases are not present in steady_jfm_qualification; only K2 baseline and K2 inlet sensitivity are present. The current dossier therefore treats K1 and K3--K5 as specified/planned validation cases, not completed qualification evidence.
7. Sah04 confined-cylinder contract
7.1 Reference problem
[Sahin and Owens, “A numerical investigation of wall effects up to high blockage ratios on two-dimensional flow past a confined circular cylinder”] studies a stationary circular cylinder midway between parallel no-slip walls. The paper defines
[ \beta=D/H, \qquad Re=U_{max}D/\nu, \qquad St=\frac{D}{TU_{max}}. ]
The paper covers blockage ratios up to approximately 0.9 and Reynolds numbers up to approximately 280. It documents Hopf shedding, pitchfork symmetry breaking, asymmetric states and high-blockage wall/wake interactions.
The selected direct periodic anchors are:
| Case | beta | Re | target St |
|---|---|---|---|
| S1 | 0.3 | 100 | 0.2115 |
| S2 | 0.5 | 200 | 0.3513 |
| S3 | 0.8 | 160 | approximately 0.5537 |
| S4 | 0.9 | 200 | 0.5314 |
The repository deliberately avoids using values interpolated from figures or critical-onset points as hard numerical gates.
7.2 Retained S2 setup
The full retained run uses:
- case S2;
- nominal
beta=0.5; - nominal
Re=200; - physical target profile: parabolic;
- numerical inlet scheme:
channel_stabilized; - collision: MRT;
- outlet:
neq_extrap; - no-slip confined walls;
D=30lattice cells;- fluid height
H=60cells; - realized
beta=30/60=0.5; - wall gap: 15 cells;
- grid:
2402 x 62including boundary rows; 120000total steps;45000burn-in steps;- forces sampled every 5 steps;
- 24000 stored lift/drag samples.
The analysis measures the developed downstream U_max,real, and reports
[ Re_{real}=\frac{U_{max,real}D}{\nu}. ]
The spectrum is computed from the post-burn lift signal using a mean-subtracted Hanning-windowed real FFT, a target-guided frequency band, and local log-parabolic sub-bin interpolation.
7.3 Retained full S2 result
| Quantity | Result |
|---|---|
| nominal Re | 200 |
| realized Re | 204.8809 |
| nominal beta | 0.5 |
| realized beta | 0.5 |
| target St | 0.3513 |
| measured St | 0.3566902 |
| relative St error | 1.5344% |
| gate | pass, threshold 5% |
| mean Cd | 2.5801072 |
| realized Umax | 0.10244045 |
| curved links | 292 |
| fallback links | 0 |
| low-q links | 72 |
| final rho range | 0.9820464 to 1.0512210 |
The full run passes the declared S2 Strouhal gate. It is a solver/reference anchor at a specific confined-channel setup. It is not evidence that all high-blockage cases, all collision models or all bifurcation boundaries have been validated.
The saved NPZ contains:
- 24000 lift samples;
- 24000 drag samples;
- sample lattice steps;
- burn index and recording interval;
- post-burn frequencies and power spectrum;
- final
rho,ux,uyfields; - measured
St, peak frequency, realizedRe, and realizedbeta.
7.4 Smoke S2 result and interpretation
The smoke run uses only 5000 steps with 1500 burn-in and retains 1000 force samples. It gives:
- realized
Re=161.4173rather than the nominal 200; - measured
St=0.3039154; - relative error
13.4884%; - gate fail.
This is expected diagnostic behaviour: the short run has not developed the target state and has insufficient statistical duration. It must be labelled wiring/initialization diagnostic only and must never be quoted as a failed physical validation of CelerisLab.
7.5 Matrix specified but not retained here
The runner/spec defines S1--S4, with high-blockage refinement recommended for S3/S4. The retained qualification directory contains only S2 full and S2 smoke. S1, S3 and S4 are not completed artifacts in this directory.
The specification requires realized blockage and realized Reynolds number to be reported, especially at high blockage. It also recommends at least approximately doubled resolution for beta >= 0.8 before treating S3/S4 results as validation-quality. This is a methodological requirement, not evidence that those refined cases have already been run.
8. Manifest and artifact inventory
The manifest schema is steady-pinball-cfd-anchor-qualification/v1.
Manifest interpretation
kan99b_full: partial pass; frequency, drag and fluctuation amplitudes pass, but mean lift sign/convention mismatch fails aggregate gate.sah04_full: pass; S2 Strouhal error 1.534% is below the 5% gate.smoke: diagnostic only; insufficient duration for physics gates.
Retained artifact hashes
| Relative artifact | SHA-256 |
|---|---|
kan99b_full/force_csv/k2_baseline_domM_re100_a1p000_regularized_mrt.csv |
e5ba55a789254322408b6657c175b0c1ac82ce92c3db4216716727ff8cc7df1c |
kan99b_full/force_csv/k2_k2_inlet_control_domM_re100_a1p000_zou_he_local_mrt.csv |
84b999757c13c0d975be968f22b7e4cbf9ad9229d9ce91eb096c5ecdc92bbf72 |
kan99b_full/summary_runs.csv |
b009ffc75615d65ec6d0d351da37a2d99ac4e57378d8ee635207e65e7edc6677 |
kan99b_full_summary.json |
18b19b15bd426c68d5d919d3449f436a2284386726e2cd19e8334ccba2f0c6bf |
sah04_full/s2_mrt.npz |
6e3ef38de8cd1bc5c67ffa693868b1c6fd97453e1d7721a9287ca6fdf741f5ec |
sah04_full_summary.json |
e212fb4e0653e9ca3a3715fefef1d552e7dfac8acc1e46cd732769c0d7ce13e1 |
kan99b_smoke/force_csv/k2_baseline_domM_re100_a1p000_regularized_mrt.csv |
049382058562dbfda0aedb836827311302878d6589d790a94942aa973dee6262 |
kan99b_smoke/force_csv/k2_k2_inlet_control_domM_re100_a1p000_zou_he_local_mrt.csv |
45552003e8c9f8149d06eaac9f8696691e1e8607d92fd0e57135ea0919a664e4 |
kan99b_smoke/summary_runs.csv |
468188a9cbf54b4491999f306b0e82352be91880038fd58487cdb040034518a3 |
kan99b_smoke_summary.json |
24c101fcc7d1568c1ea0c4e8a9fe7c00b9427f9046b183bc9018624b65f76247 |
sah04_smoke/s2_mrt.npz |
40438246e8b9c63dd1b28c9982a273d48885f6d378ba9756afae3db61b8eafd5 |
sah04_smoke_summary.json |
902b211d28ca2c4d4205aae12cdd1ab6f563231e31ab23a8bed626d55451871 |
The manifest is the hash authority. The full artifact files are the evidence, not this prose dossier.
9. Additional CelerisLab validation relevant to setting writing
9.1 Sensor accuracy
tests/validation/test_sensor_accuracy.py validates the sensor kernel against a direct CPU average over the same sensor footprint. It uses four sensor locations, a free-slip uniform-flow MRT test, and an absolute component-wise difference threshold of 1e-4. The test establishes that area-averaged sensor readback is consistent with the underlying macroscopic field sampling for the tested setup.
This supports using area-averaged probes in a DRL observation loop. It does not establish full-field observability, sensor optimality, or equivalence between sparse sensor DTW and full-field wake error.
9.2 Streaming equivalence
CelerisLab v0.5.1 includes an EsoPull single-buffer streaming path. The README records verification for D2Q9 curved-boundary MRT configurations, including fixed/rotating-cylinder Kan99b K2 comparisons and runtime body synchronization. The current documented scope is two-dimensional D2Q9; D3Q19 EsoPull is not yet implemented in that verification statement.
The README reports approximate Kan99b K2 drag comparisons between EsoPull and double-buffer for D=20 and D=30, with differences below approximately 3.2% and 5.6%, respectively. These are implementation equivalence diagnostics and should not be confused with the retained steady_jfm_qualification full-run manifest.
9.3 FP16S limitation
FP16S stores the distribution function in half precision with FP32 computation and scaling. The documented validation found that FP16S combined with Bouzidi curved boundaries can produce approximately 30--40% drag error even with DDF shifting, while no shifting can exceed 100% error for Kan99b K2. Sah04 S2 Strouhal can remain within approximately 1.5%, but force-critical curved-boundary work should use FP32.
Therefore the JFM steady/cloaking qualification should use FP32 storage when force or torque is interpreted scientifically. A good Strouhal result under FP16S is not enough to authorize force-mechanism claims.
9.4 DDF shifting
DDF shifting stores f_i-w_i rather than f_i to improve half-precision accuracy. The documented supported scope includes D2Q9 MRT with double-buffer or EsoPull and the tested inlet families. It is important for FP16S but does not cure all Bouzidi/quantization force errors. The retained steady qualification uses ordinary FP32 and ddf_shifting=false.
9.5 Performance
The CelerisLab README reports approximately 4400 MLUPS for a 384 x 192 D2Q9 V100 benchmark under Re100 MRT no-LES, for both double-buffer and EsoPull at the stated benchmark level. The performance runner is a separate engineering benchmark. MLUPS is not a validation of physical accuracy and should be reported separately from physics metrics.
10. Known limitations and unresolved issues
- Kan99 mean-lift sign mismatch. This is the most important unresolved physics-validation issue in the retained package. The magnitude is close but the sign is opposite to the Kan99 anchor. Audit coordinate and force conventions before interpreting rotating-cylinder lift.
- Qualification matrix is partial. Only K2 and S2 full runs are retained in this directory. Do not claim K0--K5 or S1--S4 as completed based only on runner definitions or README tables.
- Smoke runs are not physics evidence. The S2 smoke run demonstrates that the setup runs but has realized Re drift and insufficient periodic duration.
- No uncertainty estimate. The retained artifacts are deterministic solver runs, not independent ensembles. They provide no statistical confidence interval.
- No mesh-convergence result in this manifest. Domain/grid choices are documented in the runners/specs, but the qualification directory does not contain a multi-resolution convergence package.
- No full field snapshots for Kan99 full. The retained Kan99 full output contains force histories and summaries, not vorticity images or field snapshots.
- Sah04 high-blockage cases remain unqualified here. High blockage is especially sensitive to narrow wall gaps, realized Re and geometry resolution.
- Reference/solver contract differences matter. Agreement is expected only after matching Re definition, inlet profile, wall condition, outlet treatment, rotation convention, coefficient normalization and analysis window.
- No mechanism proof. A benchmark match validates selected numerical observables; it does not prove a particular wake mechanism or guarantee transfer to the three-cylinder pinball.
- No Legacy equivalence. LegacyCelerisLab results cannot be silently pooled with current CelerisLab results. The two solver generations have different APIs, accumulation semantics, generated kernels, boundary implementation details and provenance.
11. Writing-ready methods language
The following is suitable as a starting point, subject to checking the final artifact paths and solver revision:
The flow solver was implemented in CelerisLab, a CUDA-accelerated D2Q9 lattice-Boltzmann code with MRT collision, double-buffer streaming and Bouzidi interpolation for moving curved boundaries. Force and velocity-sensor observables were accumulated on the GPU and read back through the Python API; force coefficients were formed from the accumulated force using the same diameter and free-stream normalization as the reference problem. Before applying the solver to the fluidic-pinball control problem, we qualified selected numerical components against two canonical single-cylinder benchmarks. For a steadily rotating cylinder, the
Re=100,alpha=1case reproduced the reference Strouhal number, mean drag and fluctuation amplitudes within the declared tolerance bands, although the mean-lift sign convention remained discrepant and was therefore not used as an accepted validation observable without further convention auditing. For a stationary cylinder in a confined channel atbeta=0.5,Re=200, the measured Strouhal number was0.35669compared with the reference value0.3513, a relative error of1.53%. These tests qualify the selected solver/configuration combination for the reported numerical setting; they do not constitute a proof of universal solver accuracy or of the later flow-control mechanism.
What to put in a table
At minimum include:
- solver revision;
- lattice model and dimension;
- collision model;
- streaming path;
- storage precision;
- LES state;
- inlet physical profile and numerical scheme;
- outlet mode;
- wall condition;
- diameter and grid;
Re,nu,U_inforU_maxdefinition;- body rotation parameter and physical omega;
- burn-in and statistics window;
- sample interval;
- target and measured
St; - measured force metrics where accepted;
- artifact path and manifest/hash identifier.
12. Claims that are authorized, bounded or prohibited
Authorized with scope
- CelerisLab implements a GPU-accelerated D2Q9 MRT LBM suitable for the tested two-dimensional rotating and confined cylinder configurations.
- The retained Sah04 S2 full run passes the declared 5% Strouhal gate.
- The retained Kan99b K2 full runs reproduce frequency, drag and fluctuation magnitudes within their selected bands.
- The selected sensor readback path can be checked against direct area averages over the tested footprints.
- FP32 is the appropriate storage choice for force-critical curved-boundary calculations in the documented validation scope.
Bounded / conditional
- The Kan99b K2 result is a partial pass because mean-lift sign/convention agreement is unresolved.
- The
regularizedversuszou_he_localK2 comparison is an inlet sensitivity check, not evidence that one inlet scheme is universally superior. - The Sah04 result qualifies one moderate-blockage confined-channel point, not all blockage ratios or bifurcation regimes.
- EsoPull equivalence is bounded to the documented D2Q9 MRT configurations and comparison metrics.
- Performance figures describe hardware/configuration throughput, not accuracy.
Prohibited without new evidence
- “All Kan99b K0--K5 and Sah04 S1--S4 cases passed.”
- “The solver is validated for all Reynolds numbers, all blockage ratios or all collision models.”
- “The mean-lift sign mismatch is irrelevant.”
- “A matching Strouhal number proves force accuracy, boundary accuracy or hydrodynamic mechanism.”
- “The solver validation proves the DRL policy, SR law, CCD interpretation or cloaking mechanism.”
- “LegacyCelerisLab and CelerisLab are numerically interchangeable.”
- “Smoke output is a physical benchmark result.”
13. Reference papers
- [Kan99] S. Kang, H. Choi and S. Lee, “Laminar flow past a rotating circular cylinder,” Physics of Fluids 11, 3312--3321 (1999). DOI:
10.1063/1.870190. - [Sah04] M. Sahin and R. G. Owens, “A numerical investigation of wall effects up to high blockage ratios on two-dimensional flow past a confined circular cylinder,” Physics of Fluids 16, 1305--1320 (2004). DOI:
10.1063/1.1668285.
Undermind cite-key resolution in the DynamisLab workspace: Kan99 and Sah04. In Undermind workspace Markdown, use bare markers [Kan99] and [Sah04]; in manuscript prose, resolve them through the project's bibliography workflow.
14. Reproduction entry points
From the CelerisLab/ directory, the validation runners are:
conda run -n pycuda_3_10 python tests/validation/run_kan99b_rotating_cylinder.py
conda run -n pycuda_3_10 python tests/validation/run_sah04_st_matrix.py
conda run -n pycuda_3_10 python tests/validation/test_sensor_accuracy.py
The retained qualification artifacts should not be overwritten. New runs must use a new no-clobber output directory and must record the exact command, environment, GPU, solver revision, configuration, artifact hashes and gate interpretation.
Final operational rule: read the code and manifest before quoting any number. This dossier is an index and interpretation aid; the JSON/NPZ/CSV artifacts and current validation code remain the numerical authority.