This example demonstrates how to model a realistic photon source and use it as input to qINTERCONNECT. The photon generation rate and wavefunction are calculated for a Type-I SPDC process in a localized segment of length \(L\) with a \(\chi^{(2)}\) nonlinearity in a straight waveguide, where pump photons are converted to pairs of signal and idler photons such that energy conservation and phase matching conditions are satisfied. Interference between photons from two independent sources is demonstrated for identical and non-identical sources.

## Overview

Understand the simulation workflow and key results

The simulations in this example are performed with the MODE and qINTERCONNECT solvers. The simulation is set up and run through a Lumerical script file in MODE. Next, a python script is run to generate the state that is used as an input to qINTERCONNECT. The qINTERCONNECT simulation is then run through the Python API, and can be either run directly in INTERCONNECT or in an external Python environment. Since qINTERCONNECT requires an INTERCONNECT GUI license to run, at least two GUI licenses are required to run qINTERCONNECT directly from the INTERCONNECT environment. Documentation for the Python API is available here .

Spontaneous parametric down-conversion is a nonlinear optical process where a photon at the pump frequency is converted to a pair of photons, labelled signal and idler, such that energy is conserved and phase matching conditions are satisfied. In Type-I SPDC, the signal and idler photons have the same polarization, which is orthogonal to the pump polarization. Spectral correlations between the signal and idler photon are described by the biphoton wavefunction, which limit the indistinguishability of single photon sources.

Once the biphoton wavefunction is generated, it can be used as the input to a circuit in qINTERCONNECT. For instance, a drop-ring filter can be used to separate the two photons from the source.

### Step 1: Nonlinear Mode Overlap and Dispersion Curve Fitting

The first step is to calculate the effective nonlinear mode overlap area, which determines the strength of the nonlinear interaction. Then, dispersion curves are generated for the pump and the signal/idler modes, which are then quadratically fitted.

### Step 2: Pair Generation Rate and Biphoton Wavefunction

The photon pair generation rate and biphoton wavefunction describing the source are calculated from the effective nonlinear mode overlap area and the quadratic fit parameters from the previous step.

### Step 3: qINTERCONNECT Simulation

The biphoton wavefunction is used as an input to a qINTERCONNECT simulation.

## Run and results

Instructions for running the model and discussion of key results

### Step 1: Nonlinear Mode Overlap and Dispersion Curve Fitting

- Open and run the script [[run_mode_calcs.lsf]] in the MODE environment.

The script [[run_mode_calcs.lsf]] loads the layout file and performs a sweep to calculate the inverse effective coupling area [1],

$$

A^{-1}\left(\lambda_1, \lambda_2, \lambda_1+\lambda_2\right)

$$

which is proportional to the overlap of the modes involved in the spontaneous-parametric down-conversion. This information is saved to the text document [[ inv_A_mat.txt]] . Next, the pump, signal and idler modes are swept to produce dispersion curves, which are shown in the following figure.

The dispersion curves are then quadratically fitted and the coefficients are saved to [[fit_params.txt]].

### Step 2: Pair Generation Rate and Biphoton Wavefunction

- Open and run the script [[generate_biphoton_wavefunction.py]] in the MODE environment.

In this step the photon pair generation rate and biphoton wavefunction are calculated using the parameters from the previous step. The user-defined pump envelope function is shown, as well as the phase matching function, which is determine from the source geometry. The product of these is the biphoton wavefunction, which is also shown below. Finally, a frequency-discretized biphoton wavefunction is also shown, which can be used as the input to a circuit in qINTERCONNECT as shown in the next step.

### Step 3: qINTERCONNECT Simulation

- Open and run the script [[simulate_biphoton_wavefunction.py]] in the MODE environment.

The biphoton wavefunction is used to generate a ket vector that describes the state of the emitted photons in a discrete frequency Fock basis. The ket vector is then used as an input to a drop-ring filter in qINTERCONNECT. Running the python script executes the simulation and brings up the following window, displaying the probabilities of success for detecting either one or two photons from the drop port of the ring. Additional documentation for running simulations in qINTERCONNECT is available here .

## Important model settings

Description of important objects and settings used in this model

### Common settings for Step 1

** pump_mode_id: ** The mode ID number of the chosen pump mode.

** signal_mode_id: ** The mode ID number of the chosen signal/idler mode.

** N_sweep: ** Number of frequency points used for the mode overlap calculation, must be at least 2. Values are interpolated for the generation of the biphoton wavefunction.

** overlap_threshold: ** The minimum threshold for the overlap between modes calculated at different frequencies. An error is reported if no suitable mode is found. Recommended value of 0.5.

** report_mask: ** Set this to 1 to additionally return a mask for the region with a non-zero \(\chi^{(2)}\) linearity.

### Common settings for Step 2

** frequencies ** : Number of frequency points used in the discretization of the biphoton wavefunction.

** interaction_length: ** The length of the nonlinear region of the waveguide. This has an important impact on the phase-matching conditions and the pair generation rate.

** chi2_bar ** : The strength of the second-order nonlinear susceptibility tensor \(\chi^{(2)}\).

** pump_wavefunction ** : A lambda function characterizing the pump envelope shape.

### Common settings for Step 3

** channel_number: ** The channel number of the qINTERCONNECT circuit that the photon source is emitted into.

** threshold: ** Minimum amplitude for each state in the ket vector describing the biphoton wavefunction.

## Updating the model with your parameters

Instructions for updating the model based on your device parameters

### Geometry

The width and height of each component of the ridge waveguide can be adjusted, which will impact the properties of the modes involved in the calculation.

### Nonlinearity

In addition to adjusting the strength of the nonlinearity, the orientation of the nonlinear crystal can be adjusted. By default, the orientation of the crystal is rotated in the x-z plane with respect to the waveguide coordinates in MODE.

### Material Properties

The refractive index values of the materials in the ridge waveguide can be changed by adjusting the properties of the model objects.

## Taking the model further

Information and tips for users that want to further customize the model

### Custom qINTERCONNECT Simulation

The biphoton wavefunctions produced from this model can be used as inputs to any qINTERCONNECT simulation by updating the parameters in [[run_qintc_simulation.py]].

## Additional resources

### Related publications

Reference and related publication format:

- Yang, Z., Liscidini, M. & Sipe, J.E. Spontaneous parametric down-conversion in waveguides: A backward Heisenberg picture approach.
*Physical Review A***77**, 033808 (2008).