t3_concatenate#

t3toolbox.backend.t3_operations.t3_concatenate(xx)#
def t3_concatenate(
        xx: typ.Sequence[
            typ.Tuple[typ.Sequence[NDArray], typ.Sequence[NDArray]]
        ],  # T3 data tuples, each (tucker_cores, tt_cores); TT ranks must match at each seam
) -> typ.Tuple[
    typ.Tuple[NDArray, ...],  # tucker_cores (concatenated over modes)
    typ.Tuple[NDArray, ...],  # tt_cores
]:

Concatenate a sequence of T3 segments into one T3 (inverse of t3_segment()).

At each seam the TT ranks must match – the trailing TT rank of one segment equals the leading TT rank of the next – otherwise a ValueError is raised. The join is structural (core-tuple concatenation); no re-orthogonalization.

Parameters:

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

Return type:

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