From 4d4b9ba00a35b6a7fbc160b2ad5ec125286194e0 Mon Sep 17 00:00:00 2001 From: TRON Date: Sun, 18 Oct 2026 03:51:53 -0700 Subject: [PATCH] test: compare all-dense MRT fine stepping with blocked layouts --- .../multigrid/test_refinement_mrt_gpu.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tests/validation/multigrid/test_refinement_mrt_gpu.py b/tests/validation/multigrid/test_refinement_mrt_gpu.py index 7421a38..6c6b473 100644 --- a/tests/validation/multigrid/test_refinement_mrt_gpu.py +++ b/tests/validation/multigrid/test_refinement_mrt_gpu.py @@ -53,23 +53,24 @@ class RefinementMRTGPU(unittest.TestCase): else: for a, b in zip(reference, raw.values): np.testing.assert_array_equal(a, b) - def test_dense_versus_blocked_root_mrt_two_level(self): - """Unshifted MRT: dense root (PatchCoarseStep) vs blocked root (BlockStep), same fine blocks.""" + def test_dense_versus_blocked_mrt_two_level(self): + """Unshifted MRT: all-dense PatchCoarseStep/PatchFineStep vs mixed/all-blocked storage.""" from test_refinement_blocked_base import BASE_BLOCKS, FINE_BLOCK from test_refinement_blocked_fine import NX, NY, BOUNDS import test_refinement_blocked_fine as fixture cfg = LBMConfig(nx=NX, ny=NY, viscosity=.1, collision="MRT") with CudaContext(0) as context: results = {} - for base_block in (None, *BASE_BLOCKS): - with FixedPatchStepper(cfg, BOUNDS, context=context, fine_block=FINE_BLOCK, + layouts = ((None, None), *((base, FINE_BLOCK) for base in (None, *BASE_BLOCKS))) + for base_block, fine_block in layouts: + with FixedPatchStepper(cfg, BOUNDS, context=context, fine_block=fine_block, base_block=base_block) as backend: backend.initialize(*[fixture.state(*level.shape[1:], seed) for seed, level in enumerate(backend._levels)]) backend.step(4) - results[base_block] = raw(backend) - for base_block in BASE_BLOCKS: - for level, (a, b) in enumerate(zip(results[base_block], results[None])): - exact(self, a, b, f"base={base_block} level={level}") + results[base_block, fine_block] = raw(backend) + for layout in layouts[1:]: + for level, (a, b) in enumerate(zip(results[layout], results[None, None])): + exact(self, a, b, f"layout={layout} level={level}") def test_shifted_all_blocked_three_level_mrt_smoke(self): """Per-level shear rate omega_l = 1/(3*2**l*nu + 1/2); finite ACTIVE leaves."""