6.8 KiB
Re_D = 50 Kármán inflow: paired pinball VIV / frozen PPO demo
Development experiment, frozen before results, 2026-10-31. No new production method, structural damping, force filter, policy training, or main merge. Force-spike research index.
Plant and structure
Base e9213dd2cc9cfed0e8487a3cf4ebdd94d23dc64d; fixed-policy contract from
580397eaf83c85b233495791ecc51662a374a247. Reuse steady_pinball config,
coordinate map and exact held-force oscillator. D40, U=.005, nu=.004, MRT,
2559 x 1022, FP32 unshifted double buffers. Regularized parabolic inlet,
NEQ extrapolation outlet, bounce-back y walls (.5,1020.5); no BC changes.
D20 coordinates map x'=2x, y'=.5+2(y-.5).
Upstream cylinder (400,510.5), radius40, is static. Pinballs radius20 at
(1200,510.5), (1252,540.5), (1252,480.5) share only transverse translation.
Lab probes radius10 at (1600,590.5), (1600,510.5), (1600,430.5) stay fixed.
One shared Translation, travel ±D, max wall speed .025, existing clearance
and per-step move guards unchanged. M2: m*=2 based on all three disks,
M=7539.8223686, fn=.000025, K=.000186037660, C=zeta=0; release y=v=0.
Each native step uses previous-step sum(CME_y+Wen_y), then exact oscillator
update with held force. Wall speed is interval displacement y[n+1]-y[n].
Cover/uncover impulses are logged, never added to the selected RHS. This
estimator remains provisional; existing spike/convergence limitations remain.
Same release state, two clocks
A static precursor retains the accepted Kármán sequence: upstream+probes, 2,048,000-step warmup, 150 x 3,200-step no-pinball target samples, add static pinballs/sync, second 2,048,000-step warmup. Save both DDF buffers, flags, clock and last instantaneous force. Construct each moving arm fresh at the same zero-offset geometry, check flags, copy both buffers and clock, verify exact copy hashes. This one-time research initialization is not a moving checkpoint or FSI rollback. Initial policy observation and spin are zero.
Frozen model SHA256 148240c1dcb8b11d8e5a0a9e991f6874c4e799c9744707bf0fb32a8efeb0468d;
normalizer 534fda818c030a56960e95d0f3ac1e350d887d03db7f80f1d6453195a502b7f0.
Only these explicit supplied assets are accepted. Policy is CPU deterministic.
Native policy signals: packed CME (same read_force path), lab area-mean
velocity, each averaged over SI3200. Convert to original D20 training units:
forces x2, area-mean velocity x2 x78, then frozen force-first normalization
and clipping. Fine-grid probe pixel footprint is not exactly identical;
using the original78 cells avoids a hidden area-count normalization change.
The moving plant, motion-induced force, lab-frame wake displacement and D40
resolution remain out of training distribution. No transfer guarantee.
A=(8a+(0,-4,4))*.005; EMA alpha=.9^(1/4), reset0 each SI; omega=+A_eff/20. This preserves historical physical actuator timescale under dt/4. The zero arm substitutes a=(0,.5,-.5), so all spins are identically zero. Policy interval averaging does not average the native structural RHS.
Bound, output, and interpretation
One serial pair, zero then controlled: 400SI=1,280,000 native steps=160D/U =32Tn per arm. No retuning/automatic extension. Stop on nonfinite state, no_donor, travel/speed/move rejection, or four-hour whole-pair wall cap. A failure stops the remaining run; retain valid rows and completed intervals. NaN trailing rows are unexecuted, not zero-valued observations.
Report first/last80D/U windows, mean offset separately from centered RMS, half-range, peak, frequency and drift; native versus SI-averaged force, CME/Wen/node/crossing terms and action/observation clipping. Last80D/U is the principal descriptive window, not an asserted settled window. If zero arm half-range <.1D there, classify weak response and do not claim vibration suppression. Report continuous ratios regardless. Cloaking uses retained canonical last30 lagged sensor DTW against this precursor's no-pinball target, with fixed-body D20 results contextual only. These are development criteria, not paper uncertainty, grid convergence, or proof of validated FSI.
Save native18-column rows (~184MB/arm), small SI signals, target, config, release two buffers (~188MiB), hashes and terminal reports outside checkout. No per-step field output. Expected new data <650MB, check actual resources.
CUDA_VISIBLE_DEVICES=0 PYTHONPATH=src python research/karman_viv/run.py \
--model /tmp/celeris-karman-viv-assets/model.zip \
--norm /tmp/celeris-karman-viv-assets/norm.json --out /tmp/NEW_OUTPUT
First --smoke: same D40 geometry, warmup32/target2x8/warmup32,
4x8 response steps each arm; strictly plumbing only. CPU source checks and
independent exact-tip review precede GPU. Preserve original DynamisLab files.
One predeclared m*=4 exploration (2026-10-31)
The m*=2 attempt at 516975ef6482f983ace347cb10de7450d2fbd680 stopped
at the declared travel guard in both arms: zero 10.469375 D/U, PPO 27.5525 D/U.
Its principal 80–160 D/U paired window is unavailable. Early attenuation is
not sustained suppression; control-only DTW is not a paired cloaking result.
Those results remain unchanged and retained.
The sole next candidate doubles M and K together: m*=4, M=15079.644737231, K=0.000372075320164, fn=0.000025, C=zeta=0. This increases inertia and stiffness, not damping. Half response under an identical prescribed external force is the selection rationale only; coupled flow feedback can invalidate it. This is an exploratory development case, not independent validation or a sweep.
Reuse the exact saved static release, config, target, model and normalizer.
--release-dir checks precursor metadata, config equality, both DDF/flags
hashes and clock against the original transfer receipt. Each fresh arm still
checks its upload against that seed. No warmup, moving restart or new release
file is generated. All fluid/geometry/EMA/SI/RHS settings, 400SI per arm,
zero damping, ±D guard and other stop conditions above remain unchanged.
The original failure stops the remaining run rule also remains unchanged.
CUDA_VISIBLE_DEVICES=0 PYTHONPATH=src python research/karman_viv/run.py \
--model /tmp/celeris-karman-viv-assets/model.zip \
--norm /tmp/celeris-karman-viv-assets/norm.json --out /tmp/NEW_M4_OUTPUT \
--mass-ratio 4 --release-dir /tmp/celeris-results-karman-viv-516975e/pair
Report matched valid windows only, separately retaining mean offset, centered RMS, half-range, interval/native forces, crossing/diagnostic counts and paired DTW only where both arms have sufficient data. The larger controlled force excursions remain unresolved: retained m*=2 data strongly associate them with the post-action-reset ramp, not exclusively current-step node switching. No force smoothing, action-contract change, enlarged travel band or further parameter adjustment follows an unsuccessful outcome.