159 lines
8.8 KiB
Markdown
159 lines
8.8 KiB
Markdown
# Prescribed in-line oscillation: Dütsch Re 100 / KC 5 — PROTOCOL (review draft)
|
||
|
||
Production under test: `claude/moving-bodies-s3a` at `653fd997` (unchanged).
|
||
Primary source: Dütsch, Durst, Becker & Lienhart, J. Fluid Mech. 360, 249–271
|
||
(1998), doi:10.1017/S002211209800860X. Source facts below were verified from
|
||
the paper (Slack C0C78UFKGRM/1793335557.460509, TRON 1793356317–1793356724,
|
||
page numbers given). Everything marked ENGINEERING is our a-priori choice,
|
||
fixed before any benchmark result; it is not a paper uncertainty.
|
||
|
||
## 0. Source facts (with provenance)
|
||
|
||
- Motion (p.251): `x_c = -A sin(2 pi f t)`; paper phase phi = 0 is the mean
|
||
position moving left at `-U_max`. KC = 5 gives `A/D = 5/(2 pi) = .7957747`.
|
||
- Start (p.254): the computation starts a quarter cycle before phi = 0, at
|
||
`x = +A` with zero velocity (phi = -90°).
|
||
- Experiment (pp.252, 254–256): D = 10 mm, L = .65 m, tank 1.2 × .7 × .7 m,
|
||
rho = 998.2 kg/m³, mu = 1.00818 mPa·s, Re = 100, KC = 5; LDA with 1° phase
|
||
bins and 200 samples per node and degree; no quantified experimental error
|
||
recovered.
|
||
- Profiles (Fig. 8, p.260): LAB-FIXED stations x1 = -6, 0, 6, 12 mm, i.e.
|
||
x/D = -.6, 0, .6, 1.2, at phi = 180°, 210°, 330°; u1 and u2 versus x2.
|
||
- Original numerics (§2): cylinder-fixed accelerated frame (`x_i = x~_i +
|
||
x_i,s`, outer velocity `-u_c`, inertial source `-rho du_c/dt`), O-grid outer
|
||
diameter 120 D, illustrated 192 circumferential nodes, 720 steps/cycle; tank
|
||
influence neglected.
|
||
- Force fit (verified): force ON THE BODY per unit span
|
||
`F1 = -0.5 rho D c_d xdot|xdot| - (pi/4) rho D² c_i xddot` with `x = -A sin phi`;
|
||
normalized by `0.5 rho D U_max²`: `c_d cos phi |cos phi| - (pi² c_i / KC) sin phi`.
|
||
`c_i` is the ADDED-MASS coefficient; total inertia `c_m = c_i + 1` is a
|
||
different convention and is not used.
|
||
- Table 1 computed Morison coefficients (c_d, c_i) for 96 / 192 / 384 perimeter
|
||
nodes at dt/T = 1/720: (2.15, 1.42), (2.10, 1.45), (2.09, 1.45). These are
|
||
fitted computed coefficients, not a measured force and not an error bar. The
|
||
paper states the coarse direct force is closer to the finest direct force
|
||
than the Morison fit, but gives no waveform-error norm.
|
||
|
||
## 1. Kinematics, time levels and phase bookkeeping
|
||
|
||
- Our run is in the LAB frame: the circle moves, the fluid is initially at rest
|
||
(rho = 1, u = 0); no fictitious inertial source is added. Lab-fixed profile
|
||
stations are compared directly (no frame transform needed).
|
||
- Geometry reference: the circle's base centre is the INITIAL position, the
|
||
right turning point `x_mean + A`; the declared offset box is x in [-2A, 0],
|
||
y = 0. The body is never teleported: offset 0 at s = 0.
|
||
- Elapsed time s = n dt from the start. Analytic position relative to the mean
|
||
`x(s) = A cos(2 pi s / T)`, velocity `u(s) = -U_max sin(2 pi s / T)`; paper
|
||
phase `phi = (360 s / T - 90) mod 360`.
|
||
- Step n moves from s_n to s_{n+1}: target offset `x(s_{n+1}) - A`; wall
|
||
velocity = the single-step interval average `(x(s_{n+1}) - x(s_n)) / dt`
|
||
(analytic, supplied, not differenced from stored offsets). The per-step
|
||
force of `run(1)` / `read_force(normalize=True)` is attributed to that same
|
||
interval.
|
||
- Paper cycle k = 1, 2, ... spans `s in [T/4 + (k-1) T, T/4 + k T)`; the
|
||
initial quarter cycle (s < T/4) is cycle 0 and never scored. Every logged
|
||
sample carries (k, phi). Example: phi = 330° of cycle 1 is at s = 7T/6.
|
||
- T is chosen as a multiple of 360 native steps, so phi = 180°, 210°, 330° fall
|
||
exactly on step boundaries and 1° bins hold whole steps.
|
||
|
||
## 2. Resolution ladder (uniform grid, fixed Mach), ENGINEERING
|
||
|
||
| D (cells) | T (steps) | U_max = 5 D / T | nu_lat = U_max D / 100 | tau (3 nu + .5) |
|
||
|---|---|---|---|---|
|
||
| 20 | 2,520 | .039683 | .0079365 | .5238 |
|
||
| 40 | 5,040 | .039683 | .015873 | .5476 |
|
||
| 80 | 10,080 | .039683 | .031746 | .5952 |
|
||
|
||
- MRT collision. Mach fixed (Ma ≈ .0687); a separate Mach check at D = 40
|
||
with T = 10,080 (U_max halved, tau .5238) is labelled MACH and not part of the
|
||
ladder.
|
||
- Per-step displacement ≤ U_max ≈ .04 cells (bound .5).
|
||
|
||
## 3. Domain and boundaries (finite-domain reproduction), ENGINEERING
|
||
|
||
- Boundary family (runner owner confirms the zero-velocity inlet is supported
|
||
as configured before any run): the native dense channel only — zero-velocity inlet,
|
||
pressure-NEQ outlet, y walls (bounce-back). This is a finite-domain
|
||
approximation of the paper's 120 D O-grid, NOT infinite still fluid. The G4
|
||
periodic/slip overrides are a different family and are not substituted.
|
||
- Sensitivity order (each step at D = 40 before the ladder is run):
|
||
1. box 24 D × 24 D vs 48 D × 48 D (cylinder mean position at the centre);
|
||
2. the larger box is accepted if section 6 domain criteria pass between the
|
||
two; otherwise 96 D is tried once (memory/runtime measured first); if that
|
||
still fails, the domain verdict is FAIL and is reported.
|
||
- The ladder (D = 20 / 80) uses the accepted box size in units of D.
|
||
- Memory/runtime: measured by a smoke run before each new size; measurements
|
||
inform scheduling only, never tolerances.
|
||
|
||
## 4. Observables (raw, per step, preserved)
|
||
|
||
- `obs` Fx, Fy (CME) and all `MovingTables.DIAG` columns per step: CME,
|
||
CME + Wen and CME + cover − uncover reported separately; crossings, eq_only,
|
||
no_donor (no_donor must stay 0).
|
||
- Velocity u1, u2 on lab-fixed lines x/D = -.6, 0, .6, 1.2 (relative to the
|
||
mean cylinder position) versus x2, at every step of the scored phases.
|
||
- Interpolation: bilinear on cell centres using only cells that are fluid at
|
||
that step (flags read back via `get_flags()`); weights renormalized over the
|
||
fluid corners; a sample with no fluid corner, or inside the circle at that
|
||
step, is MISSING and logged, never set to zero. One-degree bins carry only
|
||
valid samples.
|
||
|
||
## 5. Periodic-regime gate (every case, before any statistic)
|
||
|
||
Ledger rows, same schema for every case:
|
||
|
||
| field | content |
|
||
|---|---|
|
||
| dx, dt | in D and in T units |
|
||
| U_max, nu, Re, KC | lattice and nondimensional |
|
||
| T | native steps and nondimensional time |
|
||
| duration | native steps, s/T, number of paper cycles |
|
||
| discard | cycle 0 plus all cycles before the accepted window |
|
||
| window | the common accepted window (below) |
|
||
| cycle ledger | per cycle k: phase-aligned waveform change and profile change (below) |
|
||
| verdict | PASS or FAIL-CLOSED |
|
||
|
||
- Settling metric, ENGINEERING, fixed scales (no near-zero denominators):
|
||
- force: `max over phase of |F_k(phi) - F_{k-1}(phi)| / (0.5 rho U_max² D)`
|
||
on the per-step CME waveform aligned by step index within the cycle;
|
||
- profiles: `max over scored stations/phases/points of |u_k - u_{k-1}| / U_max`.
|
||
- Rule: K_case = the smallest cycle k ≥ 4 for which both metrics are ≤ .005
|
||
for the N = 3 consecutive pairs (k-3→k-2), (k-2→k-1), (k-1→k).
|
||
- Cap: 30 paper cycles per case; not settled by the cap → FAIL-CLOSED.
|
||
- Common window: K = max over all compared cases of K_case; every case is run
|
||
to cycle K + 2 and scored on cycles K, K + 1, K + 2 (same indices).
|
||
- FAIL-CLOSED also if any case covers fewer paper cycles than K + 2, if windows
|
||
differ, or if the ledger is missing.
|
||
- The earlier G4 timing check (100 coarse vs 400 diffusive-fine steps) was a
|
||
matched short transient, not periodic evidence.
|
||
|
||
## 6. Metrics and per-observable criteria (ENGINEERING, not paper uncertainty)
|
||
|
||
- Morison fit: least squares of the normalized per-step force over the
|
||
accepted window against the two basis functions above, each averaged over
|
||
its single step interval, fixed paper phase, no free phase shift; outputs
|
||
c_d and added-mass c_i per force candidate.
|
||
- Criteria:
|
||
- cross-resolution: for each observable, the D20→D40→D80 differences to
|
||
D80 must decrease; force waveform: normalized RMS difference D40 vs D80
|
||
≤ .02 (scale `0.5 rho U_max² D`); profiles: RMS D40 vs D80 ≤ .02 U_max;
|
||
- domain (section 3): same two norms ≤ .01 between the two box sizes;
|
||
- against Table 1 (computed reference): |c_d - 2.09| ≤ .06 and
|
||
|c_i - 1.45| ≤ .04 at D = 80 (our engineering bands; the table's own
|
||
96→384 change is reported alongside, not used as an error bar);
|
||
- against Fig. 8 LDA: QUALITATIVE ONLY. The original figure could not be
|
||
accessed or rendered (TRON 2026-10-30); no digitized ordinates and no
|
||
measurement uncertainty exist. No quantitative profile pass is claimed.
|
||
A quantitative criterion may be declared only after an accessible original
|
||
figure or data set and a documented digitization (figure, tool,
|
||
uncertainty) exist, and before that comparison is run.
|
||
- No force candidate is selected for an RHS by these results; each is
|
||
reported.
|
||
|
||
## 7. Order and scope
|
||
|
||
Protocol review → lean test driver (no production change; reuses the
|
||
existing Simulation API) → smoke (memory/runtime) → domain sensitivity →
|
||
ladder → physical-validation verdict → only then single-cylinder VIV. No AMR,
|
||
no pinball, no manuscript work.
|