Пример #1
0
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)
Пример #4
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)