DFG Integrand

Difference frequency generation module

Defines:
  • The dfg_problem, a class which can be intergrated by the pyNLO ODESolve
  • The fftcomputer, which handles FFTs using pyFFTW
  • A helper class, dfg_results_interface, which provides a Pulse-class based wrapper around the dfg results.

Authors: Dan Maser, Gabe Ycas

class pynlo.interactions.ThreeWaveMixing.DFG_integrand.dfg_problem(pump_in, sgnl_in, crystal_in, disable_SPM=False, pump_waist=1e-05, apply_gouy_phase=False, plot_beam_overlaps=False)[source]

This class defines the integrand for a DFG or OPO parametric inteaction. Following Eqn (8) in Seres & Hebling, “Nonstationary theory of synchronously pumped femtosecond optical parametric oscillators”, JOSA B Vol 17 No 5, 2000.

gen_jl(y)[source]

Following Eqn (8) in Seres & Hebling, “Nonstationary theory of synchronously pumped femtosecond optical parametric oscillators”, JOSA B Vol 17 No 5, 2000. A call to this function updates the :math: chi_3 mixing terms used for four-wave mixing.

Parameters:y (array-like, shape is 3 * NPTS) – Concatenated pump, signal, and idler fields
poling(x)[source]

Helper function to get sign of :math: d_ extrm{eff} at position :math: x in the crystal. Uses self.crystal’s pp function.

Returns:x – Sign (+1 or -1) of :math: d_ extrm{eff}.
Return type:int
process_stepper_output(solver_out)[source]

Post-process output of ODE solver.

The saved data from an ODE solved are the pump, signal, and idler in the dispersionless reference frame. To see the pulses “as they really are”, this dispersion must be added back in.

Parameters:solver_out – Output class instance from ODESolve
Returns:Instance of dfg_results_interface class
Return type:dfg_results
class pynlo.interactions.ThreeWaveMixing.DFG_integrand.dfg_results_interface(integrand_instance, pump, sgnl, idlr, z)[source]

Interface to output of DFG solver. This class provides a clean way of working with the DFG field using the Pulse class.

Notes

After initialization, calling:

get_{pump,sgnl,idlr}(n)

will set the dfg results class’ “pulse” instance to the appropriate field and return it.

Example

To plot the 10th saved signal field, you would call:

p = dfg_results_interface.get_sgnl(10-1)
plt.plot(p.T_ps, abs(p.AT)**2 )

To get the actual position (z [meters]) that this corresponds to, call:

z = dfg_results_interface.get_z(10-1)