test: compare all-dense MRT fine stepping with blocked layouts
This commit is contained in:
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."""
|
||||||
|
|||||||
Reference in new issue
Block a user