Files
CelerisLab/docs/validation/leontini_viv_predeclare.md
T

114 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Single-cylinder free transverse VIV — PREDECLARATION DRAFT (not frozen)
Stage goal (Yanqi via TRON): prescribed Dütsch case + one VIV case both
"reasonably close" to a predeclared reference = development-stage success, then
cleanup. The frozen Dütsch settling failure (0/28 pairs at 31.25 T) stays on
record. Practical closeness is not a formal validation claim. No code until
this page is jointly agreed.
## Primary case (one case)
- Reference: Qin et al., arXiv:2003.12186, §4.5 (maximum amplitudes at
U_red = 3…8: .075, .551, .520, .459, .370, .084 D in the text, as quoted by
Grok/Astra) for the target; setup from Kolahdouz et al., arXiv:2003.12046,
§4.1.1 (read 2026-10-30 via ar5iv): U* sweep 3–8 with amplitudes only in
Fig. 3(b) (no text values), domain [−30, 45] D × [−30, 30] D with the
cylinder "initially at rest and centered at the origin", uniform inflow on
the left, zero normal traction and tangential velocity at the outlet, zero
normal velocity and tangential traction on y = ±30 D; no initial
perturbation and no total simulated time stated.
- Re = 150, U* = U/(f_n D) = 5, m/(rho D²) = 2 (m* = rho_s/rho_f = 8/pi),
zeta = 0, f_n = sqrt(K/M)/(2 pi) in vacuum. Transverse DOF only.
- Target: A_max = .520 D (peak amplitude, Qin §4.5). Multi-code reference
(Kolahdouz ILE-NS, Qin II-LBM). Reference uncertainty: not stated; the
spread between codes is not quantified here.
## Our reproduction (declared differences)
- D = 40, MRT, dense double buffer; U_lat = .04, nu = U D / 150 = .010667,
tau = .532.
- Box [0, 75 D] × [0, 60 D] (3000 × 2400) with the cylinder centre at
(30 D, 30 D): 30 D from the inlet, 45 D from the outlet, centred in y
(Kolahdouz §4.1.1). Qin's own box ([0, 40 D] × [0, 20 D], centre (10 D, 10 D))
is the target paper's, not ours.
- Boundaries: uniform Zou–He inlet, NEQ outlet (rho = 1, backflow clamp),
free-slip y walls. Kolahdouz uses a traction outlet: declared mismatch.
- Qin's own VIV box (40 D × 20 D) is not used; a smaller box would be a
declared cost cut with more blockage, not "the same case".
- Allowed y offset ±1.5 D; peak transverse speed ≈ .026 cells/step (bound .5).
## Structure, coupling and time levels
- M = 2 rho D² (lattice rho = 1), f_n = U/(5 D) = 2e-4 per step, K = M (2 pi f_n)²,
zeta = 0. Equation of motion uses the structural mass only.
- Per-step sequence (binding): known (y_n, v_n) and the last completed force
F_last → candidate (y_{n+1}, v_{n+1}) by the update below → `set_body` with
offset y_{n+1} and wall velocity (y_{n+1} − y_n)/dt (interval average; a
different quantity from the endpoint v_{n+1}) → `run(1)` → only on success:
commit y_n ← y_{n+1}, v_n ← v_{n+1}, F_last ← force read for that step. Any
failure leaves the Simulation failed (existing lifecycle). Whether the
measured force represents the interval's start, midpoint or end is not
asserted; the one-step lag is declared, not corrected.
- Initial state: fluid at rest except the uniform inlet; y_0 = v_0 = 0;
F_last = 0 for the first step; geometry initialized at the declared centre.
- Structural update over one step with constant force F = F_last (exact
harmonic solution, zeta = 0): y_e = F/K, w = 2 pi f_n,
y^{n+1} = y_e + (y^n − y_e) cos w + (v^n / w) sin w,
v^{n+1} = −(y^n − y_e) w sin w + v^n cos w.
- Primary RHS (single coupled run): CME + Wen (theory-motivated stage choice:
Galilean-invariant link correction; G4 could not separate it from CME).
Raw CME and the node terms are logged as diagnostics of that trajectory;
the node impulse is not added. A run with CME-only as RHS is a separate,
labelled sensitivity case, decided separately. Neither RHS is claimed proven.
## Window, failure semantics, acceptance (engineering, development stage)
- Start (source-faithful): fluid at rest except the uniform inlet, body at
rest at the declared centre, y(0) = v(0) = 0.
- Seed policy (conditional, declared): exact mirror symmetry can suppress
lift. If max |y| over the last 5 T_n before t = 40 T_n (200,000 steps) is
below .01 D, apply one labelled seed at that step as a structural velocity
increment v += 2 pi f_n (.01 D) (amplitude ≈ .01 D), so the geometry then
moves continuously through the update (never a jump);
`seed_applied=true`, its step and size logged; the run continues under the
same caps. Missing shedding is a diagnostic, never an
"A = 0 pass"; the seed is not changed or repeated after seeing results.
- Response cycles: delimited by consecutive upward crossings of y through the
mean of the previous completed cycle (0 for the first). Per cycle: positive
peak max(y), negative peak min(y), mean offset, amplitude (max − min)/2.
Window value = mean amplitude over 10 cycles; window change =
|W_k − W_{k−1}| / W_{k−1}.
- Settled when the per-cycle peak changes ≤ 2 % between consecutive 10-cycle
windows and the last 5 cycle peaks agree within 1 %. Budget: 150 response
cycles from the start of motion, including the 20 scoring cycles, so
settling must complete by response cycle 130; the score uses the first 20
cycles after settling. Hard native cap 1,000,000 steps (= 200 T_n) in case
response cycles cannot be detected. Either cap missed → FAIL-CLOSED
(timeout).
- Durations reported: total steps, t U/D, N_resp, measured T_resp (mean
upward-crossing interval); N_resp / f_n only as a labelled secondary clock,
never as the settling unit.
- Growth is not a failure: initial VIV growth is physical. Checked every step
(FAIL-CLOSED): non-finite y, v or force; |y| > 1.0 D (about twice the
largest reference peak, .551 D) or the offset box reached; no_donor > 0;
a failed upload/step/sync. Timeout = a cap missed (above).
- All failures are reported as they are (no sub-iteration, no RHS or
parameter retune, no automatic second case).
- Score over the 20 cycles after settling: target metric A_max/D =
max over those cycles of max(|positive peak|, |negative peak|) about y = 0
(Qin reports "maximum amplitude"); also reported: mean amplitude, positive
and negative peaks, mean offset, f/f_n (no target).
- Acceptance: |A_max − .520 D| ≤ .052 D (±10 %), stated together with the
boundary mismatch and the absence of a quoted reference uncertainty. A pass
is "reasonably close" for the stage: not grid convergence, not force-RHS
validation, and it does not touch the Dütsch settling record.
- Driver reads force and the small diagnostics per step only; field reads
only at a few predeclared snapshots. No runtime claim: there is no measured
timing on this grid yet (the D40/60D receipt is a different, sampled case).
## Queued, not in this stage
Leontini et al. JFS 22 (2006) Re = 200, m* = 10, zeta = 0.01, U* = 5.0 (needs
the owners' c_crit convention and a Fig. 1 digitization). D80, literature
claims, pinball, AMR, BC redesign, threshold changes.