Builds a GriddedSnapshot one source at a time.
The grid is the GridSpec box in the WakeFrame at its build time t0: xi along frame.axes[0] from -upstreamMargin to lengthDownstream, and +-halfWidth, +-halfHeight along axes[1] and axes[2], with grid.n[a] cells along axis a. Each source adds log(1 - d) at the grid nodes inside its truncated footprint, so the composed deficit 1 - prod(1 - d_i) of plan B1 is 1 - exp(sum log(1 - d_i)).
Marching protocol (plan B1). The builder is incremental so that a casting structure can resolve wake-on-wake shading in one pass; the builder itself never evaluates a load law:
- Sort the sources by position along the mean relative flow, frame.axes[0].
- For each source in that order, call SampleDeficit() at its centroid. This is the deficit of all sources upstream of it (a source is never in its own kernel, which starts at x_start, and kernels act only downstream).
- Re-evaluate the source's load at that waked inflow and set its momentumDeficit from it.
- AddSource() it. Finish(velocity) then returns the immutable snapshot for GriddedWake::Publish().
Deposit. The kernel is that of ElementaryDeficit(). Where its width sigma is below sigma_grid = 0.6 h, the Gaussian is deposited with width sigma_grid and its amplitude scaled by (sigma / sigma_grid)^2, which keeps the cross-section integral of d (C4, review B-5 d). h is the largest grid spacing seen across the source's flow, max_a h_a sqrt(1 - f_a^2) with f the flow direction in the frame; for a source aligned with axes[0] it is max(h_1, h_2). Nodes where the deposited deficit is below KernelParams::cutoff are skipped.
Images (owner rulings R53, R98). AddSource() also deposits each image of MirrorImages(params) at the build time: the source mirrored at each plane, position and flow direction, and with both planes the source shifted by 2 H up and down (the image of each mirror image at the other plane), flow direction unchanged; only the sources count for the resolution warning. The grid translates with the frame, so the images do not follow a vertical frame velocity mirrored.