def QRM(omega0, omegac, ncav=2): ''' Quantum Rabi model / Jaynes-Cummings model Parameters ---------- omega0 : float atomic transition frequency omegac : float cavity frequency g : float cavity-molecule coupling strength Returns ------- rabi: object ''' s0, sx, sy, sz = pauli() hmol = 0.5 * omega0 * (-sz + s0) mol = Mol(hmol, sx) # atom cav = Cavity(omegac, ncav) # cavity return Polariton(mol, cav)
def test_model(): E = np.array([0., 0.6, 1.1]) / au2ev N = len(E) gamma = np.array([0, 0.002, 0.002]) / au2ev H = np.diag(E) dip = np.zeros((N, N, 3), dtype=complex) dip[1, 2, :] = [1. + 0.5j, 1. + 0.1j, 0] dip[2, 1, :] = conj(dip[1, 2, :]) # dip[1,3, :] = dip[3,1] = 1. dip[0, 1, :] = [1. + 0.2j, 0.5 - 0.1j, 0] dip[1, 0, :] = conj(dip[0, 1, :]) # dip[3, 3] = 1. # dip[0, 3] = dip[3,0] = [0.5, 1, 0] mol = Mol(H, dip) mol.set_decay(gamma) return mol
E = np.array([0., 0.5, 1.1, 1.3]) / au2ev gamma = [0, 0.002, 0.002, 0.002] H = np.diag(E) from lime.mol import Mol from lime.optics import Biphoton from matplotlib import cm dip = np.zeros((len(E), len(E))) dip[1, 2] = dip[2, 1] = 1. dip[1, 3] = dip[3, 1] = 1. dip[0, 1] = dip[1, 0] = 1. dip[0, 3] = dip[3, 0] = 1 dip[0, 2] = dip[2, 0] = 1 mol = Mol(H, edip_rms=dip) mol.set_decay_for_all(50 / au2mev) pump = np.linspace(0., 2, 100) / au2ev probe = np.linspace(0, 1, 100) / au2ev g_idx = [0] e_idx = [1, 2, 3] f_idx = [2, 3] # photon_echo(mol, pump, probe, t2=1e-3, g_idx=g_idx, e_idx=e_idx, f_idx=f_idx, plt_signal=True) photon_echo_t3(mol, omega1=pump, omega2=probe, t3=1e-3, g_idx=g_idx)
------- rabi: object ''' s0, sx, sy, sz = pauli() hmol = 0.5 * omega0 * (-sz + s0) mol = Mol(hmol, sx) # atom cav = Cavity(omegac, ncav) # cavity return Polariton(mol, cav) if __name__ == '__main__': #mol = QRM(1, 1) from lime.phys import quadrature s0, sx, sy, sz = pauli() hmol = 0.5 * (-sz + s0) mol = Mol(hmol, sx) # atom cav = Cavity(1, 2) # cavity print(cav.H) # pol = Composite(mol, cav) # pol.getH([sx], [cav.annihilate() + cav.create()], [0.1]) # evals, evecs = pol.eigenstates() # print(pol.purity(evecs[:,2]))
else: raise NotImplementedError() def Hfull(self): pass if __name__ == '__main__': #mol = QRM(1, 1) from lime.phys import quadrature s0, sx, sy, sz = pauli() hmol = 0.5 * (-sz + s0) mol = Mol(hmol, sx) # atom mol.set_decay_for_all(0.05) mol.get_nonhermH() cav = Cavity(1, 2, Q=100) # cavity cav.get_nonhermH() pol = Polariton(mol, cav) H = pol.get_nonhermH(g=0.1) print(isherm(H.toarray())) # set up the initial state psi0 = basis(2, 0) rho0 = ket2dm(psi0)
from lime.mol import Mol from lime.signal.sos import linear_absorption, TPA2D_time_order, TPA2D import lime.signal.liouville as so N = 5 # number of states E = [0, 0.6, 1.2, 1.6, 3.0] ham = np.diagflat(E) dip = np.zeros((N, N)) for i in range(N): for j in range(i): dip[i, j] = dip[j, i] = 1. print('number of molecular states = {}'.format(N)) mol = Mol(ham, dip) # number of single-polariton states pump = np.linspace(0, 2) probe = np.linspace(0, 2) omega_min = pump.min() omega_max = pump.max() gamma = np.zeros(N) e_idx = [1, 2] f_idx = [3, 4] gamma[e_idx] = 0.1 gamma[f_idx] = 0.1 #gamma[0] = 0. # ground state has infinity lifetime
((nu[k]**2 - gam**2) * beta * hbar**2)) # exp_coeff = c # exp_freq = nu return c, nu if __name__ == '__main__': N_c = 4 N_m = 2 N_he, he2idx, idx2he = enr_state_dictionaries([N_c + 1] * N_m, N_c) print(N_he) print(he2idx) s0, sx, sy, sz = pauli() mol = Mol(sz, dip=sx) coup_strength = 200 / au2wavenumber cut_freq = 100 / au2wavenumber temperature = 300 / au2k for he_idx in range(N_he): he_state = list(idx2he[he_idx]) print(he_state) n_excite = sum(he_state) c, nu = _calc_matsubara_params(N_m, coup_strength, cut_freq, temperature) print(c) print(nu)
gamma = [0, 0.02, 0.02] H = np.diag(E) from lime.mol import Mol from lime.optics import Biphoton from matplotlib import cm dip = np.zeros((len(E), len(E))) dip[1, 2] = dip[2, 1] = 1. dip[1, 3] = dip[3, 1] = 1. dip[0, 1] = dip[1, 0] = 1. # dip[0,2] = dip[2,0] = 1. mol = Mol(H, dip) epp = Biphoton(0, 0.04 / au2ev, Te=10. / au2fs) p = np.linspace(-4, 4, 256) / au2ev q = p epp.set_grid(p, q) epp.get_jsa() epp.plt_jsa() pump = np.linspace(0.5, 1.5, 100) / au2ev # probe = np.linspace(0.8, 1.2, 100) # omega_min = min(pump) # omega_max = max(pump) signal = etpa(pump, mol, epp, [0], [1], [2, 3])