7.14. Vector Double slit experiment

Here we analize what happens in the double slit experiment when the polarization of the two slits is the same or ortogonal. In the first case, fringes are obtained but this is not the case for the second experiment.

7.14.1. Creating an instance

[1]:
from diffractio import np, sp, plt
from diffractio import nm, um, mm, degrees

from diffractio.scalar_sources_XY import Scalar_source_XY
from diffractio.scalar_masks_XY import Scalar_mask_XY
from diffractio.scalar_fields_XY import Scalar_field_XY

from diffractio.vector_sources_XY import Vector_source_XY
from diffractio.vector_masks_XY import Vector_mask_XY
from diffractio.vector_fields_XY import Vector_field_XY

# for polarization components, diffractio also uses py_pol module.
from py_pol.jones_matrix import Jones_matrix

[2]:
x0 = np.linspace(-125 * um, 125 * um, 512)
y0 = np.linspace(-125 * um, 125 * um, 512)

wavelength = 0.6328 * um

7.14.1.1. Double Slit Experiment

7.14.2. Equal polarization

[4]:
j1 = Jones_matrix().diattenuator_perfect(azimuth=0)
[5]:
t1 = Scalar_mask_XY(x0, y0, wavelength)
t1.slit(x0=-40 * um, size=80 * um)
t1.square(r0=(-40, 0), size=(40, 160), angle=0)

t2 = Scalar_mask_XY(x0, y0, wavelength)
t2.slit(x0=40 * um, size=80 * um)
t2.square(r0=(40, 0), size=(40, 160), angle=0)

M1 = Vector_mask_XY(x0, y0, wavelength)
M1.polarizer_linear(azimuth=0 * degrees)
M1.scalar_to_vector_mask(t1, j1)

M2 = Vector_mask_XY(x0, y0, wavelength)
M2.polarizer_linear(azimuth=0 * degrees)
M2.scalar_to_vector_mask(t2, j1)

u0 = Scalar_source_XY(x0, y0, wavelength)
u0.gauss_beam(r0=(0, 0),
              w0=(100 * um, 100 * um),
              z0=0 * um,
              A=1,
              theta=0. * degrees,
              phi=0 * degrees)

EM0 = Vector_source_XY(x0, y0, wavelength)
EM0.constant_polarization(u0, v=(1, 1))
EM0.draw('ellipses', num_ellipses=(21, 21))

../../_images/source_examples_vector_double_slit_experiment_7_0.png
[6]:
Et1 = EM0 * M1
Et2 = EM0 * M2

EM1 = Et1 + Et2
EM1.draw('ellipses', num_ellipses=(21, 21))

../../_images/source_examples_vector_double_slit_experiment_8_0.png
[7]:
EM2 = EM1.VRS(z=5 * mm)
EM2.draw('ellipses', num_ellipses=(21, 21))

../../_images/source_examples_vector_double_slit_experiment_9_0.png
[8]:
EM2 = EM1.VRS(z=10 * mm, )
EM2.draw('ellipses', num_ellipses=(21, 21))

../../_images/source_examples_vector_double_slit_experiment_10_0.png
[9]:
Ex, Ey, _ = EM2.get('fields', is_matrix=False)
Ex.draw_profile(point1=[Ex.x[0], 0], point2=[Ex.x[-1], 0])

../../_images/source_examples_vector_double_slit_experiment_11_0.png
[10]:
EM2 = EM1.VRS(z=25 * mm, amplification=(3, 1))
EM2.draw('ellipses', num_ellipses=(11, 11), amplification=0.75)

../../_images/source_examples_vector_double_slit_experiment_12_0.png

7.14.3. Crossed polarization

[12]:
j0 = Jones_matrix().diattenuator_perfect(azimuth=0*degrees)
j1 = Jones_matrix().diattenuator_perfect(azimuth=90*degrees)
[13]:
t1 = Scalar_mask_XY(x0, y0, wavelength)
t1.slit(x0=-40 * um, size=80 * um)
t1.square(r0=(-40, 0), size=(50, 160), angle=0)

t2 = Scalar_mask_XY(x0, y0, wavelength)
t2.slit(x0=40 * um, size=80 * um)
t2.square(r0=(40, 0), size=(50, 160), angle=0)

M1 = Vector_mask_XY(x0, y0, wavelength)
M1.scalar_to_vector_mask(t1,j0)

M2 = Vector_mask_XY(x0, y0, wavelength)
M2.polarizer_linear(azimuth=90 * degrees)
M2.scalar_to_vector_mask(t2,j1)

u0 = Scalar_source_XY(x0, y0, wavelength)
u0.gauss_beam(r0=(0, 0),
              w0=(100 * um, 100 * um),
              z0=0 * um,
              A=1,
              theta=0. * degrees,
              phi=0 * degrees)

EM0.constant_polarization(u0, v=(1, 1))
EM0.draw('ellipses', num_ellipses=(21, 21))

../../_images/source_examples_vector_double_slit_experiment_15_0.png
[14]:
Et1 = EM0 * M1
Et2 = EM0 * M2

EM1 = Et1 + Et2
EM1.draw('ellipses', num_ellipses=(21, 21))

../../_images/source_examples_vector_double_slit_experiment_16_0.png
[15]:
EM2 = EM1.VRS(z=5 * mm)
EM2.draw('ellipses', num_ellipses=(15, 15), amplification=0.6)

../../_images/source_examples_vector_double_slit_experiment_17_0.png
[16]:
EM2 = EM1.VRS(z=10 * mm)
EM2.draw('ellipses', num_ellipses=(15, 15), amplification=0.6)

../../_images/source_examples_vector_double_slit_experiment_18_0.png
[17]:
EM2 = EM1.VRS(z=25 * mm, amplification=(3, 1), verbose=True)
EM2.draw('ellipses', num_ellipses=(15, 15), amplification=0.6)

Good result: factor 55.196
../../_images/source_examples_vector_double_slit_experiment_19_1.png