From edce582a2df3ff71e53ce151a79579ee82d3ce5d Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 17 Oct 2026 01:31:42 +0000 Subject: [PATCH] Mark wall rows OUTER in a zero-refinement hierarchy build_hierarchy(cfg, [], wall_aware=True) left both base wall rows ACTIVE; the refined path already marked them OUTER. Add the regression test. Found by native review of eeb90ac. Co-Authored-By: Claude Opus 5.5 --- src/CelerisLab/lbm/hierarchy.py | 5 ++++- tests/unit/test_hierarchy.py | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/CelerisLab/lbm/hierarchy.py b/src/CelerisLab/lbm/hierarchy.py index e729715..c578771 100644 --- a/src/CelerisLab/lbm/hierarchy.py +++ b/src/CelerisLab/lbm/hierarchy.py @@ -62,7 +62,10 @@ def build_hierarchy(cfg, refinements, *, wall_aware=False): if pairs: kinds.append(pairs[-1].fine_kind) else: - kinds.append(np.full((cfg.ny, cfg.nx), ACTIVE, np.uint8)) + kind = np.full((cfg.ny, cfg.nx), ACTIVE, np.uint8) + if wall_aware: + kind[[0, -1]] = OUTER_GHOST + kinds.append(kind) return Hierarchy(tuple(configs), tuple(pairs), tuple(kinds)) diff --git a/tests/unit/test_hierarchy.py b/tests/unit/test_hierarchy.py index ea2bca9..843efca 100644 --- a/tests/unit/test_hierarchy.py +++ b/tests/unit/test_hierarchy.py @@ -88,6 +88,9 @@ class LegacyForms(unittest.TestCase): one = build_hierarchy(SMALL, []) self.assertEqual(one.depth, 1) self.assertTrue((one.kinds[0] == r.ACTIVE).all()) + walled = build_hierarchy(SMALL, [], wall_aware=True) # regression: no refinement + self.assertTrue((walled.kinds[0][[0, -1]] == r.OUTER_GHOST).all()) + self.assertTrue((walled.kinds[0][1:-1] == r.ACTIVE).all()) if __name__ == "__main__":