Copyright | (C) 2018 Nathan Waivio |
---|---|
License | BSD3 |
Maintainer | Nathan Waivio <nathan.waivio@gmail.com> |
Stability | Stable |
Portability | unportable |
Safe Haskell | Safe |
Language | Haskell2010 |
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
- hpv :: Cl3
- vpv :: Cl3
- dpv :: Cl3
- apv :: Cl3
- rpv :: Cl3
- lpv :: Cl3
- jv :: Cl3 -> Cl3
- hpm :: Cl3
- vpm :: Cl3
- dpm :: Cl3
- apm :: Cl3
- rpm :: Cl3
- lpm :: Cl3
- jm :: Cl3 -> Cl3
- hpmRot :: Cl3 -> Cl3
- qwp :: Cl3
- hwp :: Cl3
- qwpRot :: Cl3 -> Cl3
- hwpRot :: Cl3 -> Cl3
- wp :: Cl3 -> Cl3
- wpRot :: Cl3 -> Cl3 -> Cl3
- refl :: Cl3
- randJonesVec :: RandomGen g => g -> (Cl3, g)
- randOrthogonalJonesVec :: RandomGen g => g -> ((Cl3, Cl3), g)
- factorize :: Cl3 -> (Cl3, Cl3, Cl3)
Jones Vectors
jv
function that returns Jones vector from input vector unit vector
currently converts the input to a unit vector
Jones Matrices
jm
funciton that returns a Jones Matrix from an input Bloch Vector
currently converts the input to a unit vector
hpmRot
Jones matrix for a rotated ideal Linear Horizontal Polarizer.
Input value should be a scalar angle in Radians.
Wave Plates
qwpRot
Rotated Quarter Wave Plate Jones Matrix.
Input value should be a scalar angle in Radians.
hwpRot
Rotated Half Wave Plate Jones Matrix.
Input value should be a scalar angle in Radians.
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
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.