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 ...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:

  1. Define States, and Sites
  2. Define the HilbertSpace
  3. If there are quantum numbers, use them to define HilbertSpaceSector
  4. Define HilbertSpaceRepresentation and construct basis set
  5. 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:

  1. Define Operators
  2. Create OperatorRepresentation or ReducedOperatorRepresentation using HilbertSpaceRepresentation or ReducedHilbertSpaceRepresentation
  3. 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