pyoptics.polarization.mueller

Tools for Müller calculus: Müller matrices of common elements optical elements and Stokes vectors of common polarization states.

Convention: fields vary as exp(i(k.r - omega*t)). The Stokes parameter S_3 = 2 Im(conj(E_x)*E_y) is positive for E = [1, i]/sqrt(2), i.e. for a field that rotates from x to y in time at a fixed position (positive helicity), see jones.py. All Müller matrices agree with M_from_jones() applied to the corresponding Jones matrix.

References

    1. Goldstein, “Polarized Light”, 3rd ed., CRC Press (2011).

S.-Y. Lu and R. A. Chipman, “Interpretation of Mueller matrices based on polar decomposition”, J. Opt. Soc. Am. A 13, 1106-1113 (1996).

R. A. Chipman, W.-S. T. Lam and G. Young, “Polarized Light and Optical Systems”, CRC Press (2018).

Functions

M_TIR

Müller matrix for total internal reflection.

M_attenuator

Müller matrix for attenuator with transmission trans.

M_from_jones

Construct Müller matrix from Jones matrix.

M_linear_polarizer

Linear polarizer with axis of polarization at angle phi.

M_reflection_dielectric

Müller matrix for reflection from a dieletric film stack.

M_reflection_metal

Müller matrix for reflection from a metal surface.

M_retarder

Müller matrix for retarder with fast axis angle phi and retardance delta.

M_transmission_dielectric

Müller matrix for transmission from a dieletric film stack.

retardance_from_AOI

Retardance of uniaxial crystal hit by ray under an angle.

stokes_DOP

Compute degree of polarization for given Stokes vector.

stokes_from_complex_E

Compute Stokes vector for polarization state described by complex electric field components.

pyoptics.polarization.mueller.stokes_from_complex_E(E)[source]

Compute Stokes vector for polarization state described by complex electric field components.

Parameters:
Earray

Complex field amplitude, E[0] is interpreteted as x-component; E[1] as y-component.

Returns:
Sarray

Stokes vector.

pyoptics.polarization.mueller.stokes_DOP(S)[source]

Compute degree of polarization for given Stokes vector.

Parameters:
Sarrray
Returns:
DOPnumber
pyoptics.polarization.mueller.M_linear_polarizer(phi)[source]

Linear polarizer with axis of polarization at angle phi.

Parameters:
phinumber

Angle of axis

Returns:
Marray

Müller matrix

pyoptics.polarization.mueller.M_retarder(phi, delta)[source]

Müller matrix for retarder with fast axis angle phi and retardance delta.

Parameters:
phinumber

Angle of fast axis.

deltanumber

Phase retardance [rad].

Returns:
Marray

Müller matrix

pyoptics.polarization.mueller.M_attenuator(trans)[source]

Müller matrix for attenuator with transmission trans.

Parameters:
transnumber

Transmission

Returns:
Marray

Müller matrix

pyoptics.polarization.mueller.M_reflection_dielectric(r_s, r_p, *args)[source]

Müller matrix for reflection from a dieletric film stack.

Parameters:
r_s, r_pcomplex

Reflection coefficients for s- and p-polarization.

Returns:
Marray

Müller matrix for reflection in a coordinate system in which p-polarization is x-axis and s-polarization is y-axis.

Notes

The function accepts additional (unused) arguments which allows to call it with a signature as used in transmission_dielectric().

pyoptics.polarization.mueller.M_transmission_dielectric(t_s, t_p, theta_in, n_embedding, n_substrate, pol=None)[source]

Müller matrix for transmission from a dieletric film stack.

Parameters:
t_s, t_pcomplex

Transmission coefficients for s- and p-polarization, defined as ratio of the full electric field amplitudes (as returned by interfaces.t_s() and interfaces.t_p()).

theta_innumber

Incident angle (in rad).

n_embedding, n_substratenumber

Refractive index of embedding medium and substrate.

polstring, optional

Unused. Kept for backwards compatibility: for field amplitude coefficients, the intensity conversion factor n_substrate*cos(theta_out)/(n_embedding*cos(theta_in)) is the same for both polarizations.

Returns:
Marray

Müller matrix for transmission in a coordinate system in which p-polarization is x-axis and s-polarization is y-axis.

pyoptics.polarization.mueller.M_reflection_metal(theta, n_metal, n_embedding=1.0)[source]

Müller matrix for reflection from a metal surface.

Parameters:
thetanumber

Angle of incidence (in rad).

n_metalcomplex

(Complex) refractive index of metal.

Returns:
Marray

Müller matrix for reflection in a coordinate system in which p-polarization is x-axis and s-polarization is y-axis.

Notes

Source: Christoph Keller’s book “Astrophysical Spectropolarimetry”, p. 330, with signs adapted to the conventions of this module (p along x, exp(-i*omega*t) time dependence, absorbing metals with Im(n_metal) > 0).

pyoptics.polarization.mueller.M_from_jones(J)[source]

Construct Müller matrix from Jones matrix.

Parameters:
Jarray

Jones matrix

Returns:
Marray

Müller matrix

pyoptics.polarization.mueller.retardance_from_AOI(theta, phi, delta_0, n_o, n_e)[source]

Retardance of uniaxial crystal hit by ray under an angle.

Parameters:
thetanumber

Angle of incidence

phinumber

Angle between plane of incidence and optic axis of crystal

delta_0number

Retardance at normal incidence

n_o, n_enumbers

Refractive indices as seen by ordinary and extraordinary rays.

Returns:
deltanumber

Retardance for oblique incidence

Notes

The formula is only valid for sin(theta)**2 << n_o**2, n_e**2.

pyoptics.polarization.mueller.M_TIR(phi, n)[source]

Müller matrix for total internal reflection.

Parameters:
phinumber

Angle of incidence

nnumber

(Real) refractive index of the optically denser medium relative to the one beyond the interface.

Returns:
Marray

Müller matrix in a coordinate system in which p-polarization is the x-axis and s-polarization is the y-axis. The retardance delta = arg(r_s) - arg(r_p) is positive for the exp(-i*omega*t) convention.