utv_oblique_gauge_projection#
- t3toolbox.backend.utv_operations.utv_oblique_gauge_projection(frame_data, variations_data)#
def utv_oblique_gauge_projection( frame_data, # UT3Frame .data variations_data, # UT3Variations .data ): # -> gauged variations .data (same masks; the tangent VECTOR is PRESERVED)
Project the variations onto the gauge-satisfying subspace while PRESERVING the tangent vector (the uniform mirror of
tv_operations.tv_oblique_gauge_projection()). The Tucker perturbation is made perpendicular toU(compensating through the down coreO), then the TT variations are made left-perpendicular (compensating through the right coreQ).The Tucker step is independent per core -> vectorized over
d. The TT step carries a correction forward to the next core (a left-to-right sweep), implemented as anxscanoverd– NOT a Python loop: an unrolled loop bakesdcopies of the step into the jit graph (compile time superlinear in the tensor orderd), while a scan compiles the body once. Mask-once up front. Enforces the gauge conditions (48)-(49), Appendix A.3 of Alger et al. (2026).