Skip to content

A python package based on scipy.sparse to perform exact diagonalization on finite quantum spin systems.

License

Notifications You must be signed in to change notification settings

EliaStocco/QuantumSparse

Repository files navigation

QuantumSparse

A python package based on scipy.sparse to perform exact diagonalization on finite quantum spin systems.

Installation

You can install this package in editable mode using

pyenv virtualenv 3.9 qs
pyenv activate qs 
# pyenv local qs
pip install -e .
# if you want pytest
# python -m pip install -e .[dev]

Example

How to efficiently diagonalize a Heisenberg Hamiltonian:

import numpy as np
from quantumsparse.spin import SpinOperators, Heisenberg
from quantumsparse.spin.shift import shift

# Spin value and number of sites
S = 0.5
N = 4

# Create spin operators for N spin-S sites
spin_values = np.full(N, S)
SpinOp = SpinOperators(spin_values)
Sx, Sy, Sz = SpinOp.Sx, SpinOp.Sy, SpinOp.Sz

# Build the Heisenberg Hamiltonian
H = Heisenberg(Sx, Sy, Sz)

# Diagonalize without symmetry
E_no_sym, _ = H.diagonalize()
print("Ground state energy (no symmetry):", E_no_sym[0].real)

# Apply shift symmetry
D = shift(SpinOp)
D.diagonalize()

# Diagonalize using symmetry
E_sym, _ = H.diagonalize_with_symmetry(S=[D])
print("Ground state energy (with shift symmetry):", E_sym[0].real)

H.save("H.pickle")
print("Saved Hamiltonian to file 'H.pickle'")

About

A python package based on scipy.sparse to perform exact diagonalization on finite quantum spin systems.

Resources

License

Stars

Watchers

Forks

Packages

No packages published