JSA module

Process

class pynumpm.jsa.Process[source]

Enum class used to describe the nonlinear processes. It is used to change the way the pump spectrum is calculated.

Pump

class pynumpm.jsa.Pump(process: pynumpm.jsa.Process)[source]

Pump class. It is used to describe 2D pump functions for the calculation of JSA. The pump is modelled as

\[\alpha(\omega_1, \omega_2) = \mathrm{HG}_n(\omega_1, \omega_2)\cdot \mathrm{exp}\left\lbrace -\frac{(\omega_p - \omega_{p,0})^2}{2\sigma^2}\right\rbrace \cdot \mathrm{Chirp} \cdot \mathrm{filter}\]

Initialize the pump object calling the class and passing a suitable Process element.

The parameters of the pump must be assigned by the user. The following attributes can be modified:

Variables:
  • pump_spectrum
  • wavelength1
  • pump_centre
  • pump_width
  • pump_temporal_mode
  • pump_chirp
  • pump_delay
  • filter_width
Parameters:

process (Process) – Process under investigation. An element of the class pynumpm.jsa.Process.

calculate_pump_spectrum()[source]

This function calculates the pump function.

Returns:matrix containing the pump function in wavelength1 and wavelength2 frequency plane

JSA

class pynumpm.jsa.JSA(phasematching: Union[pynumpm.phasematching.SimplePhasematching2D, pynumpm.phasematching.Phasematching2D], pump: pynumpm.jsa.Pump)[source]
calculate_JSA()[source]

Function to calculate the JSA.

Parameters:pump_width – Pump object. Signal and idler wavelengths of the pump are overwritten to match the one of the

phasematching process :type pump: Pump :return:

calculate_schmidt_decomposition(verbose=False)[source]

Function to calculate the Schmidt decomposition.

Parameters:verbose (bool) – Print to screen the Schmidt number and the purity of the state.
Returns:the Schmidt number.
plot_schmidt_coefficients(ncoeff: int = 20, ax: matplotlib.axes._axes.Axes = None)[source]

Function to plot the first n distribution of the Schmidt coefficients.

Parameters:
  • ncoeff (int) – Number of coefficients to plot. Default: 20
  • ax – Handles to the axis object where to plot.
  • axmatplotlib.axes.Axes
Returns:

plot(ax=None, light_plot=False, normalized=True, title='JSI', plot_pump=False)[source]

Function to plot JSI. Pass ax handle through “ax” to plot in a specified axis environment.

Parameters:
  • ax (matplotlib.pyplot.axes) – Axes handles
  • light_plot (bool) – Flag to allow plotting in the light mode. The light_plot mode is compatible only with linear meshes of the signal/idler wavelengths. Default is False.
  • normalized (bool) – Flag to plot the JSI normalized or unnormalized. Default is True.
  • plot_pump (bool.) – Flag to plot the pump spectrum overlayed as contour plot. Default is False.
  • kwargs
Returns:

the axes handle for the plot

plot_marginals(ax=None, **kwargs)[source]

Function to plot the marginals of the JSI.

Parameters:ax (matplotlib.pyplot.axes) – Axes handles for the two axes where to draw the marginals. The input can be None or a list of the two axes handles. If None, a new plot is generated with two subplots, one for each marginal. Default: None
Returns:the Axes handles