fsi2 overset harness: reference constants from FEATFLOW's FSI2 level-4 table (uy 1.24 ± 81.7 mm at 1.93 Hz, ux −14.87 ± 12.73, drag 215.18 ± 77.78, lift 0.87 ± 238.0) — the 2006 table's 80.6 / 2.0 was level 2 with the frequency rounded; the summary line prints the full reference
Performance Benchmarks / Run Benchmarks (push) Failing after 6s
CI / Clippy Check (push) Failing after 5s
CI / Format Check (push) Failing after 7s
CI / Build (ubuntu-latest) (push) Failing after 9s
Documentation / Build User Guide (push) Successful in 7s
Documentation / Build API Documentation (push) Failing after 1m16s
CI / Build (macos-latest) (push) Failing after 9s
CI / Test (macos-latest) (push) Skipped
CI / Test (ubuntu-latest) (push) Skipped
CI / Python Bindings (maturin) (macos-latest) (push) Skipped
CI / Python Bindings (maturin) (ubuntu-latest) (push) Skipped
CI / WASM Build + Size Check (push) Skipped
CI / Distributed Training Tests (push) Skipped
CI / Build CPU-Only (Explicit) (push) Failing after 1m10s
CI / CI Success (push) Failing after 1s

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01LzcjQX7tvgn87CQCyg9Cfr
This commit is contained in:
Omar Sobh
2026-09-13 19:43:17 -05:00
co-authored by Claude Fable 5.1
parent 5aa05f140d
commit 7224521309
@@ -11,12 +11,19 @@ mod fsi2_harness;
use fsi2_harness::overset_march::{OversetMarchConfig, run_march_overset};
use fsi2_harness::{FSI2, case_from_env};
const REF_UY_AMP: f64 = 80.6e-3;
const REF_UY_FREQ: f64 = 2.0;
const REF_UX_MEAN: f64 = -14.58e-3;
const REF_UX_AMP: f64 = 12.44e-3;
const REF_DRAG_MEAN: f64 = 208.83;
const REF_LIFT_AMP: f64 = 234.2;
// Reference: FEATFLOW's FSI2 table (Turek's group), level 4, Δt = 0.01 —
// uy 1.24 ± 81.7 mm at 1.93 Hz, ux 14.87 ± 12.73 mm, drag 215.18 ± 77.78,
// lift 0.87 ± 238.0 (`docs/research_sweep_2026-09.md` §1). The 2006 paper's
// table is level 2 (80.6 mm, drag 208.83) and rounds the frequency to 2.0.
const REF_UY_MEAN: f64 = 1.24e-3;
const REF_UY_AMP: f64 = 81.7e-3;
const REF_UY_FREQ: f64 = 1.93;
const REF_UX_MEAN: f64 = -14.87e-3;
const REF_UX_AMP: f64 = 12.73e-3;
const REF_DRAG_MEAN: f64 = 215.18;
const REF_DRAG_AMP: f64 = 77.78;
const REF_LIFT_MEAN: f64 = 0.87;
const REF_LIFT_AMP: f64 = 238.0;
/// `RTX_FSI2O_AUDIT=dir`: the solver-metric chain on every saved instant
/// under `dir` (`inst_*`, from `RTX_FSI2O_SAVE_EVERY`), no march.
@@ -110,7 +117,7 @@ fn fsi2_on_the_overset() {
let m = &r.result;
let w = m.window(3.0);
println!(
" FSI2 OVERSET (ny = {}, flag {}x2 Quad8, dt = {:.2e}, s = {}, sweeps {}, rounds cap {}, {}): coupled {} steps in {:.0} s wall; {:.1} subit/step (max {}); {} stalled, {} retries (worst residual {:.2e}); conservation {:.2e}; {} wall faces; Newton rescues {:?}; rounds mean {:.2}; reclassified/step {:.2} (fresh {:.2}); patch regenerations {} in {:.0} s; fluid {:.0} s, structure {:.0} s; death {:?}\n measured over [{:.1}, {:.1}] s: uy(A) = {:.3} ± {:.3} mm (ref 1.23 ± {:.1}), ux(A) = {:.3} ± {:.3} mm (ref {:.2} ± {:.2}), f = {:?} Hz (ref {REF_UY_FREQ}); drag {:.2} ± {:.2} (ref {REF_DRAG_MEAN} ± 73.75), lift {:.2} ± {:.2} (ref 0.88 ± {REF_LIFT_AMP}); onset amp {:.3e}{:.3e} m; rigid drag {:.2}",
" FSI2 OVERSET (ny = {}, flag {}x2 Quad8, dt = {:.2e}, s = {}, sweeps {}, rounds cap {}, {}): coupled {} steps in {:.0} s wall; {:.1} subit/step (max {}); {} stalled, {} retries (worst residual {:.2e}); conservation {:.2e}; {} wall faces; Newton rescues {:?}; rounds mean {:.2}; reclassified/step {:.2} (fresh {:.2}); patch regenerations {} in {:.0} s; fluid {:.0} s, structure {:.0} s; death {:?}\n measured over [{:.1}, {:.1}] s: uy(A) = {:.3} ± {:.3} mm (ref {:.2} ± {:.1}), ux(A) = {:.3} ± {:.3} mm (ref {:.2} ± {:.2}), f = {:?} Hz (ref {REF_UY_FREQ}); drag {:.2} ± {:.2} (ref {REF_DRAG_MEAN} ± {REF_DRAG_AMP}), lift {:.2} ± {:.2} (ref {REF_LIFT_MEAN} ± {REF_LIFT_AMP}); onset amp {:.3e}{:.3e} m; rigid drag {:.2}",
config.ny,
config.flag_nx,
m.dt,
@@ -140,6 +147,7 @@ fn fsi2_on_the_overset() {
config.t_end,
w.uy_mid * 1e3,
w.uy_amp * 1e3,
REF_UY_MEAN * 1e3,
REF_UY_AMP * 1e3,
w.ux_mid * 1e3,
w.ux_amp * 1e3,