embedded3 A3-i: the advancing-wall friction closure (RTX_E3_WALL_ADVANCING=1, host + device, per-face normal-velocity table; f(0) = 1 exactly) — REFUTED as built on the slab ladder (flag shear 34.2 / 33.6 / 31.1 vs 28.9 / 32.3 / 30.1: spread 3.4 -> 3.1, now from above; worst mass residual 1e-8 -> 1e-4); knob stays off, default digit-identical
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 CPU-Only (Explicit) (push) Failing after 4s
CI / Format Check (push) Failing after 5s
Performance Benchmarks / Run Benchmarks (push) Failing after 5s
Documentation / Build User Guide (push) Successful in 5s
CI / Build (ubuntu-latest) (push) Failing after 1m19s
CI / Clippy Check (push) Failing after 1m33s
Documentation / Build API Documentation (push) Failing after 1m35s

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
Omar Sobh
2026-09-19 19:19:47 -05:00
co-authored by Claude Fable 5.1
parent d4cd7d9545
commit d7250bc4cf
8 changed files with 97 additions and 6 deletions
@@ -29,8 +29,15 @@ struct E3Cut {
const unsigned int *fold_ptr, *fold_idx; /* CSR: the slaves of every cell */
double *cell_flux; /* scratch per cell */
const double *s_u, *s_v, *s_w; /* open-part centroid shifts per face, 3 interleaved (S2-5) */
const double *vn_u, *vn_v, *vn_w; /* the wall's normal velocity into the fluid per face (A3-i) */
};
/* f(xi) = xi / (1 - exp(-xi)), f(0) = 1 exactly (closure.rs advancing_factor). */
__device__ __forceinline__ double adv_factor(double xi)
{
return fabs(xi) < 1e-8 ? 1.0 + 0.5 * xi : xi / (-expm1(-xi));
}
/* Face index of component c at lattice (i, j, k); 1 outside (z wraps when periodic). */
__device__ __forceinline__ int cut_face(const E3Params& g, int c, int i, int j, int k)
{
@@ -311,6 +318,11 @@ __device__ double cut_face_update(const E3Params& g, const E3Ptrs& f, const E3Cu
open face away from the body along the wall normal's dominant axis
(order 2; the neighbour's old value explicit). */
double c1 = 1.0 / distance, shear_explicit = 0.0;
/* bit 9 of wall_order: the advancing-wall closure on the one-point coefficient (A3-i) */
if (g.wall_order & 512) {
const double* vnt = c == 0 ? m.vn_u : (c == 1 ? m.vn_v : m.vn_w);
c1 = adv_factor(vnt[fidx] * distance / g.nu) / distance;
}
if ((g.wall_order & 15) >= 2 && a_w > 0.0) {
double nw[3] = { wall[0] / a_w, wall[1] / a_w, wall[2] / a_w };
int d = 0;