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 ...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 a HilbertSpace
  3. Define HilbertSpaceRepresentation and construct basis set. You can use quantum numbers to select only the basis states within a given sector or sectors.
  4. 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

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