{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from svetlanna import elements\n", "from svetlanna import SimulationParameters\n", "from svetlanna import wavefront as w\n", "from svetlanna.units import ureg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Diffraction on the thin slit\n", "\n", "We will calculate the diffraction of the plane wave on the thin slit using rectangular aperture from `svetlanna.elements`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating numerical mesh with using `SimulationParameters` class" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "D = 0.1 * ureg.mm # width of the slit\n", "d = 0.5 * ureg.mm # height of the slit\n", "\n", "wavelength = 660 * ureg.nm # wavelength\n", "\n", "lx = 4 * ureg.mm # width of the screen\n", "ly = 4 * ureg.mm # height of the screen\n", "\n", "# distance from the slit to the screen\n", "z = 3 * ureg.cm\n", "\n", "# number of nodes along x and y\n", "Nx = 1600\n", "Ny = 1600\n", "\n", "# creating SimulationParameters exemplar\n", "sim_params = SimulationParameters({\n", " 'W': torch.linspace(-lx / 2, lx / 2, Nx),\n", " 'H': torch.linspace(-ly / 2, ly / 2, Ny),\n", " 'wavelength': wavelength,\n", "})" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# return 2d-tensors of x and y coordinates\n", "x_grid, y_grid = sim_params.meshgrid(x_axis='W', y_axis='H')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating a plane wave using `svetlanna.wavefront.plane_wave`\n", "\n", "Let's create a plane wave that will fall on the aperture:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# create plane wave\n", "incident_field = w.Wavefront.plane_wave(\n", " simulation_parameters=sim_params,\n", " distance=0 * ureg.cm,\n", " wave_direction=[0, 0, 1]\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating a thin slit using `svetlanna.elements.RectangularAperture`" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "slit = elements.RectangularAperture(\n", " simulation_parameters=sim_params,\n", " height=d,\n", " width=D,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see the shape of the aperture using `.get_transmission_function()` class method:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "slit_transmission_function = slit.get_transmission_function()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(6, 3), edgecolor='black', linewidth=3,\n", " frameon=True)\n", "im1 = ax.pcolormesh(x_grid, y_grid, slit_transmission_function, cmap='inferno')\n", "ax.set_aspect('equal')\n", "ax.set_title('Slit')\n", "ax.set_xlabel('$x$ [m]')\n", "ax.set_ylabel('$y$ [m]')\n", "fig.colorbar(im1, label='Transmission function')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Intensity profile on the screen after propagation through the slit\n", "\n", "In this section we will solve the direct problem of diffraction on a slit using Angular Spectrum method from `FreeSpace` class" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "field_after_slit = slit.forward(\n", " incident_wavefront=incident_field\n", ")\n", "\n", "free_space = elements.FreeSpace(\n", " simulation_parameters=sim_params,\n", " distance=z,\n", " method=\"AS\"\n", ")\n", "\n", "output_wavefront = free_space.forward(\n", " incident_wavefront=field_after_slit\n", ")\n", "\n", "output_intensity = output_wavefront.intensity" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize the intensity distribution:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(6, 3), edgecolor='black', linewidth=3,\n", " frameon=True)\n", "im1 = ax.pcolormesh(x_grid, y_grid, output_intensity, cmap='inferno')\n", "ax.set_aspect('equal')\n", "ax.set_title('Intensity distribution on the screen')\n", "ax.set_xlabel('$x$ [m]')\n", "ax.set_ylabel('$y$ [m]')\n", "fig.colorbar(im1, label='Intensity')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparing with diffraction grating equation\n", "\n", "Using the diffraction grating equation $D \\sin{\\theta}=m\\lambda$, where m is the order of diffraction, we can find the position of the intensity minima:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# array of min\n", "m = np.arange(1,8,1)\n", "x_min = np.sqrt(m**2 * wavelength**2 * z**2 / (D**2 - m**2 * wavelength**2))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Amplitude')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(6, 3))\n", "ax.plot(x_grid[0], torch.sqrt(output_intensity)[250], color='blue')\n", "\n", "[ax.axvline(x, ls='--', color='r') for x in x_min]\n", "[ax.axvline(-x, ls='--', color='r') for x in x_min]\n", "\n", "ax.set_xlabel('$x$ [m]')\n", "ax.set_ylabel('Amplitude')\n" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" } }, "nbformat": 4, "nbformat_minor": 2 }