Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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