SymBasis.jl is a Julia package for generating bases that conserve symmetries in systems with a discrete number of degrees of freedom, with a focus on quantum many-body applications.
Key features
- Simple API to generate bases with one or multiple symmetries
- Custom symmetries (and predefined ones)
- Supports any discrete DoF: spins, fermions, bosons, or custom objects
- Custom base positional numbering for basis states
Predefined symmetries
- Total magnetization (spins)
- Spatial reflection
- Translational symmetry
(Planned: spin inversion, particle number conservation, etc.)
Installation (Julia ≥ 1.11)
pkg> add SymBasis
Quick example (spin-1/2, N=4, Sz=0)
using SymBasis.DoFObjects
using SymBasis.SymGroups
using SymBasis.Bases
N = 4
Sz = 0//1
dofo = dof_object(:Spin, 1 // 2)
sg = sym(:TotalMagnetization, dofo, Sz, N)
basis(dofo, N, sg)
Project status: active development; please benchmark for your use case. Issues/feedback:
https://github.com/cevenkadir/SymBasis.jl/issues/new