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))))
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))
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))
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))
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)