def test_fn_list_td_corr(): """ correlation: comparing TLS emission correlations (fn-list td format) """ # calculate emission zero-delay second order correlation, g2(0), for TLS # with following parameters: # gamma = 1, omega = 2, tp = 0.5 # Then: g2(0)~0.57 sm = destroy(2) args = {"t_off": 1, "tp": 0.5} H = [[2 * (sm+sm.dag()), lambda t, args: np.exp(-(t-args["t_off"])**2 / (2*args["tp"]**2))]] tlist = linspace(0, 5, 50) corr = correlation_3op_2t(H, fock(2, 0), tlist, tlist, [sm], sm.dag(), sm.dag() * sm, sm, args=args) # integrate w/ 2D trapezoidal rule dt = (tlist[-1]-tlist[0]) / (np.shape(tlist)[0]-1) s1 = corr[0, 0] + corr[-1, 0] + corr[0, -1] + corr[-1, -1] s2 = sum(corr[1:-1, 0]) + sum(corr[1:-1, -1]) + \ sum(corr[0, 1:-1]) + sum(corr[-1, 1:-1]) s3 = sum(corr[1:-1, 1:-1]) exp_n_in = np.trapz( mesolve( H, fock(2, 0), tlist, [sm], [sm.dag()*sm], args=args ).expect[0], tlist ) # factor of 2 from negative time correlations g20 = abs( sum(0.5*dt**2*(s1 + 2*s2 + 4*s3)) / exp_n_in**2 ) assert_(abs(g20-0.57) < 1e-1)
def test_np_list_td_corr(): """ correlation: comparing TLS emission corr. (np-list td format) """ # both H and c_ops are time-dependent # calculate emission zero-delay second order correlation, g2[0], for TLS # with following parameters: # gamma = 1, omega = 2, tp = 0.5 # Then: g2(0)~0.85 sm = destroy(2) t_off = 1 tp = 0.5 tlist = np.linspace(0, 5, 50) H = [[2 * (sm + sm.dag()), np.exp(-(tlist - t_off)**2 / (2 * tp**2))]] c_ops = [ sm, [sm.dag() * sm * 2, np.exp(-(tlist - t_off)**2 / (2 * tp**2))] ] corr = correlation_3op_2t(H, fock(2, 0), tlist, tlist, [sm], sm.dag(), sm.dag() * sm, sm) # integrate w/ 2D trapezoidal rule dt = (tlist[-1] - tlist[0]) / (np.shape(tlist)[0] - 1) s1 = corr[0, 0] + corr[-1, 0] + corr[0, -1] + corr[-1, -1] s2 = sum(corr[1:-1, 0]) + sum(corr[1:-1, -1]) + \ sum(corr[0, 1:-1]) + sum(corr[-1, 1:-1]) s3 = sum(corr[1:-1, 1:-1]) exp_n_in = np.trapz( mesolve(H, fock(2, 0), tlist, c_ops, [sm.dag() * sm]).expect[0], tlist) # factor of 2 from negative time correlations g20 = abs(sum(0.5 * dt**2 * (s1 + 2 * s2 + 4 * s3)) / exp_n_in**2) assert_(abs(g20 - 0.85) < 1e-2)
def test_H_str_list_td_corr(): """ correlation: comparing TLS emission corr., H td (str-list td format) """ # calculate emission zero-delay second order correlation, g2[0], for TLS # with following parameters: # gamma = 1, omega = 2, tp = 0.5 # Then: g2(0)~0.57 sm = destroy(2) args = {"t_off": 1, "tp": 0.5} H = [[2 * (sm + sm.dag()), "exp(-(t-t_off)**2 / (2*tp**2))"]] tlist = np.linspace(0, 5, 50) corr = correlation_3op_2t(H, fock(2, 0), tlist, tlist, [sm], sm.dag(), sm.dag() * sm, sm, args=args) # integrate w/ 2D trapezoidal rule dt = (tlist[-1] - tlist[0]) / (np.shape(tlist)[0] - 1) s1 = corr[0, 0] + corr[-1, 0] + corr[0, -1] + corr[-1, -1] s2 = sum(corr[1:-1, 0]) + sum(corr[1:-1, -1]) + \ sum(corr[0, 1:-1]) + sum(corr[-1, 1:-1]) s3 = sum(corr[1:-1, 1:-1]) exp_n_in = np.trapz( mesolve(H, fock(2, 0), tlist, [sm], [sm.dag() * sm], args=args).expect[0], tlist) # factor of 2 from negative time correlations g20 = abs(sum(0.5 * dt**2 * (s1 + 2 * s2 + 4 * s3)) / exp_n_in**2) assert_(abs(g20 - 0.59) < 1e-2)
def _2ls_g2_0(H, c_ops): sp = qutip.sigmap() start = qutip.basis(2, 0) times = _2ls_times correlation = qutip.correlation_3op_2t(H, start, times, times, [sp], sp.dag(), sp.dag()*sp, sp, args=_2ls_args) n_expectation = qutip.mesolve(H, start, times, [sp] + c_ops, e_ops=[qutip.num(2)], args=_2ls_args).expect[0] integral_correlation = _trapz_2d(np.real(correlation), times) integral_n_expectation = np.trapz(n_expectation, times) # Factor of two from negative time correlations. return 2 * integral_correlation / integral_n_expectation**2
def compute_two_ph_corr( obj: floquet_analysis.FloquetAnalyzer, num_periods: int, inp_freqs: np.ndarray, inp_amp: float) -> np.ndarray: # Get the time lists. init_times = np.arange(obj.num_dt) * obj.dt delays = np.arange(obj.num_dt * (num_periods - 1)) * obj.dt # Get the qutip operators. two_ph_corrs = [] for freq in inp_freqs: H, L = obj._system.get_qutip_operators(freq, inp_amp) psi_init_as_list = [] for dim in H[0].dims[0]: psi_init_as_list.append(qutip.basis(dim)) psi_init = qutip.tensor(psi_init_as_list) two_ph_corrs.append(qutip.correlation_3op_2t( H, psi_init, init_times, delays, [L], L, L, L)) return two_ph_corrs
def test_H_fn_td_corr(): """ correlation: comparing TLS emission corr., H td (fn td format) """ # calculate emission zero-delay second order correlation, g2[0], for TLS # with following parameters: # gamma = 1, omega = 2, tp = 0.5 # Then: g2(0)~0.57 sm = destroy(2) def H_func(t, args): return 2 * args["H0"] * np.exp(-2 * (t - 1)**2) tlist = linspace(0, 5, 50) corr = correlation_3op_2t(H_func, fock(2, 0), tlist, tlist, [sm], sm.dag(), sm.dag() * sm, sm, args={"H0": sm + sm.dag()}) # integrate w/ 2D trapezoidal rule dt = (tlist[-1] - tlist[0]) / (np.shape(tlist)[0] - 1) s1 = corr[0, 0] + corr[-1, 0] + corr[0, -1] + corr[-1, -1] s2 = sum(corr[1:-1, 0]) + sum(corr[1:-1, -1]) +\ sum(corr[0, 1:-1]) + sum(corr[-1, 1:-1]) s3 = sum(corr[1:-1, 1:-1]) exp_n_in = trapz( mesolve(H_func, fock(2, 0), tlist, [sm], [sm.dag() * sm], args={ "H0": sm + sm.dag() }).expect[0], tlist) # factor of 2 from negative time correlations g20 = abs(sum(0.5 * dt**2 * (s1 + 2 * s2 + 4 * s3)) / exp_n_in**2) assert_(abs(g20 - 0.59) < 1e-2)
def test_H_np_list_td_corr(): """ correlation: comparing TLS emission corr., H td (np-list td format) """ #from qutip.rhs_generate import rhs_clear #rhs_clear() # calculate emission zero-delay second order correlation, g2[0], for TLS # with following parameters: # gamma = 1, omega = 2, tp = 0.5 # Then: g2(0)~0.57 sm = destroy(2) tp = 0.5 t_off = 1 tlist = np.linspace(0, 5, 50) H = [[2 * (sm + sm.dag()), np.exp(-(tlist - t_off) ** 2 / (2 * tp ** 2))]] corr = correlation_3op_2t(H, fock(2, 0), tlist, tlist, [sm], sm.dag(), sm.dag() * sm, sm) # integrate w/ 2D trapezoidal rule dt = (tlist[-1] - tlist[0]) / (np.shape(tlist)[0] - 1) s1 = corr[0, 0] + corr[-1, 0] + corr[0, -1] + corr[-1, -1] s2 = sum(corr[1:-1, 0]) + sum(corr[1:-1, -1]) + \ sum(corr[0, 1:-1]) + sum(corr[-1, 1:-1]) s3 = sum(corr[1:-1, 1:-1]) exp_n_in = np.trapz( mesolve( H, fock(2, 0), tlist, [sm], [sm.dag() * sm] ).expect[0], tlist ) # factor of 2 from negative time correlations g20 = abs( sum(0.5 * dt ** 2 * (s1 + 2 * s2 + 4 * s3)) / exp_n_in ** 2 ) assert_(abs(g20 - 0.59) < 1e-2)
def test_fn_td_corr(): """ correlation: comparing TLS emission correlations (fn td format) """ # calculate emission zero-delay second order correlation, g2(0), for TLS # with following parameters: # gamma = 1, omega = 2, tp = 0.5 # Then: g2(0)~0.57 sm = destroy(2) def H_func(t, args): return 2 * args["H0"] * np.exp(-2 * (t-1)**2) tlist = linspace(0, 5, 50) corr = correlation_3op_2t(H_func, fock(2, 0), tlist, tlist, [sm], sm.dag(), sm.dag() * sm, sm, args={"H0": sm+sm.dag()}) # integrate w/ 2D trapezoidal rule dt = (tlist[-1]-tlist[0]) / (np.shape(tlist)[0]-1) s1 = corr[0, 0] + corr[-1, 0] + corr[0, -1] + corr[-1, -1] s2 = sum(corr[1:-1, 0]) + sum(corr[1:-1, -1]) +\ sum(corr[0, 1:-1]) + sum(corr[-1, 1:-1]) s3 = sum(corr[1:-1, 1:-1]) exp_n_in = trapz( mesolve( H_func, fock(2, 0), tlist, [sm], [sm.dag()*sm], args={"H0": sm+sm.dag()} ).expect[0], tlist ) # factor of 2 from negative time correlations g20 = abs( sum(0.5*dt**2*(s1 + 2*s2 + 4*s3)) / exp_n_in**2 ) assert_(abs(g20-0.57) < 1e-1)
def test_str_list_td_corr(): """ correlation: comparing TLS emission corr. (str-list td format) """ # both H and c_ops are time-dependent # calculate emission zero-delay second order correlation, g2[0], for TLS # with following parameters: # gamma = 1, omega = 2, tp = 0.5 # Then: g2(0)~0.85 sm = destroy(2) args = {"t_off": 1, "tp": 0.5} tlist = np.linspace(0, 5, 50) H = [[2 * (sm + sm.dag()), "exp(-(t-t_off)**2 / (2*tp**2))"]] c_ops = [sm, [sm.dag() * sm * 2, "exp(-(t-t_off)**2 / (2*tp**2))"]] corr = correlation_3op_2t(H, fock(2, 0), tlist, tlist, [sm], sm.dag(), sm.dag() * sm, sm, args=args) # integrate w/ 2D trapezoidal rule dt = (tlist[-1] - tlist[0]) / (np.shape(tlist)[0] - 1) s1 = corr[0, 0] + corr[-1, 0] + corr[0, -1] + corr[-1, -1] s2 = sum(corr[1:-1, 0]) + sum(corr[1:-1, -1]) + \ sum(corr[0, 1:-1]) + sum(corr[-1, 1:-1]) s3 = sum(corr[1:-1, 1:-1]) exp_n_in = np.trapz( mesolve( H, fock(2, 0), tlist, c_ops, [sm.dag() * sm], args=args ).expect[0], tlist ) # factor of 2 from negative time correlations g20 = abs( sum(0.5 * dt ** 2 * (s1 + 2 * s2 + 4 * s3)) / exp_n_in ** 2 ) assert_(abs(g20 - 0.85) < 1e-2)