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