Double groups & spinful irreps
Spin-½ degrees of freedom do not transform under a crystallographic group itself, but under its double group. The reason is that a rotation by $2\pi$ acts as $-1$ on a spinor rather than as the identity: each spatial operation $g$ is lifted to two distinct operations, conventionally written $g$ and $\bar{E}g$, which differ by that $2\pi$ rotation $\bar{E}$. The double group of a group $G$ consequently has $2|G|$ elements. Its irreps fall in two families, according to how they represent $\bar{E}$. Those representing it by $+1$ cannot distinguish $g$ from $\bar{E}g$, and are just the irreps of $G$ itself: the single-valued (spinless) irreps. Those representing it by $-1$ are the double-valued (spinful) irreps, and are the ones that describe spin-½ degrees of freedom.
Crystalline.jl provides an interface to Bilbao Crystallographic Server's tables of the double groups of space, point, and little groups and their double-valued irreps, as well as constructors to build the associated site symmetry groups, irreps, and the associated band representations. Throughout, the word "spinful" refers to the double-valued (odd-integer multiples of spin-½) case and "spinless" to the single-valued (integer spin) one; isspinful distinguishes them.
Double group operations
A double group operation is a DSymOperation{D}: a spatial SymOperation{D} together with the SU2 element by which it acts on spin-½ degrees of freedom. The SU(2) element of a spatial operation is obtained from the SU2 constructor, which additionally requires the crystal system (see below):
using Crystalline
SU2(S"-y,x-y,z", 183) # the SU(2) element of 3₀₀₁⁺ in space group 183 (P6mm)SU(2) element:
1/2+i√3/2 0
0 1/2-i√3/2The two operations that share a spatial part carry the SU(2) elements $U$ and $-U$, differing by a further $2\pi$ rotation; the one whose rotation angle stays within half a turn is the unbarred one, and isbarred tells the two apart, with seitz marking the barred one by a superscripted ᵈ. Because composition of SU(2) elements is what keeps track of the $2\pi$ rotation, a double group multiplication table looks quite different from its spinless counterpart — e.g., a two-fold rotation no longer squares to the identity:
dpg = pointgroup("2", Val(3); spinful=Val(true))
MultTable(dpg)4×4 MultTable{DSymOperation{3}}:
───────┬────────────────────────────
│ 1 2₀₁₀ ᵈ1 ᵈ2₀₁₀
───────┼────────────────────────────
1 │ 1 2₀₁₀ ᵈ1 ᵈ2₀₁₀
2₀₁₀ │ 2₀₁₀ ᵈ1 ᵈ2₀₁₀ 1
ᵈ1 │ ᵈ1 ᵈ2₀₁₀ 1 2₀₁₀
ᵈ2₀₁₀ │ ᵈ2₀₁₀ 1 2₀₁₀ ᵈ1
───────┴────────────────────────────SU(2) conventions: the Cartesian frame, and changes of basis or setting
The SU(2) element is not fixed by the rotation part alone: a rotation matrix in fractional coordinates does not determine the Cartesian rotation axis. SU2 therefore also takes the crystal system, and returns elements tabulated by Altmann & Herzig[Altmann], as used by the Bilbao Crystallographic Server.
Those tables fix the orientation of the conventional basis $(\mathbf{a}_1, \mathbf{a}_2, \mathbf{a}_3)$ relative to a Cartesian frame. For all but hexagonal and trigonal lattices, this agrees with Crystalline's own convention (as used by e.g. crystal), i.e., $\mathbf{a}_1 \parallel x$ with $\mathbf{a}_2$ in the $xy$-plane; for hexagonal and trigonal lattices, the tables instead use $x \parallel \mathbf{a}_1 + 2\mathbf{a}_2$, $y \parallel \mathbf{a}_1$, and $z \parallel -\mathbf{a}_3$. We keep the tabulated elements unchanged, so that they agree with Bilbao's. The frame has no bearing on irreps, characters, or band representations; it matters only if SU(2) elements are combined with quantities referred to Cartesian axes, such as spin operators taken as physical directions, orbitals transforming under Cartesian rotations, or external fields.
A change of lattice basis does not change the physical operation, so transform, primitivize, and conventionalize carry the SU(2) element over unchanged. The same holds when transform is used for a change of setting (as in conjugacy_relations) — but there the new basis is generally not in the orientation assumed above, so the transformed elements need not equal those tabulated for the new setting (e.g., $2_{001}$ rewritten as $2_{010}$ retains $-\mathrm{i}\sigma_z$, where the table gives $-\mathrm{i}\sigma_y$ for $2_{010}$). To obtain the double group operations of the new setting, transform the spatial operations and attach the elements tabulated for it, i.e., SU2(op′, sgnum′).
Double groups
The double group of a space, point, little, or site symmetry group can be constructed from a single-valued counterpart via doublegroup:
doublegroup(pointgroup("6mm", Val(3)))DPointGroup{3} ⋕25 (6mm) with 24 operations:
1
3₀₀₁⁺
3₀₀₁⁻
2₀₀₁
6₀₀₁⁻
6₀₀₁⁺
m₁₁₀
m₁₀₀
m₀₁₀
m₁₋₁₀
m₁₂₀
m₂₁₀
ᵈ1
ᵈ3₀₀₁⁺
ᵈ3₀₀₁⁻
ᵈ2₀₀₁
ᵈ6₀₀₁⁻
ᵈ6₀₀₁⁺
ᵈm₁₁₀
ᵈm₁₀₀
ᵈm₀₁₀
ᵈm₁₋₁₀
ᵈm₁₂₀
ᵈm₂₁₀The returned group contains all $2|G|$ operations, with barred operations listed after their unbarred partners. Including the barred operations explicitly means that the double group is a group in its own right, so that multiplication tables, conjugacy classes, and the Herring criterion require no special casing.
Equivalently, and usually more conveniently, the group constructors take a spinful keyword argument:
sg = spacegroup(183, Val(3); spinful=Val(true)) # a `DSpaceGroup{3}`and likewise for pointgroup, littlegroups, and sitegroups. As with the dimension, passing spinful as a Val keeps the return type inferrable, whereas a plain Bool does not; spinful = Val(false) is the default throughout.
Double-valued irreps
Double-valued irreps are obtained from the same accessors as the single-valued ones — pgirreps, lgirreps, and siteirreps — and are returned as DPGIrrep, DLGIrrep, and DSiteIrrep, respectively. The point group and little group accessors take the same spinful keyword argument as their group counterparts:
dpgirs = pgirreps("321", Val(3); spinful=Val(true))
classcharacters(dpgirs)ClassCharacterTable for ⋕18 (321) (spinful):
────────┬─────────────────
│ Γ₄ˢ Γ₅ˢ Γ₆ˢ
────────┼─────────────────
1 │ 1 1 2
3₀₀₁⁺ │ -1 -1 1
2₁₁₀ │ -1im 1im 0
2₁₀₀ │ 1im -1im 0
ᵈ1 │ -1 -1 -2
ᵈ3₀₀₁⁺ │ 1 1 -1
────────┴─────────────────Class representatives:
1
3₀₀₁⁺ : 3₀₀₁⁻
2₁₁₀ : ᵈ2₁₀₀, 2₀₁₀
2₁₀₀ : ᵈ2₀₁₀, ᵈ2₁₁₀
ᵈ1
ᵈ3₀₀₁⁺ : ᵈ3₀₀₁⁻Site symmetry irreps are instead obtained by passing a DSiteGroup to siteirreps:
dsiteg = sitegroups(183, Val(3); spinful=Val(true))[5] # site group of Wyckoff position 2b
classcharacters(siteirreps(dsiteg))ClassCharacterTable for ⋕183 (P6mm) at 2b = [1/3, 2/3, γ] (spinful):
────────────────┬─────────────────
│ Γ₄ˢ Γ₅ˢ Γ₆ˢ
────────────────┼─────────────────
1 │ 1 1 2
{3₀₀₁⁺|1,1,0} │ -1 -1 1
{m₁₁₀|1,1,0} │ -1im 1im 0
m₁₀₀ │ 1im -1im 0
ᵈ1 │ -1 -1 -2
{ᵈ3₀₀₁⁺|1,1,0} │ 1 1 -1
────────────────┴─────────────────Class representatives:
1
{3₀₀₁⁺|1,1,0} : {3₀₀₁⁻|0,1,0}
{m₁₁₀|1,1,0} : ᵈm₁₀₀, {m₀₁₀|0,1,0}
m₁₀₀ : {ᵈm₀₁₀|0,1,0}, {ᵈm₁₁₀|1,1,0}
ᵈ1
{ᵈ3₀₀₁⁺|1,1,0} : {ᵈ3₀₀₁⁻|0,1,0}The irrep matrices are defined over all $2|G|$ operations, with $D(\bar{E}g) = -D(g)$, so that the barred half of the character table is the negative of the unbarred half — as evident also in the table above. Labels follow CDML for little group irreps and the Bilbao/Koster convention for point group irreps, in both cases with an appended ˢ marking the irrep as double-valued (where Bilbao writes an overline); mulliken gives the associated Mulliken labels:
label.(dpgirs) .=> mulliken.(dpgirs)3-element Vector{Pair{String, String}}:
"Γ₄ˢ" => "²Eˢ"
"Γ₅ˢ" => "¹Eˢ"
"Γ₆ˢ" => "E₁ˢ"Time-reversal symmetry
Time reversal is incorporated exactly as in the spinless case, via realify (see also the Irreps page). It applies wherever time reversal maps the group back to itself: always for point groups and site symmetry groups, and, for little groups, at a time-reversal invariant momentum (TRIM), i.e., where $\mathbf{k} \equiv -\mathbf{k}$ up to a reciprocal lattice vector. Its effect, however, is qualitatively different from the spinless case, because time reversal then squares to $-1$ rather than to $+1$. In terms of the reality type (see reality and calc_reality), the roles of REAL and PSEUDOREAL are interchanged:
Reality | spinless | spinful |
|---|---|---|
REAL | unchanged | doubled |
PSEUDOREAL | doubled | unchanged |
COMPLEX | glued to its complex conjugate partner | glued to its complex conjugate partner |
The physical consequence is Kramers degeneracy, and it is common to all three cases: a spinful corep is always even-dimensional — by doubling if REAL, by gluing to a partner if COMPLEX, and, if PSEUDOREAL, because a pseudoreal irrep is already even-dimensional on its own[1]. The REAL case is the starkest: the double group of point group 1 has a single double-valued irrep, one-dimensional, which time reversal nonetheless sticks to a copy of itself:
pgirs¹ = pgirreps("1", Val(3); spinful=Val(true))
label.(pgirs¹) .=> reality.(pgirs¹)1-element Vector{Pair{String, Reality}}:
"Γ₂ˢ" => REALpgirs¹′ = realify(pgirs¹)
label.(pgirs¹′) .=> irdim.(pgirs¹′) # a two-fold degeneracy, i.e., a Kramers pair1-element Vector{Pair{String, Int64}}:
"Γ₂ˢΓ₂ˢ" => 2Conversely, a PSEUDOREAL double-valued irrep is left untouched by realify: it is already its own time-reversal partner. This is the common case for double-valued irreps — unlike for single-valued point group irreps, where the pseudoreal type does not occur at all.
Away from a TRIM there is no Kramers degeneracy, and odd-dimensional spinful coreps do occur. E.g., in space group 183 (P6mm), the coreps at Γ are all two-dimensional, while those at K — which is not a TRIM, since $-\mathbf{k}_{\text{K}}$ differs from $\mathbf{k}_{\text{K}}$ by no reciprocal lattice vector — are not:
lgirsd = lgirreps(183, Val(3); spinful=Val(true))
irdim.(realify(lgirsd["Γ"])), irdim.(realify(lgirsd["K"]))([2, 2, 2], [1, 1, 2])Physically real form
As in the spinless case, physical_realify brings the matrices of a time-reversal-invariant irrep to a canonical form. The convention is stated in terms of the unitary part $\Gamma$ of time reversal, $T = \Gamma K$ with $K$ complex conjugation: the returned matrices obey $\Gamma D^*(g) \Gamma^\dagger = D(g)$, with $\Gamma$ given by timereversal_unitary. For spinless irreps $\Gamma$ is chosen as the identity, so this is just the statement that the matrices are real. For spinful irreps of dimension $2n$ that choice is impossible, since $T^2 = -1$ requires $\Gamma\Gamma^* = -\mathbf{1}$; the canonical choice is instead $\Gamma = \mathrm{i}\sigma_y \otimes \mathbf{1}_n$[2], requiring the matrices take the block form
\[ D = \begin{pmatrix} A & B \\ -B^* & A^* \end{pmatrix},\]
the $n$-block analogue of the SU(2) form $[a\ b;\ -b^*\ a^*]$[3]. The matrices are additionally real whenever that is possible, i.e., unless the irrep is pseudoreal:
ir = realify(pgirreps("3", Val(3); spinful=Val(true)))[2] # a COMPLEX corep: a real form exists
physical_realify(ir)Γ₅ˢΓ₆ˢ┌ 1: ⎡ 1 0 ⎤
│ ⎣ 0 1 ⎦
├ 3₀₀₁⁺: ⎡ 0.5 0.866 ⎤
│ ⎣ -0.866 0.5 ⎦
├ 3₀₀₁⁻: ⎡ 0.5 -0.866 ⎤
│ ⎣ 0.866 0.5 ⎦
├ ᵈ1: ⎡ -1 0 ⎤
│ ⎣ 0 -1 ⎦
├ ᵈ3₀₀₁⁺: ⎡ -0.5 -0.866 ⎤
│ ⎣ 0.866 -0.5 ⎦
├ ᵈ3₀₀₁⁻: ⎡ -0.5 0.866 ⎤
└ ⎣ -0.866 -0.5 ⎦ir′ = realify(pgirreps("222", Val(3); spinful=Val(true)))[1] # PSEUDOREAL: no real form
pir′ = physical_realify(ir′)Γ₅ˢ┌ 1: ⎡ 1 0 ⎤
│ ⎣ 0 1 ⎦
├ 2₀₀₁: ⎡ 0 -1 ⎤
│ ⎣ 1 0 ⎦
├ 2₀₁₀: ⎡ 0 -1im ⎤
│ ⎣ -1im 0 ⎦
├ 2₁₀₀: ⎡ -1im 0 ⎤
│ ⎣ 0 1im ⎦
├ ᵈ1: ⎡ -1 0 ⎤
│ ⎣ 0 -1 ⎦
├ ᵈ2₀₀₁: ⎡ 0 1 ⎤
│ ⎣ -1 0 ⎦
├ ᵈ2₀₁₀: ⎡ 0 1im ⎤
│ ⎣ 1im 0 ⎦
├ ᵈ2₁₀₀: ⎡ 1im 0 ⎤
└ ⎣ 0 -1im ⎦The defining relation holds in either case — here, for the pseudoreal one:
Γ′ = timereversal_unitary(ir′)
all(D -> Γ′ * conj(D) * Γ′' ≈ D, pir′(nothing))trueAny subsequent use of the irrep matrices alongside time reversal — e.g., in constructing symmetry-constrained tight-binding models — must adopt the same convention for $\Gamma$ (as returned by timereversal_unitary).
Band representations
bandreps takes the same spinful keyword argument, and returns the band representations induced from the double-valued site symmetry irreps:
bandreps(183, Val(3); spinful=Val(true))6-element Collection{BandRep{3}} for ⋕183 (P6mm) over 14 irreps (spinful w/TR):
─────┬────────────────────────────
│ 3c 2b 2b 1a 1a 1a
│ Eˢ Eˢ E₁ˢ E₃ˢ E₂ˢ E₁ˢ
─────┼────────────────────────────
Γ₇ˢ │ 1 2 · 1 · ·
Γ₈ˢ │ 1 · 1 · 1 ·
Γ₉ˢ │ 1 · 1 · · 1
A₇ˢ │ 1 2 · 1 · ·
A₈ˢ │ 1 · 1 · 1 ·
A₉ˢ │ 1 · 1 · · 1
H₄ˢ │ 1 · 1 1 · ·
H₅ˢ │ 1 · 1 1 · ·
H₆ˢ │ 2 2 1 · 1 1
K₄ˢ │ 1 · 1 1 · ·
K₅ˢ │ 1 · 1 1 · ·
K₆ˢ │ 2 2 1 · 1 1
L₅ˢ │ 3 2 2 1 1 1
M₅ˢ │ 3 2 2 1 1 1
─────┼────────────────────────────
μ │ 6 4 4 2 2 2
─────┴────────────────────────────In the presence of time-reversal symmetry, every such band representation has even filling since Kramers' theorem pairs the states of a spinful system.
Data sources
The provided double-valued little group and point group irreps are obtained from the Bilbao Crystallographic Server's Representations DSG and Representations DPG programs; ISOTROPY, the source of Crystalline's spinless little group irreps, provides no double-valued data. If used in research, please cite the original reference[Elcoro] for Representations DSG. The SU(2) elements are those of Altmann & Herzig[Altmann], as also used by Bilbao.
- ElcoroElcoro et al. Double crystallographic groups and their representations on the Bilbao Crystallographic Server, J. Appl. Cryst. 50, 1457 (2017).
- AltmannAltmann, S.L. & Herzig, P., Point-Group Theory Tables, Oxford: Clarendon Press (1994).
- 1If $D \cong D^*$, i.e., if $UD^*U^\dagger = D$ for some unitary $U$, then conjugating and resubstituting shows that $UU^*$ commutes with every $D(g)$; Schur's lemma then gives $UU^* = c\mathbf{1}$, and unitarity forces $c = \pm 1$, i.e., $U = \pm U^{\mathrm{T}}$.
PSEUDOREALis the case $U = -U^{\mathrm{T}}$. An invertible antisymmetric $n\times n$ matrix has $\det U = \det U^{\mathrm{T}} = (-1)^n\det U$, so $n$ must be even. - 2Since $K\Gamma K = \Gamma^*$, we have $T^2 = \Gamma K\Gamma K = \Gamma\Gamma^*$, so $T^2 = -1$ demands $\Gamma\Gamma^* = -\mathbf{1}$ — which $\Gamma = \mathbf{1}$ cannot meet, and which reduces to $\Gamma^2 = -\mathbf{1}$ for real $\Gamma$. The block matrix $\mathrm{i}\sigma_y \otimes \mathbf{1}_n = \left(\begin{smallmatrix} \mathbf{0} & \mathbf{1}_n \\ -\mathbf{1}_n & \mathbf{0}\end{smallmatrix}\right)$ is the simplest real choice that does, and exists only in even dimension — consistent with [1]. Its phase is a convention: $\mathrm{e}^{\mathrm{i}\alpha}\mathbf{1}$ leaves every $D$ unchanged but sends $\Gamma \to \mathrm{e}^{2\mathrm{i}\alpha}\Gamma$.
- 3Writing $D$ in $n\times n$ blocks $D_{ij}$ and using $\Gamma = \left(\begin{smallmatrix} \mathbf{0} & \mathbf{1}_n \\ -\mathbf{1}_n & \mathbf{0}\end{smallmatrix}\right)$, we have $\Gamma D^*\Gamma^\dagger = \left(\begin{smallmatrix} D_{22}^* & -D_{21}^* \\ -D_{12}^* & D_{11}^*\end{smallmatrix}\right)$; equating this to $D$ gives $D_{22} = D_{11}^*$ and $D_{21} = -D_{12}^*$, i.e., the quoted form with $A = D_{11}$ and $B = D_{12}$.