Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doubly-driven TLS oscillates forever? #2356

Open
ltmsyvag opened this issue Mar 20, 2024 · 0 comments
Open

doubly-driven TLS oscillates forever? #2356

ltmsyvag opened this issue Mar 20, 2024 · 0 comments

Comments

@ltmsyvag
Copy link

ltmsyvag commented Mar 20, 2024

Describe the Issue!

Not sure if it's a bug, but my qutip result seems unphysical to me: it appears that I got some perpetual oscillation in a dissipative system.

What I modeled is a TLS driven by two tones, i.e.:

$$H = \frac{\omega_0}{2} \begin{pmatrix} -1 & 0 \\ 0&1 \end{pmatrix} + \begin{pmatrix} 0 & 1 \\ 1&0 \end{pmatrix} (\Omega_1\cos\omega_1 t + \Omega_2\cos\omega_2 t)$$

In addition, the TLS has a spontaneous emission rate $\Gamma_{21}$.

To implement the above system, I used the following code (fully time-dependent, no rotating-wave approximation):

from numpy import pi, cos, sqrt, linspace
import matplotlib.pyplot as plt
from qutip import (
    sigmax, sigmaz, fock_dm, mesolve, 
    basis, Qobj)

omega0 = 100*2*pi # TLS atom level spacing
omega1 = omega0 # 1st tone, resonant with the TLS
omega2 = omega0 -1*2*pi # 2nd tone, detuned from TLS
omegaR1 = 1*2*pi # Rabi freq of 1st tone
omegaR2 = 1*2*pi # Rabi freq of 2nd tone
gamma21 = 1 # spontaneous emission rate

H0 = -sigmaz()/2*omega0
H1, H2 = sigmax()*omegaR1, sigmax()*omegaR2
t = linspace(0,10,501)
def H1_coeff(t, args):
    return cos(omega1*t)
def H2_coeff(t, args):
    return cos(omega2*t)

H = [H0, [H1, H1_coeff], [H2, H2_coeff]]
c_ops = [Qobj([[0,1],[0,0]])*sqrt(gamma21)]
e_ops = [fock_dm(2,0), fock_dm(2,1)]
psi0 = basis(2,0)
result = mesolve(H, psi0, t, c_ops, e_ops)

plt.plot(t, result.expect[1])
plt.ylim(0,1)

One can directly run the above code to produce a perpetual oscillation, which seems unphysical to me. If one suppresses either tone (e.g. by setting omegaR1 or omegaR2 to zero), or set the 2nd tone's detuning to zero (i.e. omega2 = omega0), one gets the expected damping behavior at large times.
Untitled

Did I implement this physics correctly? Or is qutip being weird?

Finally, my system info:

QuTiP Version:      4.7.5
Numpy Version:      1.24.3
Scipy Version:      1.10.1
Cython Version:     0.29.36
Matplotlib Version: 3.7.1
Python Version:     3.11.0
Number of CPUs:     10
BLAS Info:          OPENBLAS
OPENMP Installed:   False
INTEL MKL Ext:      False
Platform Info:      Darwin (arm64)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant