Crystalline.jl
Crystalline.jl copied to clipboard
LGIrreps at arbitrary k-points
This obviously requires that we fix #12 first, but after that, we should implement methods to:
- Obtain the
LGIrreps of a k-point kα (D(i)kα) from theLGIrreps of a "canonical" (i.e. referenced) k-point k in the star of kα (D(i)k), using the mapping D(i)kα(h) = D(i)k(gα-1hgα), where h is an element of the little group of kα, i.e. Gkα, and gα is a coset representative that takes k to kα via kα = gαk, such that gα-1hgα is in the little group of k, i.e. Gk. (see e.g., Inui Eq. (11.52) as a reference for this) - After that, we could implement an interface over that utility, where the user would give an arbitrary k-point and then we'd match up to the relevant "maximal" k-point irrep in a given star and return the evaluated irreps via point 1.
For relevant literature that gives context to that formula, we can e.g. just think about how the "full" space group irreps are constructed from little group irreps. A good reference is Inui's book, Section 11.9 (and especially Eq. (11.52)).
I think all "missing" k-points from Φ-Ω should have been added in #30, so we should now in principle be able to "cover" all of the BZ with operations gα from the coset.
There's a somewhat subtle point to add to bullet 1 in the original post, which is not obvious, I think.
In particular, we say to pick a an element of the little group coset gα which sends k to kα via:
kα = gαk
Very importantly, it is implicitly assumed that gα here acts without any transposition, as we otherwise do when we compose symmetry operations with k-vectors. I.e., what we really mean is that if gα = {Rα|tα}, then (cf. Inui Eq. (11.49)):
kα = Rαk
and not:
kα = RαTk
which is what e.g. compose(gα, kα) would have returned.
EDIT: Ugh, I somehow think this is still not right.