UPE#
- class pynlo.model.UPE(pulse, mode)[source]#
Bases:
Model
A model for simulating single-mode pulse propagation with the unidirectional propagation equation (UPE).
This model simultaneously implements both 2nd- and 3rd-order nonlinearities.
See also
Model
Documentation of
simulate()
and other inherited methods.
Notes
Multiplication of functions in the time domain, an operation intrinsic to nonlinear interactions, is equivalent to convolution in the frequency domain. The support of a convolution is the sum of the support of its parts. In general, 2nd- and 3rd-order processes in the time domain need 2x and 3x the number of points in the frequency domain to avoid aliasing.
By default, Pulse objects only initialize the minimum number of points necessary to represent the real-valued time-domain pulse (i.e., 1x). While this minimizes the numerical complexity of individual nonlinear operations, aliasing can introduce systematic error. More points can be generated for a specific Pulse object during initialization, or through its
rtf_grids()
method, by setting the alias parameter greater than 1. Anti-aliasing is not always necessary as phase matching can suppress the aliased interactions, but it is best practice to verify such behavior on a case-by-case basis.
Methods#
|
Propagate the given pulse spectrum from z to z_stop using an adaptive step size algorithm. |
|
The action of the nonlinear operator on the given pulse spectrum. |
The action of the nonlinear operator on the given pulse spectrum. |
|
|
Update all z-dependent nonlinear parameters. |
|
Update the poled sign of the 2nd-order nonlinearity. |