sim icon

Laguerre-Gaussian Beams

Laguerre-Gaussian (LG) beams, sometimes referred to as doughnut shaped beams, are circularly symmetric solutions to the wave equation. Higher order modes appear as concentric rings. Beams with non-zero radial order carry orbital angular momentum and appear with a dark spot in the centre of the beam due to the phase discontinuity.

The following visualisation shows linearly polarized LG mode solutions to the paraxial wave equation. The field amplitude at any plane along the beam axis is proportional to \[U(R, \phi) \propto R^{|l|} L_p^{|l|}(R^2) \exp(il\phi)\exp(-i(2p + l + 1)\arctan(z/z_R))\] where \(R(z)\) and \(\phi\) are the normalized radial and angular coordinates at plane \(z\), \(L_p^{|l|}\) are the Laguerre polynomials, \(z_R\) is the Rayleigh range and \(l\) and \(p\) are the radial and azimuthal mode numbers.

The left panel shows the beam in 3-D space. The top panel shows the amplitude/intensity profile of the beam and the bottom panel shows the phase of the electric field.

Azimuthal order:
Radial order:
Beam waist:
Speed:
Resolution:
Intensity:
Scale:
Display:
Orthographic:

Code Samples

Matlab
p = 1;                  % Degree of LG mode
l = 2;                  % Order of LG mode
w0 = 2.0;               % Beam waist
k = 2*pi/532.0e-9;      % Wavenumber of light

zR = k*w0^2/2;      % Calculate the Rayleigh range

% Setup the cartesian grid for the plot at plane z
z = 0.0;
[xx, yy] = meshgrid(linspace(-5, 5), linspace(-5, 5));

% Calculate the cylindrical coordinates
[phi, r] = cart2pol(xx, yy);

U00 = 1/(1 + 1i*z/zR) .* exp(-r.^2/w0^2./(1 + 1i*z/zR));
w = w0 * sqrt(1 + z.^2/zR^2);
R = sqrt(2)*r./w;

% Lpl from OT toolbox (Nieminen et al., 2004)
Lpl = nchoosek(p+l,p) * ones(size(R));   % x = R(r, z).^2
for m = 1:p
    Lpl = Lpl + (-1)^m/factorial(m) * nchoosek(p+l,p-m) * R.^(2*m);
end

U = U00.*R.^l.*Lpl.*exp(1i*l*phi).*exp(-1i*(2*p + l + 1)*atan(z/zR));

figure;
subplot(1, 2, 1);
imagesc(abs(U).^2);
title('Intensity');
subplot(1, 2, 2);
imagesc(angle(U));
title('Phase');
Python
import numpy as np
import matplotlib.pyplot as plt
from scipy.misc import comb, factorial

p = 1;                  # Degree of LG mode
l = 2;                  # Order of LG mode
w0 = 2.0;               # Beam waist
k = 2*np.pi/532.0e-9;   # Wavenumber of light

zR = k*w0**2.0/2;       # Calculate the Rayleigh range

# Setup the cartesian grid for the plot at plane z
z = 0.0;
xx, yy = np.meshgrid(np.linspace(-5, 5), np.linspace(-5, 5));

# Calculate the cylindrical coordinates
r = np.sqrt(xx**2 + yy**2);
phi = np.arctan2(yy, xx);

U00 = 1.0/(1 + 1j*z/zR) * np.exp(-r**2.0/w0**2/(1 + 1j*z/zR));
w = w0 * np.sqrt(1.0 + z**2/zR**2);
R = np.sqrt(2.0)*r/w;

# Lpl from OT toolbox (Nieminen et al., 2004)
Lpl = comb(p+l,p) * np.ones(np.shape(R));   # x = R(r, z).^2
for m in xrange(1, p+1):
    Lpl = Lpl + (-1.0)**m/factorial(m) * comb(p+l,p-m) * R**(2.0*m);

U = U00*R**l*Lpl*np.exp(1j*l*phi)*np.exp(-1j*(2*p + l + 1)*np.arctan(z/zR));

plt.figure()
plt.title('Intensity')
plt.pcolor(abs(U)**2);
plt.axis('equal')

plt.figure()
plt.title('Phase')
plt.pcolor(np.angle(U)**2);
plt.axis('equal')

plt.show()