コード例 #1
0
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)
コード例 #2
0
ファイル: sos.py プロジェクト: binggu56/lime
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
コード例 #3
0
ファイル: sos.py プロジェクト: binggu56/lime
    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)
コード例 #4
0
    -------
    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]))
コード例 #5
0
        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)
コード例 #6
0
ファイル: TPA.py プロジェクト: kubo4/lime
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
コード例 #7
0
ファイル: heom.py プロジェクト: kubo4/lime
                     ((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)
コード例 #8
0
    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])