test: compare all-dense MRT fine stepping with blocked layouts

This commit is contained in:
TRON committed 2026-10-18 03:51:53 -07:00
1 parent 2abc48f0d8
commit 4d4b9ba00a
1 file changed
+9 -8
@@ -53,23 +53,24 @@ class RefinementMRTGPU(unittest.TestCase):
else: else:
for a, b in zip(reference, raw.values): np.testing.assert_array_equal(a, b) 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): def test_dense_versus_blocked_mrt_two_level(self):
"""Unshifted MRT: dense root (PatchCoarseStep) vs blocked root (BlockStep), same fine blocks.""" """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_base import BASE_BLOCKS, FINE_BLOCK
from test_refinement_blocked_fine import NX, NY, BOUNDS from test_refinement_blocked_fine import NX, NY, BOUNDS
import test_refinement_blocked_fine as fixture import test_refinement_blocked_fine as fixture
cfg = LBMConfig(nx=NX, ny=NY, viscosity=.1, collision="MRT") cfg = LBMConfig(nx=NX, ny=NY, viscosity=.1, collision="MRT")
with CudaContext(0) as context: with CudaContext(0) as context:
results = {} results = {}
for base_block in (None, *BASE_BLOCKS): layouts = ((None, None), *((base, FINE_BLOCK) for base in (None, *BASE_BLOCKS)))
with FixedPatchStepper(cfg, BOUNDS, context=context, fine_block=FINE_BLOCK, for base_block, fine_block in layouts:
with FixedPatchStepper(cfg, BOUNDS, context=context, fine_block=fine_block,
base_block=base_block) as backend: base_block=base_block) as backend:
backend.initialize(*[fixture.state(*level.shape[1:], seed) for seed, level in enumerate(backend._levels)]) backend.initialize(*[fixture.state(*level.shape[1:], seed) for seed, level in enumerate(backend._levels)])
backend.step(4) backend.step(4)
results[base_block] = raw(backend) results[base_block, fine_block] = raw(backend)
for base_block in BASE_BLOCKS: for layout in layouts[1:]:
for level, (a, b) in enumerate(zip(results[base_block], results[None])): for level, (a, b) in enumerate(zip(results[layout], results[None, None])):
exact(self, a, b, f"base={base_block} level={level}") exact(self, a, b, f"layout={layout} level={level}")
def test_shifted_all_blocked_three_level_mrt_smoke(self): 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.""" """Per-level shear rate omega_l = 1/(3*2**l*nu + 1/2); finite ACTIVE leaves."""