Fotini is a general photon simulation package, based on continuous-mode quantum mechanics. It is being actively developed for the Figueroa Research Group. The purpose of fotini is to enable the verification and debugging of optical circuits, enabling the following workflow:
- Design an optical circuits with the desired properties.
- Code the optical circuit in fotini.
- Use fotini to generate the expected output statistics. Verify that the desired properties hold.
- Measure experimental output statistics, and see whether they are consistent with those computed by fotini.
- Debug, using fotini as a debugging aide to identify problems in the physical setup.
Fotini works through the efficient and correct handling of Fock States.
It computes output statistics using continuous-mode quantum mechanics, and thus
for the supported optical circuit elements, reproduces all important quantum
mechanical effects. While it supports general spectral amplitudes for a
particular fock state, it works particularly efficiently with spectral amplitudes
expressible as C_1*exp(Σa_it_i^2 + Σb_i*t_i + c)
. These covers a important
variety of real-world usage.
The Hong-Ou Mandel effect has the set-up seen in figure (1).
Fig. 1 Hong-Ou Mandel Effect SetupIf we place one photon at each input, there are three possible cases:
- Both photons exit through the upper output.
- Both photons exit through the right output.
- One photons exits through each output.
We can measure the probability of each case. Interestingly, the timing of the arrival of the photons affects the probability. This is not an effect expected from classical descriptions of light.
We place a gaussian photon with angular frequency ω=1k rad/s
, bandwidth Δ=1
on the first input
of the beam-splitter arriving at time 0
. This specifies Φ_1
. The second photon, Φ_2
, also
has angular frequency ω=1k rad/s
and bandwidth Δ=1
, but arrives at time Δt
. When Δt
is small,
a measurable inteference effect appears, and the case in which one photon is measured at each output
is no longer possible. We sample a variety of Δt
and plot the probability of the three cases. Figure (2)
is a plot of the results.
The code to produce perform the calculations and produce the figure is in examples/hom-0.py
.
With fotini, we can run experiments with more complex inputs that might not be easily achievable in the real-world. Using the same experimental set-up as in figure (1), we can instead specify the following inputs:
- For
Φ_1
, we place 2 Gaussian Photons, with angular frequencyω=1k rad/s
, bandwidthΔ=1
, and arrival timet_0=0
. - For
Φ_2
, we place 3 Gaussian Photons, with angular frequencyω=1k rad/s
, bandwidthΔ=1
, and arrival timet_0=Δt
.
We then vary Δt
and see how the output probabilities for the various possible
output-states before. As we are now placing more photons at each inputs, there
are more possible output states. In the plot, the output state (n, m)
represents that n
photons were measured at the upper output and m
photons
were measured on the right output. Figure (3) is a plot of the results. We can
see much more complex interference behaviour arising from more photons at each input.
The code to produce perform the calculations and produce the figure is in examples/hom-1.py
.
The Mach-Zender interfemeter set-up can be seen in figure (4).
Fig. 4 Mach-Zedner InterferometerThere are two possible cases:
- A photon is measured in the upper output.
- A photon is measured in the right output.
We place a photon with angular frequency ω=1 Mrad/s
, bandwidth Δ=1
on the
first input of the beam-splitter arriving at time 0
at the input. We then
vary the distance d
and plot how the probability of each of the output cases changes. The
plot results are shown in figure (5).
Fotini also supports more complex set-ups in reasonable time. We can perform experiments with the set-up shown in figure (6).
Fig. 6 Four-Way Interference Set-UpBy varying the time the photon on the third input arrives, we can produce the plot of the probabilities for each of the output cases seen in figure (7). As there are 25 labels, we omit the legend. Some probabilities may be completely overlapped by another probability due to symmetry in the output cases and thus might not be visible in the plot.
Fig. 6 Four Way Interference StatisticsThe code to produce perform the calculations and produce the figure is in examples/four-way.py
.