Majorana Fermions: SYK Model

In this example, we show how to define the Sachdev-Ye-Kitaev model with Majorana fermions.

The Hamiltonian is given by

\[H = -\frac{1}{4!}\sum_{i,j,k,l=0}^{L-1} J_{ijkl} c^x_{i}c^x_{j}c^x_{k}c^x_{l},\]

where \(J_{ijkl}\) is a random all-to-all interaction strength which is normally distributed with zero mean and unit variance, and \(c_j^x\) is a Majorana fermion satisfying \(c_j^x=(c_j^x)^\dagger\), \((c_j^x)^2=1\), and \(\{c_i^x,c_j^x\}=0\) for \(i\neq j\).

The script below uses the spinless_fermion_basis_general class to define the above Hamiltonian. Note that, the same Hamiltonian can equivalently be built using the alternative Majorana operator \(c^y\).

Script

download script

 1#
 2import sys, os
 3
 4os.environ["KMP_DUPLICATE_LIB_OK"] = (
 5    "True"  # uncomment this line if omp error occurs on OSX for python 3
 6)
 7os.environ["OMP_NUM_THREADS"] = "1"  # set number of OpenMP threads to run in parallel
 8os.environ["MKL_NUM_THREADS"] = "1"  # set number of MKL threads to run in parallel
 9#
10
11######################################################################
12#                            example 25                              #
13# This example shows how to define the Sachdev-Ye-Kitaev Hamiltonian #
14######################################################################
15from quspin.operators import hamiltonian  # Hamiltonians and operators
16from quspin.basis import spinless_fermion_basis_general  # Hilbert space fermion basis
17import numpy as np
18from scipy.special import factorial
19
20#
21# set seed of RNG
22seed = 0
23np.random.seed(seed)
24#
25#
26##### model parameters #####
27#
28L = 6  # number of lattice sites
29#
30J = np.random.normal(
31    size=(L, L, L, L)
32)  # random interaction J_{ijkl} of zero mean and unit variance
33#
34##### create Hamiltonian #####
35#
36# site-coupling list
37SYK_int = [
38    [-1.0 / factorial(4.0) * J[i, j, k, l], i, j, k, l]
39    for i in range(L)
40    for j in range(L)
41    for k in range(L)
42    for l in range(L)
43]
44# static list
45static = [
46    ["xxxx", SYK_int],
47]
48# static=[['yyyy',SYK_int],] # alternative definition, equivalent spectrum
49#
50##### create basis #####
51#
52basis = spinless_fermion_basis_general(
53    L,
54)
55#
56##### create Hamiltonian #####
57#
58H_SYK = hamiltonian(
59    static, [], basis=basis, dtype=np.float64
60)  # caution: matrix is NOT sparse (!)
61#
62# compute entire spectrum
63E = H_SYK.eigvalsh()
64#
65# print the lowest 4 eigenvalues
66print(E[:4])