You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Asuming that the beamsplitter is equal (50% transmission and 50% reflection) and that we have only a single photon in one of waveguides impinging on the beamsplitter, the photon will go to detector plus 50% of the time and detector minus the other 50% of the time. This can be modeled in `WaveguideQED.jl` using [`LazyTensorKet`](@ref) and [`Detector`](@ref). We start by creating the two input waveguides.
6
+
Assuming that the beamsplitter is equal (50% transmission and 50% reflection) and that we have only a single photon in one of waveguides impinging on the beamsplitter, the photon will go to detector plus 50% of the time and detector minus the other 50% of the time. This can be modeled in `WaveguideQED.jl` using [`LazyTensorKet`](@ref) and [`Detector`](@ref). We start by creating the two input waveguides.
7
7
8
8
9
9
## Background Theory
10
-
Two photons inpinging on a beamsplitter is a classic example of destructive and constructive interference. If the two photons are indistinquishable, they will always appear in pairs on the other side of the beamsplitter. That is the following scenario:
10
+
Two photons impinging on a beamsplitter is a classic example of destructive and constructive interference. If the two photons are indistinguishable, they will always appear in pairs on the other side of the beamsplitter. That is the following scenario:
However, what happens if the two photons have a slight mismatch in frequency or their temporal distribution and how do we model this? Assuming the beamsplitter is 50/50 the beamsplitter transformation is[^1] : $w_a \rightarrow (w_c + w_d)/\sqrt(2)$ and $w_b \rightarrow (w_c - w_d)/\sqrt(2)$, where $w_k$ is the annihilation operator for waveguide $k=\{a,b,c,d\}$. A one photon continous fockstate in waveguide a and b with wavefunction $\xi_a(t)$ and $\xi_b(t)$ has the combined state:
14
+
However, what happens if the two photons have a slight mismatch in frequency or their temporal distribution, and how do we model this? Assuming the beamsplitter is 50/50 the beamsplitter transformation is[^1] : $w_a \rightarrow (w_c + w_d)/\sqrt(2)$ and $w_b \rightarrow (w_c - w_d)/\sqrt(2)$, where $w_k$ is the annihilation operator for waveguide $k=\{a,b,c,d\}$. A one photon continuous fockstate in waveguide a and b with wavefunction $\xi_a(t)$ and $\xi_b(t)$ has the combined state:
where we introduced $$W_{c/d}^\dagger(\xi_a) W_{c/d}^\dagger(\xi_b) \ket{0}_{c/d} = int_{t_0}^{t_{end}} \mathrm{d}t \int_{t_0}^{t_{end}} \mathrm{d}t' \xi_a(t)\xi_b(t') w_{c/d}^\dagger(t) w_{c/d}^\dagger(t') \ket{0}_{c/d}$$. $$W_{c/d}^\dagger(\xi_a) W_{c/d}^\dagger(\xi_b) \ket{0}_{c/d}$$ thus corresponds to both photons going into the same direction. It is also evident that if $$\xi_a(t)\xi_b(t') - \xi_a(t')\xi_b(t) \right = 0$$ then we will have no photons in waveguide c and d simultanously. This condition is exactly fulfilled if the photon in waveguide a is indistinquishable from the photon in waveguide b. This also means that if the photons ARE distinquishable, we will start to see photon occuring in waveguide c and d simultanously. All this and more can be simulated in the code and in the next section we walk through how to set the above example up in the code.
29
+
where we introduced $$W_{c/d}^\dagger(\xi_a) W_{c/d}^\dagger(\xi_b) \ket{0}_{c/d} = int_{t_0}^{t_{end}} \mathrm{d}t \int_{t_0}^{t_{end}} \mathrm{d}t' \xi_a(t)\xi_b(t') w_{c/d}^\dagger(t) w_{c/d}^\dagger(t') \ket{0}_{c/d}$$. $$W_{c/d}^\dagger(\xi_a) W_{c/d}^\dagger(\xi_b) \ket{0}_{c/d}$$ thus corresponds to both photons going into the same direction. It is also evident that if $$\xi_a(t)\xi_b(t') - \xi_a(t')\xi_b(t) \right = 0$$ then we will have no photons in waveguide c and d simultaneously. This condition is exactly fulfilled if the photon in waveguide a is indistinguishable from the photon in waveguide b. This also means that if the photons ARE distinguishable, we will start to see photon occurring in waveguide c and d simultaneously. All this and more can be simulated in the code, and in the next section, we walk through how to set the above example up in the code.
30
30
31
31
## Beamsplitter and detection in WaveguideQED.jl
32
32
33
-
In `CaviyWaveguide.jl` we create the two incoming photons in each of their respective waveguides and define the corresponding annihilation operators:
33
+
In `WaveguideQED.jl` we create the two incoming photons in each of their respective waveguides and define the corresponding annihilation operators:
34
34
35
35
```@example detection
36
36
using WaveguideQED #hide
@@ -45,14 +45,14 @@ wb = destroy(bw)
45
45
nothing #hide
46
46
```
47
47
48
-
We then combine the states of waveguide a and b in a lazy tensor structure (tensor product is never calculated but the dimensions are inferred in subsequent calculations):
48
+
We then combine the states of waveguide a and b in a lazy tensor structure (tensor product is never calculated, but the dimensions are inferred in subsequent calculations):
49
49
50
50
```@example detection
51
51
ψ_total = LazyTensorKet(waveguide_a,waveguide_b)
52
52
nothing #hide
53
53
```
54
54
55
-
Now we define [`Detector`](@ref) operators, which defines the beamsplitter and subsequent detection operation. In the following $\mathrm{Dplus} = D_+ = \frac{1}{\sqrt{2}}(w_a + w_b) $ and $\mathrm{Dminus} = D_- = \frac{1}{\sqrt{2}}(w_a - w_b)$
55
+
Now we define [`Detector`](@ref) operators, which define the beamsplitter and subsequent detection operation. In the following $\mathrm{Dplus} = D_+ = \frac{1}{\sqrt{2}}(w_a + w_b) $ and $\mathrm{Dminus} = D_- = \frac{1}{\sqrt{2}}(w_a - w_b)$
56
56
57
57
```@example detection
58
58
Dplus = Detector(wa/sqrt(2),wb/sqrt(2))
@@ -67,21 +67,21 @@ p_plus = Dplus * ψ_total
67
67
p_minus = Dminus * ψ_total
68
68
```
69
69
70
-
The returned probabilities are zero because there is no states that result in only ONE click at the detectors. Instead we have to ask for the probability of detecting TWO photons:
70
+
The returned probabilities are zero because there is no states that result in only ONE click at the detectors. Instead, we have to ask for the probability of detecting TWO photons:
71
71
72
72
```@repl detection
73
73
p_plus_plus = Dplus * Dplus * ψ_total
74
74
p_minus_minus = Dminus * Dminus * ψ_total
75
75
```
76
76
77
-
Notice that we here asked what is the probability of having a detection event in detector plus/minus and subsequently another detection event in detector plus/minus. The output was $50\%$ for both cases reflecting the above calculations where we would expect the two photons always come in pairs. As a consequence the probability of having a click in detector plus and then in detector minus (or vice versa) is given as:
77
+
Notice that we here asked what the probability of having a detection event in detector plus/minus and, subsequently, another detection event in detector plus/minus is. The output was $50\%$ for both cases reflecting the above calculations where we would expect the two photons always come in pairs. As a consequence, the probability of having a click in detector plus and then in detector minus (or vice versa) is given as:
78
78
79
79
```@repl detection
80
80
p_plus_minus = Dplus * Dminus * ψ_total
81
81
p_minus_plus = Dminus * Dplus * ψ_total
82
82
```
83
83
84
-
As expected the resulting probabilities are zero. If we instead displace the photons in time so that one is centered around $t = 5$ and another around $t = 15$ we get:
84
+
As expected, the resulting probabilities are zero. If we instead displace the photons in time so that one is centered around $t = 5$ and another around $t = 15$ we get:
Thus we have an equal probability detection events in the same detector and in opposite detectors, since the two photon pulse are temporaly seperated.
96
+
Thus we have an equal probability of detection events in the same detector and opposite detectors since the two photon-pulses are temporarily separated.
Copy file name to clipboardExpand all lines: docs/src/example_lodahl.md
+21-18Lines changed: 21 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,15 +1,15 @@
1
-
# Scattering on two level system
2
-
In the following, we show that with our framwework we can reproduce the theoretical results obtained in [Le Jeannic, et al. Nat. Phys. 18, 1191–1195 (2022)](https://www.nature.com/articles/s41567-022-01720-x)
1
+
# Scattering on a two-level system
2
+
In the following, we show that with our framework, we can reproduce the theoretical results obtained in [Le Jeannic, et al. Nat. Phys. 18, 1191–1195 (2022)](https://www.nature.com/articles/s41567-022-01720-x)
3
3
4
4
5
-
In many of the examples considered so far, we only consider a single waveguide that serves as both input and output, thus only allowing for only one-sided cavities or quantum systems at the end of a waveguide. A more realistic scenario is having a waveguide with a quantum system in the middle. Here an incoming waveguide carying an excitation could scatter on the quantum system and one would have excitations going away from the quantum system in both the first and latter part of the waveguide as illustrated here:[^1]
5
+
In many of the examples considered so far, we only consider a single waveguide that serves as both input and output, thus only allowing for only one-sided cavities or quantum systems at the end of a waveguide. A more realistic scenario is having a waveguide with a quantum system in the middle. Here an incoming waveguide carrying an excitation could scatter on the quantum system, and one would have excitations going away from the quantum system in both the first and latter part of the waveguide, as illustrated here:[^1]
A way to model this scenario is to have two waveguides: a waveguide to the left and the right, describing the first half of the waveguide and the latter part of the waveguide. For this we use [`WaveguideBasis`](@ref) but with an extra argument specifying that we need 2 waveguides (see [`Two Waveguides`](@ref twowaveguide) for an introduction). We initialize [`WaveguideBasis`](@ref) with two waveguides and a basis for the atom (note that a fockbasis with only one excitation allowed is the same as a two-level-system):
12
+
A way to model this scenario is to have two waveguides: a waveguide to the left and the right, describing the first half of the waveguide and the latter half. For this, we use [`WaveguideBasis`](@ref) but with an extra argument specifying that we need two waveguides (see [`twowaveguide`](@ref) for an introduction). We initialize [`WaveguideBasis`](@ref) with two waveguides and a basis for the atom (note that a fockbasis with only one excitation allowed is the same as a two-level-system):
13
13
14
14
```@example lodahl
15
15
using WaveguideQED #hide
@@ -21,7 +21,7 @@ be = FockBasis(1)
21
21
nothing #hide
22
22
```
23
23
24
-
We then define the operators for the interaction between atom and waveguide as (notice the second argument in create(bw,1) that defines which waveguide we are adressing):
24
+
We then define the operators for the interaction between atom and waveguide as (notice the second argument in `create(bw,1)` that defines which waveguide we are addressing):
where $\mathrm{wdLa} = w_L ^\dagger a$, $\mathrm{wdRa} = w_R ^\dagger a$, $\mathrm{adwL} = w_L a^\dagger$, and $\mathrm{adwR} = w_R a^\dagger$. In this example, we, however, also need an interaction between the waveguides. We therefore we define the creation and annihilation operators
34
+
where $\mathrm{wdLa} = w_L ^\dagger a$, $\mathrm{wdRa} = w_R ^\dagger a$, $\mathrm{adwL} = w_L a^\dagger$, and $\mathrm{adwR} = w_R a^\dagger$. In this example, we, however, also need an interaction between the waveguides. Therefore we define the creation and annihilation operators:
The interaction should carry over the momentum of the left pulse into the right waveguide and the interaction should therefore model a SWAP gate. This corresponds to $V = \pi /2$ and thus we have the interaction Hamiltonian:
44
+
The interaction should carry over the momentum of the left waveguide into the waveguide on the right, and the interaction should therefore model a SWAP gate. This corresponds to $V = \pi /2$ and thus we have the interaction Hamiltonian:
We can now study how single or two photon states scatter on the atom. We define the initial onephoton or twophoton gaussian state and solve it using the defined Hamiltonian:
55
-
54
+
We can now study how single or two-photon states scatter on the atom. We define the initial one-photon or two-photon Gaussian state and solve it using the defined Hamiltonian:
Viewing the scattered states is then done using TwoPhotonView and the index for the corresponding waveguide. Giving two indeces returns instead the combined single photon state in both waveguides $\sum_{j,k} \ket{1_j}_1 \ket{1_k}_2$:
68
+
Viewing the scattered states is then done using TwoPhotonView and the index for the corresponding waveguide. Giving two indices returns instead the combined single photon state in both waveguides $\sum_{j,k} \ket{1_j}_1 \ket{1_k}_2$:
70
69
71
70
```@example lodahl
72
-
ψ2LeftScat = TwoPhotonView(ψScat2,[:,1],1)
73
-
ψ2RightScat = TwoPhotonView(ψScat2,[:,1],2)
74
-
ψ2LeftRightScat = TwoPhotonView(ψScat2,[:,1],2,1)
71
+
ψ2LeftScat = TwoPhotonView(ψScat2,1,[:,1])
72
+
ψ2RightScat = TwoPhotonView(ψScat2,2,[:,1])
73
+
ψ2LeftRightScat = TwoPhotonView(ψScat2,2,1,[:,1])
75
74
nothing #hide
76
75
```
77
76
78
-
For the singlephoton states we have to calculate the twotime scattered distribution as:
77
+
For the single-photon states, we have to calculate the two-time scattered distribution as:
Copy file name to clipboardExpand all lines: docs/src/index.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,13 @@
1
1
# WaveguideQED.jl
2
2
3
-
WaveguideQED.jl is a package for simulating continous fockstates in waveguides. It expands on [`QuantumOptics.jl`](https://qojulia.org/) by adding custom basises, operators, and routines for doing detection.
3
+
WaveguideQED.jl is a package for simulating continuous fockstates in waveguides. It expands on [`QuantumOptics.jl`](https://qojulia.org/) by adding a custom basis, operators, and routines for doing detection.
4
4
5
5
### Dev docs
6
6
Added functionalities:
7
7
*[`WaveguideBasis`](@ref) for representing the waveguide space and the related generator functions: [`zerophoton`](@ref), [`onephoton`](@ref), and [`twophoton`](@ref). Also see [`OnePhotonView`](@ref), [`TwoPhotonView`](@ref), and [`plot_twophoton!`](@ref) for viewing the waveguide data for plotting. Note that [`WaveguideBasis`](@ref) can contain multiple waveguides.
8
-
*[`WaveguideOperator`](@ref) which are specialized operators allowing efficient annihilation and creation operators at each timebin in the waveguide. They are created by giving a basis to [`WaveguideQED.destroy`](@ref) and [`WaveguideQED.create`](@ref)
9
-
* Since the interaction between the waveguide timebin mode $k$ and cavity/emitter is always given as: $a^\dagger w_k - a w_k^\dagger$ there are specially optimized functions for doing these operations called [`CavityWaveguideOperator`](@ref) which are created using a fockbasis and a waveguide basis and the functions [`emission`](@ref) and [`absorption`](@ref).
10
-
*[`Detector`](@ref), [`LazyTensorKet`](@ref), and [`LazySumKet`](@ref) together with [`detect_single_click`](@ref) and [`detect_double_click`](@ref)allows one to do a beamsplitter interference and subsequent detection on photons comming from two waveguides.
8
+
*[`WaveguideOperator`](@ref) which are specialized operators allowing efficient annihilation and creation operators at each time-bin in the waveguide. They are created by giving a basis to [`WaveguideQED.destroy`](@ref) and [`WaveguideQED.create`](@ref)
9
+
* Since the interaction between the waveguide time-bin mode $k$ and cavity/emitter is given as: $a^\dagger w_k - a w_k^\dagger$ there are specially optimized functions for doing these operations called [`CavityWaveguideOperator`](@ref) which are created using a fockbasis and a waveguide basis and the functions [`emission`](@ref) and [`absorption`](@ref).
10
+
*[`Detector`](@ref), [`LazyTensorKet`](@ref), and [`LazySumKet`](@ref), together with [`detect_single_click`](@ref) and [`detect_double_click`](@ref)allow one to do a beamsplitter interference and subsequent detection of photons coming from two waveguides.
0 commit comments