High-NA Vector Focusing¶
At high numerical apertures (NA > 0.7), scalar diffraction theory breaks down. Janssen implements the Richards-Wolf vector diffraction integrals for accurate focal field calculations.
Beyond the Paraxial Approximation¶
Why Vector Optics?¶
At high NA:
Depolarization: Light can have significant $E_z$ components
Apodization: Fresnel transmission varies across the aperture
Vectorial focusing: Electric field direction matters
Geometry for Richards-Wolf integrals. Light converges from the pupil plane to the focal region. The integration is over all angles up to $\theta_{\max} = \arcsin(\text{NA})$.¶
Numerical Aperture Effects¶
NA |
$\theta_{\max}$ |
$E_z/E_x$ (radial pol.) |
Notes |
|---|---|---|---|
0.5 |
30° |
~15% |
Paraxial still reasonable |
0.7 |
44° |
~30% |
Significant vector effects |
0.9 |
64° |
~60% |
Strong $E_z$ component |
1.4 (oil) |
68° |
~75% |
Immersion objective |
Richards-Wolf Diffraction Integrals¶
Mathematical Formulation¶
The electric field near focus is:
$$ \vec{E}(\rho_f, \phi_f, z_f) = -\frac{ikf}{2\pi} \int_0^{\theta_{\max}} \int_0^{2\pi} \sqrt{\cos\theta} , \mathbf{P}(\theta, \phi) \cdot \vec{E}_{\text{pupil}}(\theta, \phi) $$
$$ \times e^{ikz_f\cos\theta} e^{ik\rho_f\sin\theta\cos(\phi-\phi_f)} \sin\theta , d\phi , d\theta $$
where:
$f$ is the focal length
$\theta$ is the convergence angle
$\mathbf{P}(\theta, \phi)$ is the polarization rotation matrix
$\vec{E}_{\text{pupil}}$ is the pupil field
The Polarization Matrix¶
The matrix $\mathbf{P}$ accounts for how the electric field rotates as light refracts through the lens:
$$ \mathbf{P} = \begin{pmatrix} \cos\theta\cos^2\phi + \sin^2\phi & (\cos\theta - 1)\cos\phi\sin\phi & -\sin\theta\cos\phi \ (\cos\theta - 1)\cos\phi\sin\phi & \cos\theta\sin^2\phi + \cos^2\phi & -\sin\theta\sin\phi \ \sin\theta\cos\phi & \sin\theta\sin\phi & \cos\theta \end{pmatrix} $$
Focal Field Components¶
Three-Component Electric Field¶
At high NA, all three components $(E_x, E_y, E_z)$ can be significant:
Electric field components at the focal plane for x-polarized input at NA=0.9. (a) $|E_x|^2$ dominates, (b) $|E_y|^2$ appears at corners, (c) $|E_z|^2$ has two lobes along polarization direction.¶
Implementation¶
from janssen.prop import vector_focusing
# Calculate 3D focal field
focal_field = vector_focusing(
pupil_field=input_field,
numerical_aperture=0.9,
focal_length=3e-3,
wavelength=632.8e-9,
focal_grid_size=(64, 64, 32), # (x, y, z)
focal_extent=(2e-6, 2e-6, 4e-6), # Physical size
)
# Access field components
Ex = focal_field.Ex # Shape: (64, 64, 32)
Ey = focal_field.Ey
Ez = focal_field.Ez
# Total intensity
I_total = jnp.abs(Ex)**2 + jnp.abs(Ey)**2 + jnp.abs(Ez)**2
Polarization Effects¶
Input Polarization States¶
Different input polarizations create different focal distributions:
Focal intensity distributions for different input polarizations at NA=0.9. (a) Linear x: elongated along x, (b) circular: rotationally symmetric, (c) radial: strong $E_z$ and donut shape, (d) azimuthal: donut with only transverse field.¶
Polarization |
Focal Shape |
$E_z$ Content |
Application |
|---|---|---|---|
Linear |
Elongated |
Moderate |
Standard imaging |
Circular |
Symmetric |
Moderate |
Isotropic resolution |
Radial |
Donut + $E_z$ |
Strong |
STED, $z$-sensitive |
Azimuthal |
Donut |
Zero |
Transverse field only |
Implementation¶
from janssen.optics import polarizer_jones
# Create radially polarized pupil field
radial_pupil = create_radial_polarization(
grid_size=(256, 256),
pupil_radius=1.0,
)
# Or convert from scalar field
from janssen.models import vortex_beam
scalar_field = vortex_beam(
wavelength=632.8e-9,
grid_size=(256, 256),
dx=10e-6,
topological_charge=1,
)
# Apply polarization
polarized_field = polarizer_jones(
field=scalar_field,
jones_vector=[1.0, 0.0], # x-polarized
)
Apodization¶
Aplanatic Condition¶
For an aplanatic (aberration-free) lens, the apodization function is:
$$ A(\theta) = \sqrt{\cos\theta} $$
This appears naturally in the Richards-Wolf integrals and accounts for the Fresnel transmission coefficients.
Effect of apodization on focal spot. (a) Uniform apodization creates side lobes, (b) aplanatic $\sqrt{\cos\theta}$ is standard, (c) Gaussian apodization reduces side lobes but broadens spot.¶
Custom Apodization¶
from janssen.optics import gaussian_apodizer
# Apply Gaussian apodization for side lobe reduction
apodized_pupil = gaussian_apodizer(
pupil_field=input_field,
fill_factor=0.8, # Gaussian width relative to pupil
)
Practical Considerations¶
Sampling Requirements¶
The focal field requires sufficient sampling in both pupil and focal planes:
Pupil: $\Delta\theta \lesssim \lambda / (10 \cdot \text{spot size})$
Focal: $\Delta x \lesssim \lambda / (4 \cdot \text{NA})$
Computational Cost¶
Richards-Wolf integration is computationally intensive:
Grid Size |
Evaluation Points |
Time (GPU) |
|---|---|---|
64×64×32 |
131,072 |
~0.5 s |
128×128×64 |
1,048,576 |
~2 s |
256×256×128 |
8,388,608 |
~15 s |
JAX’s JIT compilation and GPU acceleration are essential for practical use.
When to Use Vector vs Scalar¶
NA Range |
Method |
Notes |
|---|---|---|
< 0.3 |
Scalar |
Paraxial approximation valid |
0.3-0.6 |
Either |
Scalar may suffice for intensity |
> 0.6 |
Vector |
Required for accurate results |
> 1.0 |
Vector + immersion |
Account for medium |
References¶
Richards, B. & Wolf, E. “Electromagnetic diffraction in optical systems, II” Proc. R. Soc. A (1959)
Novotny, L. & Hecht, B. “Principles of Nano-Optics” (2012)
Born, M. & Wolf, E. “Principles of Optics” Chapter 8 (1999)