Laguerre higher order modes

Finesse does not support Laguerre-Gaussian modes directly, but there are some tools for generating both Helical and Sinusoidal LG modes modes. These can be used for decomposition of a beam into LG modes or comparing to eigenmode solutions from Finesse, which may be in the form of Laguerre-Gaussian modes.

Here are the first few sinusoidal LG modes:

import finesse
from finesse.cymath import laguerre as lg
import numpy as np
import matplotlib.pyplot as plt

finesse.init_plotting()

fig, axes = plt.subplots(3, 3, figsize=(8, 8))

w0 = 1e-3
z = 0
x = np.linspace(-4 * w0, +4 * w0, 50)
y = np.linspace(-4 * w0, +4 * w0, 51)
X, Y = np.meshgrid(x, y)
helical = False  # whether to plot helical LG modes or sinusoidal LG modes

for i, p in enumerate([0, 1, 2]):
    for j, l in enumerate([0, 1, 2]):
        E = lg.compute_lg_mode(p, l, w0, z, 1064e-9, x, y, helical)
        intensity = np.abs(E) ** 2
        ax = axes[i, j]
        C = ax.contourf(X, Y, intensity.T, levels=100)
        C.set_edgecolor("face")
        ax.set_title(f"LG Mode p={p}, l={l}")
        ax.set_aspect("equal")

for ax in axes.flatten():
    ax.set_xticks([])
    ax.set_yticks([])

plt.tight_layout()
plt.show()
../../_images/laguerre_0_0.svg

and the Helical modes:

helical = True

for i, p in enumerate([0, 1, 2]):
    for j, l in enumerate([0, 1, 2]):
        E = lg.compute_lg_mode(p, l, w0, z, 1064e-9, x, y, helical)
        intensity = np.abs(E) ** 2
        ax = axes[i, j]
        C = ax.contourf(X, Y, intensity.T, levels=100)
        C.set_edgecolor("face")
        ax.set_title(f"LG Mode p={p}, l={l}")
        ax.set_aspect("equal")

for ax in axes.flatten():
    ax.set_xticks([])
    ax.set_yticks([])

plt.tight_layout()
plt.show()
<Figure size 576x355.968 with 0 Axes>