Use low-Mach wall speed for shared-motion GPU gate
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user