Laguerre Gaussian Transverse Profile#
Used to define a Laguerre-Gaussian transverse laser profile. Laguerre-Gaussian modes are a family of solutions to the paraxial wave equation written in cylindrical coordinates. The modes are characterised by a radial index \(p\) and an azimuthal index \(m\).
- class lasy.profiles.transverse.LaguerreGaussianTransverseProfile(w_0, p, m, wavelength, z_foc=0)[source]#
A high-order Gaussian laser pulse expressed in the Laguerre-Gaussian formalism.
Definition is according to Siegman “Lasers” pg. 646 eq. 64.
More precisely, the transverse envelope (to be used in the
CombinedLongitudinalTransverseLaserclass) corresponds to:\[\mathcal{T}(x, y) = \, \mathcal{L}_{p,m} (x) \, \exp(i \Phi)\]with
\[ \begin{align}\begin{aligned}\mathcal{L}_{p,m}(x) = A \left ( \frac{\sqrt{2}r}{w(z)} \right)^m l_{p,m} \left ( \frac{2 r^2}{w^2(z)} \right) \exp{\left( -\frac{r^2}{w^2(z)}\right)} \exp{ \left ( -i k_0 \frac{r^2}{2 R(z)} \right )}\\w(z) = w_{0} \sqrt{1 + \left( \frac{z}{Z_R}\right)^2}\\A = \frac{1}{w(z)} \sqrt{\frac{2 p!}{\pi (p + m)!}}\\R(z) = z + \frac{Z_R^2}{z}\\\Phi(z) = \left(2 p + m + 1\right) \arctan\left({\frac{z}{Z_R}}\right)\\Z_R = \frac{\pi w_0^2}{\lambda_0}\end{aligned}\end{align} \]where \(l_{p,m}\) is the Laguerre polynomial of radial order \(p\) and azimuthal order \(m\).
The z-depedence shown in the above equations is required to correctly define the electric field of the transverse profile relative to that of the pulse at the focus. The absolute z position will be overwritten when creating a laser object.
- Parameters:
- w_0float (in meter)
The waist of the laser pulse, i.e. \(w_{0}\) in the above formula.
- pint (dimensionless)
The order of Laguerre polynomial in the x direction i.e. \(m\) in the above formula.
- mint (dimensionless)
The order of Laguerre polynomial in the y direction i.e. \(n\) in the above formula.
- wavelengthfloat (in meter)
The main laser wavelength \(\lambda_0\) of the laser.
- z_focfloat (in meter), optional
Position of the focal plane. (The laser pulse is initialized at
z=0.)
Warning
In order to initialize the pulse out of focus, you can either:
Use a non-zero
z_focUse
z_foc=0(i.e. initialize the pulse at focus) and then calllaser.propagate(-z_foc)
Both methods are in principle equivalent, but note that the first method uses the paraxial approximation, while the second method does not make this approximation.
Examples
>>> import matplotlib.pyplot as plt >>> from lasy.backend import xp, to_cpu >>> from lasy.profiles.transverse.laguerre_gaussian_profile import ( ... LaguerreGaussianTransverseProfile, ... ) >>> # Create evaluation grid >>> xy = xp.linspace(-30e-6, 30e-6, 200) >>> X, Y = xp.meshgrid(xy, xy) >>> # Create an array of plots >>> fig, ax = plt.subplots(3, 6, figsize=(10, 5), tight_layout=True) >>> extent = (1e6 * xy[0], 1e6 * xy[-1], 1e6 * xy[0], 1e6 * xy[-1]) >>> for p in range(3): >>> for m in range(3): >>> transverse_profile = LaguerreGaussianTransverseProfile( ... w_0 = 10e-6, # m ... p = p, # ... m = m, # ... wavelength = 0.8e-6, # m ... ) ... intensity = xp.abs(transverse_profile.evaluate(X,Y))**2 ... vmax_intensity = xp.max(intensity) >>> ax[p,m].imshow(to_cpu(intensity),extent=extent,cmap='bone_r',vmin=0,vmax=vmax_intensity) >>> ax[p,m].set_title('Inten: p,m = %i,%i' %(p,m)) >>> phase = xp.angle(transverse_profile.evaluate(X,Y)) ... vmax_phase = xp.max(xp.abs(phase)) >>> ax[p,m+3].imshow(to_cpu(phase),extent=extent,cmap='seismic',vmin=-vmax_phase,vmax=vmax_phase) >>> ax[p,m+3].set_title('Phase: p,m = %i,%i' %(p,m)) >>> if p==2: >>> ax[p,m].set_xlabel("x (µm)") >>> ax[p,m+3].set_xlabel("x (µm)") >>> else: >>> ax[p,m].set_xticks([]) >>> ax[p,m+3].set_xticks([]) >>> if m==0: >>> ax[p,m].set_ylabel("y (µm)") >>> ax[p,m+3].set_yticks([]) >>> else: >>> ax[p,m].set_yticks([]) >>> ax[p,m+3].set_yticks([])