HopTB.Group
HopTB.Group.Symmetry
— TypeSymmetry(rotation_matrix, translation, spin_rep;
isantilinear::Bool=false, isdouble::Bool=false)
Type representing symmetries. The symmetry is a magnetic space group symmetry, i.e., symmetry containing rotation, reflection, inversion, translation and time reversal. The defining feature for magnetic space group symmetry is its represention in real space (rotation_matrix
and translation
, where translation operation follows the the action of rotation_matrix
) and its representation in spinors. The symmetry may belong to a double group (isdouble=true
) or not (isdouble=false
). If the symmetry does not belong to a double group, it is only relevant for spinless fermions and the spin_rep
information is not used at all. The symmetry may be antilinear denoted by the keyword isantilinear
.
HopTB.Group.inverse
— Functioninverse(s::Symmetry)
Get inverse symmetry operation for s
.
HopTB.Group.gettranslation
— Functiongettranslation(v::Vector{<:Real}; isdouble::Bool=false)
get translation along v
.
HopTB.Group.getrotation
— Functiongetrotation(θ::Real, axis::Vector{<:Real}; isdouble::Bool=false)
get θ
rotation around the axis
.
HopTB.Group.getTRS
— FunctiongetTRS(; isdouble::Bool=false)
get time reversal symmetry.
HopTB.Group.getmirror
— Functiongetmirror(axis::Vector{<:Real}; isdouble::Bool=false) -> Symmetry
get mirror symmetry along `axis`.
HopTB.Group.decompose_to_primitive
— Functiondecompose_to_primitive(s::Symmetry)
Every magnetic space group symmetry can be decomposed into a canonical representation, i.e., ĒtICT, where T is time reversal, C is rotation, I is inversion, t is translation and Ē is 2π rotation. This function decomposes the symmetry to these atomic actions. This function always treats the symmetry as a double group symmetry.
The returned named tuple are in the following format
(TRS::Bool, inversion::Bool, translation::Vector{Float64}, θ::Float64,
axis::Vector{Float64}, Ē::Bool)
HopTB.Group.generategroup
— Functiongenerategroup(symmetries::Vector{Symmetry}; maxiter=100)::Vector{Symmetry}
generate a group with generators symmetries
.
HopTB.Group.symmetrize
— Functionsymmetrize(tm::TBModel, g::Vector{Symmetry})
Symmetrize tm
by the symmetry group g
.
HopTB.Group.get_bloch_rep
— Functionget_bloch_rep(s::Symmetry, tm::TBModel, orbital_types::Vector{Vector{Int64}},
k::Vector{<:Real}; isspinful::Bool=false)