Gaussian Beam Propagation#

Create a scalar Gaussian beam at its waist and propagate it with the angular spectrum method. All spatial values in this example use millimeters.

[1]:
from __future__ import annotations

import matplotlib.pyplot as plt

import optiland.backend as be
from optiland.physical_optics import gaussian_field
[2]:
wavelength = 0.0006328
field = gaussian_field(
    shape=(256, 256),
    dx=0.01,
    wavelength=wavelength,
    waist_radius=0.25,
)
propagated = field.propagate(200.0)
[3]:
x, y = propagated.coordinates()
extent = [
    float(be.to_numpy(x[0])),
    float(be.to_numpy(x[-1])),
    float(be.to_numpy(y[0])),
    float(be.to_numpy(y[-1])),
]

fig, axes = plt.subplots(1, 2, figsize=(9, 4), constrained_layout=True)
for axis, beam, title in zip(
    axes,
    (field, propagated),
    ("Waist plane", "After 200 mm"),
    strict=True,
):
    image = axis.imshow(
        be.to_numpy(beam.intensity),
        extent=extent,
        origin="lower",
        cmap="inferno",
    )
    axis.set(title=title, xlabel="x [mm]", ylabel="y [mm]")
    fig.colorbar(image, ax=axis, label="Relative intensity")

plt.show()
../_images/examples_gaussian_beam_propagation_3_0.png