differt.em.WavefrontState#

class WavefrontState(radii, axes, is_planar)[source]#

Bases: Module

Represents 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

radii

The principal radii of curvature.

axes

The orthogonal unit vectors defining the principal planes.

is_planar

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:
Return type:

tuple[WavefrontState, Float[Array, "*batch 3"]]

Returns:

A tuple of (new_state, incident_radii) where incident_radii holds (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:
Return type:

WavefrontState

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:

WavefrontState

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:

WavefrontState

Returns:

The updated wavefront state.

transmit()[source]#

Transmit the wavefront through a flat, thin slab without deflection.

Return type:

WavefrontState

Returns:

The unchanged wavefront state.