Irreducible representations

Crystalline.jl provides easy access to crystallographic point group irreps, site symmetry group irreps, and the little group irreps of space groups. Currently, we only provide access to spinless (or "single-valued") irreps.

Point group irreps

Irreps for the crystallographic point groups are accessible via pgirreps, with the point group specified either by IUC label and dimensionality. As an example, we may load the irreps of the 6mm (C₆ᵥ in Schoenflies notation; see also schoenflies(::PointGroup)) point group in 3D.

using Crystalline

pgirs = pgirreps("6mm", Val(3))
6-element Vector{PGIrrep{3}}:
 PGIrrep{3}("Γ₁", [1, 3₀₀₁⁺, 3₀₀₁⁻, 2₀₀₁, 6₀₀₁⁻, 6₀₀₁⁺, m₁₁₀, m₁₀₀, m₀₁₀, m₋₁₁₀, m₁₂₀, m₂₁₀], Matrix{ComplexF64}[[1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;]], REAL, false)
 PGIrrep{3}("Γ₂", [1, 3₀₀₁⁺, 3₀₀₁⁻, 2₀₀₁, 6₀₀₁⁻, 6₀₀₁⁺, m₁₁₀, m₁₀₀, m₀₁₀, m₋₁₁₀, m₁₂₀, m₂₁₀], Matrix{ComplexF64}[[1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;]], REAL, false)
 PGIrrep{3}("Γ₃", [1, 3₀₀₁⁺, 3₀₀₁⁻, 2₀₀₁, 6₀₀₁⁻, 6₀₀₁⁺, m₁₁₀, m₁₀₀, m₀₁₀, m₋₁₁₀, m₁₂₀, m₂₁₀], Matrix{ComplexF64}[[1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;]], REAL, false)
 PGIrrep{3}("Γ₄", [1, 3₀₀₁⁺, 3₀₀₁⁻, 2₀₀₁, 6₀₀₁⁻, 6₀₀₁⁺, m₁₁₀, m₁₀₀, m₀₁₀, m₋₁₁₀, m₁₂₀, m₂₁₀], Matrix{ComplexF64}[[1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;], [-1.0 + 0.0im;;]], REAL, false)
 PGIrrep{3}("Γ₅", [1, 3₀₀₁⁺, 3₀₀₁⁻, 2₀₀₁, 6₀₀₁⁻, 6₀₀₁⁺, m₁₁₀, m₁₀₀, m₀₁₀, m₋₁₁₀, m₁₂₀, m₂₁₀], Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], [-0.4999999999999998 + 0.8660254037844387im 0.0 + 0.0im; 0.0 + 0.0im -0.4999999999999998 - 0.8660254037844387im], [-0.4999999999999998 - 0.8660254037844387im 0.0 + 0.0im; 0.0 + 0.0im -0.4999999999999998 + 0.8660254037844387im], [1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], [-0.4999999999999998 + 0.8660254037844387im 0.0 + 0.0im; 0.0 + 0.0im -0.4999999999999998 - 0.8660254037844387im], [-0.4999999999999998 - 0.8660254037844387im 0.0 + 0.0im; 0.0 + 0.0im -0.4999999999999998 + 0.8660254037844387im], [0.0 + 0.0im 1.0 + 0.0im; 1.0 + 0.0im 0.0 + 0.0im], [0.0 + 0.0im -0.4999999999999998 - 0.8660254037844387im; -0.4999999999999998 + 0.8660254037844387im 0.0 + 0.0im], [0.0 + 0.0im -0.4999999999999998 + 0.8660254037844387im; -0.4999999999999998 - 0.8660254037844387im 0.0 + 0.0im], [0.0 + 0.0im 1.0 + 0.0im; 1.0 + 0.0im 0.0 + 0.0im], [0.0 + 0.0im -0.4999999999999998 - 0.8660254037844387im; -0.4999999999999998 + 0.8660254037844387im 0.0 + 0.0im], [0.0 + 0.0im -0.4999999999999998 + 0.8660254037844387im; -0.4999999999999998 - 0.8660254037844387im 0.0 + 0.0im]], REAL, false)
 PGIrrep{3}("Γ₆", [1, 3₀₀₁⁺, 3₀₀₁⁻, 2₀₀₁, 6₀₀₁⁻, 6₀₀₁⁺, m₁₁₀, m₁₀₀, m₀₁₀, m₋₁₁₀, m₁₂₀, m₂₁₀], Matrix{ComplexF64}[[1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im 1.0 + 0.0im], [-0.4999999999999998 + 0.8660254037844387im 0.0 + 0.0im; 0.0 + 0.0im -0.4999999999999998 - 0.8660254037844387im], [-0.4999999999999998 - 0.8660254037844387im 0.0 + 0.0im; 0.0 + 0.0im -0.4999999999999998 + 0.8660254037844387im], [-1.0 + 0.0im 0.0 + 0.0im; 0.0 + 0.0im -1.0 + 0.0im], [0.5000000000000001 - 0.8660254037844386im 0.0 + 0.0im; 0.0 + 0.0im 0.5000000000000001 + 0.8660254037844386im], [0.5000000000000001 + 0.8660254037844386im 0.0 + 0.0im; 0.0 + 0.0im 0.5000000000000001 - 0.8660254037844386im], [0.0 + 0.0im 1.0 + 0.0im; 1.0 + 0.0im 0.0 + 0.0im], [0.0 + 0.0im -0.4999999999999998 - 0.8660254037844387im; -0.4999999999999998 + 0.8660254037844387im 0.0 + 0.0im], [0.0 + 0.0im -0.4999999999999998 + 0.8660254037844387im; -0.4999999999999998 - 0.8660254037844387im 0.0 + 0.0im], [0.0 + 0.0im -1.0 + 0.0im; -1.0 + 0.0im 0.0 + 0.0im], [0.0 + 0.0im 0.5000000000000001 + 0.8660254037844386im; 0.5000000000000001 - 0.8660254037844386im 0.0 + 0.0im], [0.0 + 0.0im 0.5000000000000001 - 0.8660254037844386im; 0.5000000000000001 + 0.8660254037844386im 0.0 + 0.0im]], REAL, false)

