isotypic_decomp_rep#

isotypic_decomp_rep(rep)[source]#

Return an equivalent representation disentangled into isotypic subspaces.

Given an input Representation, this function computes an equivalent representation by updating the change of basis (and its inverse) and reordering the irreducible representations. The returned representation is guaranteed to be disentangled into its isotypic subspaces.

A representation is considered disentangled if, in its spectral basis, the irreducible representations (irreps) are clustered by type, i.e., all irreps of the same type are consecutive:

\[\rho_{\mathcal{X}} = \mathbf{Q}\left( \bigoplus_{k\in[1,n_{\text{iso}}]} \bigoplus_{i\in[1,n_k]} \hat{\rho}_k \right)\mathbf{Q}^T\]

where \(\hat{\rho}_k\) is the irreducible representation of type \(k\), and \(n_k\) is its multiplicity.

The change of basis decomposes the representation space into orthogonal isotypic subspaces:

\[\mathcal{X} = \bigoplus_{k\in[1,n_{\text{iso}}]} \mathcal{X}^{(k)}.\]

Ordering convention:

  • If present, the trivial-irrep isotypic block is placed first and denoted \(\mathcal{X}^{\text{inv}}\).

  • Remaining isotypic blocks are sorted by subspace dimension.

Output metadata:

  • attributes["isotypic_reps"]: ordered mapping irrep_id -> isotypic representation.

  • attributes["isotypic_subspace_dims"]: slice map locating each isotypic block in the disentangled basis.

  • attributes["in_isotypic_basis"]: boolean flag set to True.

Parameters:

rep (Representation) – The input representation \(\rho\).

Returns:

An equivalent, disentangled representation.

Return type:

Representation

Note

The decomposition is cached per symmetry group under rep.group.representations with key rep.name + "-Iso". Repeated calls with the same representation/group reuse the cached result.