diff --git a/docs/supported_settings.md b/docs/supported_settings.md index 8c09158..cb58569 100644 --- a/docs/supported_settings.md +++ b/docs/supported_settings.md @@ -11,7 +11,7 @@ measured; they are not general bounds. |---|---|---| | Dimension / lattice | 2D D2Q9 only (3D refinement is future work) | `lbm/refinement.py:65`, `lbm/kernels/blocks.cu:25`, `lbm/kernels/refinement.cu:26` | | Precision / streaming | FP32 storage, double buffer | same guards | -| Collision on refinement levels | SRT or MRT; TRT and LES rejected | `lbm/refinement.py:65`, `lbm/refinement.py:457` | +| Collision on refinement levels | SRT or MRT; TRT and LES rejected | `lbm/refinement.py:65` (re-checked for fine boundaries at `lbm/refinement.py:457`) | | Shifted (ddf_shifting) storage | only when every level is blocked; dense or mixed rejected | `lbm/refinement_stepper.py:198`, `:469`; `lbm/kernels/refinement.cu:26` (dense patch kernel unshifted only) | | Fine relaxation | 1/tau_fine must lie inside the configured omega guards | `lbm/refinement.py:80` | | Uniform blocked backend `PeriodicBlockStepper` | doubly periodic, SRT only, stationary passive circles | `lbm/block_stepper.py:84`, `:91`, `:45`-`:67` | @@ -28,7 +28,7 @@ Tests: `tests/unit/test_refinement_mrt.py`, `tests/validation/multigrid/test_ref | Several L1 rectangles (union) | require `level_blocks[0]` and `level_blocks[1]`; transfers must close (dependency checks, no fixed gap rule) | `lbm/refinement_stepper.py:84`; `lbm/refinement.py:283`-`:295` | | Nested levels | depth >= 3 must be all blocked; a blocked level requires blocked levels below; a scalar child needs a scalar parent | `lbm/refinement_stepper.py:82`, `:87`; `lbm/hierarchy.py:54` | | Nested transfer support | child only over inherited ACTIVE cells, donors/receivers uncovered ACTIVE, no child over the parent restriction footprint | `lbm/refinement.py:391`-`:407` | -| Tile shape | `(by, bx)`; the level allocation must be divisible by the tile (no partial tiles yet) | `lbm/refinement_stepper.py:78`; `lbm/refinement.py:246` | +| Tile shape | positive `(by, bx)`; the level allocation must be divisible by the tile (no partial tiles yet) | `lbm/refinement_stepper.py:78`, `lbm/refinement.py:246` (shape); `lbm/blocks.py:134` (divisibility) | | Coarse boundary | `periodic`, `slot_reservoir` or `channel` | `lbm/refinement_stepper.py:177` | | `slot_reservoir` | on-site velocity bottom slot, reservoir top, velocity 0, 2 <= slot width < nx, patch rows 4..ny-4 | `lbm/refinement_stepper.py:205`, `:212`; `lbm/refinement.py:546` | | `channel` | all levels blocked; Zou-He inlet, pressure-NEQ outlet, stationary bounce-back walls; transfers away from the closure | `lbm/channel.py:22`, `:26`, `:43`, `:54` | @@ -62,11 +62,16 @@ Tests: `tests/unit/test_jets.py`, `test_jets_review.py`, `test_shifted_jets.py`, ## Observations from specific tested cases (not general bounds) -- SRT channel root vs uniform OneStep, strict-parity case - (`tests/validation/multigrid/test_channel_root_gpu.py`): 1 of 4320 compared values differs, - max abs 2.33e-10, max rel 1.77e-7 (about 2 ULP). The test remains failed; its cause and any - general bound are unresolved. The corresponding MRT comparison is bitwise equal. -- Periodic Taylor-Green Re 100, current checkout 36ffc8b1 (V3 matched pair, N128 depth 2): +- SRT channel root vs uniform OneStep, strict-parity test + `tests/validation/multigrid/test_channel_root_gpu.py::ChannelRootGPU::test_uniform_matched_root`: + in one of its 18 sub-cases (2 storage modes x 3 profile/clamp/damp settings x 3 blocks; which + one is not recorded), 1 of the 4320 compared values differs, max abs 2.33e-10, max rel 1.77e-7 + (about 2 ULP). The test remains failed; its cause and any general bound are unresolved. +- MRT root parity test + `tests/validation/multigrid/test_refinement_mrt_gpu.py::RefinementMRTGPU::test_uniform_matched_mrt_root` + (12 sub-cases: 2 storage modes x 2 profiles x 3 blocks, default outlet settings) passed bitwise + in the Horsea GPU runs at K1 7813334 and on the combined tree f4372a8 (2026-10-21). +- Periodic Taylor-Green Re 100, measured at 36ffc8b1 (V3 matched pair, N128 depth 2): every per-sample screen passed; the constant explosion's aggregate worst velocity L2, 0.004418, exceeds its preregistered 0.002 budget, while projected_linear passed that budget. - Curved-wall pressure (pilot harness, exact-q analytic annulus, tau 0.8): the coarse swirl r1