differt.em.WavefrontState#
- class WavefrontState(radii, axes, is_planar)[source]#
Bases:
ModuleRepresents the wavefront curvature state along a ray.
The wavefront geometry is described in the plane transverse to the propagation direction \(\hat{k}\) by two principal radii of curvature \((\rho_1, \rho_2)\) and their corresponding orthogonal unit vectors \((\hat{u}_1, \hat{u}_2)\).
Attributes
The principal radii of curvature.
The orthogonal unit vectors defining the principal planes.
Boolean flags indicating whether each principal curvature is zero (infinite radius / plane wave).
Methods
diffract(k_in, k_out, e_hat[, n0])Diffract the wavefront at a straight wedge edge.
from_tx(k_hat[, tx_wavefront])Create the initial wavefront state at the transmitter.
propagate(distance)Propagate the wavefront along a straight line in free space.
reflect(normal)Reflect the wavefront off a flat planar interface.
transmit()Transmit the wavefront through a flat, thin slab without deflection.
Detailed documentation
-
axes:
Float[Array, "*batch 2 3"]# The orthogonal unit vectors defining the principal planes.
- diffract(k_in, k_out, e_hat, n0=None)[source]#
Diffract the wavefront at a straight wedge edge.
Following Kouyoumjian & Pathak (1974) and [11, Chapter 6, pp. 264-273, Eq. 6.2-6.5, 6.34, 6.36], straight-edge diffraction produces an astigmatic wavefront with one caustic along the edge (\(\rho_1 = 0\)) and second principal radius \(\rho_2 = \rho_e^i\) equal to the incident wavefront’s radius in the edge-fixed plane of incidence.
- Parameters:
k_in (
Float[Array, "*batch 3"]) – Unit incident ray direction.k_out (
Float[Array, "*batch 3"]) – Unit diffracted ray direction.e_hat (
Float[Array, "*batch 3"]) – Wedge edge unit tangent vector.n0 (
Float[Array, "*batch 3"]|None) – Optional 0-face surface normal used for canonical edge orientation.
- Return type:
- Returns:
A tuple of
(new_state, incident_radii)whereincident_radiiholds(rho_1_i, rho_2_i, rho_e_i).
- classmethod from_tx(k_hat, tx_wavefront=0.0)[source]#
Create the initial wavefront state at the transmitter.
- Parameters:
k_hat (
Float[Array, "*batch 3"]) – The unit propagation direction leaving the transmitter.tx_wavefront (
Float[ArrayLike, "*#batch"]|tuple[Float[ArrayLike, "*#batch"],Float[ArrayLike, "*#batch"]] |tuple[Float[ArrayLike, "*#batch"],Float[ArrayLike, "*#batch 3"],Float[ArrayLike, "*#batch"],Float[ArrayLike, "*#batch 3"]] |WavefrontState|None) –The transmitter wavefront configuration:
None: Planar wavefront.Scalar or float array: Spherical wavefront with radius \(\rho\).
(rho_s, rho_p): Astigmatic wavefront radii, with axes aligned to the local spherical basis \((\hat{\theta}, \hat{\phi})\).(rho_s, s_hat, rho_p, p_hat): Astigmatic wavefront radii and explicit principal axes.An existing
WavefrontStateinstance.
- Return type:
- Returns:
The initialized wavefront state.
-
is_planar:
Bool[Array, "*batch 2"]# Boolean flags indicating whether each principal curvature is zero (infinite radius / plane wave).
- propagate(distance)[source]#
Propagate the wavefront along a straight line in free space.
- Parameters:
distance (
Float[Array, "*batch"]) – The distance traveled along the ray direction.- Return type:
- Returns:
The updated wavefront state.
-
radii:
Float[Array, "*batch 2"]# The principal radii of curvature.
- reflect(normal)[source]#
Reflect the wavefront off a flat planar interface.
- Parameters:
normal (
Float[Array, "*batch 3"]) – The surface unit normal vector.- Return type:
- Returns:
The updated wavefront state.
-
axes: