Band representations
Crystalline.jl computes the band representations (BRs) across all maximal[1] Wyckoff positions directly, via bandreps. The resulting representations are consistent with those tabulated e.g., by the Bilbao Crystallographic Server's BANDREP program.
As an example, we can obtain all the inequivalent BRs of space group 219 (F-43c) with:
using Crystalline
brs = bandreps(219, Val(3)) # space group 219 (dimension 3)12-element Collection{BandRep{3}} for ⋕219 (F-43c) over 14 irreps (spinless w/TR):
──────┬──────────────────────────────────────────────────────
│ 24d 24d 24d 24c 24c 24c 8b 8b 8b 8a 8a 8a
│ A B E A B E A E T A E T
──────┼──────────────────────────────────────────────────────
Γ₁ │ 1 · · 1 · · 1 · · 1 · ·
Γ₂ │ · 1 · · 1 · 1 · · 1 · ·
Γ₃ │ 1 1 · 1 1 · · 2 · · 2 ·
Γ₄ │ · 1 2 · 1 2 · · 1 · · 1
Γ₅ │ 1 · 2 1 · 2 · · 1 · · 1
X₁ │ 2 1 · · 1 2 · · 1 1 2 ·
X₂ │ 1 2 · 1 · 2 · · 1 1 2 ·
X₃ │ · 1 2 2 1 · 1 2 · · · 1
X₄ │ 1 · 2 1 2 · 1 2 · · · 1
X₅ │ 1 1 4 1 1 4 · · 2 · · 2
L₁L₂ │ 1 1 2 1 1 2 1 · 1 1 · 1
L₃L₃ │ 1 1 2 1 1 2 · 1 1 · 1 1
W₁W₂ │ 2 2 2 1 1 4 · · 2 1 2 1
W₃W₄ │ 1 1 4 2 2 2 1 2 1 · · 2
──────┼──────────────────────────────────────────────────────
μ │ 6 6 12 6 6 12 2 4 6 2 4 6
──────┴──────────────────────────────────────────────────────which returns a Collection{BandRep{3}}, whose iterants are BandRep{3}s. We can inspect any individual vector in brs, e.g.:
brs[10] # obtain the BR induced by Wyckoff position 8a with irrep A14-irrep BandRep{3} (spinless):
(8a|A): [Γ₁+Γ₂, X₁+X₂, L₁L₂, W₁W₂] (2 bands)By default, bandreps treats spinless systems; band representations of spinful systems are obtained with the keyword argument spinful = Val(true) (see Double groups & spinful irreps). The presence or absence of time-reversal symmetry can be controlled with the keyword arguments timereversal (default, true). By default, only maximal k-points are included in the projection onto little group irreps; additional k-points (e.g., high-symmetry lines and planes) can be obtained by setting the keyword argument allpaths = true (default, false).
A set of BRs can be used as the basis for several analyses. For instance, we can use the BRs to compute the symmetry indicator group, summarizing the distinct topological classes identifiable from symmetry. Crystalline.jl implements indicator_group and indicator_group_as_string, which uses the Smith normal form's elementary factors to this end:
indicator_group_as_string(brs)"Z₁"Which demonstrates that the symmetry indicator group of spinless particles with time-reversal symmetry in space group 219 is trivial.
indicator_group
indicator_group_as_stringTopological analysis
A BR basis can also be used to analyze SymmetryVectors, including their topology and whether they fulfil compatibility relations.
iscompatible
calc_topology
symmetry_indicatorsAssociated bases
The SymmetryBases.jl package provides additional tools to analyze fragile topology and to compute associated Hilbert bases.
API
Crystalline.bandreps — Function
bandreps(
sgnum::Integer,
::Val{D}=Val(3);
spinful::Union{Bool, Val{true}, Val{false}}=Val(false),
timereversal::Bool=true,
allpaths::Bool=false,
explicitly_real::Bool=timereversal
) --> Collection{BandRep{D}}
bandreps( # type-unstable convenience accessor
sgnum::Integer,
D::Integer;
kws...
) --> Collection{BandRep{D}}Compute the band representations of space group sgnum in dimension D.
If spinful is Val(true) (or true), the spinful band representations are computed instead, induced from the double-valued site symmetry irreps (see siteirreps) and subduced onto the double-valued little group irreps (currently available in 3D only). As for D, the Val spelling keeps the return type inferrable and the Bool spelling does not.
Keyword arguments
timereversal(default,true): whether the irreps used to induce the band representations are assumed to be time-reversal invariant (i.e., are coreps, seerealify).allpaths(default,false): whether the band representations are projected to all distinct k-points returned bylgirreps(allpaths = false), including high-symmetry k-lines and -plane, or only to the maximal k-points (allpaths = true), i.e., just to high-symmetry points.explicitly_real(default,timereversal): whether, iftimereversal = true, to ensure that the site symmetry irreps accompanying the band representations are chosen in the canonical form associated with time reversal (seephysical_realify), i.e., explicitly real for spinless irreps andJ*conj(D)*J' = Dfor spinful ones. This can be helpful for subsequent analysis involving the action of time-reversal symmetry.include_nonmaximal(default,false): whether to include band representations induced from site symmetry irreps of non-maximal Wyckoff positions. Passing astruewill include band representations induced from all Wyckoff positions, regardless of maximality.
Notes
All band representations associated with maximal Wyckoff positions are returned, irregardless of whether they are elementary (i.e., no regard is made to whether the band representation is "composite"). As such, the returned band representations generally are a superset of the set of elementary band representations (and so contain all elementary band representations).
Implementation
The implementation is based on Cano, Bradlyn, Wang, Elcoro, et al., Phys. Rev. B 97, 035139 (2018), Sections II.C-D.
Crystalline.indicator_group — Function
indicator_group(F::Smith) -> Any
Return the symmetry indicator group $X^{\text{BS}}$ associated with an input set of band representations brs (or Smith decomposition thereof, F), i.e., return the the nontrivial (i.e., ≠ {0,1}) elementary factors of the Smith normal form of the band representation matrix. The return value is a Vector{Int} containing the nontrivial factors. If no nontrivial factors exists, the return value is an empty Vector{Int}.
See also indicator_group_as_string for a formatted string version.
Understanding
The symmetry indicator group answers the question "what direct product of $\mathbb{Z}_n$ groups is the the quotient group $X^{\text{BS}} = \{\text{BS}\}/\{\text{AI}\}$ isomorphic to?" (see e.g., Po, Watanabe, & Vishwanath, Nature Commun. 8, 50 (2017) for more information).
Example
julia> brs = bandreps(2, Val(3));
julia> indicator_group(brs)
4-element Vector{Int64}:
2
2
2
4Crystalline.indicator_group_as_string — Function
indicator_group_as_string(
nontriv_Λ::AbstractVector{<:Integer}
) -> String
Return the symmetry indicator group $X^{\text{BS}}$ as a formatted string (i.e., as "Zᵢ×Zⱼ×…"). See also indicator_group for a vector representation.
Example
julia> brs = bandreps(2, Val(3));
julia> indicator_group_as_string(brs)
"Z₂×Z₂×Z₂×Z₄"Crystalline.basisdim — Function
basisdim(brs::Collection{<:BandRep}) --> Int
basisdim(B::AbstractMatrix{<:Integer}) --> Int
basisdim(F::Smith) --> IntReturn the dimension of the (linearly independent parts) of a band representation basis. This is $d^{\text{bs}} = d^{\text{ai}}$ in the notation of Po, Watanabe, & Vishwanath, Nature Commun. 8, 50 (2017), or equivalently, the rank of stack(brs) over the ring of integers. This is the number of linearly independent basis vectors that span the expansions of a band structure viewed as symmetry data.
Crystalline.smith_column_bases — Function
smith_column_bases(brs::Collection{<:BandRep}) --> @NamedTuple{S̃, Λ, S̃⁻¹}
smith_column_bases(B::AbstractMatrix{<:Integer}) --> @NamedTuple{S̃, Λ, S̃⁻¹}
smith_column_bases(F::Smith) --> @NamedTuple{S̃, Λ, S̃⁻¹}Return the parts of the Smith normal decomposition of a set of band representations brs (or of its matrix B, or of a Smith decomposition F thereof) that pertain to the column space of the band representation matrix, i.e. the parts associated with the $d^{\text{bs}} =$ basisdim(brs) nonzero elementary factors of $\boldsymbol{\Lambda}$:
S̃: the first $d^{\text{bs}}$ columns of $\mathbf{S}$; an integer-coefficient basis for all gapped band structures {BS}.Λ: the first $d^{\text{bs}}$ elements of $\boldsymbol{\Lambda}$, i.e. its nonzero elementary factors $\lambda_1, \ldots, \lambda_{d^{\text{bs}}}$.S̃⁻¹: the first $d^{\text{bs}}$ rows of $\mathbf{S}^{-1}$; these take a symmetry vectornto its coefficients inS̃, i.e.S̃⁻¹*n.
Note that S̃⁻¹ is a slice of $\mathbf{S}^{-1}$, not the inverse of the (generally nonsquare) S̃; the two nevertheless satisfy S̃⁻¹*S̃ == I. All three returned quantities are views into F, so nothing is allocated.
A basis for the atomic insulators {AI} — the bands induced by localized orbitals at the Wyckoff positions — is S̃*Diagonal(Λ). A symmetry vector that can be expanded on that basis with positive integer coefficients is a trivial insulator (i.e., deformable to an atomic limit); one that cannot is topological, either fragilely (some negative coefficients) or strongly (fractional coefficients). calc_topology distinguishes the strong case from Λ and S̃⁻¹ alone.
Implementation
For an n×m integer matrix $\mathbf{B}$, the Smith normal form gives integer matrices $\mathbf{S}$, $\mathrm{diagm}(\boldsymbol{\Lambda})$ and $\mathbf{T}$ (of size n×n, n×m and m×m, respectively) with $\mathbf{B} = \mathbf{S}\mathrm{diagm}(\boldsymbol{\Lambda})\mathbf{T}$, where $\boldsymbol{\Lambda} = [\lambda_1, \ldots, \lambda_r, 0, \ldots, 0]$ with $\lambda_{j+1}$ divisible by $\lambda_j$ and $r = d^{\text{bs}} \leq \min(n,m)$; $\mathbf{S}$ and $\mathbf{T}$ have integer-valued inverses.
Applying S̃⁻¹ to integer symmetry data $\mathbf{n}$ gives the integer factors $q_i C_i$ ($C_i = \lambda_i$ here) of Tang, Po, Vishwanath, & Wan, Nature Physics 15, 470 (2019).
- 1Note that the band representations returned by
bandrepsneed not be elementary; i.e., a band representation returned bybandrepsmay be "composite" in the "exceptional" sense defined in the original topological quantum chemistry papers (e.g., https://arxiv.org/pdf/1709.01935). The inclusion of a non-elementary band representation into a set of elementary band representations makes no difference for the purposes of analyzing band topology or band connectivity using this set, however. I.e., the set of band representations returned bybandrepsis usually equivalent to the set tabulated by the Bilbao Crystallographic Server, and is otherwise a strict superset.