Skip to content

Commit e3bd52b

Browse files
authored
Add resonance fluorescence tutorial (#18)
1 parent 804ae84 commit e3bd52b

File tree

1 file changed

+232
-0
lines changed

1 file changed

+232
-0
lines changed
Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
---
2+
title: "Resonance fluorescence"
3+
author: Li-Xun Cai
4+
date: 2025-01-27 # last update (keep this comment as a reminder)
5+
6+
engine: julia
7+
---
8+
9+
Inspirations taken from [this QuTiP tutorial](https://nbviewer.org/urls/qutip.org/qutip-tutorials/tutorials-v5/lectures/Lecture-13-Resonance-flourescence.ipynb) by J. R. Johansson.
10+
11+
In this tutorial, we demonstrate the following functionalities:
12+
13+
- [`liouvillian`](https://qutip.org/QuantumToolbox.jl/stable/resources/api#QuantumToolbox.liouvillian)
14+
- [`mesolve`](https://qutip.org/QuantumToolbox.jl/stable/resources/api#QuantumToolbox.mesolve)
15+
- [`correlation_2op_1t`](https://qutip.org/QuantumToolbox.jl/stable/resources/api#QuantumToolbox.correlation_2op_1t)
16+
- [`spectrum_correlation_fft`](https://qutip.org/QuantumToolbox.jl/stable/resources/api#QuantumToolbox.spectrum_correlation_fft)
17+
18+
with the example of resonance fluorescence in the weak field limit. We also adopt the convention $\hbar = 1$ throughout this tutorial.
19+
20+
## Introduction
21+
22+
Resonance fluorescence is the radiative behavior of a two-level atom driven by a resonant light mode in a coherent state (usually a monochromatic laser beam). The Hamiltonian $H$ is given by
23+
24+
- $H_\text{a} = \frac{\omega_a}{2} \hat{\sigma}_z$
25+
- $H_\text{drv} = \Omega \cos(\omega_L t) (\hat{\sigma}^{+} + \hat{\sigma}^{-})$
26+
27+
with
28+
29+
- $\omega_a$: Frequency of the two-level atom
30+
- $\omega_L$: Frequency of the light field
31+
- $\Omega$: Field strength of the light field
32+
- $\hat{\sigma}_{x,y,z}$: Pauli matrices
33+
- $\hat{\sigma}^{\pm}$: Raising ($+$) and lowering ($-$) operators, equivalent to $|e\rangle\langle g|$ and $|g\rangle\langle e|$ respectively
34+
35+
To simplify the problem, we consider the total Hamiltonian (in the rotating frame)
36+
$$
37+
H^\text{rot} = U^\dagger H_\text{a} U + U^\dagger H_\text{drv} U -i U^\dagger \frac{d}{dt} U,
38+
$$
39+
where the unitary operator is given by $U = e^{-i \omega_L t \cdot \hat{\sigma}_z}$. The third term of $H^\text{rot}$ is simply $-\frac{\omega_L}{2}\hat{\sigma}_z$, and the first and second terms are evaluated as:
40+
41+
$$
42+
U^\dagger H_\text{a} U = \frac{\omega_a}{2}\hat{\sigma}_z,
43+
$$
44+
$$
45+
U^\dagger H_\text{drv} U = \Omega \cos(\omega_L t) \Big[e^{i\omega_L t}\hat{\sigma}^{+} + e^{-i\omega_L t}\hat{\sigma}^{-}\Big].
46+
$$
47+
48+
In the weak field limit, where $\Omega/\omega_L \ll 1$, we can drop the time-dependent part in the rotating frame through [rotating-wave approximation (RWA)](https://en.wikipedia.org/wiki/Rotating-wave_approximation). First, we expand $\cos(\omega_L t)$ to its exponential form,
49+
$$
50+
\Omega \cos(\omega_L t) \Big[e^{i\omega_L t}\hat{\sigma}^{+} + e^{-i\omega_L t}\hat{\sigma}^{-}\Big] = \frac{\Omega}{2}\Big[(1 + e^{2i\omega_L t})\hat{\sigma}^{+} + (1 + e^{-2i\omega_L t})\hat{\sigma}^{-}\Big]
51+
$$
52+
The time-dependent parts with frequency $2\omega_L$ are dropped, yielding
53+
$$
54+
H^\text{rot} \simeq \frac{\omega_a}{2} \hat{\sigma}_z + \frac{\Omega}{2} \hat{\sigma}_x - \frac{\omega_L}{2} \hat{\sigma}_z = \frac{\Delta}{2} \hat{\sigma}_z + \frac{\Omega}{2} \hat{\sigma}_x
55+
$$
56+
where $\Delta \equiv \omega_a - \omega_L$ is the detuning between the two-level atom and the driving light. In the realistic near-resonance case $\Delta \simeq 0$, characteristic of the radiative behaviour remains. Thus, for the following demonstration, we only consider the exact resonance $\Delta = 0$.
57+
58+
### Dissipation dynamics
59+
60+
We start by the interaction Hamiltonian between the thermal field and atom
61+
$$
62+
\hat{H}_{\text{a}}^\text{int} = \sum_l \alpha_l \left( \hat{b}_l + \hat{b}_l^\dagger \right) \left( \hat{\sigma}^{-} + \hat{\sigma}^{+} \right)
63+
$$
64+
where for the $l$-th mode
65+
66+
- $\alpha_l$ is the coupling strength with the atom
67+
- $\hat{b}_l$ is the annihilation operator
68+
69+
By applying [rotating wave approximation (RWA)](https://en.wikipedia.org/wiki/Rotating-wave_approximation) and following the standard procedure of the [Born-Markovian approximation](https://en.wikiversity.org/wiki/Open_Quantum_Systems/The_Quantum_Optical_Master_Equation), we obtain the atom dissipation rate $\gamma_0$. Consequently, the dynamics is described by the [Lindblad master equation](https://en.wikipedia.org/wiki/Lindbladian).
70+
$$
71+
\mathcal{L} = \gamma_0 n(\omega_a, T) \mathcal{D}[\hat{\sigma}^{+}] + \gamma_0 [1 + n(\omega_a, T)] \mathcal{D}[\hat{\sigma}^{-}]
72+
$$
73+
74+
where
75+
76+
- $n(\omega, T)$: Bose-Einstein distribution of the thermal field at temperature $T$
77+
- $\mathcal{D}[\cdot]$: The [Lindblad dissipator](https://en.wikipedia.org/wiki/Lindbladian) (has exactly the same expression in the lab frame and the rotating frame)
78+
79+
## Code Demonstration
80+
81+
<!-- import QuantumToolbox: QuantumObjectEvolution, n_thermal, liouvillian, sigmap, sigmam, sigmax,
82+
sigmay, sigmaz, basis, mesolve, correlation_2op_1t, spectrum_correlation_fft -->
83+
84+
```{julia}
85+
using QuantumToolbox
86+
import CairoMakie: Figure, Axis, @L_str, lines!, axislegend, display, ylims!, xlims!
87+
```
88+
89+
```{julia}
90+
Ω = 1
91+
γ0 = 0.05 * Ω
92+
KT = 0 # thermal field at zero temperature
93+
94+
```
95+
96+
We define a function that returns the Liouvillian `SuperOperator` of the system.
97+
```{julia}
98+
function liouvillian_spec(_Ω, _γ0, _KT)
99+
H = _Ω/2 * sigmax()
100+
c_ops = [
101+
√(_γ0 * n_thermal(_Ω, _KT)) * sigmap(),
102+
√(_γ0 * (1 + n_thermal(_Ω, _KT))) * sigmam(),
103+
]
104+
return liouvillian(H, c_ops)
105+
end
106+
```
107+
108+
We first use [`mesolve`](https://qutip.org/QuantumToolbox.jl/stable/resources/api#QuantumToolbox.mesolve) to solve the master equation with several observables given in `e_ops`.
109+
```{julia}
110+
e_ket = basis(2,0)
111+
e_ops = [
112+
sigmax(),
113+
sigmay(),
114+
sigmaz(),
115+
sigmam(),
116+
sigmap(),
117+
e_ket * e_ket'
118+
]
119+
ψ0 = e_ket # set initial state being purely excited to better observe the radiative behaviour
120+
L = liouvillian_spec(Ω, γ0, KT)
121+
print(L)
122+
```
123+
124+
We already generate the Liouvillian with `c_ops` included above. We don't need to specify the `c_ops` again in [`mesolve`](https://qutip.org/QuantumToolbox.jl/stable/resources/api#QuantumToolbox.mesolve):
125+
```{julia}
126+
tlist = 0:0.1:20
127+
sol = mesolve(L, ψ0, tlist, nothing, e_ops = e_ops)
128+
```
129+
130+
By observing the expectation values of the Pauli operators, we see that the Bloch vector $(\langle \hat{\sigma}_x \rangle, \langle \hat{\sigma}_y \rangle, \langle \hat{\sigma}_z \rangle)$ becomes shorter over time, which is consistent with the dissipative behaviour. Also, the population of the excited state $|e\rangle$ has an oscillation amplitude decaying over time.
131+
```{julia}
132+
expect = real.(sol.expect)
133+
fig1 = Figure(size = (600,300))
134+
ax11 = Axis(
135+
fig1[1,1]
136+
)
137+
lines!(ax11, tlist, expect[1,:], label = L"\langle \hat{\sigma}_x \rangle")
138+
lines!(ax11, tlist, expect[2,:], label = L"\langle \hat{\sigma}_y \rangle")
139+
lines!(ax11, tlist, expect[3,:], label = L"\langle \hat{\sigma}_z \rangle")
140+
axislegend(ax11)
141+
ylims!(ax11, (-1,1))
142+
143+
ax12 = Axis(
144+
fig1[2,1],
145+
xlabel = L"time $[1/\Omega]$"
146+
)
147+
lines!(ax12, tlist, expect[6,:], label = L"P_e")
148+
axislegend(ax12)
149+
ylims!(ax12, (0,1))
150+
151+
display(fig1);
152+
```
153+
154+
Further, we check the effect of different values of the damping rate. Note that despite these dissipation rates looked enormous at first glance, it is still to the order of the field strength and therefore considered dissipative for the system in the lab frame.
155+
```{julia}
156+
results = []
157+
γ0s = Ω .* [0.1, 0.5, 1]
158+
for γ0 in γ0s
159+
result = mesolve(liouvillian_spec(Ω, γ0, KT), ψ0, tlist, nothing, e_ops = e_ops)
160+
161+
push!(results, (γ0 = γ0, expect = result.expect))
162+
end
163+
```
164+
165+
The expectation values dynamics of $\hat{\sigma}^{+}$ and $\hat{\sigma}^{-}$ shows the driving-field-induced dipole moment of the atom oscillates and persists.
166+
```{julia}
167+
fig2 = Figure(size = (600,300))
168+
ax2 = Axis(
169+
fig2[1,1],
170+
xlabel = L"time $[1/\Omega]$",
171+
title = L"\langle\hat{\sigma}_{+}\rangle"
172+
)
173+
174+
for (γ0, expect) in results
175+
lines!(ax2, tlist, imag(expect[5,:]), label = "γ0 = $γ0")
176+
end
177+
178+
axislegend(ax2)
179+
display(fig2);
180+
```
181+
182+
```{julia}
183+
fig3 = Figure(size = (600,300))
184+
ax3 = Axis(
185+
fig3[1,1],
186+
xlabel = L"time $[1/\Omega]$",
187+
title = L"\langle\hat{\sigma}_{-}\rangle"
188+
)
189+
190+
for (γ0, expect) in results
191+
lines!(ax3, tlist, imag(expect[4,:]), label = "γ0 = $γ0")
192+
end
193+
axislegend(ax3)
194+
display(fig3);
195+
```
196+
197+
We now move to the analysis of the correlation function $C(\tau) = \langle \hat{\sigma}^{+}(\tau) \hat{\sigma}^{-}(0)\rangle$, which describes the radiative behaviour of the atom towards its surrounding environment. Using [`correlation_2op_1t`](https://qutip.org/QuantumToolbox.jl/stable/resources/api#QuantumToolbox.correlation_2op_1t), we can obtain the correlation function as a function of $\tau$ and use [`spectrum_correlation_fft`](https://qutip.org/QuantumToolbox.jl/stable/resources/api#QuantumToolbox.spectrum_correlation_fft) to obtain the corresponding Fourier transform.
198+
```{julia}
199+
fig4 = Figure(size = (600,300))
200+
ax41 = Axis(
201+
fig4[1,1],
202+
xlabel = L"\tau",
203+
title = L"C(\tau)"
204+
)
205+
206+
ax42 = Axis(
207+
fig4[1,2],
208+
xlabel = L"\omega",
209+
ylabel = "fft amplitude"
210+
)
211+
τlist = 0:0.1:100
212+
for γ0 in γ0s
213+
L = liouvillian_spec(Ω, γ0, KT)
214+
corr = correlation_2op_1t(L, ψ0, τlist, nothing, sigmap(), sigmam())
215+
216+
lines!(ax41, τlist, real(corr), label = "γ0 = $γ0")
217+
218+
fft_ωlist, fft_spect = spectrum_correlation_fft(τlist, corr)
219+
lines!(ax42, fft_ωlist, fft_spect, label = "γ0 = $γ0")
220+
end
221+
xlims!(ax42, (-2,2))
222+
axislegend(ax41)
223+
axislegend(ax42)
224+
display(fig4);
225+
```
226+
In the above plots, one finds that the correlation functions decay faster with higher dissipation rate, and therefore the lower spectral peaks. On the other hand, the higher spectral peaks means the radiation is brighter in terms of intensity.
227+
228+
## Version Information
229+
```{julia}
230+
import QuantumToolbox
231+
QuantumToolbox.versioninfo()
232+
```

0 commit comments

Comments
 (0)