psfsim.polarisation_decomposition

Functions to handle decomposition of (un)polarised E fields into TE and TM modes and rotation of E field components from local coordinates to focal plane coordinates.

Functions

local_to_fpa_rotation(ux, uy, sgn)

Local --> FPA rotation for electric field.

polarisation_mode_decomposition(ux, uy, E, sgn)

Decomposes incident electric field (specified by components along FPA axes) into TE and TM modes.

unpolarised_mode_decomposition(ux, uy[, E0])

Decomposition for unpolarized light.

Module Contents

local_to_fpa_rotation(ux, uy, sgn)[source]

Local –> FPA rotation for electric field.

This constructs an array of 3x3 rotation matrices from {incident ray in yz-plane} –> {focal plane coordinates}. The z-axis is perpendicular to the detector surface in both cases.

By construction, this function has a discontinuity at u=0. It defaults to 0 for unphysical rays (ux, uy outside the unit circule).

Parameters:
  • ux (np.ndarray of float) – Orthographic projection of ray directions (each component). Should be the same shape.

  • uy (np.ndarray of float) – Orthographic projection of ray directions (each component). Should be the same shape.

  • sgn (float) – Whether to flip z-direction for diagonal rays; should be +1 or -1.

Returns:

RT – Shape is shape of ux + (3, 3). Each entry ends in a rotation matrix.

Return type:

np.ndarray of float

polarisation_mode_decomposition(ux, uy, E, sgn)[source]

Decomposes incident electric field (specified by components along FPA axes) into TE and TM modes.

The convention is that the “TE” (S) direction is given by {propagation of ray} cross {original z axis} and the “TM” (P) direction is in the plane of incidence, pointed toward sgn * {original z axis}.

Parameters:
  • ux (np.ndarray of float) – The orthographic projection of directions of propagation, each is an array.

  • uy (np.ndarray of float) – The orthographic projection of directions of propagation, each is an array.

  • E (np.ndarray of complex) – The incident electric field. Same shape as ux.shape + (3,).

  • sgn (float) – Whether the z-direction of the initial coordinate system should be the same (+1) or opposite (-1) the AR coating coordinate system.

Returns:

The keys are “TE” and “TM”, and each have the same shape as ux and uy.

Return type:

dict of np.ndarray of complex

See also

local_to_fpa_rotation

This function is used for the convention when (ux, uy) == (0, 0).

unpolarised_mode_decomposition(ux, uy, E0=10000000000.0)[source]

Decomposition for unpolarized light.

Parameters:
  • ux (float) – Orthographic coordinates.

  • uy (float) – Orthographic coordinates.

  • E0 (float, optional) – Amplitude.

Returns:

The keys are “TE” and “TM”, and each have the same shape as ux and uy.

Return type:

dict of np.ndarray of complex

Notes

Warning : This generates equal amplitudes but if you just use the field values there will be unphysical interference. Need to figure out what to do about this.