cl3-1.0.0.1: Clifford Algebra of three dimensional space.

Copyright(C) 2018 Nathan Waivio
LicenseBSD3
MaintainerNathan Waivio <nathan.waivio@gmail.com>
StabilityStable
Portabilityunportable
Safe HaskellSafe
LanguageHaskell2010

Algebra.Geometric.Cl3.JonesCalculus

Contents

Description

Library implementing standard functions for the Jones Calculus in the Cl3 Library. This implementation of the Jones Calculus is based on the convensions of SPIE's Field Guide to Polarization (ϕ = ω t − k z).

  • E. Collett, Field Guide to Polarization, SPIE Field Guides vol. FG05, SPIE (2005). ISBN 0-8194-5868-6.

Jones Vectors

Within the system of the Bloch Sphere, the Jones Vectors in Cl3 are calculated by generating the left ideal of the rotation of a unit vector to the e3 basis. Standard form for for a versor is 'rot = exp $ (-i/2) * theta * u' for angle theta and the rotational axis unit vector u.

Bloch Sphere Coordinates:

                e3
                |
                |____e2
               / 
              /
             e1

Synopsis

Jones Vectors

hpv :: Cl3 Source #

hpv horizontally polarized Jones vector

vpv :: Cl3 Source #

vpv vertically polarized Jones vector

dpv :: Cl3 Source #

dpv diagonally polarized Jones vector

apv :: Cl3 Source #

apv anti-diagonally polarized Jones vector

rpv :: Cl3 Source #

rpv right hand circularly polarized Jones vector

lpv :: Cl3 Source #

lpv left hand circularly polarized Jones vector

jv :: Cl3 -> Cl3 Source #

jv function that returns Jones vector from input vector unit vector currently converts the input to a unit vector

Jones Matrices

hpm :: Cl3 Source #

hpm Horizontal Polarizer Jones Matrix

vpm :: Cl3 Source #

vpm Vertical Polarizer Jones Matrix

dpm :: Cl3 Source #

dpm Diagonal Polarizer Jones Matrix

apm :: Cl3 Source #

apm Anti-diagonal Polarizer Jones Matrix

rpm :: Cl3 Source #

rpm Right Hand Circular Polarizer Jones Matrix

lpm :: Cl3 Source #

lpm Left Hand Circular Polarizer Jones Matrix

jm :: Cl3 -> Cl3 Source #

jm funciton that returns a Jones Matrix from an input Bloch Vector currently converts the input to a unit vector

hpmRot :: Cl3 -> Cl3 Source #

hpmRot Jones matrix for a rotated ideal Linear Horizontal Polarizer. Input value should be a scalar angle in Radians.

Wave Plates

qwp :: Cl3 Source #

qwp Quarter Wave Plate Jones Matrix

hwp :: Cl3 Source #

hwp Half Wave Plate Jones Matrix

qwpRot :: Cl3 -> Cl3 Source #

qwpRot Rotated Quarter Wave Plate Jones Matrix. Input value should be a scalar angle in Radians.

hwpRot :: Cl3 -> Cl3 Source #

hwpRot Rotated Half Wave Plate Jones Matrix. Input value should be a scalar angle in Radians.

wp :: Cl3 -> Cl3 Source #

wp a Wave Plate with phase shift of phi Jones Matrix. Input value should be a scalar angle in Radians.

wpRot :: Cl3 -> Cl3 -> Cl3 Source #

wpRot a Rotated Wave Plate with phase shift of phi and rotation theta Jones Matrix. The first input value is phi the phase shift as a scalar value in Radians. The second input value is theta the rotation a scalar angle in Radians.

Reflection

refl :: Cl3 Source #

refl a Refelection Jones Matrix

Random Jones Vectors

randJonesVec :: RandomGen g => g -> (Cl3, g) Source #

randJonesVec a Random Jones Vector.

randOrthogonalJonesVec :: RandomGen g => g -> ((Cl3, Cl3), g) Source #

randOrthogonalJonesVec a Random Orthogonal Complementary pair of Jones Vectors.

Normalization Factorization

factorize :: Cl3 -> (Cl3, Cl3, Cl3) Source #

factorize is a function that takes an Jones Vector after transformation by an optical chain, and returns the amplitude (amp), phase (phi), and normalized Jones Vector (vec), by the factorization of the input such that: amp * exp (i*phi/2) * vec