Code Monkey home page Code Monkey logo

fotini's Introduction

fotini

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:

  1. Design an optical circuits with the desired properties.
  2. Code the optical circuit in fotini.
  3. Use fotini to generate the expected output statistics. Verify that the desired properties hold.
  4. Measure experimental output statistics, and see whether they are consistent with those computed by fotini.
  5. 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.

Example Usage

Reproduction of Hong-Ou Mandel Effect

The Hong-Ou Mandel effect has the set-up seen in figure (1).

HOM Setup

Fig. 1 Hong-Ou Mandel Effect Setup

If we place one photon at each input, there are three possible cases:

  1. Both photons exit through the upper output.
  2. Both photons exit through the right output.
  3. 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.

HOM-0 Results

Fig. 2 Hong-Ou Mandel Effect with a Single Photon at Each Input

The code to produce perform the calculations and produce the figure is in examples/hom-0.py.

Hong-Ou Mandel Effect with More Photons

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:

  1. For Φ_1, we place 2 Gaussian Photons, with angular frequency ω=1k rad/s, bandwidth Δ=1, and arrival time t_0=0.
  2. For Φ_2, we place 3 Gaussian Photons, with angular frequency ω=1k rad/s, bandwidth Δ=1, and arrival time t_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.

HOM-1 Results

Fig. 3 Hong-Ou Mandel Effect with Multiple Photons at Each Input

The code to produce perform the calculations and produce the figure is in examples/hom-1.py.

Mach-Zender Interferometer

The Mach-Zender interfemeter set-up can be seen in figure (4).

Mach-Zender Interferometer Set-Up

Fig. 4 Mach-Zedner Interferometer

There are two possible cases:

  1. A photon is measured in the upper output.
  2. 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).

Mach-Zender Interferometer Results

Fig. 5 Mach-Zedner Interferometer Statistics

Four-Way Photon Interference

Fotini also supports more complex set-ups in reasonable time. We can perform experiments with the set-up shown in figure (6).

Four-Way Set-Up

Fig. 6 Four-Way Interference Set-Up

By 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.

Four-Way Interference Statistics

Fig. 6 Four Way Interference Statistics

The code to produce perform the calculations and produce the figure is in examples/four-way.py.

fotini's People

Contributors

giorgianb avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.