This output-oriented mapping requires that the data structure that describes the geometry of the whole output (out_geom) is passed to genkir3d. The access to the output data can be blocked along all the output space dimensions; that is the midpoint axes and the offset and azimuth axes. The geometry of the blocks is specified with the argument out_geom_block. To localize the access to the mapping tables, the inner loops over the output space are in the midpoint coordinates (cmp_x and cmp_y) of out_geom_block.
A Sep3d data set can be either gridded or ungridded. An ungridded data set is accessed sequentially. The data are read multiple times, as many times as the number of output blocks. A gridded data set is accessed selectively according to the offset and the azimuth of the output block being currently built. Furthermore, for efficiency purposes, the maximum aperture of the operator along the midpoint dimensions can be specified in the param data structure, limiting the ranges of midpoints of the input data being accessed for each output block.