Repository navigation
Clebsch Gordan coefficients
Theory, part 2 of 3. Previous: The hypercubic group · Next: Lattice operators
With Eq. (3) of the previous page
we know how to decompose a product of irreps into a direct sum. For reasons explained on the
Lattice operators page, a case of direct physical interest
is
For an application to physics, however, the decomposition alone is not enough. We also need to know how the basis
vectors of the tensor product can be recombined so that the decomposition on the right-hand side of Eq. (1) becomes
manifest. In other words, we need the change-of-basis matrix, whose entries are the Clebsch-Gordan coefficients
of
A general method to obtain the Clebsch-Gordan coefficients of a finite group was given by
Sakata (1974). In the next section we explain it for
For
- Consider
${\mu \otimes \nu}$ , the product of two irreps of${H(4)}$ . (The method, and the code, work in the same way for a product of any number of irreps.) - Compute the decomposition of
${\mu \otimes \nu}$ with the character table of${H(4)}$ and Eq. (3) of the previous page. - For every element
${h}$ of${H(4)}$ , consider the following matrices:-
${D^{(\mu)}(h)}$ and${D^{(\nu)}(h)}$ , the matrices of${h}$ in the irreps${\mu}$ and${\nu}$ , and their tensor (Kronecker) product${T(h) = D^{(\mu)}(h) \otimes D^{(\nu)}(h)}$ , the matrix of${h}$ on the product space; -
${D(h)}$ , the block-diagonal matrix with one block${D^{(\sigma)}(h)}$ for each irrep${\sigma}$ in the decomposition of${\mu \otimes \nu}$ , repeated as many times as its multiplicity.
-
- Take an arbitrary matrix
${A}$ of the same size as${T(h)}$ , i.e. a matrix whose entries are free symbols that are fixed at the end, and compute the matrix
All the matrices of
- Examine the columns of
${M^{(\mu \otimes \nu)}}$ . By normalising them appropriately (i.e. by fixing the values of the entries of${A}$ that appear in the columns under consideration), one can read off the Clebsch-Gordan coefficients of interest. Each column gives the coefficients of one operator.
The formula works because the sum runs over the whole group: for every element
where
In the code. The matrices cg_calc implements Eq. (2) and gives the Clebsch-Gordan coefficients of any tensor product. The sum over the group is
done numerically, on the coefficients of the symbols of CGmat_from_block, as explained
below, so that, among
other things, each copy of an irrep has a definite C-parity.
To make things more transparent, let us introduce the lattice operators related to the decomposition of Eq. (1),
More details are given on the Lattice operators page, and
the complete physical background can be found, for example, in Göckeler et al. (1996). The important fact here is
that each index
Since this irrep is four-dimensional, the operators form a 16-dimensional space. The basis one would naively consider
is
To get an explicit expression for the operators of the new basis, we use Sakata's formula, Eq. (2), and compute
where
This operator, the trace, transforms according to the irrep
The next three columns of
where
Multiplicity greater than one. When an irrep appears
${m > 1}$ times in the product, its blocks depend on${m}$ different linear combinations${f_1(A), \dots, f_m(A)}$ , which can be fixed separately. They give rise to${m}$ linearly independent copies of the irrep, which all transform with the same matrices${D^{(\sigma)}(h)}$ .
Fixing the normalisation of each column (h4lat makes its first non-zero entry equal to
which transform according to the irrep
with the pairs
This procedure can be used for a general tensor product. In particular, applying it to the products of two, three and
four vector irreps,
The function CGmat_from_block turns each symbolic block of Eq. (2) into numbers. It fixes the free symbols in a
deterministic way, so that the result is the same at every run.
-
Normalisation. Each column is divided by the absolute value of its first non-zero entry, which therefore becomes
${\pm 1}$ (${+1}$ in the first column of a block), as in the example above. This fixes the normalisation of every operator separately, so the columns of a block no longer have the same norm. Once rescaled to unit norm, they transform exactly with the orthogonal matrices of the irrep:${T(h)\, C = C\, D^{(\sigma)}(h)}$ for every element${h}$ , where${C}$ is the block with unit columns. The test suite checks this for every bundled block. -
Copies. By Schur's lemma, a copy of an irrep is fixed by the first column of its block. When an irrep appears
${m > 1}$ times, h4lat takes as reference rows the first${m}$ rows of the first column whose entries are linearly independent functions of${A}$ . Copy${j}$ is the block for the${A}$ of minimal norm that makes reference row${j}$ equal to 1 and the other reference rows equal to 0. The copies are therefore linearly independent, and each one is an exact Clebsch-Gordan block, since it is${M}$ for one value of${A}$ . -
C-parity. For an operator
${\bar\psi \, \Gamma \, D \cdots D \, \psi}$ , the factors of the product after the first one are the derivative indices, and charge conjugation reverses their order. When all those factors are the same irrep (for the operators of h4lat they are all${\tau^{(4)}_1}$ ), this reversal commutes with the action of${H(4)}$ , so it maps the copies of an irrep into each other. Since it squares to one, the copies can be chosen even or odd under it, and h4lat chooses them in this way, the even copies first. Every operator built from them therefore has a definite C-parity (see Lattice operators). An irrep with multiplicity 1 is automatically even or odd.
Until October 2026, the copies were chosen without the C-parity condition, so some operators had mixed C-parity, and the operator IDs of irreps with multiplicity greater than 1 referred to other copies.
The Clebsch-Gordan coefficients of the following products are computed in advance and bundled with h4lat:
These are the products needed for the operators
from h4lat import cg_calc, irrep_index
cg = cg_calc((4, 1), (4, 1), verbose=False) # loaded from the bundled database
C = cg.cg_dict[irrep_index[(3, 1)]][0] # the block of the first (here the only) copy of (3,1): shape (16, 3)
print(C[:, 0]) # 1 at the rows of O_11, O_22, O_33 and -3 at the row of O_44- I. Sakata, A general method for obtaining Clebsch-Gordan coefficients of finite groups. I. Its application to point and space groups, J. Math. Phys. 15, 1702–1709 (1974), doi:10.1063/1.1666528.
- M. Göckeler, R. Horsley, E.-M. Ilgenfritz, H. Perlt, P. E. L. Rakow, G. Schierholz and A. Schiller, Lattice operators for moments of the structure functions and their transformation under the hypercubic group, Phys. Rev. D 54, 5705–5714 (1996), doi:10.1103/PhysRevD.54.5705, arXiv:hep-lat/9602029.
All the references of the wiki are collected on the References page.
h4lat · GNU GPL v3.0 or later ·
cite with doi:10.5281/zenodo.23598681 ·
this wiki is generated from the wiki/ folder of the repository:
to change a page, edit it there with a pull request.
Getting started
User guide
- Computing Clebsch-Gordan coefficients
- Building operators
- Operator database
- Operator catalogue (PDF)
- Operators from the literature
- Saving and loading operators
- API overview
Theory
Project