embedded3 S2-2b (host lever): narrow-band φ re-evaluation for moving bodies (max_surface_speed) — bit-identical, the flag body's ny 62 rebuild 3.54 → 0.30 s; the flag driver uses it
CI / Format Check (push) Failing after 4s
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 / 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 6s
CI / Build CPU-Only (Explicit) (push) Failing after 1m5s
Documentation / Build API Documentation (push) Failing after 1m8s

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
Omar Sobh
2026-09-17 19:30:54 -05:00
co-authored by Claude Fable 5.1
parent aa096465a6
commit c30e3dba34
5 changed files with 192 additions and 9 deletions
@@ -108,7 +108,20 @@ pub(super) struct CvGeometry {
impl Mask {
/// Classify the grid against `body` at `t` by its cut geometry.
pub fn build_cut(body: &Body, g: Grid, t: f64, b: Boundaries) -> Result<Self, String> {
let cut = CutGeometry::build(body, g, t);
Self::build_cut_from(body, g, t, b, None)
}
/// As [`Self::build_cut`], re-evaluating φ only within `band` of the
/// previous geometry moved by at most `motion` (see
/// [`CutGeometry::build_from`]).
pub fn build_cut_from(
body: &Body,
g: Grid,
t: f64,
b: Boundaries,
prev: Option<(&CutGeometry, f64, f64)>,
) -> Result<Self, String> {
let cut = CutGeometry::build_from(body, g, t, prev);
let (nx, ny, nz) = (g.nx, g.ny, g.nz);
let periodic = b.z0 == Side::Periodic;
let allowed = |side: Side| matches!(side, Side::Velocity | Side::Periodic | Side::SlipWall);