From f5735fdeaa490c8a60e532b6368312731b771fe6 Mon Sep 17 00:00:00 2001 From: Omar Sobh Date: Mon, 21 Sep 2026 21:05:38 -0500 Subject: [PATCH] =?UTF-8?q?R4-d:=20the=20dt=C2=B2-scaled=20floor=20uses=20?= =?UTF-8?q?the=20COUPLED=20step=20(the=20first=20form=20scaled=20with=20th?= =?UTF-8?q?e=20fluid=20substep);=20ny=2062=20check=20identical=20to=20the?= =?UTF-8?q?=203e-5=20run?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 --- .../rtx-fsi/tests/fsi2_harness/overset_march.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/crates/specialized/rtx-fsi/tests/fsi2_harness/overset_march.rs b/crates/specialized/rtx-fsi/tests/fsi2_harness/overset_march.rs index 5c5f6a8..5f8ba2a 100644 --- a/crates/specialized/rtx-fsi/tests/fsi2_harness/overset_march.rs +++ b/crates/specialized/rtx-fsi/tests/fsi2_harness/overset_march.rs @@ -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=` 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=` + // 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::().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.