by Scott Prahl

Code to model and visualize the polarization state of light as it travels through polarizers and birefringent elements. Some ellipsometry support is also included.

There are four numeric modules:

  • pypolar.fresnel - reflection and transmission calculations

  • pypolar.jones - management of polarization using the Jones calculus

  • pypolar.mueller - management of polarization using the Mueller calculus

  • pypolar.ellipsometry - ellipsometry support

A module for visualization:

  • pypolar.visualization - Routines to support visualization

and three modules that support symbolic algebra:

  • pypolar.sym_fresnel - Fresnel reflection and transmission

  • pypolar.sym_jones - Jones calculus

  • pypolar.sym_mueller - Mueller calculus

Detailed documentation is available at Read the Docs.


Use pip:

pip install pypolar


Create an optical isolator:

import pypolar.mueller as mueller

# Optical Isolator example, no light returning

A = mueller.stokes_right_circular()       # incident light
B = mueller.op_linear_polarizer(np.pi/4)  # polarizer at 45°
C = mueller.op_quarter_wave_plate(0)      # QWP with fast axis horizontal
D = mueller.op_mirror()                   # first surface mirror
E = mueller.op_quarter_wave_plate(0)      # QWP still has fast axis horizontal
F = mueller.op_linear_polarizer(-np.pi/4) # now at -45° because travelling backwards

F @ E @ D @ C @ B @ A


pypolar is licensed under the terms of the MIT license.