ExactDiagonalization
Overview
ExactDiagonalization.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 → HilbertSpaceSector 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 the
HilbertSpace
- If there are quantum numbers, use them to define
HilbertSpaceSector
- Define
HilbertSpaceRepresentation
and construct basis set - 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
ExactDiagonalization.jl
is not yet registered on the Julia package registry. You can install it using its URL as
]add https://github.com/kyungminlee/ExactDiagonalization.jl.git
Since, however, ExactDiagonalization.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 ExactDiagonalization