WIP: Point group representations
Implement new feature of finding the character table and irreducible representation content of the symmetries found by the symmetry finder. This is achieved by the following steps:
- Fix the arbitrary complex phases in the unitary parts of the symmetry operators.
- Generate the character table of the representation.
- Decompose the representation into irreps.
Open questions about phase fixing:
-
There is an ambiguity of multiplying with a 1D U(1) representation. How do we communicate this efficiently towards the user? We could, for example, generate all the character tables, or provide a separate function that produces all the U(1) irreps.
-
Double group representations (representations of SU(2) instead of SO(3), where 2pi rotation is different from identity) are often necessary, this is how fermions transform. For now take it as an input, whether to look for single or double group representations, but this may not be necessary.
-
In 2D double point groups there is a further ambiguity, as we don't know how the z coordinate transforms (z -> z or z -> -z). This affects what is the consistent phase choice. Could survey all possibilities.
-
If there are additional onsite unitary symmetries, there may be multiple phases to fix (one for each irreducible block of the onsite unitaries).
Other open questions:
- Simply looking at the representation of the symmetry groups by the unitary parts gives the representation at k=0. If we want to support other high symmetry k-points, we need to take care of the different phase factors that come with that. This requires additional information about the translation symmetries and the translation action of the point group elements (i.e. where is the rotation center, is it nonsymmorphic). This may be possible to extract directly from the Bloch Hamiltonians and the symmetry operators.
- Can we handle antiunitaries and antisymmetries?