Files
CelerisLab/docs/development/projected_pair_explosion.md
T

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.