2.2 KiB
Experimental projected G explosion
FixedPatchStepper(..., explosion="projected_linear") changes only the existing
G-to-G explosion reconstruction. The omitted/default "constant" selector retains
the same kernel, launch arguments and device allocations. Projected mode adds two
compact tables per adjacent pair; recursion, collision, BFL, restriction, buffer
ownership and synchronized publication are unchanged. remap_child preserves it.
Runtime eligibility is periodic-root, fully blocked D2Q9/SRT/FP32, body/Jet-free, without LES; the fixed-patch backend has no forcing interface. Shifted and unshifted storage use the same reconstruction. One generic builder handles scalar windows, unique union rows and all adjacent hierarchy pairs without depth/rectangle caps. Donors are original explosion donors intersected with owned, uncovered ACTIVE cells. An axis uses centered differences only if both neighbors are legal; otherwise both addresses repeat the center. Nested layout periodicity is explicit. No covered cells, holes, inactive cells or stale halo copies enter the stencil.
The 33-line kernel is unchanged from our 519473a experiment and retains its
mathematical attribution. Host tests cover union decomposition, concavity, narrow
gaps, grazing packet paths, offsets, sparse/nested owner addresses, three/four-level
source timing, unchanged constant dispatch, remapping and shifted/unshifted actual
kernel arithmetic compiled as host C++. These are not CUDA or flow validation.
The older 519473a / 11901a7 N128 result passed its velocity threshold narrowly
(0.001995299 versus 0.002, 0.235% margin); the matched constant velocity result was
0.004418077. N64 projected failures and the false aggregate result remain relevant.
These observations justify only the next qualification: bounded GPU default-path
equivalence, union and multilevel checks on this port, then matched physics.
No convergence, long-time, body, boundary, MRT or general-accuracy claim is made.
The older LES flow runner pins the entire blocks.cu file. Its three pin checks
correctly reject this added-kernel revision; their hashes are deliberately unchanged.
A matching, reviewed harness revision is required before using that evidence path.