S2-9b: embedded3_flag_wake knobs RTX_E3_FLAG_INFLOW=2d (the slab's 2D parabola, uniform in z) and RTX_E3_FLAG_ZSIDES=slip (SlipWall on z0/z1) — the 3D solver on the 2D problem reproduces the four-cell periodic slab to the digit; the 3D-over-slab drag was the inflow convention
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 / 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 (ubuntu-latest) (push) Failing after 4s
CI / Clippy Check (push) Failing after 4s
CI / Format Check (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 54s
Documentation / Build API Documentation (push) Failing after 56s

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
Omar Sobh
2026-09-20 22:31:35 -05:00
co-authored by Claude Fable 5.1
parent f1714fb926
commit 3dcafd134f
@@ -200,6 +200,10 @@ fn flag_wake_on_the_device() {
// flag as a 2D problem, minutes per rung: the instrument for the load routes' parts. // flag as a 2D problem, minutes per rung: the instrument for the load routes' parts.
let slab_nz = env_f("RTX_E3_FLAG_NZ", 0.0) as usize; let slab_nz = env_f("RTX_E3_FLAG_NZ", 0.0) as usize;
let nz = if slab_nz > 0 { slab_nz } else { ny }; let nz = if slab_nz > 0 { slab_nz } else { ny };
// S2-9b: the 3D run with the slab's 2D inflow (uniform in z) and/or slip
// side walls — the decomposition of the 3D-over-slab drag.
let inflow_2d = std::env::var("RTX_E3_FLAG_INFLOW").is_ok_and(|v| v == "2d");
let z_slip = std::env::var("RTX_E3_FLAG_ZSIDES").is_ok_and(|v| v == "slip");
let r_edge = h; let r_edge = h;
// S2-9: with a recorded kinematics the period and the speed bound are the record's. // S2-9: with a recorded kinematics the period and the speed bound are the record's.
let rec_period = env_f("RTX_E3_FLAG_KIN_PERIOD", 0.5225); let rec_period = env_f("RTX_E3_FLAG_KIN_PERIOD", 0.5225);
@@ -233,6 +237,14 @@ fn flag_wake_on_the_device() {
z1: Side::Periodic, z1: Side::Periodic,
..Boundaries::default() ..Boundaries::default()
} }
} else if z_slip {
// S2-9b: slip side walls (the 3D solver on a spanwise-uniform problem).
Boundaries {
x1: Side::PressureOutlet,
z0: Side::SlipWall,
z1: Side::SlipWall,
..Boundaries::default()
}
} else { } else {
Boundaries { Boundaries {
x1: Side::PressureOutlet, x1: Side::PressureOutlet,
@@ -247,7 +259,7 @@ fn flag_wake_on_the_device() {
}, },
); );
let inflow_at = move |y: f64, z: f64| { let inflow_at = move |y: f64, z: f64| {
if slab_nz > 0 { if slab_nz > 0 || inflow_2d {
6.0 * y * (H - y) / (H * H) 6.0 * y * (H - y) / (H * H)
} else { } else {
inflow(y, z) inflow(y, z)
@@ -283,8 +295,16 @@ fn flag_wake_on_the_device() {
} }
solver.initialize(&mut field); solver.initialize(&mut field);
println!( println!(
" flag wake ny {ny} (span {}): {nx}×{ny}×{nz} = {} cells, h {h:.4e}, dt {dt:.3e}, {periods} periods = {t_end:.3} s, {} steps", " flag wake ny {ny} (span {}; inflow {}, z sides {}): {nx}×{ny}×{nz} = {} cells, h {h:.4e}, dt {dt:.3e}, {periods} periods = {t_end:.3} s, {} steps",
flag_span(), flag_span(),
if slab_nz > 0 || inflow_2d { "2d" } else { "3d" },
if slab_nz > 0 {
"periodic"
} else if z_slip {
"slip"
} else {
"wall"
},
g.cells(), g.cells(),
(t_end / dt).ceil() as usize (t_end / dt).ceil() as usize
); );