Files
CelerisLab/docs/fig2_collection.md

110 lines
6.5 KiB
Markdown

# Fig. 2 material collection: modern moving plant
Research-only child of `76873d911c4e2caba1bacc25aaa1495ea768453f`.
No production/kernel/manuscript or DynamisLab edits. These are fresh common-release
paired experiments, separate from the continuous OFF/ON/OFF demonstration videos.
## Fixed plant and cases
All cases use D40, Uref=.005, nu=.004, MRT/FP32/unshifted double buffering,
the existing mean-parabolic/regularized inlet, NEQ outlet and bounce-back walls.
One transverse assembly DOF: m*=4 based on all three disks, fnD/U=.2, zeta=0.
No force filter or retuning. Existing +/-D, speed.025, nonfinite and no-donor stops.
Structure RHS is previous native-step sum of pinball CME_y+Wen_y. Policy uses
SI-mean packed CME and fixed lab probe signals; these are different force paths.
SI=3200; EMA alpha=.9**.25 resets every SI as in the acquisition contract.
Steady video used SI4000; its descriptive numbers are not the new collection.
| case | prelude/release clock | controller | collection |
|---|---|---|---|
| steady | new static pinball, 2,048,000 steps | constant wall speeds (0,-5.1,5.1)U, no PPO | 400 SI,160 D/U |
| Karman | verified saved static release at4,576,000 | historical `karman_re100` PPO; actual pinball Re_D50, scale8/bias(0,-4,4) | 400 SI,160 D/U |
| Taylor y0 | clean512,000 then static pinball512,000; clock1,024,000 | `vortex_taylor` PPO, scale4/samebias | 150 SI,60 D/U |
Zero/control share exact current/spare populations, flags, clock and zero initial
structural state. Target is a separate no-pinball reference at the SAME absolute
clocks, not a copy of a solid-containing release. Its different geometry is the
definition of the reference, not identical microscopic initial conditions.
Karman target must run to4,576,000; old target.npy is from earlier clocks and is
not reused for same-clock field errors. Model/norm files are verified by SHA256
in the driver and written with all source hashes into case.json.
## Taylor injection
Exactly one event at release in every role, inside the owning synchronized CUDA
context: centre(600,510.5), R80, strength **.000075**. Reuse the existing initializer
unchanged. It rewrites ALL interior cells to equilibrium and uploads BOTH buffers;
this removes existing nonequilibrium globally. The impulse and first two SI of
native force/displacement remain in the record. This is a declared limitation,
not an independently qualified physical vortex generator.
Strength has inverse-time units: u_theta=(s*pi/2)r exp(-r²/R²). D20 R40/U.01/s.0003
maps to D40 R80/U.005/s.000075 under diffusive scaling. Using .03*U at D40 would
double u/U and quadruple p/U²; actual-function CPU positive/negative controls lock it.
Current Horsea `acquisition.py` SHA
`ea674080501407d00ded6d23467423c516cd37e04d166d5adda16465100204d3`
defines EIGHT offsets(-20,-15,-10,-5,0,5,10,15). `legacy_test/acquire.py` SHA
`91cd29a368dfc53a0804ec37397d2e5f25f0f8721f01b560a0f4328b8fd1dd9c`
selects the controlled centre-uy event: median first20, peak over38..87 inclusive.
All roles use that common event index; own target/role peak delays are separately
reported. The earlier five-offset remote summary is superseded by actual source.
## Estimands and storage
Primary: unaligned same-clock/event velocity-vector errors, Eq1
`sqrt(mean_ROI((dux²+duy²)/Uref²))`. No target-energy denominator. Lab ROI is
front-equilibrium-centre-relative x/D=[4,24], y/D=[-5,5], equivalent to sensor-plane
x/D=[-6,14]; D40 inclusive columns1360..2160 and rows311..710. All ROI cells must
be fluid and finite in every compared field; record support coverage.
Motion uses native last80 D/U for steady/Karman, whole60 D/U for Taylor; mean,
centered RMS and half-range remain distinct. Karman complete-cycle means and
eight independently phased nearest snapshots reuse actual acquisition helpers,
centre-uy column3 and minimum crossing gap. Missing crossings yield unavailable
phase diagnostics, never fabricated phase slots. Steady retains its last snapshot
and separately labeled fixed-window mean. Field collection for steady/Karman is
the last160 SI boundaries (96.4..160 D/U); motion window remains80..160 D/U.
Taylor retains its eight common event snapshots. Fixed-window mean error differs
from mean instantaneous error; both are labeled. Native six-channel DTW is a
supplementary training-space metric, never field recovery or physical delay;
its actual legacy lag uses flat sensor column1, unlike the phase helper's column3.
Use one FP32 full-grid RAM cache per role, plus compact ROI RAM histories for
same-clock comparisons. Admit only with >=16GiB MemAvailable; no3.35GB disk field
cache. Save only selected fields, means, explicit masks, scalars and source receipts.
Nonfluid placeholders are zero-filled for helpers but always masked in plots and
scores; nonfinite FLUID is a hard failure. Serialize compilation/GPU work. Verify
compressed native histories before removing only redundant task scratch copies.
Plot standards: vorticity curl(u)D/U, five-point fluid stencil, common RdBu_r21bins
with fixed[-3,3] limits and nearest interpolation; lab-fixed coordinates and ROI.
Mean plots exclude cells that were not fluid at every collected boundary. Selected
snapshots use actual step geometry. Raw arrays and scalar errors are not clipped.
## V5 boundary
Standard V5 `kar_re100` seeds41..45 DO exist (actual pinball Re_D50), but use
2000x600 uniform/free-slip and different absolute geometry/normalization/action
contracts. These are not silently transferred onto the present Legacy-contract
plant. No verified retained trained V5 steady/Taylor bundle was found; a vortex
environment prototype is not a trained policy. Existing V5 within-case results
may be indexed separately; cross-generation scores cannot imply an identical plant.
## Execution
First run focused CPU contracts, independent source review, then each scene with
`--smoke` (three32-step SI per role; no physical scores). Only the reviewed exact
SHA may run physical cases, one at a time, new outputs outside the checkout:
```
CUDA_VISIBLE_DEVICES=3 PYTHONPATH=src python research/fig2_collection/run.py --scene karman --out /tmp/celeris-results-fig2-collection/karman
python research/fig2_collection/analyze.py /tmp/celeris-results-fig2-collection/karman
python research/fig2_collection/plot.py /tmp/celeris-results-fig2-collection/karman
```
Use the same invocation for steady/taylor with new output directories. No automatic
extension or parameter sweep. All results are developmental material, not asserted
settled/physically qualified. Preserve partial failures and distinguish missing
evidence from passing gates.