polarization tools.nb

define Jones matrices and vectors

one reference: http://scienceworld.wolfram.com/physics/JonesMatrix.html

rotation matrices for change of basis in XY plane

mRot[θ_]:=(({{Cos[θ], -Sin[θ]}, {Sin[θ], Cos[θ]}}));

polarizers

mPolX=(({{1, 0}, {0, 0}}));
mPolY=(({{0, 0}, {0, 1}}));
mPolRot[θ_]:=mRot[θ].mPolX.mRot[-θ];
Print["rotated matrix for polarizer: ",MatrixForm[mPolRot[θ] ]];
mPolRH=(1/2)(({{1, I}, {-I, 1}}));
mPolLH=(1/2)(({{1, -I}, {I, 1}}));

waveplates

Some references define QWP with an overall phase factor in front - not sure why this is necessary

mQWP=(E^(I π/4))(({{1, 0}, {0, I}}));
mQWP=(({{1, 0}, {0, I}}));
mQWPRot[θ_]:=mRot[θ].mQWP.mRot[-θ];
mHWP=(({{1, 0}, {0, -1}}));
mHWPRot[θ_]:=mRot[θ].mHWP.mRot[-θ];

polarization vectors in vert/horiz XY basis

vX={1,0};
vY={0,1};
vRot[θ_]:=mRot[θ].vX;

plot elliptical polarization

E = (OverHat[x]) ((Subscript[v, 1])Exp[-i ω t]+c.c)+(OverHat[y]) ((Subscript[v, 2])Exp[-i ω t]+c.c)
In parametric plot,  θ = ω t
input vector should be normalized.
The plot range goes less than 2π to indicate which direction the field goes.

plotPolState[vIn_,pltColor_]:=ParametricPlot[
{(1/2)(vIn[[1]]Exp[-I θ]+Conjugate[vIn[[1]]Exp[-I θ]]),
(1/2)(vIn[[2]]Exp[-I θ]+Conjugate[vIn[[2]]Exp[-I θ]])},
{θ,0,2π-0.3},PlotRange->{{-1,1},{-1,1}},PlotStyle->{pltColor,Thickness[0.007]}];

plotPolState[vIn_,pltColor_]:=ParametricPlot[
{Re[vIn[[1]]Exp[-I θ] ],Re[vIn[[2]]Exp[-I θ] ]},
{θ,0,2π-0.3},PlotRange->{{-1,1},{-1,1}},PlotStyle->{pltColor,Thickness[0.007]}];

vTst=mRot[30Degree].{1,-.3 I};
vTst=(vTst/(Sqrt[vTst.Conjugate[vTst]])); (* normalize *)
plotPolState[vTst,Red]