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
|
This is a sufficient restricted-group condition, not support for near-contact
|
||||||
or independent motion. The r4, distance8.3, dy=.5 counterexample remains rejected.
|
or independent motion. The r4, distance8.3, dy=.5 counterexample remains rejected.
|
||||||
CPU tests enumerate candidate donors/write footprints over subcell phases;
|
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.
|
CUDA kernels and arithmetic are unchanged.
|
||||||
|
|
||||||
## New structural parameters (not inherited from the paper)
|
## 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):
|
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),
|
# MAX_STEP=.5 is a geometric bound, not a low-Mach stability guarantee.
|
||||||
np.arange(-19.5, .5, .5)))
|
# 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)
|
forward = simulate(tmp_path, moving=True, offsets=offsets)
|
||||||
reverse = simulate(tmp_path, moving=True, offsets=offsets, reverse=True)
|
reverse = simulate(tmp_path, moving=True, offsets=offsets, reverse=True)
|
||||||
assert forward[3] > 0 and forward[3] == reverse[3]
|
assert forward[3] > 0 and forward[3] == reverse[3]
|
||||||
|
|||||||
Reference in New Issue
Block a user