Elementary band representations
Crystalline.jl provides an interface to access the elementary band representations (EBRs) hosted by the Bilbao Crystallographic Server's BANDREP program via bandreps
. Crystalline also provides calc_bandreps
, which computes the band representations across all maximal[1] Wyckoff positions directly. Usually, calc_bandreps
is preferable, as it returns more contextual information and aligns more simply with the existing conventions of Crystalline, from which it derives.
As an example, we can obtain the all inequivalent EBRs in space group 219 (F-43c) with:
using Crystalline
brs = calc_bandreps(219, Val(3)) # space group 219 (dimension 3)
12-element Collection{NewBandRep{3}} for ⋕219 (F-43c) over 14 irreps (spin-1 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
──────┼──────────────────────────────────────────────────────
W₁W₂ │ 2 2 2 1 1 4 · · 2 1 2 1
W₃W₄ │ 1 1 4 2 2 2 1 2 1 · · 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
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
Γ₁ │ 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
──────┼──────────────────────────────────────────────────────
μ │ 6 6 12 6 6 12 2 4 6 2 4 6
──────┴──────────────────────────────────────────────────────
which returns a Collection{NewBandRep{3}}
, whose iterants are NewBandRep{3}
s. We can inspect any individual vector in brs
, e.g.:
brs[10] # obtain the EBR induced by Wyckoff position 8a with irrep A
14-irrep NewBandRep{3}:
(8a|A): [W₁W₂, L₁L₂, X₁+X₂, Γ₁+Γ₂] (2 bands)
Currently, calc_bandreps
can only treat spinless systems; if spinful systems are required, use bandreps
. 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 EBRs can be used as the basis for several analyses. For instance, we can use the EBRs 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_string
Topological analysis
An EBR basis can also be used to analyze SymmetryVector
s, including their topology and whether they fulfil compatibility relations.
iscompatible
calc_topology
symmetry_indicators
Associated bases
The SymmetryBases.jl
package provides additional tools to analyze fragile topology and to compute associated Hilbert bases.
API
Crystalline.calc_bandreps
— Functioncalc_bandreps(sgnum::Integer, Dᵛ::Val{D}=Val(3);
timereversal::Bool=true,
allpaths::Bool=false,
explicitly_real::Bool=timereversal)
Compute the band representations of space group sgnum
in dimension D
, returning a BandRepSet
.
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 to be explicitly real (or "physically" real; seephysical_realify
). This is helpful for subsequent analysis of the action of time-reversal symmetry.
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.bandreps
— Functionbandreps(sgnum::Integer, D::Integer=3;
allpaths::Bool=false, spinful::Bool=false, timereversal::Bool=true)
Returns the elementary band representations (EBRs) as a BandRepSet
for space group sgnum
and dimension D
.
Keyword arguments
allpaths
: include a minimal sufficient set (false
, default) or all (true
) k-vectors.spinful
: single- (false
, default) or double-valued (true
) irreps, as appropriate for spinless and spinful particles, respectively. Only available forD=3
.timereversal
: assume presence (true
, default) or absence (false
) of time-reversal symmetry.
References
3D EBRs are obtained from the Bilbao Crystallographic Server's BANDREP program; please reference the original research papers noted there if used in published work.
Crystalline.indicator_group
— Functionindicator_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 = calc_bandreps(2, Val(3));
julia> indicator_group(brs)
4-element Vector{Int64}:
2
2
2
4
Crystalline.indicator_group_as_string
— Functionindicator_group_as_string(
nontriv_Λ::AbstractVector{<:Integer}
)
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 = calc_bandreps(2, Val(3));
julia> indicator_group_as_string(brs)
"Z₂×Z₂×Z₂×Z₄"
Crystalline.basisdim
— Functionbasisdim(brs::BandRepSet) --> Int
Return the dimension of the (linearly independent parts) of a band representation set. 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.
- 1Note that the band representations returned by
calc_bandreps
need not be elementary; i.e., a band representation returned bycalc_bandreps
may 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 bycalc_bandreps
is usually equivalent to the set returned bybandreps
(referencing the Bilbao Crystallographic Server tables), and is otherwise a strict superset. For the sake of simplicity, we will colloquially refer to the band representations returned bycalc_bandreps
as EBRs, even though the set may technically contain non-elementary band representations.