rtx-cfd/rtx-fsi: overset A-P0 GATED + M1 precision probe — curvilinear collocated PISO: relative-reduction pressure stop (the absolute stop floored |du/dt| at 2e-4 on 64²), line-implicit-n sign fix, adjustPhi; gates: Cartesian reduction 1.37–1.40x the staggered error at orders 0.83/0.90; skewed stretched periodic annulus Stokes orders 2.30/2.06 (explicit and line-implicit), upwind 1.08/0.80; Poiseuille exact to 1e-9 on Cartesian and affine-sheared periodic channels (both diffusion variants), varying-skew channel order 2.02 (v 1.9), cell mass 1e-14; divergence ≤ 1e-11 relative every step; snapshot/restore bit-identical. M1: poisson.rs multigrid hierarchy generic over MgScalar (f32/f64), f64 CG keeps its own fine level; MgPrecision on MultigridParameters/EmbeddedParameters/PisoParameters, set_poisson_precision, harness RTX_FSI2_POISSON_F32 (march + noise probe, printed marker); f64 arm bit-identical in vivo (FSI2 default line-for-line with 08-31), f32 arm holds the noise floor and stall pins and the FSI2 band; poisson_equivalence f32 arm
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (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
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
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (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
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
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01X2GmJXeQ2njUecEKiJZ1G2
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
52da75a3a9
commit
c63d79c300
@@ -122,6 +122,10 @@ pub struct MarchConfig {
|
||||
/// is repeated as 2, 4, 8, 16, 32 coupled substeps of dt/n — see
|
||||
/// `rescue.rs` and omni-cortex `docs/coupling_rescue_campaign.md`.
|
||||
pub coupling_rescue: bool,
|
||||
/// M1 precision probe (`RTX_{prefix}_POISSON_F32`, default off =
|
||||
/// bit-identical): the pressure multigrid's V-cycle in single
|
||||
/// precision inside the f64 CG (`overset_metal_campaign.md` §3.2 M1).
|
||||
pub poisson_f32: bool,
|
||||
/// Rung C (`RTX_{prefix}_CRESCUE_COARSE`, default 0 = off; needs
|
||||
/// `coupling_rescue`): on a trigger, instead of the substep ladder,
|
||||
/// reject the step and enter a coarse EPISODE of this many coupled
|
||||
@@ -208,6 +212,7 @@ impl MarchConfig {
|
||||
.and_then(|v| v.parse::<usize>().ok())
|
||||
.unwrap_or(defaults.trace_from),
|
||||
coupling_rescue: num("CRESCUE", f64::from(u8::from(defaults.coupling_rescue))) != 0.0,
|
||||
poisson_f32: num("POISSON_F32", f64::from(u8::from(defaults.poisson_f32))) != 0.0,
|
||||
coarse_episode: num("CRESCUE_COARSE", defaults.coarse_episode as f64) as usize,
|
||||
inc_trace: std::env::var(key("INCTRACE")).ok().or(defaults.inc_trace),
|
||||
increment_factor: num("CRESCUE_INC", defaults.increment_factor),
|
||||
@@ -363,6 +368,7 @@ pub fn run_march(case: BenchmarkCase, config: &MarchConfig) -> MarchResult {
|
||||
trace_steps,
|
||||
trace_from,
|
||||
coupling_rescue,
|
||||
poisson_f32,
|
||||
coarse_episode,
|
||||
ref inc_trace,
|
||||
increment_factor,
|
||||
@@ -374,6 +380,10 @@ pub fn run_march(case: BenchmarkCase, config: &MarchConfig) -> MarchResult {
|
||||
|
||||
let (harness, mut solver, mut field) = Fsi2Harness::build_case(case, ny, flag_nx, smooth_in_h);
|
||||
solver.set_mask_hysteresis(mask_hysteresis);
|
||||
if poisson_f32 {
|
||||
solver.set_poisson_precision(rtx_cfd::solvers::incompressible::MgPrecision::F32);
|
||||
println!(" poisson V-cycle precision: F32 (M1 probe)");
|
||||
}
|
||||
let dt_fluid = harness.dt_fluid;
|
||||
let dt = dt_fluid * subcycle as f64;
|
||||
let interface = &harness.interface;
|
||||
|
||||
@@ -438,6 +438,7 @@ impl Fsi2Harness {
|
||||
top: SideBoundary::Velocity,
|
||||
},
|
||||
poisson_solver: PoissonSolverKind::Multigrid,
|
||||
poisson_precision: rtx_cfd::solvers::incompressible::MgPrecision::F64,
|
||||
// TVD, deliberately: FSI2 marches in time and needs the
|
||||
// shedding physics upwind's numerical viscosity killed on
|
||||
// these grids (CFD3's finding). The limiter chatter that
|
||||
|
||||
Reference in New Issue
Block a user