Symmetry Embedding
SitePermutation
LatticeTools.SitePermutation
— TypeSitePermutation
Represents a permutation of sites as a symmetry operation of a lattice.
Fields
permutation::Permutation
LatticeTools.embed
— Methodembed(lattice, translation_operation)
Embed the simplest version of integer translation (no mapping between sites etc.)
LatticeTools.embed
— Methodembed(lattice, point_operation)
Embed the simplest version of point operation. (no local unitary operation)
LatticeTools.embed
— Methodembed(lattice, sop::SpaceOperation{<:Integer, <:Integer})
LatticeTools.isidentity
— Methodisidentity(perm::SitePermutation)
Test whether perm
is an identity.
SymmetryEmbedding
LatticeTools.SymmetryEmbedding
— TypeSymmetryEmbedding{SymmetryType<:AbstractSymmetry}
Fields
lattice::Lattice
symmetry::SymmetryType
elements::Vector{SitePermutation}
LatticeTools.elements
— Methodelements(symbed::SymmetryEmbedding)
Get elements of the symmetry embedding
LatticeTools.element
— Methodelement(symbed::SymmetryEmbedding, g...)
Get the g
th element of the symmetry embedding.
LatticeTools.symmetry
— Methodsymmetry(symbed::SymmetryEmbedding)
Return the underlying symmetry of the symmetry embedding
LatticeTools.generator_elements
— Methodgenerator_elements(symbed::SymmetryEmbedding)
Get the generators of the symmetry embedding, based on the generators of the underlying symmetry. The embedding is allowed to be one-to-one, in which case the return value may contain duplicates.
LatticeTools.group_order
— Methodgroup_order(::SymmetryEmbedding, args...)
Calls group_order
for the underlying symmetry. See group_order(::TranslationSymmetry)
, group_order(::PointSymmetry)
.
LatticeTools.group_multiplication_table
— Methodgroup_multiplication_table(::SymmetryEmbedding, args...)
Calls group_multiplication_table
for the underlying symmetry. See group_multiplication_table(::TranslationSymmetry)
, group_multiplication_table(::PointSymmetry)
.
LatticeTools.generator_indices
— Methodgenerator_indices(::SymmetryEmbedding, args...)
Calls generator_indices
for the underlying symmetry. See generator_indices(::TranslationSymmetry)
, generator_indices(::PointSymmetry)
.
LatticeTools.element_names
— Methodelement_names(::SymmetryEmbedding, args...)
Calls element_names
for the underlying symmetry. See element_names(::TranslationSymmetry)
, element_names(::PointSymmetry)
.
LatticeTools.element_name
— Methodelement_name(::SymmetryEmbedding, args...)
Calls element_name
for the underlying symmetry. See element_name(::TranslationSymmetry)
, element_name(::PointSymmetry)
.
LatticeTools.character_table
— Methodcharacter_table(::SymmetryEmbedding, args...)
Calls character_table
for the underlying symmetry. See character_table(::TranslationSymmetry)
, character_table(::PointSymmetry)
.
LatticeTools.irreps
— Methodirreps(::SymmetryEmbedding, args...)
Calls irreps
for the underlying symmetry. See irreps(::TranslationSymmetry)
, irreps(::PointSymmetry)
.
LatticeTools.irrep
— Methodirrep(::SymmetryEmbedding, args...)
Calls irrep
for the underlying symmetry. See irrep(::TranslationSymmetry)
, irrep(::PointSymmetry)
.
LatticeTools.irrep_dimension
— Methodirrep_dimension(::SymmetryEmbedding, args...)
Calls irrep_dimension
for the underlying symmetry. See irrep_dimension(::TranslationSymmetry)
, irrep_dimension(::PointSymmetry)
.
LatticeTools.num_irreps
— Methodnum_irreps(::SymmetryEmbedding, args...)
Calls num_irreps
for the underlying symmetry. See num_irreps(::TranslationSymmetry)
, num_irreps(::PointSymmetry)
.
LatticeTools.numirreps
— Methodnumirreps(::SymmetryEmbedding, args...)
Calls numirreps
for the underlying symmetry. See numirreps(::TranslationSymmetry)
, numirreps(::PointSymmetry)
.
LatticeTools.irrepcount
— Methodirrepcount(::SymmetryEmbedding, args...)
Calls irrepcount
for the underlying symmetry. See irrepcount(::TranslationSymmetry)
, irrepcount(::PointSymmetry)
.
LatticeTools.fractional_momentum
— Methodfractional_momentum(symbed::SymmetryEmbedding{TranslationSymmetry}, args...)
Return fractional momentum(s) of the translation symmetry embedding.
fractional_momentum(sym, g)
Return the g
th fractional momentum of the normal (translation) symmetry.
Arguments
sym::SymmorphicSymmetry{<:TranslationSymmetry, S2, E}
LatticeTools.iscompatible
— Methodiscompatible(tsymbed, psymbed)
Check whether the point symmetry embedding psymbed
is compatible with the translation symmetry embedding tsymbed
, i.e. whether they have the same "lattice".
LatticeTools.iscompatible
— Methodiscompatible(tsymbed, tsym_irrep_index, psymbed)
Check whether the point symmetry embedding psymbed
is compatible with the translation symmetry irrep defined by tsym_irrep_index
and symmetry(tsymbed)
. In other words, the little group elements
LatticeTools.little_group_elements
— Methodlittle_group_elements(tsymbed, psymbed)
LatticeTools.little_group_elements
— Methodlittle_group_elements(tsymbed, tsym_irrep_index, psymbed)
LatticeTools.little_symmetry
— Methodlittle_symmetry(tsymbed, psymbed)
LatticeTools.little_symmetry
— Methodlittle_symmetry(tsymbed, tsym_irrep_index, psymbed)
LatticeTools.symmetry_name
— Methodsymmetry_name(arg::SymmetryEmbedding)
Return the name of the symmetry embedding.
Embedding a Symmetry onto a Lattice
LatticeTools.embed
— Methodembed(lattice::Lattice, tsym::TranslationSymmetry)
Embed translation symmetry tsym
to lattice.
LatticeTools.embed
— Methodembed(lattice::Lattice, psym::PointSymmetry)
Embed point symmetry psym
to lattice.
LatticeTools.translation_symmetry_embedding
— Methodtranslation_symmetry_embedding(lattice::Lattice)
findsitemap
LatticeTools.findsitemap
— Functionfindsitemap(unitcell, translation_operation)
Find which site gets mapped to which site with what lattice displacement. Return a vector of tuples (j, Rj)
at index i
, representing that the site i
gets mapped to site j
with lattice displacement Rj
.
Since periodic boundary condition is always assumed, the return value always exists.
This function is used to find the mapping between sites under translation symmetry in a given lattice. The overall transformation will be a combiation of (1) the result here, and (2) Bravais lattice transformation. Since all the integer translations will be taken care of by the Bravais lattice transformation, Rj
here is all zero vectors.
findsitemap(unitcell, translation_symmetry)
Find the sitemap for every element of the translation symmetry. Return [findsitemap(unitcell, m) for m in elements(translation_symmetry)]
.
findsitemap(unitcell, point_operation)
Find which site gets mapped to which site with what lattice displacement. Return a vector of tuples (j, Rj)
at index i
, representing that the site i
gets mapped to site j
with lattice displacement Rj
. If the unit cell is not compatible with the point operation, return nothing
.
findsitemap(unitcell, point_symmetry)
Find the sitemap for every element of the point symmetry. Return nothing
if the unit cell is incompatible with any element of the point symmetry.