domain_inversions#
- pynlo.utility.chi2.domain_inversions(z, dk, n=1)[source]#
Find the location of the domain inversion boundaries that quasi-phase match (QPM) the given wavenumber mismatch.
- Parameters:
- zfloat or array_like of float
The propagation distance.
- dkfloat or array_like of float
The wavenumber mismatch, or
2*pi/polling period
.- nint, optional
The interpolation order used to calculate the inversion points.
- Returns:
- z_invsndarray of float
The location of all domain inversion boundaries.
- domainsndarray of float
The length of each domain.
- poledndarray of int
The poling status of each domain. A value of 1 indicates an inverted domain. A value of 0 indicates an unpoled region.
Notes
For continuous QPM profiles, the domain boundaries can be calculated by inverting the integral equation that gives the accumulated phase mismatch:
\[\begin{split}2 \pi N[z] &= \int_{z_0}^z \Delta k[z^\prime] dz^\prime = \int_{z_0}^z \frac{2 \pi}{\Lambda[z^\prime]} dz^\prime \\ \text{z}_{inv}[n] &= N^{-1}[n/2]\end{split}\]where \(\Delta k\) is the wavenumber mismatch compensated by poling period \(\Lambda\), \(N\) is the accumulated number of phase cycles, and \(n\) is an integer.