def GetPairHam_HaldanePhase(J=1, Uzz=0, Bx=0, Bz=0, R=0, dim_spin=3): ''' :param J: coupling constant. :param Uzz: spin suppression constant along z direction. :param Bx: Zeeman field along x. :param Bz: Zeeman field along z. :param R: inversion symmetry breaking term constant. :param dim_spin: Hilbert space dimension of single spin. :return: single two-site interaction term as a 4-order tensor. ''' Sz, Sp, Sm, Sx, Id = GenSpinOpr(which_opr='real', dim_spin=dim_spin) Sz2 = np.dot(Sz, Sz) R_term = np.kron(np.dot(Sz, Sx), Sx) - np.kron(Sx, np.dot(Sz, Sx)) # H = J * \sum{ S_i * S_j } + Uzz * \sum{ (S^z_i)^2 } + Bx * \sum{ S^x_i } H_pair = np.kron(Sz, Sz) + 0.5 * J * (np.kron(Sp, Sm) + np.kron(Sm, Sp)) \ + Uzz * np.kron(Sz2, Id) + Bx * np.kron(Sx, Id) + Bz * np.kron(Sz, Id) + R * R_term # 0 # / \ # / \ # H H # \ / # \ / # 1 H_pair = np.reshape(H_pair, [dim_spin, dim_spin, dim_spin, dim_spin]) # 0 1 # | | # H-----H # | | # 2 3 return H_pair
def GetSiteHmpo_Heisenberg(J, h, dim_spin=2): ''' :param J: Heisenberg coupling constant. :param h: magnetic field strength. :param dim_spin: Hilbert space dimension of single spin. :return: single site matrix product operator of Heisenberg model, which is a 4-order tensor. (5,5,2,2). ''' # generate spin operator Sp, Sm, Sx, Sy, Sz, Id, S0 = GenSpinOpr(dim_spin=dim_spin) # H = \sum_<ij> J * kronecker(S_i, S_j) + \sum_i (-h) * S^z_i mpo_H_single_site_Heisenberg = np.array( [[Id, S0, S0, S0, S0], [Sp, S0, S0, S0, S0], [Sm, S0, S0, S0, S0], [Sz, S0, S0, S0, S0], [-h * Sz, J / 2 * Sm, J / 2 * Sp, J * Sz, Id]]) return mpo_H_single_site_Heisenberg
def GetSiteHmpo_TFI(J, h, dim_spin=2): ''' :param J: Ising coupling constant. :param h: transverse field strength. :param dim_spin: Hilbert space dimension of single spin. :return: single site matrix product operator of the transverse-field Ising (TFI) model. ''' # generate spin operator Sp, Sm, Sx, Sy, Sz, Id, S0 = GenSpinOpr(dim_spin=dim_spin) sigma_z = 2 * Sz sigma_x = 2 * Sx # H = (-J) * \sum_<i,i+1>( \sigma^z_i * \sigma^z_j + h * \sigma^x_i) mpo_H_single_site_TFI = np.array([[Id, S0, S0], [sigma_z, S0, S0], [-J * h * sigma_x, -J * sigma_z, Id]]) return mpo_H_single_site_TFI
def GetSiteHmpo_HaldanePhase(J, Uzz, Bx=0, dim_spin=3): ''' :param J: Heisenberg coupling constant. :params Uzz: spin suppression along z direction. :param Bx: transverse field strength. :param dim_spin: Hilbert space dimension of single spin. :return: single site matrix product operator of generalized spin-1 Heisenberg model, as a 4-order tensor. ''' # generate spin operator Sp, Sm, Sx, Sy, Sz, Id, S0 = GenSpinOpr(dim_spin=dim_spin) # H = J * \sum{ S_i * S_j } + Uzz * \sum{ (S^z_i)^2 } + Bx * \sum{ S^x_i } Sz2 = np.dot(Sz, Sz) mpo_H_single_site_HaldanePhase = np.array( [[Id, S0, S0, S0, S0], [Sp, S0, S0, S0, S0], [Sm, S0, S0, S0, S0], [Sz, S0, S0, S0, S0], [Bx * Sx + Uzz * Sz2, J / 2 * Sm, J / 2 * Sp, J * Sz, Id]]) return mpo_H_single_site_HaldanePhase
def GetPairHam_Heisenberg(J, dim_spin): ''' :param J: coupling constant. :param dim_spin: Hilbert space dimension of single spin. :return: single two-site interaction term as a 4-order tensor J * S_i · S_j. ''' Sz, Sp, Sm, Sx, Id = GenSpinOpr(which_opr='real', dim_spin=dim_spin) # H = J * \sum{ S_i * S_j } H_pair = np.kron(Sz, Sz) + 0.5 * J * (np.kron(Sp, Sm) + np.kron(Sm, Sp)) # 0 # / \ # / \ # H H # \ / # \ / # 1 H_pair = np.reshape(H_pair, [dim_spin, dim_spin, dim_spin, dim_spin]) # 0 1 # | | # H-----H # | | # 2 3 return H_pair