Antiferromagnetic Heisenberg Model on square lattice

Ground state energy

The following code can compute the ground state energy of the antiferromagnetic Heisenberg model on a square lattice.

using QuantumLattices
using ExactDiagonalization
using LinearAlgebra: eigen

# define the unitcell of the square lattice
unitcell = Lattice([0.0, 0.0]; name=:Square, vectors=[[1.0, 0.0], [0.0, 1.0]])

# define a finite 4×4 cluster of the square lattice with open boundary condition
lattice = Lattice(unitcell, (4, 4))

# define the Hilbert space (spin-1/2)
hilbert = Hilbert(Spin{1//2}(), length(lattice))

# define the quantum number of the sub-Hilbert space in which the computation is to be carried out
# for the ground state, Sz=0
quantumnumber = 𝕊ᶻ(0)

# define the antiferromagnetic Heisenberg term on the nearest neighbor
J = Heisenberg(:J, 1.0, 1)

# define the exact diagonalization algorithm for the antiferromagnetic Heisenberg model
ed = ED(lattice, hilbert, J, quantumnumber)

# find the ground state and its energy
eigensystem = eigen(ed; nev=1)

# Ground state energy should be -9.189207065192935
print(eigensystem.values)
[ Info: ED prepare complete.
[-9.189207065192946]