FSI2 overset march: print every coupling setting once (coupler, floor, rtol, stall accept, max subit, predictor, s, patch offset × rows) and add RTX_FSI2O_LOAD_SETTLE (rigid steps after a loaded state, clock put back; default 20) — P5-3 lost a day to the default floor 2e-4 against the overnight marches' 1e-6: at 2e-4 every s = 1 release at ny = 62 rings at ± 1000 N/m (the flag's thickness breathing), at 1e-6 all are clean, thick patches included
CI / Build (macos-latest) (push) Failing after 17s
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Python Bindings (maturin) (ubuntu-latest) (push) Canceled after 0s
CI / WASM Build + Size Check (push) Canceled after 0s
CI / Distributed Training Tests (push) Canceled after 0s
CI / CI Success (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Build CPU-Only (Explicit) (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Build (macos-latest) (push) Failing after 17s
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Python Bindings (maturin) (ubuntu-latest) (push) Canceled after 0s
CI / WASM Build + Size Check (push) Canceled after 0s
CI / Distributed Training Tests (push) Canceled after 0s
CI / CI Success (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Build CPU-Only (Explicit) (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_0116sg1Qz1gMv9hdcKP1XUam
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
3e019d1491
commit
75ab6e77b4
@@ -97,6 +97,23 @@ pub fn run_march_overset(case: BenchmarkCase, config: &OversetMarchConfig) -> Ov
|
||||
let dt_fluid = fluid.dt_fluid;
|
||||
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.
|
||||
println!(
|
||||
" coupling: {} (reuse {}, ω0 {}, c1 {}), floor {:.1e}, rtol {:.1e}, stall accept {:.1e}, max subit {}, predictor {}, s = {}, patch offset {} h × {} rows",
|
||||
cfg.coupler,
|
||||
cfg.reuse,
|
||||
cfg.initial_relaxation,
|
||||
cfg.c1_interface,
|
||||
cfg.tol_floor,
|
||||
cfg.rtol,
|
||||
cfg.stall_accept,
|
||||
cfg.max_subiterations,
|
||||
cfg.predictor,
|
||||
cfg.subcycle,
|
||||
std::env::var("RTX_FSI2O_PATCH_OFFSET").unwrap_or_else(|_| "6".into()),
|
||||
std::env::var("RTX_FSI2O_PATCH_ROWS").unwrap_or_else(|_| "12".into()),
|
||||
);
|
||||
|
||||
// Phase 1: rigid flag to t_release (`RTX_FSI2O_LOAD=dir` replaces the
|
||||
// march with the saved state; `RTX_FSI2O_SAVE=dir` saves it).
|
||||
@@ -109,6 +126,28 @@ pub fn run_march_overset(case: BenchmarkCase, config: &OversetMarchConfig) -> Ov
|
||||
"the saved state is at t = {t}, not t_release = {}",
|
||||
cfg.t_release
|
||||
);
|
||||
// The saved state is the FIELDS; the solvers' own warm state (the
|
||||
// Schwarz acceptor warm start, the fringe flux correction, the
|
||||
// embedded body's old volume fractions) is not in it, and a
|
||||
// release straight off the load carries a pressure-level
|
||||
// transient that the live march does not (P5-3: drag 27 vs 132
|
||||
// twenty steps in, lift ± 1000 vs ± 4 — enough to kick the flag's
|
||||
// thickness breathing at ny = 62). `RTX_FSI2O_LOAD_SETTLE=N`
|
||||
// (default 20) rigid steps rebuild that state on the steady rigid
|
||||
// flow; the clock is put back so the runs stay comparable.
|
||||
let settle: usize = std::env::var("RTX_FSI2O_LOAD_SETTLE")
|
||||
.ok()
|
||||
.and_then(|v| v.parse().ok())
|
||||
.unwrap_or(20);
|
||||
let (d0, l0) = fluid.measure_force();
|
||||
for _ in 0..settle {
|
||||
fluid.step().expect("settle fluid step");
|
||||
}
|
||||
fluid.solver.set_time(t);
|
||||
let (d1, l1) = fluid.measure_force();
|
||||
println!(
|
||||
" settled the loaded state with {settle} rigid steps: wall drag {d0:.2} → {d1:.2}, lift {l0:.2} → {l1:.2}; clock back to t = {t:.4}"
|
||||
);
|
||||
} else {
|
||||
for _ in 0..rigid_steps {
|
||||
fluid.step().expect("rigid fluid step");
|
||||
|
||||
Reference in New Issue
Block a user