ufv_variation_masks#

t3toolbox.backend.ufv_masking.ufv_variation_masks(frame_masks)#
def ufv_variation_masks(
        frame_masks:  typ.Tuple[NDArray, NDArray, NDArray, NDArray],  # (up, down, frame_left, frame_right); HOST bool
) -> typ.Tuple[NDArray, NDArray, NDArray, NDArray]:                   # (up, down, left[:-1], right[1:])

The variation masks of a frame: its rank masks with the gauge shift applied.

A variation occupies one TT slot, not a boundary edge, so it takes the frame’s left masks without the last and the right masks without the first. The up/down masks pass through. This one line is the whole convention, and it was previously open-coded at four sites; call it rather than slicing by hand. (The frontend twin is UT3Variations._variation_masks_of.)

Parameters:

frame_masks (t3toolbox.backend.common.typ.Tuple[NDArray, NDArray, NDArray, NDArray])

Return type:

t3toolbox.backend.common.typ.Tuple[NDArray, NDArray, NDArray, NDArray]