13. 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.

13.1. Creating an instance

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

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_paraxial_sources_XY import Vector_paraxial_source_XY
from diffractio.vector_paraxial_masks_XY import Vector_paraxial_mask_XY
from diffractio.vector_paraxial_fields_XY import Vector_paraxial_field_XY
number of processors: 8
total memory        : 15.5 Gb
available memory    : 42 %
max frequency       : 3100 GHz
[2]:
from matplotlib import rcParams
rcParams['figure.figsize']=[8,6]
rcParams['figure.dpi']=125
[3]:
x0 = np.linspace(-125 * um, 125 * um, 512)
y0 = np.linspace(-125 * um, 125 * um, 512)

wavelength = 0.6328 * um

13.1.1. Double Slit Experiment

13.2. Equal polarization

[8]:
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_paraxial_mask_XY(x0, y0, wavelength)
M1.polarizer_linear(azimuth=0*degrees)
M1.apply_scalar_mask(t1)

M2 = Vector_paraxial_mask_XY(x0, y0, wavelength)
M2.polarizer_linear(azimuth=0*degrees)
M2.apply_scalar_mask(t2)


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_paraxial_source_XY(x0, y0, wavelength)
EM0.constant_wave(u0, v=(1,1))
EM0.draw('ellipses', num_ellipses=(21,21))
../../../_images/source_examples_optics_vector_double_slit_experiment_7_0.png
[9]:
Et1=EM0*M1
Et2=EM0*M2


EM1=Et1+Et2
EM1.draw('ellipses', num_ellipses=(21,21))
../../../_images/source_examples_optics_vector_double_slit_experiment_8_0.png
[10]:
EM2=EM1.RS(z=5*mm)
EM2.draw('ellipses',num_ellipses=(21,21))
../../../_images/source_examples_optics_vector_double_slit_experiment_9_0.png
[11]:
EM2=EM1.RS(z=10*mm,)
EM2.draw('ellipses',num_ellipses=(21,21))

../../../_images/source_examples_optics_vector_double_slit_experiment_10_0.png
[13]:
Ex, Ey, _ = EM2.get('fields')
Ex.draw_profile(point1=[Ex.x[0],0], point2=[Ex.x[-1],0]);
../../../_images/source_examples_optics_vector_double_slit_experiment_11_0.png
[14]:
EM2=EM1.RS(z=25*mm, amplification=(3,1))
EM2.draw('ellipses',num_ellipses=(21,11), amplification=1)
../../../_images/source_examples_optics_vector_double_slit_experiment_12_0.png

13.3. Crossed polarization

[15]:
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_paraxial_mask_XY(x0, y0, wavelength)
M1.polarizer_linear(azimuth=0*degrees)
M1.apply_scalar_mask(t1)

M2 = Vector_paraxial_mask_XY(x0, y0, wavelength)
M2.polarizer_linear(azimuth=90*degrees)
M2.apply_scalar_mask(t2)


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_wave(u0, v=(1,1))
EM0.draw('ellipses', num_ellipses=(21,21))
../../../_images/source_examples_optics_vector_double_slit_experiment_14_0.png
[16]:
Et1=EM0*M1
Et2=EM0*M2


EM1=Et1+Et2
EM1.draw('ellipses', num_ellipses=(21,21))
../../../_images/source_examples_optics_vector_double_slit_experiment_15_0.png
[17]:
EM2=EM1.RS(z=5*mm)
EM2.draw('ellipses',num_ellipses=(21,21))
../../../_images/source_examples_optics_vector_double_slit_experiment_16_0.png
[18]:
EM2=EM1.RS(z=10*mm)
EM2.draw('ellipses',num_ellipses=(21,21))
../../../_images/source_examples_optics_vector_double_slit_experiment_17_0.png
[19]:
EM2=EM1.RS(z=25*mm, amplification=(3,1), verbose=True)
EM2.draw('ellipses',num_ellipses=(21,11), amplification=1)

Good result: factor 55.19
Good result: factor 106.96
Good result: factor 55.19
../../../_images/source_examples_optics_vector_double_slit_experiment_18_1.png
[20]:
Ex, Ey, _ = EM2.get('fields')
Ex.u=np.sqrt(np.abs(Ex.u)**2+np.abs(Ey.u)**2)
Ex.draw_profile(point1=[Ex.x[0],0], point2=[Ex.x[-1],0]);
../../../_images/source_examples_optics_vector_double_slit_experiment_19_0.png
[ ]: