Welcome to LatticeTools.jl
Overview
LatticeTools.jl is a Julia package for defining lattices and performing space symmetry analysis on them, useful for creating and solving quantum Hamiltonians.
Features
- Unit cell definition: Supports definition of unit cells with arbitrary shape in arbitrary dimension and with basis sites. Orbitals within a site is not yet implemented.
- Lattice definition: Supports definition of a lattice with a unit cell with periodic boundary condition.
- Momentum space: Provides methods for transformations between real space and momentum space.
- Symmetry analysis: Supports group representation theoretical analysis on translation and point symmetry. Currently, only symmorphic space groups are supported.
Installation
LatticeTools
is currently not included in Julia's default package registry. To install, add the package registry KyugminLeeRegistry
and then install the package:
(@v1.5) pkg> registry add https://github.com/kyungminlee/KyungminLeeRegistry.git
(@v1.5) pkg> add LatticeTools
Quick Example
using LatticeTools
unitcell = makeunitcell([1.0 0.0; 0.0 1.0]; SiteType=String)
addsite!(unitcell, "Ox", FractCoord([0,0], [0.5, 0.0]))
addsite!(unitcell, "Oy", FractCoord([0,0], [0.0, 0.5]))
lattice = makelattice(unitcell, [4 0; 0 4]);
tsym = TranslationSymmetry(lattice);
psym = project(PointSymmetryDatabase.get(13), [1 0 0; 0 1 0]);
println("Irreps and Little Groups")
println("------------------------")
for tsic in get_irrep_components(tsym)
idx = tsic.irrep_index
kf = tsym.fractional_momenta[idx]
k = lattice.unitcell.reducedreciprocallatticevectors * kf
psym_little = little_symmetry(tsym, idx, psym)
println("- irrep_index: $(idx)")
println(" momentum: $(k)")
println(" little_point_group: { name: \"$(psym_little.hermann_mauguin)\", order: $(group_order(psym_little)) }")
println(" is_psym_compatible: $(iscompatible(tsym, idx, psym))")
println(" is_psym_little_compatible: $(iscompatible(tsym, idx, psym_little))")
end
Irreps and Little Groups ------------------------ - irrep_index: 1 momentum: [0.0, 0.0] little_point_group: { name: "4mm", order: 8 } is_psym_compatible: true is_psym_little_compatible: true - irrep_index: 2 momentum: [0.25, 0.0] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 3 momentum: [0.5, 0.0] little_point_group: { name: "mm2", order: 4 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 4 momentum: [0.75, 0.0] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 5 momentum: [0.0, 0.25] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 6 momentum: [0.25, 0.25] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 7 momentum: [0.5, 0.25] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 8 momentum: [0.75, 0.25] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 9 momentum: [0.0, 0.5] little_point_group: { name: "mm2", order: 4 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 10 momentum: [0.25, 0.5] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 11 momentum: [0.5, 0.5] little_point_group: { name: "4mm", order: 8 } is_psym_compatible: true is_psym_little_compatible: true - irrep_index: 12 momentum: [0.75, 0.5] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 13 momentum: [0.0, 0.75] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 14 momentum: [0.25, 0.75] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 15 momentum: [0.5, 0.75] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true - irrep_index: 16 momentum: [0.75, 0.75] little_point_group: { name: "m", order: 2 } is_psym_compatible: false is_psym_little_compatible: true