Beams API¶
beams
¶
Gaussian beams on planar stacks: Goos–Hänchen and Imbert–Fedorov shifts.
A finite beam is a superposition of plane waves. On a planar stack each keeps
its in-plane wavevector q, so the beam's angular spectrum passes through
component by component, each with the plane-wave S-matrix of
:func:hyperbolic_optics.bcm.stack_smatrix at its own q.
:func:reflected_beam rebuilds the reflected field on the interface plane, and
:func:beam_shift measures its centroid: the Goos–Hänchen shift along the
plane of incidence and the Imbert–Fedorov shift across it, which anisotropic
and hyperbolic media make large and asymmetric.
Functions:
-
reflected_beam–The reflected beam's field on the reference plane, from its angular spectrum.
-
beam_shift–Centroid
(Δx, Δy)of|field|²: the Goos–Hänchen and Imbert–Fedorov shifts.
reflected_beam
¶
reflected_beam(
eps,
thickness_um,
wavelength_um,
angle_rad,
eps_top,
eps_bottom,
waist_um,
polarization=(1.0, 0.0),
mu=None,
samples=61,
span=5.0,
points=129,
extent=4.0,
)
The reflected beam's field on the reference plane, from its angular spectrum.
Parameters:
-
polarization–The incident beam's Jones vector
(p, s)on the central wave. -
points, extent–The real-space grid:
pointsper side over±extentfootprint widths. -
eps, thickness_um, mu–The layers, as in :func:
hyperbolic_optics.bcm.stack_smatrix(lab frame; the plane of incidence of the central wave is x-z). -
angle_rad–Angle of incidence of the central wave in the top medium.
-
eps_top, eps_bottom–The half-spaces' permittivities.
-
waist_um–The beam waist
w₀. -
samples, span–The angular-spectrum grid (see :func:
_beam_grid).
Returns:
-
–
(x, y, field): coordinates in µm on the interface plane,[P]each, -
–
and the reflected field's p and s amplitudes (in the reflected central
-
–
wave's basis)
[P, P, 2].
Source code in hyperbolic_optics/beams.py
beam_shift
¶
Centroid (Δx, Δy) of |field|²: the Goos–Hänchen and Imbert–Fedorov shifts.