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)