Optical Propagation Methods¶
Janssen implements several propagation methods for simulating light propagation through optical systems. This guide covers the mathematical foundations and when to use each method.
Scalar Diffraction Theory¶
The Helmholtz Equation¶
In free space, monochromatic light satisfies the Helmholtz equation:
$$ (\nabla^2 + k^2) E(\mathbf{r}) = 0 $$
where $k = 2\pi/\lambda$ is the wavenumber. Solutions describe how the electric field propagates from one plane to another.
The Angular Spectrum¶
Any field $E(x, y, z=0)$ can be decomposed into plane waves:
$$ E(x, y, 0) = \iint A(k_x, k_y) e^{i(k_x x + k_y y)} , dk_x , dk_y $$
where $A(k_x, k_y) = \mathcal{F}{E(x, y, 0)}$ is the angular spectrum.
Propagation Regimes¶
The Fresnel Number¶
The Fresnel number determines which propagation regime applies:
$$ N_F = \frac{a^2}{\lambda z} $$
where $a$ is the aperture size and $z$ is the propagation distance.
Propagation regimes as a function of Fresnel number. Near-field (Fresnel) diffraction applies when $N_F > 1$, while far-field (Fraunhofer) diffraction applies when $N_F \ll 1$.¶
Regime |
Fresnel Number |
Method |
|---|---|---|
Near-field |
$N_F > 1$ |
Angular spectrum, Fresnel |
Intermediate |
$N_F \approx 1$ |
Angular spectrum |
Far-field |
$N_F \ll 1$ |
Fraunhofer, angular spectrum |
Angular Spectrum Method¶
Mathematical Foundation¶
After propagation by distance $z$, the angular spectrum becomes:
$$ A(k_x, k_y; z) = A(k_x, k_y; 0) \cdot e^{i k_z z} $$
where $k_z = \sqrt{k^2 - k_x^2 - k_y^2}$ for propagating waves.
The propagated field is:
$$ E(x, y, z) = \mathcal{F}^{-1}\left{ \mathcal{F}{E(x,y,0)} \cdot H(k_x, k_y) \right} $$
where $H(k_x, k_y) = e^{i k_z z}$ is the transfer function.
Angular spectrum propagation. The field is transformed to k-space, multiplied by the transfer function $H(k_x, k_y)$, then transformed back.¶
Implementation¶
from janssen.prop import angular_spectrum
# Propagate field by 1 mm
output = angular_spectrum(
input_wavefront,
propagation_distance=1e-3,
)
Evanescent Wave Handling¶
For $k_x^2 + k_y^2 > k^2$, the wave is evanescent with:
$$ k_z = i\sqrt{k_x^2 + k_y^2 - k^2} $$
Janssen automatically handles evanescent waves by setting them to zero (they decay exponentially and don’t contribute at macroscopic distances).
Fresnel Propagation¶
The Fresnel Approximation¶
For paraxial beams where $k_x, k_y \ll k$:
$$ k_z \approx k - \frac{k_x^2 + k_y^2}{2k} $$
This gives the Fresnel transfer function:
$$ H_F(k_x, k_y) = e^{ikz} \exp\left(-i\frac{z}{2k}(k_x^2 + k_y^2)\right) $$
Convolution Form¶
The Fresnel integral can also be written as a convolution:
$$ E(x, y, z) = E(x, y, 0) * h(x, y, z) $$
where the impulse response is:
$$ h(x, y, z) = \frac{e^{ikz}}{i\lambda z} \exp\left(\frac{ik(x^2+y^2)}{2z}\right) $$
Validity of Fresnel approximation. Errors become significant when $N_F < 0.1$ (transition to Fraunhofer) or when aperture angles exceed the paraxial limit.¶
Implementation¶
from janssen.prop import fresnel_propagation
output = fresnel_propagation(
input_wavefront,
propagation_distance=10e-3,
)
Fraunhofer Propagation¶
The Far-Field Limit¶
When $N_F \ll 1$, the field becomes a scaled Fourier transform:
$$ E(x, y, z) = \frac{e^{ikz}}{i\lambda z} e^{ik(x^2+y^2)/2z} \mathcal{F}{E}\left(\frac{x}{\lambda z}, \frac{y}{\lambda z}\right) $$
Relationship to Lens Focusing¶
A lens performs a Fourier transform at its focal plane. For focal length $f$:
$$ E(x_f, y_f) \propto \mathcal{F}{E_{\text{pupil}}} \left(\frac{x_f}{\lambda f}, \frac{y_f}{\lambda f}\right) $$
Lens Propagation¶
Thin Lens Model¶
A thin lens introduces a quadratic phase:
$$ t_{\text{lens}}(x, y) = \exp\left(-\frac{ik(x^2+y^2)}{2f}\right) $$
Thin lens propagation model. Light propagates to the lens (distance $d_1$), passes through (quadratic phase), then propagates to the image plane (distance $d_2$).¶
Implementation¶
from janssen.prop import lens_propagation
output = lens_propagation(
input_wavefront,
focal_length=10e-3,
object_distance=20e-3,
)
Choosing the Right Method¶
Decision Guide¶
Angular Spectrum: Most general, works at all distances
Best for: near-field, high-NA systems, tight focusing
Limitation: requires sufficient sampling (Nyquist)
Fresnel: Efficient for moderate distances
Best for: paraxial systems, imaging
Limitation: breaks down at high NA
Fraunhofer: Fastest for far-field
Best for: focal plane calculations, far-field patterns
Limitation: only valid when $N_F \ll 1$
Sampling Requirements¶
The angular spectrum method requires:
$$ \Delta x < \frac{\lambda z}{L} $$
where $L$ is the field of view. Janssen automatically checks sampling and warns if insufficient.
Numerical Considerations¶
Periodic Boundary Conditions¶
FFT-based methods assume periodic boundaries. To avoid wraparound artifacts:
Pad arrays to at least $2\times$ the feature size
Use absorbing boundaries for long propagations
Precision¶
Janssen uses 64-bit complex arithmetic by default for phase accuracy. For short propagations, 32-bit may suffice.
References¶
Goodman, J. W. “Introduction to Fourier Optics” (2017)
Born, M. & Wolf, E. “Principles of Optics” (1999)
Voelz, D. G. “Computational Fourier Optics: A MATLAB Tutorial” (2011)