Files
CelerisLab/docs/continuous_viv_video.md

5.4 KiB

Continuous VIV videos

Research-only, two separate settings, each one uninterrupted OFF -> ON -> OFF fluid/oscillator trajectory. No production changes, topology switching, moving checkpoint feature, retraining, force filtering, or parameter search.

The user selected separate videos because runtime topology changes are unsupported with translating circles. This is deliberately different from the old Legacy multi-setting video, which rebuilt solvers and transferred full state.

Frozen physical and control contract

  • Source baseline 73d3f6214e0d28ced4744665aa3bb05522aa2fa8; D40, U=.005, nu=.004, MRT/FP32/unshifted double-buffer. Same parabolic regularized inlet, NEQ outlet and bounce-back walls as the retained m*=4 pair.
  • Common transverse assembly: m*=4 (all three disks), fn D/U=.2, zeta=0. Structure uses previous native-step sum CME_y+Wen_y. No policy-force averaging is applied to this RHS. Same +/-D travel, speed, finite-state and no-donor stops.
  • Each phase: Karman400 complete SI of3200, steady320 SI of4000 native steps =160 D/U. Steady's SI follows the actual old video1000-step interval under diffusive D40 scaling, rather than borrowing PPO's800-step interval. Total480 D/U. No extension, retuning or replacement if steady motion/control is weak.
  • Steady: canonical new-reproduce constant surface velocities (0,-5.1,+5.1) U. This is NOT a PPO transfer. No model/normalizer is loaded. Existing 2,048,000-step at-rest warmup precedes the free response.
  • Karman: actual pinball Re_D50, historically named karman_re100, frozen model 148240c1dcb8b11d8e5a0a9e991f6874c4e799c9744707bf0fb32a8efeb0468d and norm 534fda818c030a56960e95d0f3ac1e350d887d03db7f80f1d6453195a502b7f0. Use the verified static release once, at video start (clock4576000).
  • Both switches occur on SI boundaries. The oscillator y/v, previous RHS, both DDF buffers, moving geometry and solver clock are never reset. OFF still gathers sensor/CME observations. First PPO action uses the immediately previous complete OFF interval, unlike an independent arm's initial all-zero observation. Deterministic feed-forward PPO has no recurrent state. EMA resets to zero each SI, as in training/reproduction; original video's SplitAdvance also reset the constant-steady actuation every interval. Physical OFF is exactly zero wall speed. There is no extra transition blend. The first1 D/U after either switch is explicitly labeled a switch transient. ON from an already moving state differs from the previous independent pair; +/-D stops are retained without retuning. A visual ON label means enabled control, not a proven suppression/cloaking result.

Video provenance and presentation

Read-only source: DynamisLab src/drl_pinball/reproduce/continuous_video.py, SHA256 3bd9c777171c9e8932c78298accbb6f61a8323b0eed5938e0f56e167b3df0743. Approved original MP4 SHA256 578d2cf5113429006b6919bbb8ef8ff6ce65ebcd0c056ac478f8ce2515e4cbab. The actual new-reproduce conversation confirms fixed-position plain-language labels, white bars, OFF/ON toggle, rotation sectors, and 1/2/5/10/5/2/1 gears.

Only the display idiom/gear schedule are reused. Legacy population decoding, physics, topology handoff and policy runner are not imported. Modern macroscopic fields feed centered vorticity with all stencil nodes fluid. Fixed color limits [-3,+3], 21 RdBu_r bins; per-frame clipping fraction retained. Box downsampling is display-only. Both main field and enlarged inset have fixed lab coordinates; the inset shows the equilibrium line. Actual moving centers and applied surface speeds drive the body overlays. y/D trace has fixed +/-1 limits. No motion gain.

1280x800,30fps; first80 D/U of each phase uses the original display gear ramps, last80 D/U uses normal cadence (800 native steps/frame =.1D/U). Every native step and every SI is still executed. Streaming ffmpeg avoids stored PNG sequences. Keep raw scalar histories, SI observations/actions, per-frame time/motion records, selected keyframes, source/input hashes and terminal status. These are new continuous runs, not an exact replay of the old independent paired histories.

Gates and limits

CPU: switch-state/clock continuity, first ON observation, exactly zero OFF action, SI timing despite sampling, physical scaling, schedule monotonicity, vorticity sign/mask, fixed-coordinate mapping. Real smoke:32 warmup +3x32 response steps on D40 (smoke SI32), all switches/encoder; not a physical comparison. Grok reviews the exact research diff before full runs. Capture no-donor, finite state, native RHS and all stop outcomes. Report per-phase late-half motion statistics and raw-force limits; appearance and successful duration are not physics qualification.

Example (outputs must be new, outside checkout; select a safe GPU):

CUDA_VISIBLE_DEVICES=0 PYTHONPATH=src python research/continuous_viv/run.py --scene steady --out /tmp/celeris-results-continuous-viv/steady
CUDA_VISIBLE_DEVICES=0 PYTHONPATH=src python research/continuous_viv/run.py --scene karman --model /tmp/celeris-karman-viv-assets/model.zip --norm /tmp/celeris-karman-viv-assets/norm.json --release-dir /tmp/celeris-results-karman-viv-516975e/pair --out /tmp/celeris-results-continuous-viv/karman

Append --smoke and use separate output directories for the bounded gates. The Karman smoke does not read/install the physical release. Source and review SHA, interpreter/version and GPU resource readings belong in the execution receipt.