Symmetry Embedding
SitePermutation
LatticeTools.SitePermutation — TypeSitePermutationRepresents 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::Latticesymmetry::SymmetryTypeelements::Vector{SitePermutation}
LatticeTools.elements — Methodelements(symbed::SymmetryEmbedding)Get elements of the symmetry embedding
LatticeTools.element — Methodelement(symbed::SymmetryEmbedding, g...)Get the gth 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 gth 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.