8.6. Diffraction by a single slit

Let us consider a light source passing through a simple slit. The technique is the following:

  • Definition of light source at the plane of the mask \(u_0(x)\)

  • Definition of mask \(t(x)\)

  • Determination of light field after the mask \(t_1(x) = t(x) * u_0(x)\)

  • Propagation using Rayleigh-Sommerfed RS BPM for a certain distance z

  • Also, the Far Field intensity distribution using FFT can be determined.

We show how to analyze diffractive effects using the different frames X, XY, and XZ.

8.6.1. X

[1]:
from diffractio import degrees, mm, plt, np, um
from diffractio.scalar_sources_X import Scalar_source_X
from diffractio.scalar_masks_X import Scalar_mask_X
from diffractio.utils_drawing import draw_several_fields
[2]:
x0 = np.linspace(-50*um, 50*um, 1024 * 32)
wavelength = 5*um
[3]:
# plane wave
u0 = Scalar_source_X(x=x0, wavelength=wavelength)
u0.plane_wave(A=1, theta=0)

# slit
t0 = Scalar_mask_X(x=x0, wavelength=wavelength)
t0.slit(x0=0, size=25*um)
t0.draw()

u1 = u0 * t0
../../_images/source_examples_scalar_diffraction_slit_4_0.png
[4]:
# Propagation a certain distance and draw
u2 = u1.RS(z=25*um, new_field=True, verbose=True)
u2.draw(kind='intensity')

u3 = u1.RS(z=250*um, new_field=True, verbose=True)
u3.draw(kind='intensity')
Good result: factor 906.65
Good result: factor 3479.13
../../_images/source_examples_scalar_diffraction_slit_5_1.png
../../_images/source_examples_scalar_diffraction_slit_5_2.png
[5]:
u4 = u1.RS(z=5*mm, amplification=50, new_field=True, verbose=False)
u4.draw(kind='intensity')
../../_images/source_examples_scalar_diffraction_slit_6_0.png
[6]:
u5 = u2.fft(z=1*mm, remove0=False, new_field=True)
u5.draw(kind='fft', logarithm=False, normalize=True)
plt.xlim(-40000, 40000)
plt.ylim(bottom=0)
../../_images/source_examples_scalar_diffraction_slit_7_0.png

8.6.2. XY

[7]:
from diffractio import degrees, mm, plt, np, um
from diffractio.scalar_sources_XY import Scalar_source_XY
from diffractio.scalar_masks_XY import Scalar_mask_XY

[8]:
x0 = np.linspace(-200*um, 200*um, 1024)
y0 = np.linspace(-200*um, 200*um, 512)
[9]:
u1 = Scalar_source_XY(x=x0, y=y0, wavelength=wavelength)
u1.plane_wave(A=1)

t1 = Scalar_mask_XY(x=x0, y=y0, wavelength=wavelength)
t1.slit(x0=0, size=50*um, angle=0*degrees)

u2 = u1 * t1
u2.draw()
../../_images/source_examples_scalar_diffraction_slit_11_0.png
[10]:
u3 = u2.RS(z=2*mm, new_field=True)
u3.draw(logarithm=1e3)
../../_images/source_examples_scalar_diffraction_slit_12_0.png
[11]:
u3 = u2.fft(remove0=False, new_field=True)
[12]:
u3.cut_resample(x_limits='', y_limits='', num_points=[1024, 1024])
[13]:
u3.draw(logarithm=1)
plt.ylim(-20,20)
../../_images/source_examples_scalar_diffraction_slit_15_0.png
[14]:
u3.draw_profile(point1=(u3.x[0], 0), point2=(u3.x[-1], 0), npixels=1024, kind='intensity', order=2)
plt.xlim(-20, 20)
../../_images/source_examples_scalar_diffraction_slit_16_0.png

8.6.3. XZ

[15]:
from diffractio import degrees, mm, plt, np, um
from diffractio.scalar_sources_X import Scalar_source_X
from diffractio.scalar_masks_XY import Scalar_mask_XY
from diffractio.scalar_fields_XZ import Scalar_field_XZ
from diffractio.scalar_masks_XZ import Scalar_mask_XZ
[16]:
x = np.linspace(-20*um, 20*um, 1024)
z = np.linspace(0*um, 50*um, 512)
wavelength = 2*um

u1 = Scalar_source_X(x=x, wavelength=wavelength)
u1.plane_wave(theta=0)

t0 = Scalar_mask_X(x=x, wavelength=wavelength)
t0.slit(x0=0, size=10*um)
[17]:
t1 = Scalar_mask_XZ(x=x, z=z, wavelength=wavelength, n_background=1)
z0 = 10*um
z1 = z0 + 20*um
v_globals = dict(z0=z0, z1=z1)
t1.extrude_mask(t=t0, z0=z0, z1=z1, refractive_index=1.5 + 2j, v_globals=v_globals)
t1.draw_refractive_index(draw_borders=False, )
../../_images/source_examples_scalar_diffraction_slit_20_0.png
[18]:
t1.incident_field(u1)
t1.clear_field()

t1.WPM(has_edges=False)
[19]:
t1.draw(kind='intensity', draw_borders=True)
../../_images/source_examples_scalar_diffraction_slit_22_0.png
[20]:
t1.draw(kind='phase', draw_borders=True, percentage_intensity=0.001)
../../_images/source_examples_scalar_diffraction_slit_23_0.png