Frequently, the character table of the associated irreps is more informative than the irrep matrices themselves. We can construct this table using characters, which returns a CharacterTable:

characters(pgirs)
CharacterTable{3}: ⋕25 (6mm)
───────┬────────────────────────
       │ Γ₁  Γ₂  Γ₃  Γ₄  Γ₅  Γ₆
───────┼────────────────────────
     1 │  1   1   1   1   2   2
 3₀₀₁⁺ │  1   1   1   1  -1  -1
 3₀₀₁⁻ │  1   1   1   1  -1  -1
  2₀₀₁ │  1   1  -1  -1   2  -2
 6₀₀₁⁻ │  1   1  -1  -1  -1   1
 6₀₀₁⁺ │  1   1  -1  -1  -1   1
  m₁₁₀ │  1  -1  -1   1   0   0
  m₁₀₀ │  1  -1  -1   1   0   0
  m₀₁₀ │  1  -1  -1   1   0   0
 m₋₁₁₀ │  1  -1   1  -1   0   0
  m₁₂₀ │  1  -1   1  -1   0   0
  m₂₁₀ │  1  -1   1  -1   0   0
───────┴────────────────────────

The characters are functions of the conjugacy class (i.e., the characters of operations in the same conjugacy class are equal). Thus, a more compact representation of the character table can be achieved by a class-resolved table, achievable via classcharacters:

classcharacters(pgirs)
Crystalline.ClassCharacterTable{3}: ⋕25 (6mm)
───────┬────────────────────────
       │ Γ₁  Γ₂  Γ₃  Γ₄  Γ₅  Γ₆
───────┼────────────────────────
     1 │  1   1   1   1   2   2
 3₀₀₁⁺ │  1   1   1   1  -1  -1
  2₀₀₁ │  1   1  -1  -1   2  -2
 6₀₀₁⁻ │  1   1  -1  -1  -1   1
  m₁₁₀ │  1  -1  -1   1   0   0
 m₋₁₁₀ │  1  -1   1  -1   0   0
