diff --git a/docs/steady_pinball_fiv.md b/docs/steady_pinball_fiv.md index 714c9c3..a2eb3a3 100644 --- a/docs/steady_pinball_fiv.md +++ b/docs/steady_pinball_fiv.md @@ -40,7 +40,11 @@ link exists. Unrelated moving/static body and probe overlaps still reject. This is a sufficient restricted-group condition, not support for near-contact or independent motion. The r4, distance8.3, dy=.5 counterexample remains rejected. CPU tests enumerate candidate donors/write footprints over subcell phases; -GPU tests compare fixed vs hold and member-order permutations through crossings. +GPU tests compare fixed vs hold and member-order permutations through crossings +at wall speed .01 over the full +/-D envelope (8000 steps). The initial .5-speed +fixture failed with NaNs; a single-circle control also failed at step69. That +Mach~.866 fixture was unsuitable as a low-Mach numerical gate. Its failure is +retained; the geometric MAX_STEP proof is unchanged, not a stability guarantee. CUDA kernels and arithmetic are unchanged. ## New structural parameters (not inherited from the paper) diff --git a/tests/integration/test_shared_translation_gpu.py b/tests/integration/test_shared_translation_gpu.py index 090d9e2..483c36a 100644 --- a/tests/integration/test_shared_translation_gpu.py +++ b/tests/integration/test_shared_translation_gpu.py @@ -50,8 +50,10 @@ def test_fixed_vs_shared_hold(tmp_path): def test_common_motion_member_order_has_no_population_effect(tmp_path): - offsets = np.concatenate((np.arange(.5, 20.5, .5), np.arange(19.5, -20.5, -.5), - np.arange(-19.5, .5, .5))) + # MAX_STEP=.5 is a geometric bound, not a low-Mach stability guarantee. + # Keep the complete +/-D excursion at wall speed .01, equal to mean inflow. + offsets = np.concatenate((np.arange(1, 2001), np.arange(1999, -2001, -1), + np.arange(-1999, 1))) * .01 forward = simulate(tmp_path, moving=True, offsets=offsets) reverse = simulate(tmp_path, moving=True, offsets=offsets, reverse=True) assert forward[3] > 0 and forward[3] == reverse[3]