QuantumHamiltonian
Overview
QuantumHamiltonian.jl
is a tool for constructing quantum many-body Hamiltonians. It uses Abelian quantum numbers as well as translation symmetry to reduce dimensions of the Hilbert space and the corresponding matrix representation of the Hamiltonian.
A schematic for the structure of the package is the following:
State
↓
Site
↓
HilbertSpace Operator
↓ ↓
HilbertSpaceRepresentation → OperatorRepresentation
↓ ↓
SymmetryGroup → ReducedHilbertSpaceRepresentation → ReducedOperatorRepresentation
The HilbertSpace
, HilbertSpaceSector
and Operator
implement the abstract Hilbert spaces and operators, while the ...Representation
s implement the representations of the Hilbert spaces as 𝐂ⁿ (or 𝐑ⁿ), and of operators as n×n matrices.
Workflow
First you need to create a Hilbert space representation:
- Define
State
s, andSite
s - Define a
HilbertSpace
- Define
HilbertSpaceRepresentation
and construct basis set. You can use quantum numbers to select only the basis states within a given sector or sectors. - If there is space symmetry, translation or point or both, use that to define
ReducedHilbertSpaceRepresentation
And then you can create operator representation using the Hilbert space representation from above:
- Define
Operator
s - Create
OperatorRepresentation
orReducedOperatorRepresentation
usingHilbertSpaceRepresentation
orReducedHilbertSpaceRepresentation
- Depending on what is more efficient,
Installation
QuantumHamiltonian.jl
is not yet registered on the Julia package registry. You can install it using its URL as
]add https://github.com/kyungminlee/QuantumHamiltonian.jl.git
Since, however, QuantumHamiltonian.jl
depends on other packages including LatticeTools.jl
, it is convenient to add a custom registry. In Julia, type
]registry add https://github.com/kyungminlee/KyungminLeeRegistry.jl.git
After this, you can
]add QuantumHamiltonian