───────┴────────────────────────
Class representatives:
 1
 3₀₀₁⁺ : 3₀₀₁⁻
 2₀₀₁
 6₀₀₁⁻ : 6₀₀₁⁺
 m₁₁₀  : m₁₀₀, m₀₁₀
 m₋₁₁₀ : m₁₂₀, m₂₁₀

Notation

The default point group irrep labeling follows the Bilbao Crystallographic Server's labeling, which in turn follows the 1963 labelling of Koster, Dimmock, Wheeler, & Statz [2] (which is also followed e.g. by CDML [1] labeling as well as Bradley and Cracknell's book). Associated Muliken (or "spectroscopist's") notation can be obtained via mulliken.

Little group irreps

Little group irreps, sometimes called ''small'' irreps, are accessible via lgirreps and provided with CDML [1] labels (courtesy of ISOTROPY). As an example, we can obtain the irreps of space group 183 (P6mm; the trivial 3D extension of plane group 17, which in turn is the space group extension of point group 6mm from above) by:

using Crystalline

lgirsd = lgirreps(183, Val(3))
Dict{String, Vector{LGIrrep{3}}} with 18 entries:
  "Q" => [LGIrrep{3}("Q₁", [1, m₋₁₁₀] ([α, α, 1/2]), Matrix{ComplexF64}[[1.0+0.…
  "Λ" => [LGIrrep{3}("Λ₁", [1, m₋₁₁₀] ([α, α, 0]), Matrix{ComplexF64}[[1.0+0.0i…
  "P" => [LGIrrep{3}("P₁", [1, 3₀₀₁⁺, 3₀₀₁⁻, m₂₁₀, m₁₂₀, m₋₁₁₀] ([1/3, 1/3, γ])…
  "C" => [LGIrrep{3}("C₁", [1, m₋₁₁₀] ([α, α, γ]), Matrix{ComplexF64}[[1.0+0.0i…
  "L" => [LGIrrep{3}("L₁", [1, 2₀₀₁, m₀₁₀, m₂₁₀] ([1/2, 0, 1/2]), Matrix{Comple…
  "Δ" => [LGIrrep{3}("Δ₁", [1, 2₀₀₁, 3₀₀₁⁺, 3₀₀₁⁻, 6₀₀₁⁺, 6₀₀₁⁻, m₁₀₀, m₁₁₀, m₀…
  "B" => [LGIrrep{3}("B₁", [1] ([α, β, 0]), Matrix{ComplexF64}[[1.0+0.0im;;]], …
  "M" => [LGIrrep{3}("M₁", [1, 2₀₀₁, m₀₁₀, m₂₁₀] ([1/2, 0, 0]), Matrix{ComplexF…
  "H" => [LGIrrep{3}("H₁", [1, 3₀₀₁⁺, 3₀₀₁⁻, m₂₁₀, m₁₂₀, m₋₁₁₀] ([1/3, 1/3, 1/2…
  "A" => [LGIrrep{3}("A₁", [1, 2₀₀₁, 3₀₀₁⁺, 3₀₀₁⁻, 6₀₀₁⁺, 6₀₀₁⁻, m₁₀₀, m₁₁₀, m₀…
  "D" => [LGIrrep{3}("D₁", [1, m₀₁₀] ([α, 0, γ]), Matrix{ComplexF64}[[1.0+0.0im…
  "E" => [LGIrrep{3}("E₁", [1] ([α, β, 1/2]), Matrix{ComplexF64}[[1.0+0.0im;;]]…
  "U" => [LGIrrep{3}("U₁", [1, 2₀₀₁, m₀₁₀, m₂₁₀] ([1/2, 0, γ]), Matrix{ComplexF…
  "Σ" => [LGIrrep{3}("Σ₁", [1, m₀₁₀] ([α, 0, 0]), Matrix{ComplexF64}[[1.0+0.0im…
  "Γ" => [LGIrrep{3}("Γ₁", [1, 2₀₀₁, 3₀₀₁⁺, 3₀₀₁⁻, 6₀₀₁⁺, 6₀₀₁⁻, m₁₀₀, m₁₁₀, m₀…
  "K" => [LGIrrep{3}("K₁", [1, 3₀₀₁⁺, 3₀₀₁⁻, m₂₁₀, m₁₂₀, m₋₁₁₀] ([1/3, 1/3, 0])…
  "R" => [LGIrrep{3}("R₁", [1, m₀₁₀] ([α, 0, 1/2]), Matrix{ComplexF64}[[1.0+0.0…
  "Ω" => [LGIrrep{3}("Ω₁", [1] ([α, β, γ]), Matrix{ComplexF64}[[1.0+0.0im;;]], …

which returns a dictionary of LGIrreps, indexed by k-labels given as Strings, corresponding to different little groups. In general, we include all the little groups included in ISOTROPY; unfortunately, there is no strict guarantee that this includes a full listing of all inequivalent irreps (although it is typically true). The listing typically contains both special points, lines, and planes (and also always the general point).

We can inspect the little group irreps of any particular k-point, accessing it via its canonical label. As before, we can inspect the associated character tables to get an overview of the irreps:

lgirs = lgirsd["Γ"] # little group irreps at the Γ point
characters(lgirs)
CharacterTable{3}: ⋕183 (P6mm) at Γ = [0, 0, 0]
───────┬────────────────────────
       │ Γ₁  Γ₂  Γ₃  Γ₄  Γ₅  Γ₆
───────┼────────────────────────
     1 │  1   1   1   1   2   2
  2₀₀₁ │  1   1  -1  -1   2  -2
 3₀₀₁⁺ │  1   1   1   1  -1  -1
 3₀₀₁⁻ │  1   1   1   1  -1  -1
 6₀₀₁⁺ │  1   1  -1  -1  -1   1
 6₀₀₁⁻ │  1   1  -1  -1  -1   1
  m₁₀₀ │  1  -1  -1   1   0   0
  m₁₁₀ │  1  -1  -1   1   0   0
  m₀₁₀ │  1  -1  -1   1   0   0
  m₂₁₀ │  1  -1   1  -1   0   0
  m₁₂₀ │  1  -1   1  -1   0   0
 m₋₁₁₀ │  1  -1   1  -1   0   0
───────┴────────────────────────

Space group irreps

We currently do not provide access to "full" space group irreps. They can, however, be readily built by induction from little group irreps. Specifically, every little group irrep $D_{\mathbf{k}}^\alpha$ associated with the little group $G_{\mathbf{k}}$, induces a space group irrep, sometimes denoted ${}^*D_{\mathbf{k}}^{\alpha}$ or $D^{\alpha}_{\mathbf{k}}\uparrow G$, in the full space group $G$:[Inui]

\[ [{}^*D_{\mathbf{k}}^{\alpha}(g)]_{ij} = \begin{cases} D_{\mathbf{k}}^{\alpha}(h_i^{-1}gh_j) & \text{if }h_i^{-1}gh_j \in G_{\mathbf{k}}\\ \boldsymbol{0}_{d_{\mathbf{k}}^{\alpha}\times d_{\mathbf{k}}^{\alpha}} & \text{otherwise} \end{cases},\]

where $d_{\mathbf{k}}^{\alpha}$ is the dimension of the little group irrep $D^{\alpha}_{\mathbf{k}}$, $\boldsymbol{0}_{d_{\mathbf{k}}^{\alpha}\times d_{\mathbf{k}}^{\alpha}}$ is a $d_{\mathbf{k}}^{\alpha}\times d_{\mathbf{k}}^{\alpha}$ zero matrix, and $h_i$ and $h_j$ iterate over the (left) coset representatives of $G_{\mathbf{k}}$ in $G$ (of which there are $|\mathrm{star}\{\mathbf{k}\}|$, i.e., the order of the star of $\mathbf{k}$). The induced irrep ${}^*D_{\mathbf{k}}^{\alpha}$ is consequently a $d_{\mathbf{k}}^{\alpha}|\mathrm{star}\{\mathbf{k}\}|\times d_{\mathbf{k}}^{\alpha}|\mathrm{star}\{\mathbf{k}\}|$ matrix.

Site symmetry irreps

To obtain irreps associated with a given site symmetry group (see SiteGroup, use the find_isomorphic_parent_pointgroup to obtain the "parent" point group and any relevant permutation differences between the two groups. Associated irreps can then be inferred by a suitable permuation of results obtained from pgirreps.

Time-reversal symmetry & "physically real" irreps

Irreps returned in Crystalline.jl do not assume time-reversal symmetry by default. To incorporate time-reversal symmetry (or, equivalently, to obtain associated "physically real" irreps - or, more technically, co-representations), which may cause irreps to "stick together", see realify (which takes a vector of PGIrreps or LGIrreps).

As an example, the Γ₃, Γ₄, Γ₅, and Γ₆ irreps of point group 6 (C₆) are intrinsically complex in the absence of time-reversal symmetry:

using Crystalline

pgirs = pgirreps("6", Val(3))
characters(pgirs)
CharacterTable{3}: ⋕21 (6)
───────┬────────────────────────────────────────────────────────────────────────
       │ Γ₁  Γ₂               Γ₃               Γ₄               Γ₅             ⋯
───────┼────────────────────────────────────────────────────────────────────────
     1 │  1   1                1                1                1             ⋯
 3₀₀₁⁺ │  1   1  -0.5+0.866025im  -0.5+0.866025im  -0.5-0.866025im  -0.5-0.866 ⋯
 3₀₀₁⁻ │  1   1  -0.5-0.866025im  -0.5-0.866025im  -0.5+0.866025im  -0.5+0.866 ⋯
  2₀₀₁ │  1  -1                1               -1                1             ⋯
 6₀₀₁⁻ │  1  -1  -0.5+0.866025im   0.5-0.866025im  -0.5-0.866025im   0.5+0.866 ⋯
 6₀₀₁⁺ │  1  -1  -0.5-0.866025im   0.5+0.866025im  -0.5+0.866025im   0.5-0.866 ⋯
───────┴────────────────────────────────────────────────────────────────────────
                                                                1 column omitted

When time-reversal symmetry is incorporated, the irreps stick together pairwise and have real characters:

pgirs′ = realify(pgirs)
characters(pgirs′)
CharacterTable{3}: ⋕21 (6)
───────┬────────────────────
       │ Γ₁  Γ₂  Γ₃Γ₅  Γ₄Γ₆
───────┼────────────────────
     1 │  1   1     2     2
 3₀₀₁⁺ │  1   1    -1    -1
 3₀₀₁⁻ │  1   1    -1    -1
  2₀₀₁ │  1  -1     2    -2
 6₀₀₁⁻ │  1  -1    -1     1
 6₀₀₁⁺ │  1  -1    -1     1
───────┴────────────────────

To inspect the reality type of a given irrep, see reality. Possible types are REAL, COMPLEX, and PSEUDOREAL (the latter does not arise for point groups):

label.(pgirs) .=> reality.(pgirs)
6-element Vector{Pair{String, Reality}}:
 "Γ₁" => REAL
 "Γ₂" => REAL
 "Γ₃" => COMPLEX
 "Γ₄" => COMPLEX
 "Γ₅" => COMPLEX
 "Γ₆" => COMPLEX

The reality type can be computed ab initio via calc_reality, using the Frobenius criterion for PGIrreps and SiteIrreps and the Herring criterion for LGIrreps.

Data sources

Point group irreps are obtained from the Bilbao Crystallographic Server's Representations PG program and little group irreps of space groups are obtained from ISOTROPY's 2011 ISO-IR dataset.

If these functionalities are used in published research, please cite the original publications (listed in associated function docstrings).

  • InuiInui, Tanabe, & Onodera, Group Theory and its Applications in Physics, Springer (1990). Section 11.9.
  • 1Cracknell, A.P., Davies, B.L., Miller, S.C., & Love, W.F., Kronecker Product Tables, Vol. 1. General Introduction and Tables of Irreducible Representations of Space Groups, New York: IFI/Plenum (1979).
  • 2Koster, G.F., Dimmock, J.O., Wheeler, R.G., & Statz, H., Properties of the Thirty-two Point Groups, Cambridge: MIT Press (1963).