{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example of masks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating an instance " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:02.694178Z", "start_time": "2020-05-01T23:10:01.312296Z" } }, "outputs": [], "source": [ "from diffractio import np\n", "from diffractio import degrees, mm, um\n", "from diffractio.scalar_masks_X import Scalar_mask_X\n", "from diffractio.scalar_masks_XZ import Scalar_mask_XZ\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Definite masks\n", "\n", "## semi plane" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:07.954504Z", "start_time": "2020-05-01T23:10:07.594751Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-400 * um, 400 * um, 256)\n", "z0 = np.linspace(-100 * um, 100 * um, 512)\n", "wavelength = 0.5 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.semi_plane(\n", " r0=(0 * um, 0 * um), refractive_index=2, angle=0 * degrees, rotation_point=None\n", ")\n", "t1.draw_refractive_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## layer" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:08.288603Z", "start_time": "2020-05-01T23:10:07.956502Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-200 * um, 200 * um, 256)\n", "z0 = np.linspace(-100 * um, 100 * um, 512)\n", "wavelength = 0.5 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.layer(\n", " r0=(50 * um, 0 * um),\n", " depth=75 * um,\n", " refractive_index=2,\n", " angle=0 * degrees,\n", " rotation_point=None,\n", ")\n", "t1.draw_refractive_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## square" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:08.658612Z", "start_time": "2020-05-01T23:10:08.290939Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-100 * um, 100 * um, 256)\n", "z0 = np.linspace(0 * um, 200 * um, 512)\n", "wavelength = 0.6238 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.square(\n", " r0=(0 * um, 100 * um),\n", " size=(150 * um, 50 * um),\n", " angle=0 * degrees,\n", " refractive_index=1.5,\n", ")\n", "t1.draw_refractive_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## slit" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:09.991687Z", "start_time": "2020-05-01T23:10:08.661018Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-100 * um, 100 * um, 256)\n", "z0 = np.linspace(0 * um, 250 * um, 512)\n", "wavelength = 0.6238 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "\n", "t1.slit(\n", " r0=(0 * um, 50 * um),\n", " aperture=50 * um,\n", " depth=20 * um,\n", " refractive_index=1.5 + 1j,\n", " refractive_index_center=\"\",\n", " angle=0 * degrees,\n", ")\n", "\n", "t1.draw_refractive_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## sphere or ellipsoid" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:10.358228Z", "start_time": "2020-05-01T23:10:09.994372Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-100 * um, 100 * um, 256)\n", "z0 = np.linspace(0 * um, 200 * um, 512)\n", "wavelength = 0.6238 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "\n", "t1.cylinder(\n", " r0=(0, 100 * um), radius=(75 * um, 75 * um), refractive_index=1.5, angle=0 * degrees\n", ")\n", "\n", "t1.draw_refractive_index(scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## semi sphere" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:10.790517Z", "start_time": "2020-05-01T23:10:10.360579Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-120 * um, 120 * um, 256)\n", "z0 = np.linspace(-20 * um, 200 * um, 512)\n", "wavelength = 0.5 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.semi_cylinder(\n", " r0=(0 * um, 0 * um), radius=100 * um, refractive_index=2, angle=0 * degrees\n", ")\n", "\n", "t1.draw_refractive_index(draw_borders=True, min_incr=0.01, scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## wedge" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:11.124264Z", "start_time": "2020-05-01T23:10:10.793001Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-20 * um, 60 * um, 256)\n", "z0 = np.linspace(0 * um, 125 * um, 512)\n", "wavelength = 0.6238 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "\n", "t1.wedge(\n", " r0=(0 * um, 0 * um),\n", " length=100 * um,\n", " refractive_index=1.5,\n", " angle_wedge=22.5 * degrees,\n", " angle=0 * degrees,\n", " rotation_point=None,\n", ")\n", "t1.draw_refractive_index(scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## prism" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:11.748284Z", "start_time": "2020-05-01T23:10:11.126898Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-150 * um, 150 * um, 256)\n", "z0 = np.linspace(0 * um, 500 * um, 512)\n", "wavelength = 2 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.prism(\n", " r0=(100 * um, 150 * um),\n", " length=200 * um,\n", " refractive_index=2,\n", " angle_prism=60 * degrees,\n", " angle=90 * degrees,\n", ")\n", "t1.draw_refractive_index(scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## biprism" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:12.359438Z", "start_time": "2020-05-01T23:10:11.750634Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-120 * um, 120 * um, 256)\n", "z0 = np.linspace(-25 * um, 400 * um, 512)\n", "wavelength = 0.5 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.biprism(\n", " r0=(0, 20 * um), length=200 * um, height=50 * um, refractive_index=1.5, angle=0\n", ")\n", "t1.draw_refractive_index(draw_borders=True, scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ronchi grating" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:12.754969Z", "start_time": "2020-05-01T23:10:12.363596Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEKCAYAAAD6q1UVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAYk0lEQVR4nO3de5RedX3v8fd3ZjKTEO4EuSSRBElRqHILCAs9oiCGy5G2i1ooShQs5VTXscUu5XJOT9uzXEfwihUVDtAqooiCklpaBARt7ZESUu4ohHsiSJCLSEIuk+/5Y+8JT8KEzOB+Zu+H/X6t9azs/ds7z3znt+b5PPv5PXv/dmQmkqR26au7AEnSxDP8JamFDH9JaiHDX5JayPCXpBYaqLuAiTRt2rTcZZdZdZchSa/IokW3PJmZ21fxXK0K/112mcVPblpYdxmS9IpMmRQPV/VcDvtU6I5HnmXVmrV1lyFJm2T4V+hLNz3MC6uH6y5DkjbJ8JekFjL8JamFDH9JaiHDX5JayPCv0Hv32ZnBAbtUUvO16jz/bjt4t2l1lyBJY+JhqiS1kOEvSS1k+EtSCxn+FVr8+G9YM+z0DpKaz/Cv0Gf+9QGWr3J6B0nNZ/hLUgsZ/pLUQoa/JLWQ4V+hPXfenP6+qLsMSdqkxoV/RPRHxH9GxPfL9dkRcVNELI6Ib0XEYNk+VK4vLrfPqrVw4MMH78rUIS+altR8jQt/4CPAPR3rZwOfy8zdgKeBk8v2k4Gny/bPlftJksagUeEfETOAo4ALy/UA3gF8p9zlq8DvlcvHlOuU2w8t95ckbUKjwh/4PPAxYORKqe2AZzJzTbm+BJheLk8HHgUotz9b7r+eiDglIhZGxMJlTy7rYumS1DsaE/4RcTTwRGbeUuXzZuYFmTk3M+duP237Kp9aknpWk76dPBh4d0QcCUwGtgTOBbaOiIHy6H4GsLTcfykwE1gSEQPAVsCvJr7sFy15agU7bjXEQH9j3lMlaVSNSanMPCMzZ2TmLOA44IeZeQJwA3Bsudt84KpyeUG5Trn9h5mZE1jyS3zi+vuc3kFST2hM+L+MjwOnRcRiijH9i8r2i4DtyvbTgNNrqk+Sek6Thn3WycwbgRvL5QeAA0bZ5wXgDye0MEl6leiFI39JUsUM/wrN3HYy/V5qIKkHNHLYp1edeejv1F2CJI2JR/6S1EKGvyS1kOEvSS1k+Fdo1Rpv3i6pNxj+FfrId+/k1ytW112GJG2S4S9JLWT4S1ILGf6S1EKGvyS1kOFfoa02m4STO0jqBU7vUKFPHvWGukuQpDHxyF+SWsjwl6QWMvwlqYUM/wqtXVvrLYQlacwM/wp9+Eqnd5DUGwz/CmV65C+pNxj+ktRChr8ktZDhL0ktZPhXaHCg3+kdJPUEp3eo0Lm/v2fdJUjSmHjkL0kt5JH/KzC8NvnGokd4asWa9do3m9TH/Lm7MDjge6qkZjP8X4G1a5O//toinln2zHrtU6ZO4fi9Zxr+khrPlJKkFvLIv0LLf7OcmfP+GtYOA3DUB4/l6yfuV29RkjQKw79qK55bF/4vrB6uuRhJGp3DPpLUQoa/JLWQ4S9JLdSYMf+ImAl8DdgBSOCCzDw3IrYFvgXMAh4C3pOZT0dEAOcCRwLLgfdn5qI6ah8xebPJ/OuCT7DZUNGtmw3211mOJG1Uk4781wAfzcw9gAOBD0XEHsDpwPWZOQe4vlwHOAKYUz5OAb488SWvr6+vjx23msxOWxePrTabVHdJkjSqxoR/Zj42cuSemc8B9wDTgWOAr5a7fRX4vXL5GOBrWfgpsHVE7DSxVb+Ut3OR1AsaE/6dImIWsA9wE7BDZj5WbnqcYlgIijeGRzv+25KyTZK0CY0L/4jYHLgC+PPM/HXntizukziug+uIOCUiFkbEwmVPLquwUknqXY0K/4iYRBH8l2bmlWXzL0eGc8p/nyjblwIzO/77jLJtPZl5QWbOzcy520/bvnvFS1IPaUz4l2fvXATck5mf7di0AJhfLs8HrupoPzEKBwLPdgwP1WLF8yuYeezfsc1Rn2Gboz7Dn1x2W53lSNJGNeZUT+Bg4H3AHRFxa9l2JvBJ4PKIOBl4GHhPue1qitM8F1Oc6vmBCa12FJkJyx5aN73D08+vrLcgSdqIxoR/Zv4bbPQuiIeOsn8CH+pqUZL0KtWYYR9J0sQx/CWphRoz7PNqMDRliH+5/G+YUk7r4BW+kprK8K9Qf38/r9thczafbLdKajaHfSq2sW+sJalJDP+KObePpF5g+FfMI39JvcDB6QqtXLGSd3zqR/T3F28B898+mz89aHbNVUnSSxn+FRoeHube7y9Yd4XvtTucaPhLaiSHfSSphQx/SWohw1+SWsjwl6QW8gvfCg1OHuSSfziTLQeLaR122HKo5ookaXSGf4UGBgY4aPZ2Tu8gqfEc9pGkFjL8K+YVvpJ6geEvSS3k4HSFVr6wkj/6h5sZGijm8z9+/505dq8ZNVclSS9l+FdoeM0wP/n7y9ZN7xBxouEvqZEc9pGkFjL8JamFDH9JaqFxh39ETI2I/m4UI0maGJv8wjci+oDjgBOA/YGVwFBEPAn8E3B+Zi7uapU9YnBokE+ddxqbDxbvja/fbsuaK5Kk0Y3lbJ8bgOuAM4A7M3MtQERsC7wdODsivpuZX+9emb1hYNIAf/C705nq9A6SGm4sKXVYZq7esDEznwKuAK6IiEmVV9ajvIG7pF6wyTH/zuDfWMiP9uYgSWquMY9PRMSFwFERsQb4BXA7cHtm/l23iutFzu0jqReMZ3D6rcCMzByOiOnAXsCbulNWb1q1chWnLbibyZOKL3zf/YZpHPr6HWquSpJeajzhfxOwHfBEZi4FlgJXd6WqHrVm9Rou/8xF66Z3WHrqiYa/pEYaz3n+5wM/ioi/jIi3RsRW3SpKktRd4wn/rwNfo/i08GfAv0fE/V2pSpLUVeMZ9lmSmf+nsyEivEmtJPWg8YT/rRHxkcw8d6QhM1d2oaae1T/Qz77vfQ+TJhUfqP5w3x1rrkiSRjee8N8BOCwiPg4sAm4Dbs3Mb3elsjGKiHnAuUA/cGFmfrKuWoYmD3HFn7zZG7hLarwxp1RmvgfWDfXsCbwReDNQW/iXE8ydB7wTWALcHBELMvPuumqSpF4w7kPUcqhnUfmo2wHA4sx8ACAiLgOOAQx/SXoZYz7bJyLuiIhLI+LjEXFERMyIiLO6WdwYTAce7VhfUratExGnRMTCiFi47MllXS/IK3wl9YLxnOr5NuD/Aisopni+EziyG0VVKTMvyMy5mTl3+2nbd//ndf0nSNJvbzxj/k8BN5YPImIO8D+6UtXYLQVmdqzPKNtqsXrVar7wkweYWs7n/5YZ27Lf7G3qKkeSNmo8E7v9TmbeO7KemfdFRN1z+9wMzImI2RShfxzwx3UVs3rVaj515nnrpnc49NQT+c7JB9RVjiRt1Hi+8D0/Il5HEbK3A5OBOyNiamY+35XqNiEz10TEh4FrKE71vDgz76qjFknqJWO5jWNk4e3l+mspZvTcu/x3UUSQmbt3tdKNyMyrcYI5SRqXMd3GMSKuAK7KzEcy8xHgkYi4hmKa5/nAwm4WKUmq1ljCfx5wEvDNcmz9GYohn37gB8BnM/PWbhXYS/r7+3ntvKPo6ytOojrk9dNqrkiSRrfJ8M/MF4AvAV8qb+M4DViRmc90ubaeMzRliB+f8Q5v4C6p8caVUuW9eh/rUi2vCp7nL6kXjOciL0nSq4ThXzGnd5DUC8Yzt88eo7QdUmUxvW54eJgHlz3P/b/8Dff/8jcs+7W3O5DUTOMZ8788Ii4BzqE42+ccYC5wUDcK60UrV6zkrcf+lVf4Smq88Qz7vJliHp1/p5hW4RfAwd0oSpLUXeMJ/9UUM3pOoTjyfzAz13alKklSV40n/G+mCP/9Ka7sPT4iar2FoyTplRnPmP/JmTkyjcNjwDER8b4u1CRJ6rLxzOf/kvl7MvOSasvpbX19fWy5/9uIKE74fOPMrWquSJJG5zwEFZq82WRu//S72dzpHSQ1nBd5VcyLvCT1AsO/Ys7tI6kXGP4V88hfUi9wcLpCa9euZdlzK3l+VXGF75RJfWwxZVLNVUnSSxn+FXph+Qvsc/SZTu8gqfEc9pGkFjL8JamFDH9JaiHDX5JayC98KxQR9O+277r1GdtNrbEaSdo4w79CU6ZO4WdfPNbpHSQ1nsM+FfMiL0m9wPCXpBYy/Cvm3D6SeoGD0xXKTJavGqaczp+BvmBoUn+9RUnSKAz/Cq14fgW7v/NjTu8gqfEc9pGkFjL8JamFDH9JaiHH/KsWwcg3viM3cpekpmlE+EfEp4D/CqwC7gc+kJnPlNvOAE4GhoH/npnXlO3zgHOBfuDCzPxkDaWvZ8rUKdx1/TnrrvA1/CU1VVOGfa4Ffjcz3wTcC5wBEBF7AMcBewLzgC9FRH9E9APnAUcAewDHl/vWKiKY1N/HQPno7zP8JTVTI8I/M3+QmWvK1Z8CM8rlY4DLMnNlZj4ILAYOKB+LM/OBzFwFXFbuWzsv8pLUCxoR/hs4Cfjncnk68GjHtiVl28baa+exvqReMGFj/hFxHbDjKJvOysyryn3OAtYAl1b4c08BTgGY+drXVvW0ktTTJiz8M/Owl9seEe8HjgYOzcyR0ZOlwMyO3WaUbbxM+4Y/9wLgAoD99pvb1VGZzGTN2mTN8FoA+iLoc9xfUgM15WyfecDHgLdl5vKOTQuAb0TEZ4GdgTnAf1CMrsyJiNkUoX8c8McTW/VLrXh+BbMO/fi66R0O+9P38u2T9q+5Kkl6qUaEP/BFYAi4tjw98qeZeWpm3hURlwN3UwwHfSgzhwEi4sPANRSnel6cmXfVU/oG1g6vC/8XP8BIUrM0Ivwzc7eX2fYJ4BOjtF8NXN3NuiTp1aqJZ/tIkrrM8JekFmrEsM+rxZSpU7jlmrOZOlTcwGXSgO+tkprJ8K9QRLDF5AGmTrZbJTWbh6YV8/weSb3AQ9RXoK8v+J/v24enlq9Zr32zSX0MOtQjqQcY/q9Af1/w/v1n1V2GJL1iHqZW6Owf3sfzL6zZ9I6SVDPDv0IP/WoFw17VK6kHGP6S1EKGvyS1kOEvSS1k+EtSC3mqZ4XOOfoNTB2ySyU1n0lVoS2mTKq7BEkaE4d9JKmFDH9JaiHDX5JayPCv0Pn/70GeX+n0DpKaz/Cv0K1LnmN4rdM7SGo+w1+SWsjwl6QWMvwlqYUMf0lqIcO/Qn/7rt2d3kFSTzCpKrT9lkN1lyBJY+KRvyS1kOEvSS1k+EtSCxn+Fbr81kdZsWq47jIkaZMM/wrdcN/TrB5eW3cZkrRJhr8ktZDhL0ktZPhLUgsZ/hU69YDXMnlSf91lSNImNSr8I+KjEZERMa1cj4j4QkQsjojbI2Lfjn3nR8R95WN+fVW/aK9dtmZwoFFdKkmjasz0DhExEzgceKSj+QhgTvl4M/Bl4M0RsS3wv4C5QAK3RMSCzHx6YquWpN7UpMPUzwEfowjzEccAX8vCT4GtI2In4F3AtZn5VBn41wLzJrxiSepRjQj/iDgGWJqZt22waTrwaMf6krJtY+2jPfcpEbEwIhYue3JZhVVLUu+asGGfiLgO2HGUTWcBZ1IM+VQuMy8ALgDYb7+53mBXkpjA8M/Mw0Zrj4g3ArOB2yICYAawKCIOAJYCMzt2n1G2LQUO2aD9xsqLHqd/ufsxDtntNUwe9IwfSc1W+7BPZt6Rma/JzFmZOYtiCGffzHwcWACcWJ71cyDwbGY+BlwDHB4R20TENhSfGq6p63cYcdVdy1jl9A6SekBjzvbZiKuBI4HFwHLgAwCZ+VRE/G/g5nK/v83Mp+opUZJ6T+PCvzz6H1lO4EMb2e9i4OIJKkuSXlVqH/aRJE08w79CJ+y9s1f4SuoJjRv26WVvmTOt7hIkaUw8TJWkFjL8JamFDH9JaiHDv0L3//I3rPEiL0k9wPCv0Kd//ADLVw3XXYYkbZLhL0ktZPhLUgsZ/pLUQoa/JLWQ4V+ho/fYnsF+u1RS8zm9Q4WO2nOnukuQpDHxMFWSWsjwl6QWiuJ+Ke0QEc8BP6+7jnGYBjxZdxFj1Eu1Qm/V20u1Qm/V20u1AuyemVtU8URtG/P/eWbOrbuIsYqIhb1Sby/VCr1Vby/VCr1Vby/VCkW9VT2Xwz6S1EKGvyS1UNvC/4K6CxinXqq3l2qF3qq3l2qF3qq3l2qFCutt1Re+kqRC2478JUkY/pLUSq0J/4iYFxE/j4jFEXF6A+qZGRE3RMTdEXFXRHykbN82Iq6NiPvKf7cp2yMivlDWf3tE7FtDzf0R8Z8R8f1yfXZE3FTW9K2IGCzbh8r1xeX2WTXUunVEfCcifhYR90TEQQ3v278o/w7ujIhvRsTkpvRvRFwcEU9ExJ0dbePuy4iYX+5/X0TMn+B6P1X+LdweEd+NiK07tp1R1vvziHhXR3vXM2O0Wju2fTQiMiKmlevV9m1mvuofQD9wP7ArMAjcBuxRc007AfuWy1sA9wJ7AOcAp5ftpwNnl8tHAv8MBHAgcFMNNZ8GfAP4frl+OXBcufwV4L+Vy38GfKVcPg74Vg21fhX4YLk8CGzd1L4FpgMPAlM6+vX9Telf4L8A+wJ3drSNqy+BbYEHyn+3KZe3mcB6DwcGyuWzO+rdo8yDIWB2mRP9E5UZo9Vats8ErgEeBqZ1o28n9AVZ1wM4CLimY/0M4Iy669qgxquAd1JcgbxT2bYTxYVpAOcDx3fsv26/CapvBnA98A7g++Uf4JMdL6h1fVz+0R5ULg+U+8UE1rpVGaaxQXtT+3Y68Gj54h0o+/ddTepfYNYGYTquvgSOB87vaF9vv27Xu8G23wcuLZfXy4KRvp3IzBitVuA7wF7AQ7wY/pX2bVuGfUZeXCOWlG2NUH5s3we4CdghMx8rNz0O7FAu1/07fB74GDByh/rtgGcyc80o9ayrtdz+bLn/RJkNLAP+vhymujAiptLQvs3MpcCngUeAxyj66xaa278w/r6s+++300kUR9DQwHoj4hhgaWbetsGmSmttS/g3VkRsDlwB/Hlm/rpzWxZv47WfixsRRwNPZOYtddcyRgMUH6W/nJn7AM9TDE2s05S+BSjHy4+heNPaGZgKzKu1qHFoUl9uSkScBawBLq27ltFExGbAmcBfdftntSX8l1KMoY2YUbbVKiImUQT/pZl5Zdn8y4jYqdy+E/BE2V7n73Aw8O6IeAi4jGLo51xg64gYmR+qs551tZbbtwJ+NUG1QnHksyQzbyrXv0PxZtDEvgU4DHgwM5dl5mrgSoo+b2r/wvj7su4+JiLeDxwNnFC+YfEyddVV7+soDgJuK19vM4BFEbFj1bW2JfxvBuaUZ08MUnxJtqDOgiIigIuAezLzsx2bFgAj39bPp/guYKT9xPIb/wOBZzs+dndVZp6RmTMycxZF3/0wM08AbgCO3UitI7/DseX+E3ZkmJmPA49GxO5l06HA3TSwb0uPAAdGxGbl38VIvY3s31FqGEtfXgMcHhHblJ90Di/bJkREzKMYtnx3Zi7v2LQAOK48g2o2MAf4D2rKjMy8IzNfk5mzytfbEooTQx6n6r7t1hcuTXtQfFN+L8U3+Gc1oJ63UHxUvh24tXwcSTF2ez1wH3AdsG25fwDnlfXfAcytqe5DePFsn10pXiiLgW8DQ2X75HJ9cbl91xrq3BtYWPbv9yjOgmhs3wJ/A/wMuBO4hOLsk0b0L/BNiu8iVpdhdPIr6UuKsfbF5eMDE1zvYopx8ZHX2lc69j+rrPfnwBEd7V3PjNFq3WD7Q7z4hW+lfev0DpLUQm0Z9pEkdTD8JamFDH9JaiHDX5JayPCXpBYy/CWphQx/SWohw18ap4iYEhE/ioj+Cp5rMCJ+3DGNgzQhDH9p/E4CrszM4d/2iTJzFcWVsn/0W1cljYPhL3WIiFMj4tby8WBE3DDKbifw4lw2RMSNEfH6cnm7kbsyRcS3I+KLEfFvEfFwRLwlIi6JiHsj4qKO5/te+ZzShDH8pQ6Z+ZXM3BvYn2Kulc5J9ygn+do1Mx/qaN6NYg4YgDdRzLsC8Ebggcx8C8UNNi6imFxsD+CoiBgq97uz/HnShDH8pdGdSzFb5j9u0D4NeGZkJSJ2objxxshNbt4E3B4RkyluHfn5sj2BizLzsSxuwDIMrAIoh49WRcQW3flVpJcy/KUNlPO+70Ix0+aGVlDMqjliL4qZQ0fsV67vCSzqeFPYi+JObUTEDOAXuf6sikPAC1XUL42F4S91iIj9gL8E3tsR3Otk5tNAf3lkD8XU0ZPL/zuH4o5cd1AM+XTehu9NvPgmsd4bRkRsBzyZxY1cpAnh6WXS+j5McSP1G4r7qrAwMz+4wT4/oLgfw3UUQf5CRNxGEeh3U9zcZGuKufYp3yimlG8csP4bAcDbgX/qxi8jbYzz+UvjFBH7An+Rme+LiPso7rT03G/xfFcCp2fmvZvcWaqIwz7SOGXmIopPBlsVq79V8A8C3zP4NdE88pekFvLIX5JayPCXpBYy/CWphQx/SWohw1+SWsjwl6QWMvwlqYX+PzNNtwY6YH8kAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 256)\n", "z0 = np.linspace(0 * um, 1400 * um, 512)\n", "wavelength = 0.5 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "\n", "t1.ronchi_grating(\n", " period=50 * um,\n", " fill_factor=0.5,\n", " length=500 * um,\n", " height=20 * um,\n", " r0=(0 * um, 100 * um),\n", " Dx=2 * um,\n", " refractive_index=1.5 + 0.5j,\n", " heigth_substrate=25 * um,\n", " refractive_index_substrate=1.5,\n", " angle=0 * degrees,\n", ")\n", "\n", "t1.draw_refractive_index(scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## grating with substrate" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:13.132047Z", "start_time": "2020-05-01T23:10:12.757769Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 256)\n", "z0 = np.linspace(0 * um, 400 * um, 512)\n", "wavelength = 0.55 * um\n", "\n", "t0 = Scalar_mask_X(x=x0, wavelength=wavelength)\n", "t0.slit(x0=0, size=0 * um)\n", "\n", "t1 = Scalar_mask_X(x=x0, wavelength=wavelength)\n", "t1.ronchi_grating(period=20 * um, x0=0 * um, fill_factor=0.5)\n", "\n", "t2 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength, n_background=1)\n", "\n", "t2.extrude_mask(t=t0, z0=10 * um, z1=50 * um, refractive_index=1.5)\n", "t2.extrude_mask(t=t1, z0=50 * um, z1=55.5 * um, refractive_index=1.5)\n", "\n", "t2.draw_refractive_index(draw_borders=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## sine grating" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:13.525419Z", "start_time": "2020-05-01T23:10:13.134338Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEKCAYAAAAiizNaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAcN0lEQVR4nO3debxVdb3/8debI1OIAoKIjA44IDlBikPmlIITpWZYqaX3R93M5rzgGFctvd1bpjlnqeVPRUVFw5EcUhNFU2QQPYLKpDiBgsx87h97EVsuKsfO3t99+L6fj8d+sPd3L855n8XivM9aZ631VURgZmZWLc1SBzAzs7y4eMzMrKpcPGZmVlUuHjMzqyoXj5mZVdUGqQNUU8eOHaNnz16pY7B8ZZDiZEIJNmim6n9iM2vSnnnm6bciolNjfbysiqdnz148Nm580gxLlq1gs4HnwntvVv1zt+q7B2POPpS+3Tai+Qbe2TWzddO6uV5tzI/n7z4ZWTzx7+x/zJmMen5m6ihmljEXT24i+M7P7+C5V+elTmJmmXLxZGjjrl3o0fEzqWOYWaZcPLlp0Zq/nXMI7du0SJ3EzDKV1ckF2eu5I5eePpDum3hvx8zScfHkQmLSVcexefvWqZOYWeZ8qM3MzKrKxZOLCM64Z2rqFGZmLp6c3Hb5zXT7fzcyb+HS1FHMLGMunpx8MJ+Fzz7K/hc8xPIVK1OnMbNMuXgyNP2RR3hg6hupY5hZplw8uZE47gdDGNinS+okZpYpF09mtj3iS1xw6PapY5hZxnwdT0YuuuxnHLDVprRuUZc6ipllzHs8uZA4YKtNfQGpmSXn4slFBIuWrkidwszMxZOTfU67k7cX+BoeM0urZopHUndJD0qaLGmSpB8U4x0k3S/ppeLP9sW4JF0kqV7SBEm7pv0Kat8HEx7jq78fx99eqv7sp2Zmq9RM8QDLgZ9ERB9gAHCypD7AMGBsRPQGxhavAQYBvYvHUOCy6kduep6+/iaOOPUWJs6YnzqKmWWqZoonIuZExDPF8/eBKUBXYDBwbbHYtcCXiueDgeui5AmgnSRfnLIuZk5i/Ovvpk5hZpmqmeIpJ6kXsAswDugcEXOKt14HOhfPuwIzyv7azGJszY81VNJ4SePffMuHmJDYbN9BDNmpe+okZpapmiseSRsCtwI/jIj3yt+LiACiIR8vIq6MiP4R0b9Tx06NmLQJatGaCy/9CZMuOIRWvpbHzBKpqeKR1JxS6VwfEaOK4TdWHUIr/pxbjM8Cyn9s71aM2Uf4wglHc0L/XjRrptRRzCxjNVM8kgRcDUyJiF+XvTUaOKF4fgJwR9n48cXZbQOA+WWH5GxNEpd+ZcfUKczMaqd4gL2A44D9JT1bPA4Bzge+KOkl4MDiNcAYYBpQD1wFfDdB5qYjgnPH1qdOYWZWO/dqi4hHgY86BnTAWpYP4OSKhlrP3PC7mxi03SYc3nfz1FHMLGO1tMdjlbZwHsd//wrmvrckdRIzy5iLJzfvv81eZ93DwsXLUycxs0y5eDL01tSpPD/Ldy4wszRcPLmR+M/Tj2LAVpukTmJmmaqZkwus8jbY9nNcM/wgDtxm09RRzCxjLp6MPHDeYHbq2S51DDPLnA+15UKi00YtU6cwM3PxZCOCl99awLyFngjOzNJy8WTkiK+N4OvXPc2SZZ4C28zScfFk5vE//n8ufmx66hhmljEXT24iOO/8W3ms/q3UScwsUy6eDHXafnt27t4udQwzy5RPp87JBi2gYw8eG3EwbVr6n97M0vB3n4wM+MbR3H3ynqljmFnmfKgtFxJXf22X1CnMzFw8ZmZWXS6eXEQw9KZnU6cwM3Px5OSx626h/Zcu4e33PRGcmaXj4snJsiUwawp7/vw+Fi313QvMLA0XT4bmTpzI+FffSR3DzDLl4smNxH+cejSf790pdRIzy5SLJzO7Hz+EH+6zZeoYZpYxX0CakVv/dBa7dG9Hq+Z1qaOYWca8x5MLie06t6V9mxapk5hZ5lw8uYjgnQWeBM7M0nPxZGT/0+7g/ilvsHT5ytRRzCxjLp6MLHvhSY454Vz+8OQrqaOYWcZcPLmJYPi5oxj3sq/jMbM0XDwZ6rD1VvTZvG3qGGaWKRdPbtq04/FzBtG2dfPUScwsU76OJyMtdxjA5T/Zj84bt0odxcwy5uLJhcQzvzmKzdu3Tp3EzDLnQ21mZlZVLp5cRPD9Uc+nTmFmVlvFI+kPkuZKmlg21kHS/ZJeKv5sX4xL0kWS6iVNkLRruuRNw9g/3sKfn36ViEgdxcwyVlPFA1wDDFxjbBgwNiJ6A2OL1wCDgN7FYyhwWZUyNl1LPuCU7/6avsPuZskyTwRnZmnUVPFExCPAmlc2DgauLZ5fC3ypbPy6KHkCaCepS1WCNmUrVzD7r2O44dkZqZOYWaZqqng+QueImFM8fx3oXDzvCpR/95xZjNkn6bo9u3ZunzqFmWWqSZ1OHREhqUG/oJA0lNKhOLr36FGRXE3JzkO+wlmHbc+OPTZOHcXMMtUU9njeWHUIrfhzbjE+C+hetly3YuxDIuLKiOgfEf07dcx7uufWn92Tm4cOYL9tN00dxcwy1hSKZzRwQvH8BOCOsvHji7PbBgDzyw7J2Vo88osj6Ni2ZeoYZpa5mjrUJukGYF+go6SZwNnA+cBISScBrwLHFIuPAQ4B6oEPgG9VPXATs2yF5+Exs/Rqqngi4tiPeOuAtSwbwMmVTbR+2e+00Tz726PZrJ3v1WZm6TSFQ23WSJZMfoKjLvs7i5b6Gh4zS8fFk5nJt43i9Lunpo5hZhlz8eQmgj9eeCP3Tn49dRIzy5SLJ0M99tyTA3xKtZklUlMnF1iFtW5Lq6368vBp+7NBnX/mMLM0XDwZOXzoV7juG76Jt5ml5R97cyFx/qHbp05hZubiMTOz6nLx5CKCvv9+AyM9HYKZJebiyUi8/AzfPuUSZr2zKHUUM8uYiyc3ixew95ljmLdwaeokZpYpF0+G5r02g+lvfpA6hpllysWTG4mLf/5ldunVLnUSM8uUr+PJSMsdBjD6rEPYpUe71FHMLGMunow89IvBbLd529QxzCxzPtSWC4mNWvvnDDNLz8WTiwimvbUwdQozMxdPTg4/4w4uf3waiz0RnJkl5OLJybR/MPyHv+GcB15KncTMMubiyU0El/76Zv76wtzUScwsUy6eDG3erx97bbVJ6hhmlikXT2469eJvZx5Iy+Z1qZOYWaZ8fm1Guux3CBef2I8OG7ZIHcXMMtbg4pHUBlgcET41qimReGD4fmzevnXqJGaWuU881CapmaSvSfqLpLnAC8AcSZMl/UrS1pWPaWZm64t1+R3Pg8BWwHBgs4joHhGbAnsDTwAXSPpGBTNaY4jguGueSp3CzGydDrUdGBHL1hyMiHeAW4FbJTVv9GTW6J65aRTtxzzClJt/ymbtWqWOY2aZ+sQ9nvLS+aiCWVsxWQ1asRzmvc5eZ93N+4v8T2Zmaazz6dSSfg+8JmmGpHGSrpJ0SgWzWYW88/I0psx5P3UMM8tUQ85q+zzQLSJWSOoK7ATsWJlYVjES559xJLtt2SF1EjPLVEOKZxywCTA3ImYBs4AxFUllFbP/0OP41ud6po5hZhlrSPFcATws6WpKJTQhIuZXJpZVwtiR57BNl7a02MA3rDCzdBryHejPwHWUyuq7wOOSXq5IKmt8Epu1a8WGrXyzCjNLqyHfhWZGxC/LByS1bOQ8VikRzH53se9cYGbJNWSP51lJPygfiIgljZzHKujg02/nlTc9C6mZpdWQ4ukMfEfSbEl3STpP0lcqFWxdSRooaaqkeknDUuepZSvrn2bQfz3EpY9NSx3FzDK2zsUTEcdExPbAFsBZwIvA7pUKti4k1QGXAIOAPsCxkvqkzFTrXn/obk4fcSOPvPhm6ihmlqkG/6a5OLz2TPFIbTegPiKmAUi6ERgMTE6aqta9O5vp7y1kHzqlTmJmGVrn4pH0PDCh7PE8cEJEnFehbOuiKzCj7PVM1tgLkzQUGArQvUeP6iWrVRt1YqdB+3J8P1/LY2ZpNOR3PF8ArgIWAUOAicAhlQjVmCLiyojoHxH9O3XM/Cf8jTpxw8VDeeinX0BS6jRmlql13uMp7kb9UPFAUm/gjIqkWnezgO5lr7sVY7YWJ/3wGAb26ZI6hpllriE3Cd2m/HVEvET6e7U9BfSWtIWkFpT2xEYnzlSbJH68d6/UKczMGnSo7QpJr0n6u6QrJF0LTCymwk4iIpYD3wPuBaYAIyNiUqo8NS2CE6+vhfNBzCx3n3ioTZKiZL/idQ9Kd6beufjzGUlExLYVTfoRImIMvlnpOhl3/a1cvmsXvrPnlqmjmFnG1mnqa0mnFIVDRLwWEXcCFwCXUbph6CUVzGiNZflShv/4IupfX5A6iZllbF2KZyCwArihuGvBZEnTgJco/U7l1xFxUSVDWiNasZx9z7yLN+YvTp3EzDL1iYfaImIxcClwaTH1dUdgUUTMq3A2q5CF8xfyzoKldN64VeooZpahBt25ICKWAXMqlMWqoVkdN404lO27bpQ6iZllypOzZKTNznvz8LmH0bPjZ1JHMbOMuXhyIfHoLw6nV6dkZ7+bmQENu4D0/9z1WdK+jRnGKstTXptZLWjId6KRkv5DJa0lXQz88hP/ltWGCG6dNJsZb3+QOomZZa4hxbM7pfuiPU7pVjWzgb0qEcoq46wf/YYjLvwbHyxZnjqKmWWsIcWzjNKdqVsDrYDpEbGyIqmsYl65505OuW1i6hhmlrGGFM9TlIrnc8DnKc32eXNFUllFjbr0Ju6cODt1DDPLVEPOajspIsYXz+cAgyUdV4FMVmHbHnQgh3p6BDNLpCHz8Yxfy9ifGjeOVdSGHei4Uz/u/fE+NGvmieDMLA1fx5ORr59yDL87sm/qGGaWOV/YkQuJ0/bbKnUKMzMXj5mZVZeLJxcRHH7h31ixMlInMbPMuXgyMm3MaDru/VOmz12YOoqZZczFk5tlS/jCmX/hzfeWpE5iZply8WTo/bfe8QykZpaMiyc3zeq4bsQR9O2+ceokZpYpF09mjv7RiQzafrPUMcwsY76ANCNP3nk+PTt+hg3q/POGmaXj70C5kGjTss6TwZlZcv4ulIsIJsyZlzqFmZmLJyfHnnkHZ9z9AouWrkgdxcwy5uLJyWsTueTsS/jZXVNSJzGzjLl4chPB9RfdyJhJc1InMbNMuXgytOUX9uGg7TqnjmFmmXLx5KZHX8aeuq9PqTazZHwdT0a2Hfxl/mfITrRr0yJ1FDPLmIsnFxKjTt6Tzdu3Tp3EzDLn4y1mZlZVLp5cRHDkJY+nTmFmVhvFI+krkiZJWimp/xrvDZdUL2mqpIPLxgcWY/WShlU/ddMzdfTtjLhvKgsWL08dxcwyVhPFA0wEjgQeKR+U1AcYAuwADAQulVQnqQ64BBgE9AGOLZa1jxPBhadfTN8f3847C5amTmNmmaqJ4omIKRExdS1vDQZujIglETEdqAd2Kx71ETEtIpYCNxbL2jqY/9RDjJ4yO3UMM8tUTRTPx+gKzCh7PbMY+6hxWwfNt9uNfXt1Sh3DzDJVtdOpJT0ArG0GstMj4o4Kft6hwFCA7j16VOrTNBmHff9Efn7QNvTq1CZ1FDPLVNWKJyIO/BR/bRbQvex1t2KMjxlf8/NeCVwJ0K9f//gUGdYb7Xffn6u+uhOtWtSljmJmGav1Q22jgSGSWkraAugNPAk8BfSWtIWkFpROQBidMGftk3j0nEEuHTNLriaKR9KXJc0E9gD+IulegIiYBIwEJgP3ACdHxIqIWA58D7gXmAKMLJa1jxLB1Lnvp05hZoYi8jn61K9f/3hs3PikGZYsW8FmA8+F996s/ifvtRPjLhrCNl3aVv9zm1mT1bq5no6I/p+85LqpiT0eq5JXnmPQLx/wBaRmlpSLJzPv/H0s37ju6dQxzCxjLp4MPXztLYyaMDN1DDPLlIsnQ7sN+RJH7tgtdQwzy5Tn48lJh67ssN8Abvm33VInMbOMuXgy8rNTj+K0A7ZJHcPMMudDbbmQ+Oau3T95OTOzCnPxmJlZVbl4chHBDkeM4FcP1pPTRcNmVntcPDlZvIBfDLuYSTPfS53EzDLm4snNyhV88ay7mPH2B6mTmFmmXDwZWrZkGUuXr0wdw8wy5eLJTbM67vzPw9mq84apk5hZpnwdT0Y27r8vf//lYWy6UcvUUcwsYy6eXEg8et6hdGnXKnUSM8ucD7VlpJlSJzAzc/HkI4L76t9IncLMzMWTkx+NuI0h14xnoSeCM7OEXDw5eeNl7r3kGk684R+pk5hZxlw8Gbrv6pu5zRPBmVkiLp4M7XLkYXzZE8GZWSIunsy06rsHt//7HqljmFnGfB1PRvb/9vGcfdC2bNS6eeooZpYxF08uJC4+6rNs3r516iRmljkfajMzs6py8eQigi+e/yCLl61IncTMMufiycjsv46hy94/Zurs91NHMbOMuXhys3IF+595F7PfXZQ6iZllysWToUULF7HAt80xs0RcPLlpVsetIw5jmy5tUycxs0y5eDJz/LCh7NO7U+oYZpYxX8eTC4lnx1xAtw6tqfPEPGaWkPd4MtK8Ti4dM0vOxZOLCB599a3UKczMXDw5+fZZt/Hcq/NSxzCzzNVE8Uj6laQXJE2QdJukdmXvDZdUL2mqpIPLxgcWY/WShiUJ3tTMeZEvnjGab4+ckDqJmWWsJooHuB/oGxE7Ai8CwwEk9QGGADsAA4FLJdVJqgMuAQYBfYBji2XtEyx74UlGXvRnbn9+VuooZpapmiieiLgvIlZd0fgEsGqWssHAjRGxJCKmA/XAbsWjPiKmRcRS4MZiWVsXEayMSJ3CzDJVi6dTnwjcVDzvSqmIVplZjAHMWGN897V9MElDgaEA3Xv0aNSgTVGzrftxxOE7c6RnIDWzRKpWPJIeADZby1unR8QdxTKnA8uB6xvr80bElcCVAP369c/7x/zNtuaBX36ZXXq1S53EzDJWteKJiAM/7n1J3wQOAw6I+OdxoFlA97LFuhVjfMy4fYSLznbpmFl6NfE7HkkDgVOBIyLig7K3RgNDJLWUtAXQG3gSeAroLWkLSS0onYAwutq5mxSJA7baNHUKM7PaKB7gd0Bb4H5Jz0q6HCAiJgEjgcnAPcDJEbGiOBHhe8C9wBRgZLGsfZQIBv33w6xcmffRRjNLryZOLoiIrT/mvfOA89YyPgYYU8lc65vX7ruLUwf05IJDt/Otc8wsmVrZ47Equfrcy3li2tupY5hZxlw8uVm5gsFn3UX96wtSJzGzTLl4MtS8ZXNatahLHcPMMuXiyU2zOsaeczjdOrROncTMMlUTJxdYdWy6z8E884tBfMZ7O2aWkIsnFxIPnnEgbVr6n9zM0vKhNjMzqyoXTy4i+OnoyUycMT91EjPLnIsnI3f/7o8MHHE37y1aljqKmWXMxZOZhc89ytFXjUsdw8wy5uLJ0FM33cGoCTNTxzCzTLl4MrTvN4/2RHBmlozPrc1Jp17sM3hv/nRcv9RJzCxjLp6MnH/mUXx7jy1SxzCzzPlQWy4kDt9ubTOPm5lVl/d4qqxl8zpevG0YKaZj22TDFgk+q5nZhykinxkpJb0PTE2do0Z0BN5KHaJGeF2s5nWxmtfFattGRNvG+mC57fFMjYj+qUPUAknjvS5KvC5W87pYzetiNUnjG/Pj+Xc8ZmZWVS4eMzOrqtyK58rUAWqI18VqXhereV2s5nWxWqOui6xOLjAzs/Ry2+MxM7PEXDxmZlZV2RSPpIGSpkqqlzQsdZ5Kk9Rd0oOSJkuaJOkHxXgHSfdLeqn4s30xLkkXFetngqRd034FjUtSnaR/SLqreL2FpHHF13uTpBbFeMvidX3xfq+kwStAUjtJt0h6QdIUSXtkvF38qPj/MVHSDZJa5bJtSPqDpLmSJpaNNXg7kHRCsfxLkk5Yl8+dRfFIqgMuAQYBfYBjJfVJm6rilgM/iYg+wADg5OJrHgaMjYjewNjiNZTWTe/iMRS4rPqRK+oHwJSy1xcAv4mIrYF3gZOK8ZOAd4vx3xTLrW9+C9wTEdsBO1FaL9ltF5K6At8H+kdEX6AOGEI+28Y1wMA1xhq0HUjqAJwN7A7sBpy9qqw+VkSs9w9gD+DestfDgeGpc1V5HdwBfJHSnRu6FGNdKF1UC3AFcGzZ8v9crqk/gG7Ff6L9gbsAUboifYM1tw/gXmCP4vkGxXJK/TU04rrYGJi+5teU6XbRFZgBdCj+re8CDs5p2wB6ARM/7XYAHAtcUTb+oeU+6pHFHg+rN7BVZhZjWSgOCewCjAM6R8Sc4q3Xgc7F8/V5HV0InAqsLF5vAsyLiOXF6/Kv9Z/roXh/frH8+mIL4E3gj8Whx99LakOG20VEzAL+G3gNmEPp3/pp8t02oOHbwafaPnIpnmxJ2hC4FfhhRLxX/l6UfkRZr8+nl3QYMDcink6dpUZsAOwKXBYRuwALWX04BchjuwAoDgkNplTGmwNt+L+HnrJVye0gl+KZBXQve92tGFuvSWpOqXSuj4hRxfAbkroU73cB5hbj6+s62gs4QtIrwI2UDrf9FmgnadW9Csu/1n+uh+L9jYG3qxm4wmYCMyNiXPH6FkpFlNt2AXAgMD0i3oyIZcAoSttLrtsGNHw7+FTbRy7F8xTQuzhbpQWlXyCOTpypoiQJuBqYEhG/LntrNLDqzJMTKP3uZ9X48cXZKwOA+WW73E1WRAyPiG4R0YvSv/tfI+LrwIPA0cVia66HVevn6GL59ean/4h4HZghadti6ABgMpltF4XXgAGSPlP8f1m1LrLcNgoN3Q7uBQ6S1L7YgzyoGPt4qX+5VcVfoh0CvAi8DJyeOk8Vvt69Ke0mTwCeLR6HUDomPRZ4CXgA6FAsL0pn/r0MPE/pTJ/kX0cjr5N9gbuK51sCTwL1wM1Ay2K8VfG6vnh/y9S5K7AedgbGF9vG7UD7XLcLYATwAjAR+BPQMpdtA7iB0u+2llHaEz7p02wHwInFOqkHvrUun9u3zDEzs6rK5VCbmZnVCBePmZlVlYvHzMyqysVjZmZV5eIxM7OqcvGYmVlVuXjMzKyqXDxmVSSptaSHi6k6/tWP1ULSI2W3dzFrElw8ZtV1IjAqIlb8qx8oIpZSusr8q/9yKrMqcvGYNRJJ35H0bPGYLunBtSz2dVbf/wpJD0narni+yarZICXdLOl3kh6V9KqkvSX9SdKLkq4u+3i3Fx/TrMlw8Zg1koi4PCJ2Bj5H6d5X5TdnpbhB7ZYR8UrZ8NaU7iEIsCOl+2ABfBaYFhF7U5pc62pKcwr1AQ6V1LJYbmLx+cyaDBePWeP7LaU7F9+5xnhHYN6qF5J6ArMiYtUEdTsCEyS1AtpRmsAOSjd7vToi5kRpArIVwFKA4pDdUkltK/OlmDU+F49ZI5L0TaAnpbser2kRpTscr7ITpTtEr9KveL0D8ExZIe1EafZYJHUDZseH7+7bEljcGPnNqsHFY9ZIJPUDfgp8o6w0/iki3gXqij0aKE1P0Kr4u70pzYb5PKXDbM+V/dUdWV1QHyorSZsAb0VpIjOzJsGnYZo1nu8BHYAHS/OKMT4i/m2NZe6jNFfSA5RKZLGk5yiVyWRKk2+1ozTfC0VJtS5KCz5cQgD7AX+pxBdjVimej8esiiTtCvwoIo6T9BKwa0S8/y98vFHAsIh48RMXNqsRPtRmVkUR8QylPaKNSy//pdJpAdzu0rGmxns8ZmZWVd7jMTOzqnLxmJlZVbl4zMysqlw8ZmZWVS4eMzOrKhePmZlVlYvHzMyq6n8BK5DkC5x/69EAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-250 * um, 250 * um, 256)\n", "z0 = np.linspace(0 * um, 1000 * um, 512)\n", "wavelength = 0.6238 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "\n", "t1.sine_grating(\n", " period=20 * um,\n", " heigth_sine=10 * um,\n", " heigth_substrate=100 * um,\n", " r0=(0 * um, 100 * um),\n", " length=500 * um,\n", " Dx=2 * um,\n", " refractive_index=1.5,\n", " angle=0 * degrees,\n", ")\n", "\n", "t1.draw_refractive_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## probe" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:13.889039Z", "start_time": "2020-05-01T23:10:13.528440Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-12 * um, 12 * um, 256)\n", "z0 = np.linspace(0 * um, 500 * um, 512)\n", "wavelength = 0.6 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.probe(\n", " r0=(0, 50 * um),\n", " base=5 * um,\n", " length=300 * um,\n", " refractive_index=1.5,\n", " angle=0 * degrees,\n", ")\n", "\n", "t1.draw_refractive_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Aspheric lens" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Theoretical image focal distance f' = 0.73 mm\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 512)\n", "z0 = np.linspace(-0.1 * mm, 1.25 * mm, 512)\n", "wavelength = 5 * um\n", "\n", "lens = Scalar_mask_XZ(x0, z0, wavelength, n_background=1, info=\"\")\n", "focal, ipasa = lens.aspheric_lens(\n", " r0=(0 * um, 0 * um),\n", " angle=(0 * degrees, (0 * um, 0 * um)),\n", " refractive_index=1.5,\n", " cx=(1 / (1 * mm), -1 / (0.5 * mm)),\n", " Qx=(0, 0),\n", " a2=(0, 1e-11),\n", " a3=(0, 0),\n", " a4=(0, 0),\n", " thickness=0.4 * mm,\n", " size=0.8 * mm,\n", ")\n", "\n", "lens.slit(r0=(0, 100 * um), aperture=800 * um, depth=75 * um, refractive_index=1 + 2j)\n", "\n", "print(\"Theoretical image focal distance f' = {:2.2f} mm\".format(focal/mm))\n", "\n", "lens.draw_refractive_index(\n", " draw_borders=True, min_incr=0.01, colorbar_kind=\"vertical\", scale='scaled'\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lenses with different curvatures" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Theoretical image focal distance f' = 1.03 mm\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 512)\n", "z0 = np.linspace(-0.1 * mm, 1.25 * mm, 512)\n", "wavelength = 5 * um\n", "\n", "lens = Scalar_mask_XZ(x0, z0, wavelength, n_background=1, info=\"\")\n", "focal, ipasa = lens.aspheric_lens(\n", " r0=(0 * um, 0 * um),\n", " angle=(0 * degrees, (0 * um, 0 * um)),\n", " refractive_index=1.5,\n", " cx=(1 / (1 * mm), -1 / (1 * mm)),\n", " thickness=0.2 * mm,\n", " size=0.8 * mm,\n", ")\n", "\n", "lens.slit(r0=(0, 100 * um -25*um/2), aperture=800 * um, depth=25 * um, refractive_index=1 + 2j)\n", "\n", "print(\"Theoretical image focal distance f' = {:2.2f} mm\".format(focal/mm))\n", "\n", "\n", "lens.draw_refractive_index(\n", " draw_borders=True, min_incr=0.01, colorbar_kind=\"vertical\", scale='scaled'\n", ")" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Theoretical image focal distance f' = 60.00 mm\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 512)\n", "z0 = np.linspace(-0.1 * mm, 1.25 * mm, 512)\n", "wavelength = 5 * um\n", "\n", "lens = Scalar_mask_XZ(x0, z0, wavelength, n_background=1, info=\"\")\n", "focal, ipasa = lens.aspheric_lens(\n", " r0=(0 * um, 100 * um),\n", " angle=(0 * degrees, (0 * um, 0 * um)),\n", " refractive_index=1.5,\n", " cx=(1 / (1 * mm), 1 / (1 * mm)),\n", " thickness=0.1 * mm,\n", " size=0.8 * mm,\n", ")\n", "\n", "lens.slit(r0=(0, 100 * um), aperture=800 * um, depth=25 * um, refractive_index=1 + 2j)\n", "\n", "print(\"Theoretical image focal distance f' = {:2.2f} mm\".format(focal/mm))\n", "\n", "\n", "lens.draw_refractive_index(\n", " draw_borders=True, min_incr=0.01, colorbar_kind=\"vertical\", scale='scaled'\n", ")" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Theoretical image focal distance f' = 2.00 mm\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 512)\n", "z0 = np.linspace(-0.1 * mm, 1.25 * mm, 512)\n", "wavelength = 5 * um\n", "\n", "lens = Scalar_mask_XZ(x0, z0, wavelength, n_background=1, info=\"\")\n", "focal, ipasa = lens.aspheric_lens(\n", " r0=(0 * um, 0 * um),\n", " angle=(0 * degrees, (0 * um, 0 * um)),\n", " refractive_index=1.5,\n", " cx=(1 / (1 * mm), 0),\n", " thickness=0.1 * mm,\n", " size=0.8 * mm,\n", ")\n", "\n", "lens.slit(r0=(0, 100 * um), aperture=800 * um, depth=25 * um, refractive_index=1 + 2j)\n", "\n", "print(\"Theoretical image focal distance f' = {:2.2f} mm\".format(focal/mm))\n", "\n", "lens.draw_refractive_index(\n", " draw_borders=True, min_incr=0.01, colorbar_kind=\"vertical\", scale='scaled'\n", ")" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1: RuntimeWarning: invalid value encountered in sqrt\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Theoretical image focal distance f' = 0.60 mm\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 512)\n", "z0 = np.linspace(-0.1 * mm, 1.25 * mm, 512)\n", "wavelength = 5 * um\n", "\n", "radius = 400*um\n", "\n", "lens = Scalar_mask_XZ(x0, z0, wavelength, n_background=1, info=\"\")\n", "focal, ipasa = lens.aspheric_lens(\n", " r0=(0 * um, 0 * um),\n", " angle=(0 * degrees, (0 * um, 0 * um)),\n", " refractive_index=1.5,\n", " cx=(1 / (radius), -1 / (radius)),\n", " thickness=2*radius,\n", " size=2*radius,\n", ")\n", "\n", "lens.slit(r0=(0, radius-25*um), aperture=800 * um, depth=50 * um, refractive_index=1 + 2j)\n", "\n", "print(\"Theoretical image focal distance f' = {:2.2f} mm\".format(focal/mm))\n", "\n", "\n", "lens.draw_refractive_index(\n", " draw_borders=True, min_incr=0.01, colorbar_kind=\"vertical\", scale='scaled'\n", ")" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Theoretical image focal distance f' = -0.98 mm\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 512)\n", "z0 = np.linspace(-0.1 * mm, 1.25 * mm, 512)\n", "wavelength = 5 * um\n", "\n", "lens = Scalar_mask_XZ(x0, z0, wavelength, n_background=1, info=\"\")\n", "focal, ipasa = lens.aspheric_lens(\n", " r0=(0 * um, 100 * um),\n", " angle=(0 * degrees, (0 * um, 0 * um)),\n", " refractive_index=1.5,\n", " cx=(-1 / (1 * mm), 1 / (1. * mm)),\n", " thickness=0.1 * mm,\n", " size=0.8 * mm,\n", ")\n", "\n", "lens.slit(r0=(0, 125 * um), aperture=800 * um, depth=25 * um, refractive_index=1 + 2j)\n", "\n", "print(\"Theoretical image focal distance f' = {:2.2f} mm\".format(focal/mm))\n", "\n", "\n", "lens.draw_refractive_index(\n", " draw_borders=True, min_incr=0.01, colorbar_kind=\"vertical\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simplified lenses, with no aberrations" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:14.268455Z", "start_time": "2020-05-01T23:10:13.891326Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Theoretical image focal distance f' = 8.93 mm\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-2 * mm, 2 * mm, 512)\n", "z0 = np.linspace(-200 * um, 1 * mm, 512)\n", "wavelength = 0.6238 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "\n", "focal, _ = t1.lens(\n", " r0=(0 * um, 0 * um),\n", " size=3 * mm,\n", " radii=(10* mm, -8 * mm),\n", " thickness=.25* mm,\n", " refractive_index=1.5,\n", " angle=0 * degrees,\n", " mask=(100 * um, 1 + 2.05j),\n", ")\n", "\n", "print(\"Theoretical image focal distance f' = {:2.2f} mm\".format(focal/mm))\n", "\n", "t1.draw_refractive_index()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Theoretical image focal distance f' = 1.04 mm\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-500 * um, 500 * um, 512)\n", "z0 = np.linspace(-0.1 * mm, 1.25 * mm, 512)\n", "wavelength = 5 * um\n", "\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "\n", "focal, _ = t1.lens(\n", " r0=(0 * um, 0 * um),\n", " size=1 * mm,\n", " radii=(1* mm, -1 * mm),\n", " thickness=.25* mm,\n", " refractive_index=1.5,\n", " angle=15 * degrees,\n", " mask=(100 * um, 1 + 2.05j),\n", ")\n", "\n", "print(\"Theoretical image focal distance f' = {:2.2f} mm\".format(focal/mm))\n", "\n", "t1.draw_refractive_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## rough surface" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T23:10:16.603037Z", "start_time": "2020-05-01T23:10:15.489556Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAATQAAAEOCAYAAAAHYOtUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXz0lEQVR4nO3de7hV9X3n8feHwzVAuAgiEVRU1GqrBJDcvGVMvfUPtJM42Iu0ZoZcdJpMJ89EHzONnalPk7bJzCSjJpgwo2mrMRcjE228ldamLeoREQEFUeRy5KoCooCew3f+WOuYLZwrnHU5Pz6v59nPWfu31z7rc5b6ca299lpLEYGZWQoGVB3AzKyvuNDMLBkuNDNLhgvNzJLhQjOzZLjQzCwZtSo0SQskbZW0vGHsJkktkpbmj8saXrtB0hpJqyRdXE1qM6sL1el7aJLOA3YDd0bEr+djNwG7I+KvDpj3dOAuYBbwAeAR4JSIaCs1tJnVRq220CLiMeC1Hs4+G7g7IvZFxFpgDVm5mdkRamDVAXroOklXA83Af46I14FjgcUN82zMxw4iaR4wD2D48OEzTj31tILjmtmhWLLkqe0RMf5Q398fCu024L8Dkf/8BnBNb35BRMwH5gPMmDEz/vnx5r7OaGZ9YNggrTuc99dql7MjEbElItoiYj9wO7/arWwBJjfMOikfM7MjVO0LTdLEhqdXAO1HQBcCcyQNkTQFmAo8UXY+M6uPWu1ySroLuAAYJ2kj8FXgAknTyHY5XwY+AxARKyTdA6wEWoFrfYTT7MhWq0KLiKs6GP5+F/PfDNxcXCIz609qv8tpZtZTLjQzS4YLzcyS4UIzs2S40MwsGS40M0uGC83MkuFCM7NkuNDMLBkuNDNLhgvNzJLhQjOzZNTq5PQ627prH9t27Tuk9w4eOICTJwxHUh+nMrNGLrQe+tqiF/k/f3brob15/Ak8fcfnOGH88L4NZWbv4V3OMmx7mac3vV51CrPkudBK8pc/X02dbhloliIXWkme+/n9LFu/s+oYZklzoZXlnX1cs8C3PDArkgutRN7jNCuWC83MkuFCM7NkuNBKtHZxMxtefavqGGbJcqGVaddW9r6zv+oUZslyoZUpgt17W6tOYZYsF1qZ9rdx4wMrq05hliwXWsmeX7nZW2lmBXGhlez1Z5/iDReaWSFqVWiSFkjaKml5w9hYSQ9LeiH/OSYfl6RvSVojaZmk6dUlN7M6qFWhAf8XuOSAseuBRyNiKvBo/hzgUmBq/pgH3FZSxsPja6KZFaZWhRYRjwGvHTA8G7gjn74DuLxh/M7ILAZGS5pYStDDMWoCg5pcamZFqFWhdWJCRGzKpzcDE/LpY4ENDfNtzMfqS+ILn7+IcSOHVJ3ELEn9odDeFdkFxXp9irekeZKaJTVv276tgGQ9M/i0WfzRx6ZUtnyz1PWHQtvSviuZ/9yaj7cAkxvmm5SPHSQi5kfEzIiYOX7c+ELDduXr//Fcxo4YXNnyzVLXHwptITA3n54L3NcwfnV+tPPDwM6GXdPaed+ZH2POWZO7n9HMDlmtbpIi6S7gAmCcpI3AV4GvAfdI+jSwDrgyn/0B4DJgDfAW8IelB+6FEaNHMGRQf/j/h1n/VatCi4irOnnpwg7mDeDaYhP1na/N/aBvY2dWMG8ylGHkUUwdM7LqFGbJc6GVQEcfz9RjRlQdwyx5LrQSRMtqlqzbUXUMs+S50Mqwdzctb+6pOoVZ8lxoJfnSdxf7RsNmBXOhlcVdZlY4F1pJdm7expad+6qOYZY0F1pZNq5g42v+HM2sSC40M0uGC83MkuFCK9GWPXurjmCWNBdaif7rD5+tOoJZ0lxoJdrw0iZe3f121THMkuVCK1Hr6ma++dhLVccwS5YLrUwR3HrbL9i2y99HMyuCC61sm9fwlV+s8mlQZgVwoVXgnjse9t3TzQrgQjOzZLjQzCwZLjQzS4YLzcyS4UIzs2S40MwsGS60KuzZxYZXfW00s77mQqvCG6/y8Evbqk5hlhwXmpklw4VmZslwoZlZMgZWHaCnJL0MvAG0Aa0RMVPSWOCHwAnAy8CVEfF6VRnNrFr9bQvt4xExLSJm5s+vBx6NiKnAo/lzMztC9bdCO9Bs4I58+g7g8uqi9ML7x3PpyUdXncIsOf2p0AJ4SNJTkublYxMiYlM+vRmY0NEbJc2T1Cypedv2GnxdYugIJo4ZWnUKs+T0m8/QgHMiokXS0cDDkp5vfDEiQlKHV02MiPnAfIAZM2ZWfmXFK+f+JiOH9qdVb9Y/9JsttIhoyX9uBe4FZgFbJE0EyH9urS5hD71vFDdddAqSqk5ilpx+UWiShksa2T4NXAQsBxYCc/PZ5gL3VZOw5wZOPoWhg/rFajfrd/rLfs8E4N58q2Yg8LcR8QtJTwL3SPo0sA64ssKMPXL2R6cyZvjgqmOYJalfFFpEvASc1cH4q8CF5Sc6RAOa+KMLplSdwixZ3vcpk8RJY0dWncIsWS40M0uGC83MkuFCM7NkuNDMLBkutDK1tXLb4+urTmGWLBdayZ5v2VF1BLNkudBKtndvK/v3V346qVmSXGgle/q+B9mya1/VMcyS5EIrW+vbvLD1japTmCXJhVa2t/dw97LNVacwS5ILzcyS4UIzs2S40MomMW6ELx9kVgQXWskGnDSdL57jSwiZFaHXhZZfPbapiDBHgg+deypjvYVmVohuC03SAEm/I+l+SVuB54FNklZK+ktJJxcfMxEDmvjMucdXncIsWT3ZQlsEnATcABwTEZMj4mjgHGAx8HVJv1dgxmSM/+iFXHLaMVXHMEtWTy7B/YmIeOfAwYh4DfgJ8BNJg/o8WYLGjB3OkEHeWzcrSrdbaI1l1llxdVR4drBbfnd61RHMktbjm6RI+h7wW5JagVeAZcCyiPh2UeHMzHqjN3d9OheYFBFtko4luwvTmcXEMjPrvd4U2uPAUcDW/C7mLcADhaQyMzsEvfke2neBf5T0JUnnShpVVCgzs0PRm0L7a+BOsq26zwP/IunFQlIl6q3W1qojmCWtN7ucGyPizxsHJA3p4zxJ++JfP82S/3ZR1THMktWbLbSlkr7QOBARvvRqL2x95TV27fE3XMyK0ptCmwB8VtIrkn4u6WZJnyoqWE9JukTSKklrJF1fdZ6uvLl8MVt2+v8BZkXpcaFFxJUR8WvAFOBPgNXAh4oK1hP5SfK3AJcCpwNXSTq9ykxdamvllsXrqk5hlqzefIYGvLubuSR/VG0WsCYiXgKQdDcwG1hZaaourGrZWXUEs2T1eAtN0rOS/kbSlyVdKmmSpBuLDNcDxwIbGp5vzMfeQ9I8Sc2Smrdt31ZauI4s/vEv2Lxjb6UZzFLVm8/QzgduB/YAc4DlwGVFhOprETE/ImZGxMzx48ZXHGY/viunWTF6vMuZX13jH/IHkqYCXykkVc+1AJMbnk/Kx+orXGdmRenNLucpjc8j4gWqP5fzSWCqpCmSBpNtOS6sOJOZVaQ3BwW+K+kksi2gZcBQYLmk4RHxZiHpuhERrZKuAx4EmoAFEbGiiixmVr1uC02SIvPx/PlxZFfamJb/XCKJiDi10KSdiIgH6E8nyTcNRFVnMEtUT7bQFkn6CXBfRKyPiPXAekkPkl1SaC7QXGTIlHzkkxdzzOihVccwS1JPCu0S4BrgLklTgB1ku5tNwEPANyNiaVEBU/Prx42pOoJZsrottIjYC9wK3JpfgnscsCcidhScLTlNU2fy5fNPrDqGWbJ6daZAfu+ATQVlSd5xJ3+Ao0b6AiVmRfGd00v01U+dUXUEs6S50MoyoInjRg6vOoVZ0nrzxdqDrmIh6YK+DJOyUdPPZdrxvmq5WZF6s4V2T35iuiQNk/Rt4M+7fZeZWUl6U2gfIjtv8l/ITjl6BfhYEaFSdN7HTkTyV2rNitSbQnuH7Eobw8i+h7Y2IvYXkipBV5x5dNURzJLXm0J7kqzQziY7Q+AqST8qJJWZ2SHozffQPh0R7ac4bQJmS/r9AjKZmR2S3txT4KDzNSPiB30bx8zs0Pl7aCV55IXXq45gljwXWkn+dsFDrNv+VtUxzJLmQivL1rVs2+V7cpoVyYVWoj/+8TNVRzBLmgutRLt3v111BLOkudDMLBkutBKd88EPVB3BLGkutBJdfdZBN3U3sz7kQivRVx98vuoIZklzoZWopWUX4TunmxXGhVaidQ8/wNJ1O6uOYZYsF1qZ9rfxB7cvZu87bVUnMUuSC61k6//5l7z+5jtVxzBLkgutbHt38+ALm6tOYZak2heapJsktUhamj8ua3jtBklrJK2SdHGVOXusrZUn1r1RdQqzJPXqRsMV+h8R8VeNA/ldqOYAZwAfAB6RdEpE+AMqsyNU7bfQujAbuDsi9kXEWmANMKviTGZWof5SaNdJWiZpgaQx+dixwIaGeTbmYweRNE9Ss6Tmbdu3FZ3VzCpSi0KT9Iik5R08ZgO3AScB08juZfCN3v7+iJgfETMjYub4ceP7NryZ1UYtPkOLiE/0ZD5JtwM/z5+2kN0ntN2kfKzehryPz5w9ufv5zKzXarGF1hVJExueXgEsz6cXAnMkDZE0BZgKPFF2vl5rGsTRo4ZWncIsSbXYQuvGX0iaBgTwMvAZgIhYIekeYCXQClzbL45wDhlOk2+gblaI2hdaRHR678+IuBm4ucQ4h+0jl1/gLTSzgtR+lzMpEued6oMSZkVxoZVpQBP/9oyJ3c9nZofEhVaisWefz6Sxw6qOYZYsF1qJRo0ZzrDBTVXHMEuWC83MkuFCM7NkuNDMLBkuNDNLhgutRGsXN7Ph1beqjmGWLBdamXZt5c199T87y6y/cqGVqa2VP/7Zs1WnMEuWC61kLS27fBs7s4K40Eq2/pf/5NvYmRXEhVa2fW/yd6t9GzuzIrjQytbWSvN638bOrAguNDNLhgvNzJLhQitb00A+OuX9VacwS5ILrWxDhnPhSROqTmGWJBdayaacfz5jhw+qOoZZklxoJTvmmBEMGeSLPJoVwYVWspHDvHVmVhQXWpmaBvJnl/5a1SnMkuVCM7NkuNDMLBkuNDNLhgvNzJJRi0KT9ClJKyTtlzTzgNdukLRG0ipJFzeMX5KPrZF0ffmpzaxualFowHLgt4HHGgclnQ7MAc4ALgFuldQkqQm4BbgUOB24Kp+33iJYv+PNqlOYJasWhRYRz0XEqg5emg3cHRH7ImItsAaYlT/WRMRLEfE2cHc+b73tb+Mbf/9i1SnMklWLQuvCscCGhucb87HOxs3sCFZaoUl6RNLyDh6Fb1lJmiepWVLztu3bil5cl/71oafZ/sa+SjOYpWpgWQuKiE8cwttagMkNzyflY3Qx3tGy5wPzAWbMmBmHkKPv7NjEO23VRjBLVd13ORcCcyQNkTQFmAo8ATwJTJU0RdJgsgMHCyvM2XPhMjMrSmlbaF2RdAXwbWA8cL+kpRFxcUSskHQPsBJoBa6NiLb8PdcBDwJNwIKIWFFRfDOriVoUWkTcC9zbyWs3Azd3MP4A8EDB0cysH6n7Lmd69r3J/as2VZ3CLEkutLK1tbJkw+6qU5glyYVmZslwoZVtQBPHjx1adQqzJLnQyjZ0BFdPn9z9fGbWay60kh017WzeP6wWB5fNkuNCK9OAJuZ/7qMMH+JCMyuCC61MEseNfl/VKcyS5UIr0RmXz+bkY0ZUHcMsWS60sowYy/euntn9fGZ2yFxoJRl12pmcOtFbZ2ZFcqGZWTJ8uK2HvnzBiVwz/aBz5Hts2OAmJPVhIjM7kAuthyaMGsqEUf6Gv1mdeZfTzJLhQjOzZLjQzCwZLjQzS4YLzcyS4UIzs2S40MwsGS40M0uGC83MkuFCM7NkuNDMLBkuNDNLhgvNzJLhQjOzZNSi0CR9StIKSfslzWwYP0HSHklL88d3Gl6bIelZSWskfUu+2JjZEa8WhQYsB34beKyD116MiGn547MN47cB/wGYmj8uKT6mmdVZLQotIp6LiFU9nV/SROD9EbE4IgK4E7i8qHxm1j/0hyvWTpH0NLAL+EpE/BNwLLCxYZ6N+ViHJM0D5uVPdw8bpB6XZ4NxwPZDeF9R6pYH6pfJebpWtzwApx7Om0srNEmPAMd08NKNEXFfJ2/bBBwXEa9KmgH8TNIZvV12RMwH5vf2fY0kNUdEbe5DV7c8UL9MztO1uuWBLNPhvL+0QouITxzCe/YB+/LppyS9CJwCtACTGmadlI+Z2RGsFp+hdUbSeElN+fSJZB/+vxQRm4Bdkj6cH928GuhsK8/MjhC1KDRJV0jaCHwEuF/Sg/lL5wHLJC0Ffgx8NiJey1/7PPA9YA3wIvB3Bcc8rF3WAtQtD9Qvk/N0rW554HA/GsoOEpqZ9X+12EIzM+sLLjQzS4YLrQckXSJpVX6a1fUVZXg5P9VrafuhbUljJT0s6YX855gCl79A0lZJyxvGOly+Mt/K19cySdNLynOTpJaGU+Uua3jthjzPKkkXF5BnsqRFklbmp/F9IR+vch11lqmS9SRpqKQnJD2T5/nTfHyKpMfz5f5Q0uB8fEj+fE3++gndLiQi/OjiATSRHXQ4ERgMPAOcXkGOl4FxB4z9BXB9Pn098PUCl38eMB1Y3t3ygcvIDtII+DDweEl5bgK+1MG8p+f/3IYAU/J/nk19nGciMD2fHgmszpdb5TrqLFMl6yn/W0fk04OAx/O//R5gTj7+HeBz+fTnge/k03OAH3a3DG+hdW8WsCYiXoqIt4G7gdkVZ2o3G7gjn76DAk//iojHgNcOGO5s+bOBOyOzGBidn65WdJ7OzAbujoh9EbGW7Mj4rD7OsykiluTTbwDPkZ29UuU66ixTZwpdT/nfujt/Oih/BPBvyL7FAAevo/Z192Pgwu4uQuFC696xwIaG512eZlWgAB6S9FR+KhfAhMi+kwewGZhQcqbOll/lOrsu34Vb0LALXmqefNfog2RbILVYRwdkgorWk6Sm/GtYW4GHybYCd0REawfLfDdP/vpO4Kiufr8Lrf84JyKmA5cC10o6r/HFyLbLK/sOTtXLz90GnARMIztt7htlB5A0AvgJ8MWI2NX4WlXrqINMla2niGiLiGlkZ/fMAk7ry9/vQuteCzC54Xklp1lFREv+cytwL9m/DFvad1Pyn1tLjtXZ8itZZxGxJf8PZj9wO7/aXSolj6RBZMXxNxHx03y40nXUUaaq11OeYQewiOzL9KMltZ+G2bjMd/Pkr48CXu3q97rQuvckMDU/EjOY7MPJhWUGkDRc0sj2aeAismvILQTm5rPNpfzTvzpb/kLg6vxI3oeBnQ27XYU54DOoK8jWUXueOflRsylkp9A90cfLFvB94LmI+GbDS5Wto84yVbWelJ3KODqfHgb8JtnneouAT+azHbiO2tfdJ4G/z7dyO9fXR1ZSfJAdkVpNtr9/YwXLP5Hs6NMzwIr2DGSfJzwKvAA8AowtMMNdZLsn75B9zvHpzpZPdjTrlnx9PQvMLCnPD/LlLcv/Y5jYMP+NeZ5VwKUF5DmHbHdyGbA0f1xW8TrqLFMl6wk4E3g6X+5y4E8a/v1+guwgxI+AIfn40Pz5mvz1E7tbhk99MrNkeJfTzJLhQjOzZLjQzCwZLjQzS4YLzcyS4UIzs2S40MwsGS40qz1JwyT9o/Ib5hzm7xos6bGGU20sIS406w+uAX4aEW2H+4siuwTUo8C/O+xUVjsuNKuUpM82XDl1raRFHcz2uzScpyrpHySdlk8fpfyqtZJ+JOl/S/qlpHWSzpH0A0mrJX2/4ff9LP+dlhgXmlUqIr4T2eVkziY7J7PxxG7yCwKcGBEvNwyfTHZuLWTnBz6bT/8G2X1bzwG+S3Zi9n8huxLrb0kaks+3PF+eJcaFZnXxv8iupvD/DhgfB+xofyLpeKAlskvfQFZoyyQNBUYD/zMfD+D7kV21tRVoA96G7JpcwNvtVzCxdLjQrHKS/gA4HvjTDl7eQ3bVhXZnkV2tod2M/PkZwJKGojuL/OqskiYBr8R7r8QwBNjbF/mtPlxoVilJM4AvAb/XUEbviojXgaZ8Cwyyq6wOzd87ley688+S7W4+0/DWM/lV8b2nBCUdBWyPiHf69I+xyvnQtVXtOmAssCi//0VzRPz7A+Z5iOzaXo+QldNeSc+QldRKsosAjia/GGFefsPyMoT3lhvAx4H7i/hjrFq+HprVnrJ7Vv6niPh9SS+Q3ZrtjcP4fT8lu7Xc6m5ntn7Fu5xWe5Hdim2RpFHZ08Mqs8HAz1xmafIWmpklw1toZpYMF5qZJcOFZmbJcKGZWTJcaGaWDBeamSXDhWZmyfj/FS9PfL80QVwAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-150 * um, 150 * um, 256)\n", "z0 = np.linspace(-20 * um, 300 * um, 512)\n", "wavelength = 0.6238 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.rough_sheet(\n", " r0=(0 * um, 0 * um),\n", " size=(250 * um, 25 * um),\n", " t=10 * um,\n", " s=10 * um,\n", " refractive_index=1.5,\n", " angle=0,\n", " rotation_point=None,\n", ")\n", "t1.draw_refractive_index(scale=\"scaled\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.10.12" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }