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 → ReducedOperatorRepresentationThe HilbertSpace, HilbertSpaceSector and Operator implement the abstract Hilbert spaces and operators, while the ...Representations 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
States, andSites - Define the
HilbertSpace - If there are quantum numbers, use them to define
HilbertSpaceSector - Define
HilbertSpaceRepresentationand 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
Operators - Create
OperatorRepresentationorReducedOperatorRepresentationusingHilbertSpaceRepresentationorReducedHilbertSpaceRepresentation - 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.gitSince, 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.gitAfter this, you can
]add ExactDiagonalization