pypolar

by Scott Prahl

https://img.shields.io/pypi/v/pypolar.svg https://colab.research.google.com/assets/colab-badge.svg https://img.shields.io/badge/readthedocs-latest-blue.svg https://img.shields.io/badge/github-code-green.svg https://img.shields.io/badge/MIT-license-yellow.svg

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.

Installation

Use pip:

pip install pypolar

Usage

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

License

pypolar is licensed under the terms of the MIT license.