Exemplo n.º 1
0
 def symm_asymm(self, D):
     D = int(sqrt(D))
     return (
         (eye(D**2) + bd(eye(int(D *
                                 (D + 1) / 2)), -eye(int(D *
                                                         (D - 1) / 2)))) /
         2,
         (eye(D**2) - bd(eye(int(D *
                                 (D + 1) / 2)), -eye(int(D *
                                                         (D - 1) / 2)))) /
         2, bd(eye(int(D * (D + 1) / 2)), -eye(int(D * (D - 1) / 2))))
Exemplo n.º 2
0
def Hams2_eRe1e2_altzfs(J_r, J_pp, D, E, bvect, mu_B):

    """ Alternative Hamiltonian - tensor order changed and zfs acts only on PP """

    # swapped order from e1e2eR to eRe1e2
    # zfs acts only on pp

    # exchange
    H_ex_r = -2*J_r*(tensor(Sx,Sx,I)+tensor(Sy,Sy,I)+tensor(Sz,Sz,I))        # exchange e1 coupled to eR only
    H_ex_pp = -2*J_pp*(tensor(I,Sx,Sx)+tensor(I,Sy,Sy)+tensor(I,Sz,Sz))
    H_ex = H_ex_r + H_ex_pp

    # Zeeman
    g=2                                                                      # assume all spins same g value
    [Bx, By, Bz] = bvect
    H_Zee_pp = g*mu_B*(Bx*(tensor(I,Sx,I)+tensor(I,I,Sx))+By*(tensor(I,Sy,I)+tensor(I,I,Sy))+Bz*(tensor(I,Sz,I)+tensor(I,I,Sz)))
    H_Zee_r = g*mu_B*(Bx*tensor(Sx,I,I)+By*tensor(Sy,I,I)+Bz*tensor(Sz,I,I))
    H_Zee = H_Zee_pp + H_Zee_r

    # zfs?
    H_zfs = D*(tensor(Sz,Sz)-2.0/3.0*(tensor(I,I)))+E*(tensor(Sx,Sx)-tensor(Sy,Sy))
    H_zfs2 = tensor(I,H_zfs)

    # total
    H = H_ex + H_Zee + H_zfs2

    null4 = np.zeros((4,4))
    return Qobj(bd(H,null4))
Exemplo n.º 3
0
def Hams2_eRe1e2_altzfs_doubleJr(J_r, J_pp, D, E, bvect, mu_B):

    """ Alternative Hamiltonian with gxl exchange to both PP spins """

    # swapped order from e1e2eR to eRe1e2
    # zfs acts only on pp
    # exchange between radical and both spins within pair

    # exchange
    H_ex_r = -2*J_r*(tensor(Sx,Sx,I)+tensor(Sy,Sy,I)+tensor(Sz,Sz,I)+tensor(Sx,I,Sx)+tensor(Sy,I,Sy)+tensor(Sz,I,Sz))
    H_ex_pp = -2*J_pp*(tensor(I,Sx,Sx)+tensor(I,Sy,Sy)+tensor(I,Sz,Sz))
    H_ex = H_ex_r + H_ex_pp

    # Zeeman
    g=2                                                                      # assume all spins same g value
    [Bx, By, Bz] = bvect
    H_Zee_pp = g*mu_B*(Bx*(tensor(I,Sx,I)+tensor(I,I,Sx))+By*(tensor(I,Sy,I)+tensor(I,I,Sy))+Bz*(tensor(I,Sz,I)+tensor(I,I,Sz)))
    H_Zee_r = g*mu_B*(Bx*tensor(Sx,I,I)+By*tensor(Sy,I,I)+Bz*tensor(Sz,I,I))
    H_Zee = H_Zee_pp + H_Zee_r

    # zfs
    H_zfs = D*(tensor(Sz,Sz)-2.0/3.0*(tensor(I,I)))+E*(tensor(Sx,Sx)-tensor(Sy,Sy))
    H_zfs2 = tensor(I,H_zfs)

    # total
    H = H_ex + H_Zee + H_zfs2

    null4 = np.zeros((4,4))
    return Qobj(bd(H,null4))
Exemplo n.º 4
0
def Hams2(J_r, J_pp, D, E, bvect, mu_B):

    """ Original Hamiltonian - now think form of zfs and order of states in tensors is wrong. """

    # 3 spin system: e1 and e2 PP + eR gxl - order: tensor(e1,e2,eR)

    # exchange
    H_ex_r = -2*J_r*(tensor(Sx,I,Sx)+tensor(Sy,I,Sy)+tensor(Sz,I,Sz))        # exchange e1 coupled to eR only
    H_ex_pp = -2*J_pp*(tensor(Sx,Sx,I)+tensor(Sy,Sy,I)+tensor(Sz,Sz,I))      # exchange e1 coupled to e2
    H_ex = H_ex_r + H_ex_pp

    # Zeeman
    g=2                                                                      # assume all spins same g value
    [Bx, By, Bz] = bvect
    H_Zee_pp = g*mu_B*(Bx*(tensor(I,Sx,I)+tensor(Sx,I,I))+By*(tensor(I,Sy,I)+tensor(Sy,I,I))+Bz*(tensor(I,Sz,I)+tensor(Sz,I,I)))
    H_Zee_r = g*mu_B*(Bx*tensor(I,I,Sx)+By*tensor(I,I,Sy)+Bz*tensor(I,I,Sz))
    H_Zee = H_Zee_pp + H_Zee_r

    # zfs
    H_zfs = D*(tensor(Sz,Sz)-2.0/3.0*(tensor(I,I)))+E*(tensor(Sx,Sx)-tensor(Sy,Sy))
    H_zfs2 = tensor(I,H_zfs)+tensor(H_zfs,I)

    # total
    H = H_ex + H_Zee + H_zfs2

    null4 = np.zeros((4,4))
    return Qobj(bd(H,null4))
Exemplo n.º 5
0
    fG11 = inv(inv(g1) - tmm(tau12, rG22, tau21))
    fG22 = inv(inv(g2) - tmm(tau21, lG11, tau12))

    fG12 = tmm(lG11, tau12, fG22)
    fG21 = tmm(rG22, tau21, fG11)

    fG_22_00 = np.block([[fG11, fG12], [fG21, fG22]])

    ##########################################################################
    # Calculate spin-fluctuations of 2-2 and add the GFs block diagonally

    fG_22_10 = G(H_22_10, w)
    fG_22_01 = G(H_22_01, w)

    fG_22 = bd(fG_22_10, fG_22_00, fG_22_01)

    ##########################################################################
    # 1-3 block

    d = len(ordb_13)

    H1 = H_13[0:d, 0:d]
    H2 = H_13[d:2 * d, d:2 * d]
    tau12 = H_13[0:d, d:2 * d]
    tau21 = H_13[d:2 * d, 0:d]

    g1 = G(H1, w)
    g2 = G(H2, w)

    lG11 = G(H1, w)