R4-d: the dt²-scaled floor uses the COUPLED step (the first form scaled with the fluid substep); ny 62 check identical to the 3e-5 run
CI / Python Bindings (maturin) (macos-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (ubuntu-latest) (push) Blocked by required conditions
CI / WASM Build + Size Check (push) Blocked by required conditions
CI / Distributed Training Tests (push) Blocked by required conditions
CI / CI Success (push) Blocked by required conditions
CI / Build (macos-latest) (push) Waiting to run
CI / Test (macos-latest) (push) Blocked by required conditions
CI / Test (ubuntu-latest) (push) Blocked by required conditions
CI / Format Check (push) Failing after 4s
CI / Clippy Check (push) Failing after 3s
CI / Build (ubuntu-latest) (push) Failing after 4s
Performance Benchmarks / Run Benchmarks (push) Failing after 5s
Documentation / Build User Guide (push) Successful in 7s
CI / Build CPU-Only (Explicit) (push) Failing after 53s
Documentation / Build API Documentation (push) Failing after 54s

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
Omar Sobh
2026-09-21 21:05:38 -05:00
co-authored by Claude Fable 5.1
parent 457c6fa88d
commit f5735fdeaa
@@ -95,22 +95,23 @@ pub fn run_march_overset(case: BenchmarkCase, config: &OversetMarchConfig) -> Ov
let mut fluid = OversetFluid::build_case(case, cfg.ny, cfg.flag_nx, cfg.sweeps, cfg.max_rounds)
.expect("overset fluid");
let dt_fluid = fluid.dt_fluid;
let dt = dt_fluid * cfg.subcycle as f64;
// R4-d (2026-09-21): the acceleration-scaled floor. The loop converges
// the displacement; the fluid feels its second difference over dt², so
// a fixed floor's admissible acceleration noise quadruples per rung
// (R4: the FSI3 force spikes). `RTX_FSI2O_TOL_FLOOR_DT2=<floor at the
// ny 62 fluid step 3.44e-4>` sets floor = value · (dt_fluid / 3.44e-4)².
// the displacement; the fluid feels its second difference over the
// COUPLED step dt², so a fixed floor's admissible acceleration noise
// quadruples per rung (R4: the FSI3 force spikes).
// `RTX_FSI2O_TOL_FLOOR_DT2=<floor at the ny 62 coupled step 3.44e-4>`
// sets floor = value · (dt / 3.44e-4)².
if let Some(f0) = std::env::var("RTX_FSI2O_TOL_FLOOR_DT2")
.ok()
.and_then(|v| v.parse::<f64>().ok())
{
cfg.tol_floor = f0 * (dt_fluid / 3.44e-4).powi(2);
cfg.tol_floor = f0 * (dt / 3.44e-4).powi(2);
println!(
" floor scaled with dt² (R4-d): {:.3e} at dt {:.3e} (from {f0:.1e} at 3.44e-4)",
cfg.tol_floor, dt_fluid
" floor scaled with dt² (R4-d): {:.3e} at the coupled step {dt:.3e} (from {f0:.1e} at 3.44e-4)",
cfg.tol_floor
);
}
let dt = dt_fluid * cfg.subcycle as f64;
let zero_d = vec![0.0; 2 * fluid.interface.wetted.len()];
// Every setting the acceptance rule reads, printed once: P5-3 lost a
// day to a floor of 2e-4 against the overnight marches' 1e-6.