{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Other procedures to generate XZ masks" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from diffractio import plt, np\n", "from diffractio import mm, degrees, um\n", "\n", "from diffractio.scalar_masks_X import Scalar_mask_X\n", "from diffractio.scalar_masks_XZ import Scalar_mask_XZ\n", "\n", "from numpy import loadtxt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mask from two functions" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "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, 256)\n", "wavelength = 0.6238*um\n", "\n", "f1 = '50*um+2*np.sin(2*np.pi*self.X/25)'\n", "f2 = \"125*um+np.tan(10*degrees)*(self.X-0*um)\"\n", "z_sides = (-75*um, 75*um)\n", "v_globals = {'um': 1, 'np': np}\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.mask_from_function(r0=(0*um, 0*um),\n", " refractive_index=1.5,\n", " f1=f1,\n", " f2=f2,\n", " z_sides=z_sides,\n", " angle=-15*degrees,\n", " r_rot = (0*um, 50*um),\n", " v_globals=v_globals)\n", "\n", "t1.draw_refractive_index(scale='scaled')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## mask from array (x,z)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(2, 512)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-15 * mm, 15 * mm, 512)\n", "z = np.linspace(-1 * mm, 15 * mm, 512)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_XZ(x, z, wavelength)\n", "\n", "profile1 = np.array((x, 2*mm + 1*mm* np.cos(2*np.pi*x/(5*mm))))\n", "profile2 = np.array((x, 6*mm - 1*mm* np.cos(2*np.pi*x/(5*mm))))\n", "print(profile1.shape)\n", "\n", "\n", "t1.mask_from_array(\n", " r0=(0 * um, 0 * um),\n", " refractive_index=2,\n", " array1=profile1 ,\n", " array2=profile2 , \n", " x_sides=(-15 * mm, 15 * mm),\n", " angle=0 * degrees,\n", " v_globals={},\n", " interp_kind=\"quadratic\",\n", " has_draw=False,\n", ")\n", "\n", "t1.draw_refractive_index(draw_borders=False, scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## mask from an image" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# TODO: change size of image to any desired.\n", "\n", "x0 = np.linspace(-100 * um, 100 * um, 1024)\n", "z0 = np.linspace(0 * um, 200 * um, 1024)\n", "wavelength = 0.6238 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "\n", "filename = \"star_hole.png\"\n", "t1.image(filename=filename, n_max=2, n_min=1, angle=0 * degrees, invert=False)\n", "t1.draw_refractive_index(scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mask from a .dxf file" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wavelength = 0.6328 * um\n", "\n", "filename_dxf = \"hatch_polyline2.dxf\"\n", "\n", "t0 = Scalar_mask_XZ(x=None, z=None, wavelength=wavelength)\n", "t0.dxf(\n", " filename_dxf,\n", " n_max=2.5,\n", " n_min=1,\n", " num_pixels=(512, 256),\n", " units=\"um\",\n", " invert=False,\n", " verbose=False,\n", ")\n", "t0.draw_refractive_index(scale=\"scaled\", colorbar_kind=\"vertical\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## mask from several surfaces" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAEOCAYAAABFD1qGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXEElEQVR4nO3dfZBldX3n8fdnHoBxfOBpBJYHARdJ8CGEGYlW0NWSKJJdUVMqljFkNTVxV7dMtqwEl61dUykrmmzM7iY+gCslGiNRESHRRMAlWtEFHcgIA0QZEHEQYUY0IgIO09/9456BO2N3T/f07957uuf9qrp1z/2dc398+/Tlfub8zunfSVUhSVJLyyZdgCRp6TFcJEnNGS6SpOYMF0lSc4aLJKk5w0WS1FxvwiXJ0UmuTnJzkpuSvLVrPzjJlUlu7Z4PmnStkqTZpS9/55LkCOCIqro+yROA64CXA78J3FdV70pyLnBQVf3+5CqVJO1Jb45cquruqrq+W74fuAU4EjgLuKjb7CIGgSNJ6rHeHLkMS3Is8CXgGcCdVXVg1x7gBztf7/ae9cB6gNWrV6898cSfG1e5krQkXH/9dduqak2LvnoXLkkeD3wReGdVfTrJD4fDJMkPqmrW8y5r166rL1+7YcSVStLSsmplrquqdS366s2wGECSlcAlwMeq6tNd8z3d+Zid52XunVR9kqS56U24dENeHwJuqar3DK26HDinWz4HuGzctUmS5mfFpAsY8svA64Ebk2zs2v4L8C7gE0neCHwbePVkypMkzVVvwqWq/hHIDKtfNM5aJEkL05thMUnS0mG4SJKaM1wkSc0ZLpKk5gwXSVJzhoskqTnDRZLUnOEiSWrOcJEkNWe4SJKaM1wkSc0ZLpKk5gwXSVJzhoskqTnDRZLUnOEiSWrOcJEkNWe4SJKa61W4JLkwyb1JNg21vSPJXUk2do8zJ1mjJGnPehUuwIeBM6Zp/7OqOrl7fG7MNUmS5qlX4VJVXwLum3QdkqSF6VW4zOItSW7ohs0OmnQxkqTZLYZweT/wVOBk4G7gT6fbKMn6JBuSbNi6besYy5Mk7a734VJV91TVjqqaAj4InDrDdhdU1bqqWrfm0DXjLVKStIveh0uSI4ZevgLYNNO2kqR+WDHpAoYl+TjwAuDQJFuA/w68IMnJQAF3AL89qfokSXPTq3CpqtdO0/yhsRciSVqQ3g+LSZIWH8NFktSc4SJJas5wkSQ1Z7hIkpozXCRJzRkukqTmDBdJUnOGiySpOcNFktSc4SJJas5wkSQ1Z7hIkpozXCRJzRkukqTmDBdJUnOGiySpOcNFktSc4SJJaq5X4ZLkwiT3Jtk01HZwkiuT3No9HzTJGiVJe9arcAE+DJyxW9u5wBeq6gTgC91rSVKP9SpcqupLwH27NZ8FXNQtXwS8fJw1SZLmr1fhMoPDqurubvl7wGHTbZRkfZINSTZs3bZ1fNVJkn7GYgiXR1VVATXDuguqal1VrVtz6JoxVyZJGrYYwuWeJEcAdM/3TrgeSdIeLIZwuRw4p1s+B7hsgrVIkuagV+GS5OPA/wNOTLIlyRuBdwG/kuRW4PTutSSpx1ZMuoBhVfXaGVa9aKyFSJIWpFdHLpKkpcFwkSQ1Z7hIkpozXCRJzRkukqTmDBdJUnOGiySpOcNFktSc4SJJas5wkSQ1Z7hIkpozXCRJzRkukqTmDBdJUnOGiySpOcNFktSc4SJJas5wkSQ116vbHM8myR3A/cAO4JGqWjfZiiRJM1k04dJ5YVVtm3QRkqTZOSwmSWpuMYVLAVckuS7J+t1XJlmfZEOSDVu3bZ1AeZKknRZTuJxWVacALwXenOT5wyur6oKqWldV69YcumYyFUqSgEUULlV1V/d8L3ApcOpkK5IkzWRRhEuS1UmesHMZeDGwabJVSZJmsliuFjsMuDQJDGr+q6r6+8mWJEmayaIIl6q6HfiFSdchSZqbRTEsJklaXAwXSVJzhoskqblFcc6lhe1TU2yfmmLlsmVsn5oCeHR5oc/2tTT66nt99rW4+3rcin3m6xbYR8Jl6wMPcfH37mHjT+7n51et5qaf/JhKeMaq1dzy4AP8/AKe7Wtp9NX3+uxrcfd159TD/OGxx/Ok/fab9Nfh2KSqJl1Dc2vXrqsvX7sBGByxrP/KjVz8sSvg6CfCd34ExzwRCNz5L4+17e2zfS2Nvvpen30t6r7O/g9n8KI1h/Caww5n5bL+no1YtTLXtZpxft7h0v0R40NVtaNFAaOwe7j81ldu4FMf/TzLN32XZY9MUcsCQKaKWpYFP9vX0uir7/XZ1+LsC+AP/vJ3OWT1AZz95MP2mXDZ47BYkmXA2cDrgGcDDwP7J9kGfBY4v6o2tyhm1JY9MkWmikw9Fqg7lxf6bF9Lo6++12dfi6+vWhaW74PXTs3lJ74aeCrwduDwqjq6qp4MnAZcA7w7ya+PsEZJ0iIzlxP6p1fV9t0bq+o+4BLgkiQrm1fW0BRFDaaOkaSx28EUO7qrzvYVezxyGQ6WmUJkuvDpi+1TU3ybh6ljDnx0/FOSxqWWhRsfeIDrfnz/o5c17wvmfClykv8D/GqSR4DvAjcAN1TVn4+quBZWLlvGU9ifDXf+cJexU0kah0wVz3zc43nS6v16fTK/tfn8ncvzgKOqakeSIxlMJPms0ZTV1jJCluAl15IWh+UJK/axofn5hMu1wCHAvd2Nu+4CPjeSqiRJi9p8jtHOB76Y5G1JnpfkSaMqSpK0uM0nXP4S+AiDo53/CHwlyW0jqaoxrxaTNEn74tVi8xkW21JVfzTckGT/xvU0t8vVYl/f4kl9SWO182qxx+14mFdP9fsv9Fuaz0+5Mclbhxuq6uHG9TS382qxeLWYpAnYebXYKU944j4TLDC/cDkMeFOS7yb52yTvTPKqURW2uyRnJPlGks1Jzp3Pe71aTNIkebXYLKrq1fDoUNjTgWcCvwR8cjSlPSbJcuC9wK8AW4CvJbm8qm4e9X9bkjR/876fSzcUdn33GJdTgc1VdTtAkouBswDDRZJ6aM7DYkluTPKxJL+f5KVJjkpy3iiLG3Ik8J2h11u6tuH61ifZkGTD1m1bd3mzV4tJmqR98Wqx+Zxz+TfAB4EHGUzBvwk4cxRF7Y2quqCq1lXVujWHrnm03bnFJE2Sc4vtQTcL8j90D5KcAPzXkVT1s+4Cjh56fVTXtkfOLSZpkvbVucXmMyz2tOHXVXUr45tb7GvACUmOS7IfgyOny+f6Zq8WkzRJXi02u/OTPJXBEcMNwAHApiSrq+qBkVTXqapHkrwF+DywHLiwqm4a5X9TkrT35nKb49TAC7vXxzCYEfnk7vn6JFTViaMstKo+x15OlOkJfUmT5An96V2d5D91oUJV3VlVfwO8G3g/g9mS3zvCGhfEE/qSJskT+jM7A3gD8PEkxwE/ZDAkthy4AnhPVW0cVYEL5Ql9SZO0r57Q32O4VNVDwPuA93W3OT4UeLCqfjji2prxhL6kSfKE/h5U1Xbg7hHVIklaIvadYzRJ0tjsE+Hi1WKSJsmrxWaR5KRp2l7QsphR8GoxSZO0r14tNp8jl090k1Ymyaokfw780R7fNWHeLEzSJHmzsD37JQbze32FwXQs3wV+eRRFtebVYpImyavFZredwYzIqxj8ncu3qmpRHeNNrVjGskemHh0ey1RRy7LgZ/taGn31vT77Wpx9weCcy75mPuHyNeAy4NkM/tblA0l+rarGdqvjvfWCY5/MM972Km5+6CecdMBqNj34YyA8Y9Vqbn7oAU46YO+f7Wtp9NX3+uxrcff1ze0P8lwOmMC33+TMJ1zeWFUbuuW7gbOSvH4ENTW1ctkyXnP4k/nU97dyZ/2Ug1bvx+OnBj/2Qav34/H18MKe7Wtp9NX3+uxrUfe15YGf8rKDD9mnzrmkluC5iLVr19WXr92wS9v2qSm2T02xctmyR6/Y2Lm80Gf7Whp99b0++1rcfT1uxbzvKj92q1bmuqpa16KvfSZcJEmzaxku+84xmiRpbAwXSVJzhoskqTnDRZLUXO/DJck7ktyVZGP3OHPSNUmSZtf/a+MG/qyq/seki5AkzU3vj1wkSYvPYgmXtyS5IcmFSQ6aboMk65NsSLJh67at465PkjSkF39EmeQq4PBpVp0HXANsAwr4Q+CIqnrDbP35R5SSNH8t/4iyF+dcqur0uWyX5IPA3464HEnSAvV+WCzJEUMvXwFsmlQtkqS56cWRyx78cZKTGQyL3QH89kSrkSTtUe/Dpap6P62/JGlXvR8WkyQtPoaLJKk5w0WS1JzhIklqznCRJDVnuEiSmjNcJEnNGS6SpOYMF0lSc4aLJKk5w0WS1JzhIklqznCRJDVnuEiSmjNcJEnNGS6SpOYMF0lSc4aLJKm5XoRLklcluSnJVJJ1u617e5LNSb6R5CWTqlGSNHcrJl1AZxPwSuD84cYkJwFnA08H/hVwVZKnVdWO8ZcoSZqrXhy5VNUtVfWNaVadBVxcVQ9X1beAzcCp461OkjRfvQiXWRwJfGfo9Zau7WckWZ9kQ5INW7dtHUtxkqTpjW1YLMlVwOHTrDqvqi5baP9VdQFwAcDatetqof1Jkvbe2MKlqk7fi7fdBRw99Pqork2S1GN9Hxa7HDg7yf5JjgNOAL464ZokSXvQi3BJ8ookW4DnAp9N8nmAqroJ+ARwM/D3wJu9UkyS+q8XlyJX1aXApTOseyfwzvFWJElaiF4cuUiSlhbDRZLUnOEiSWrOcJEkNWe4SJKaM1wkSc0ZLpKk5gwXSVJzhoskqTnDRZLUnOEiSWrOcJEkNWe4SJKaM1wkSc0ZLpKk5gwXSVJzhoskqTnDRZLUXC/CJcmrktyUZCrJuqH2Y5M8mGRj9/jAJOuUJM3NikkX0NkEvBI4f5p1t1XVyeMtR5K0EL0Il6q6BSDJpEuRJDXQi2GxPTguyT8l+WKS5026GEnSno3tyCXJVcDh06w6r6oum+FtdwPHVNX3k6wFPpPk6VX1o2n6Xw+sBzj6mGNalS1J2gtjC5eqOn0v3vMw8HC3fF2S24CnARum2fYC4AKAtWvX1cKqlSQtRK+HxZKsSbK8Wz4eOAG4fbJVSZL2pBfhkuQVSbYAzwU+m+Tz3arnAzck2Qh8CnhTVd03oTIlSXPUl6vFLgUunab9EuCS8VckSVqIXhy5SJKWFsNFktSc4SJJas5wkSQ1Z7hIkpozXCRJzRkukqTmDBdJUnOGiySpOcNFktSc4SJJas5wkSQ1Z7hIkpozXCRJzRkukqTmDBdJUnOGiySpOcNFktSc4SJJaq4X4ZLkT5L8c5Ibklya5MChdW9PsjnJN5K8ZIJlSpLmqBfhAlwJPKOqngV8E3g7QJKTgLOBpwNnAO9LsnxiVUqS5qQX4VJVV1TVI93La4CjuuWzgIur6uGq+hawGTh1EjVKkuZuxaQLmMYbgL/ulo9kEDY7benafkaS9cD67uXDq1Zm08gqbOdQYNuki5gD62zLOttZDDXC4qnzxFYdjS1cklwFHD7NqvOq6rJum/OAR4CPzbf/qroAuKDrZ0NVrVtAuWNhnW1ZZ1uLoc7FUCMsrjpb9TW2cKmq02dbn+Q3gX8LvKiqqmu+Czh6aLOjujZJUo/14pxLkjOA3wNeVlU/GVp1OXB2kv2THAecAHx1EjVKkuauL+dc/gLYH7gyCcA1VfWmqropySeAmxkMl725qnbMob8LRldqU9bZlnW2tRjqXAw1wj5YZx4bgZIkqY1eDItJkpYWw0WS1NySC5ckZ3RTxWxOcu4E6zg6ydVJbk5yU5K3du3vSHJXko3d48yh90xkqpskdyS5satnQ9d2cJIrk9zaPR/UtSfJ/+7qvCHJKWOq8cShfbYxyY+S/E4f9meSC5Pcmzz2t1V7s/+SnNNtf2uSc8ZU57RTLyU5NsmDQ/v1A0PvWdt9XjZ3P0vGUOe8f8+j/i6Yoc6/HqrxjiQbu/aJ7M9ZvodG//msqiXzAJYDtwHHA/sBXwdOmlAtRwCndMtPYDCtzUnAO4C3TbP9SV29+wPHdT/H8jHVegdw6G5tfwyc2y2fC7y7Wz4T+DsgwHOAayf0e/4e8JQ+7E/g+cApwKa93X/AwcDt3fNB3fJBY6jzxcCKbvndQ3UeO7zdbv18tas93c/y0jHUOa/f8zi+C6arc7f1fwr8t0nuz1m+h0b++VxqRy6nApur6vaq+ilwMYMpZMauqu6uquu75fuBW5hhdoFO36a6OQu4qFu+CHj5UPtHauAa4MAkR4y5thcBt1XVt2fZZmz7s6q+BNw3zX9/PvvvJcCVVXVfVf2AwXx7Z4y6zpp56qVpdbU+saquqcG3zkd47GcbWZ2zmOn3PPLvgtnq7I4+Xg18fLY+Rr0/Z/keGvnnc6mFy5HAd4ZezzhdzDglORb4ReDarukt3SHnhTsPR5ls7QVckeS6DKbRATisqu7ulr8HHNYt92Efn82u/9P2bX/C/PffpOuFwdRLfzf0+rgk/5Tki0me17Ud2dW20zjrnM/vedL783nAPVV161DbRPfnbt9DI/98LrVw6Z0kjwcuAX6nqn4EvB94KnAycDeDQ+dJO62qTgFeCrw5yfOHV3b/ourFNetJ9gNeBnyya+rj/txFn/bfTPKzUy/dDRxTVb8I/Gfgr5I8cVL1sQh+z7t5Lbv+A2ii+3Oa76FHjerzudTCpVfTxSRZyeAX+rGq+jRAVd1TVTuqagr4II8N1Uys9qq6q3u+F7i0q+mencNd3fO9k66z81Lg+qq6B/q5Pzvz3X8TqzePTb30uu6Lhm6Y6fvd8nUMzl88ratpeOhsLHXuxe95kvtzBfBKHpuAd6L7c7rvIcbw+Vxq4fI14IQkx3X/wj2bwRQyY9eNuX4IuKWq3jPUPnx+4hXAzitNJjLVTZLVSZ6wc5nBCd5NXT07rwg5B7hsqM7f6K4qeQ7wL0OH1+Owy78I+7Y/h8x3/30eeHGSg7ohnxd3bSOVGaZeSrIm3b2TkhzPYP/d3tX6oyTP6T7jvzH0s42yzvn+nif5XXA68M9V9ehw16T250zfQ4zj89nqqoS+PBhc7fBNBv8yOG+CdZzG4FDzBmBj9zgT+ChwY9d+OXDE0HvO6+r+Bo2vwJmlzuMZXEnzdeCmnfsMOAT4AnArcBVwcNce4L1dnTcC68a4T1cD3weeNNQ28f3JIOzuBrYzGIt+497sPwbnPDZ3j38/pjo3MxhL3/kZ/UC37a91n4eNwPXAvxvqZx2DL/fbGEzdlDHUOe/f86i/C6ars2v/MPCm3badyP5k5u+hkX8+nf5FktTcUhsWkyT1gOEiSWrOcJEkNWe4SJKaM1wkSc0ZLpKk5gwXSVJzhos0AklWdRMULm/Q135JvtRNKyItCoaLNBpvAD5dVTsW2lENpoz/AvCaBVcljYnhIs1TkjflsTsKfivJ1dNs9jqG5ohK8g9Jfq5bPiTd3QuTfDLJXyT5xyTfTnJako8m+WaSDw3195muT2lRMFykeaqqD1TVycCzGcwpNTwh4M7bAhxfVXcMNf9rBvNcATyLwbxNAM9kMIHhacD5DCYZ/D0Gdwv81ST7d9tt6v570qJguEh7738B/7eq/ma39kOBH+58keQpwF01mC4eBuFyQ5IDgAOB/9m1F/ChGtw98BFgB/BTgG547ac7Z7CW+s5wkfZCdw+UpwB/MM3qB4EDhl7/AoNZaXda271+OoN700wNbXdt1/9RwHdr15ll9wcealG/NGqGizRPSdYCbwN+fSgYHlWDe4wv745MYHD3xAO6957A4D7lNzIYEvv60FufxWMhtEsgJTkE2FZV25v+MNKIeGmjNH9vAQ4Grh7ci4kNVfVbu21zBYN7aVzFICgeSvJ1BoFxM4MbNB1IdwOzLohWdcEEuwYNwAuBz47ih5FGwfu5SCOQ5BTgd6vq9UluBU6pqvsX0N+ngXOr6pt73FjqAYfFpBGoqusZHNk8afByQcGyH/AZg0WLiUcukqTmPHKRJDVnuEiSmjNcJEnNGS6SpOYMF0lSc4aLJKk5w0WS1Nz/B3ZUBI2GhXOEAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x0 = np.linspace(-20 * um, 20 * um, 256)\n", "z0 = np.linspace(0 * um, 2000 * um, 512)\n", "wavelength = 2 * um\n", "\n", "r0 = (0 * um, 0 * um)\n", "refractive_index = 4\n", "Fs = [\"Xrot<3*um\", \"Xrot>-3*um\", \"Zrot>25*um\", \"Zrot<1750*um\"]\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength, n_background=1)\n", "\n", "t1.object_by_surfaces(r0, refractive_index, Fs, angle=0 * degrees, v_globals={})\n", "\n", "t1.draw_refractive_index(draw_borders=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## refractive index from functions" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "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, 400 * um, 512)\n", "\n", "wavelength = 0.5 * um\n", "\n", "t0 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength, n_background=1.0)\n", "\n", "pn = dict(n_out=1.5, n_center=4, cx=0 * um, cz=100 * um, radius=75 * um)\n", "\n", "center = (pn[\"cx\"], pn[\"cz\"])\n", "radius = pn[\"radius\"]\n", "# ref_index = '2*(((X-0)**2+(Z-300)**2)/75**2-0)'\n", "ref_index = \"{p[n_out]}+({p[n_center]}-{p[n_out]})*(1-((X-{p[cx]})**2+(Z-{p[cz]})**2)/{p[radius]}**2)\".format(\n", " p=pn\n", ")\n", "\n", "t0.cylinder(r0=center, radius=(radius, radius), refractive_index=ref_index, angle=0)\n", "\n", "t0.draw_refractive_index(draw_borders=False, scale=\"scaled\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## xz mask from a x mask" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "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, 400 * um, 512)\n", "wavelength = 0.55 * um\n", "\n", "t0 = Scalar_mask_X(x=x0, wavelength=wavelength)\n", "t0.double_slit(x0=0, size=20 * um, separation=50 * um)\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength, n_background=1)\n", "z0 = 10 * um\n", "z1 = 50 * um\n", "\n", "v_globals = dict(z0=z0, z1=z1)\n", "\n", "t1.extrude_mask(t=t0, z0=z0, z1=z1, refractive_index=1.5, v_globals=v_globals)\n", "\n", "t1.draw_refractive_index(draw_borders=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## xz mask from a xy mask\n", "\n", "There are many masks defined in the XY frame. We can use them using the 'refractive_index_from_scalar_mask_XY' method." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from diffractio.scalar_masks_XY import Scalar_mask_XY\n", "\n", "x = np.linspace(-500 * um, 500 * um, 256)\n", "y = z = np.linspace(0 * um, 2 * mm, 512)\n", "\n", "wavelength = 0.6328 * um\n", "\n", "mask_xy = Scalar_mask_XY(x, y, wavelength)\n", "mask_xy.square(r0=(0, 500 * um), size=500 * um, angle=45 * degrees)\n", "mask_xy.draw()\n", "\n", "mask_xz = Scalar_mask_XZ(x, z, wavelength=wavelength, n_background=1)\n", "mask_xz.refractive_index_from_scalar_mask_XY(mask_xy, 2 + 0.02j)\n", "mask_xz.draw_refractive_index(\n", " draw_borders=False, scale=\"scaled\", colorbar_kind=\"vertical\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Variable refractive index" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### z direction" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# In this example the variation is in z\n", "\n", "x0 = np.linspace(-100 * um, 100 * um, 256)\n", "z0 = np.linspace(0 * um, 200 * um, 512)\n", "wavelength = 0.55 * um\n", "\n", "t0 = Scalar_mask_X(x=x0, wavelength=wavelength)\n", "t0.double_slit(x0=0, size=20 * um, separation=50 * um)\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength, n_background=1)\n", "z0 = 10 * um\n", "z1 = 50 * um\n", "v_globals = dict(z0=z0, z1=z1)\n", "t1.extrude_mask(\n", " t=t0, z0=z0, z1=z1, refractive_index=\"1+0.25*(z-z0)/(z1-z0)\", v_globals=v_globals\n", ")\n", "t1.draw_refractive_index(\n", " draw_borders=False,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### x direction" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "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.5 * um\n", "\n", "t0 = Scalar_mask_X(x=x0, wavelength=wavelength)\n", "t0.double_slit(x0=0, size=20 * um, separation=50 * um)\n", "\n", "z_min = 10 * um\n", "z_max = 50 * um\n", "v_globals = dict(np=np)\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength, n_background=1)\n", "t1.extrude_mask(\n", " t=t0,\n", " z0=z_min,\n", " z1=z_max,\n", " refractive_index=\"1+0.25*np.abs(x/200)**2\",\n", " v_globals=v_globals,\n", ")\n", "t1.draw_refractive_index(draw_borders=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### discretize_refractive_index" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dx=0.78 um\n" ] }, { "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 = 50 * um\n", "\n", "print(\"Dx={:2.2f} um\".format(x0[1] - x0[0]))\n", "\n", "t0 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength, n_background=1.0)\n", "\n", "pn = dict(n_out=1.5, n_center=4, cx=0 * um, cz=100 * um, radius=75 * um)\n", "\n", "center = (pn[\"cx\"], pn[\"cz\"])\n", "radius = pn[\"radius\"]\n", "# ref_index = '2*(((X-0)**2+(Z-300)**2)/75**2-0)'\n", "ref_index = \"{p[n_out]}+({p[n_center]}-{p[n_out]})*(1-((X-{p[cx]})**2+(Z-{p[cz]})**2)/{p[radius]}**2)\".format(\n", " p=pn\n", ")\n", "\n", "t0.cylinder(r0=center, radius=(radius, radius), refractive_index=ref_index, angle=0)\n", "\n", "t0.discretize_refractive_index(num_layers=5)\n", "\n", "t0.draw_refractive_index(draw_borders=False, scale=\"equal\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding masks\n", "Complex structures can be performed by adding different masks." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-100*um, 100*um, 512)\n", "z = np.linspace(0*um, 200*um, 512)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_XZ(x, z, wavelength)\n", "t1.cylinder(r0=(-50 * um, 50 * um), radius=(40 * um, 40 * um), refractive_index = 1.5, angle=0 * degrees)\n", "t1.cylinder(r0=(+50 * um, 50 * um), radius=(40 * um, 40 * um), refractive_index = 2, angle=0 * degrees)\n", "t1.slit(\n", " r0=(0 * um, 100*um),\n", " aperture=100 * um,\n", " depth=10 * um,\n", " refractive_index=1.5 + 1.5j,\n", " refractive_index_center=\"\",\n", " angle=0 * degrees,\n", ")\n", "\n", "t1.draw_refractive_index(scale='scaled')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This masks can overlap to generate complex structures." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-100*um, 100*um, 512)\n", "z = np.linspace(0*um, 200*um, 512)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_XZ(x, z, wavelength)\n", "t1.cylinder(r0=(0 * um, 100 * um), radius=60*um, refractive_index = 1.5, angle=0 * degrees)\n", "t1.cylinder(r0=(0 * um, 100 * um), radius=40*um, refractive_index = 2, angle=0 * degrees)\n", "\n", "\n", "t1.draw_refractive_index(scale='scaled')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Substracting masks\n", "\n", "In the same way, substracting mask is simple, just place a mask with the hole whose refractive index is the same than the background" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-100*um, 100*um, 512)\n", "z = np.linspace(0*um, 200*um, 512)\n", "wavelength = 0.6328 * um\n", "n_background=1\n", "\n", "t1 = Scalar_mask_XZ(x, z, wavelength, n_background=n_background)\n", "t1.cylinder(r0=(0 * um, 100 * um), radius=60*um, refractive_index = 1.5, angle=0 * degrees)\n", "t1.cylinder(r0=(0 * um, 100 * um), radius=30*um, refractive_index = n_background, angle=0 * degrees)\n", "\n", "\n", "t1.draw_refractive_index(scale='scaled')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Insert_array_masks\n", "The mask is repited in x-z axis separated a certain distance" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2020-05-02T18:19:22.890552Z", "start_time": "2020-05-02T18:19:22.485986Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-250 * um, 250 * um, 512)\n", "z = np.linspace(-250 * um, 250 * um, 512)\n", "wavelength = 1 * um\n", "\n", "s = Scalar_mask_XZ(x, z, wavelength)\n", "s.cylinder(r0=(0 * um, 0 * um), radius=40*um, refractive_index = 1.5, angle=0 * degrees)\n", "s.draw_refractive_index(scale='scaled') # -> passar a s.draw(kind='refractive_index')\n", "\n", "txz= Scalar_mask_XZ(x, z, wavelength)\n", "txz.insert_array_masks(\n", " txz=s, refractive_index=1.5, space=[100 * um, 100 * um], margin=0 * um, angle=0 * degrees)\n", "txz.draw_refractive_index(scale='scaled')\n", "plt.colorbar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## repeat_structure\n", "\n", "The mask si repeated (n,m) times. The size of the new mask is (n,m) times greater." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAASUAAAEOCAYAAADPDAGCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAdHUlEQVR4nO3debQU9Z3+8ffDZQnwQwFhFBEE3MEIAi6/Ebe4IckEmfnFJSZxSeKYkbgkjppgRp1oEjVqXBJHjRqXxCUxLqO4R2MwBxQRkEVFFlHEhQDiEcL6+f3RhbY393Lv5XZ3VXU/r3Puud3f6m6esuGxqrqrvooIzMyyok3aAczMirmUzCxTXEpmlikuJTPLFJeSmWWKS8nMMiVTpSTpFknvS5pRNNZd0pOS5iS/uyXjknSNpDckTZc0NL3kZlYqmSol4DfAyHpj5wFPR8ROwNPJfYAjgZ2Sn1OA6yuU0czKKFOlFBHPAUvrDY8Gbktu3wYcVTR+exRMBLpK6lWRoGZWNm3TDtAMW0fE4uT2u8DWye3ewFtFj3s7GVtcNIakUyhsSdG5c+dhu+yya3nTmtW4KVNeWhIRPTf3+XkopU9EREhq0XkxEXEjcCPAsGHD4/lJk8uSzcwKOrbTm615fqZ23xrx3sbdsuT3+8n4IqBP0eO2S8bMLMfyUEoPASckt08AHiwa/0byKdy+wIdFu3lmllOZ2n2TdBdwENBD0tvABcDPgHslfRN4Ezg6efh4YBTwBrASOKnigc2s5DJVShFxXCOLDmngsQGcVt5EZlZpedh9M7Ma4lIys0xxKZlZpriUzCxTXEpmlikuJTPLFJeSmWWKS8nMMsWlZGaZ4lIys0xxKZlZpriUzCxTXEpmlikuJTPLFJeSmWWKS8nMMsWlZGaZ4lIys0zJ1OVwGyNpF+CeoqEBwH8BXYFvAx8k4z+MiPGVTWdmpZSLUoqI14AhAJLqKEyldD+FyQKuioifp5fOzEopj7tvhwBzI6JVE96ZWTblsZSOBe4quj9W0nRJt0jqllYoMyuNXJWSpPbAl4HfJ0PXAztQ2LVbDFzRwHNOkTRZ0uQPlnxQf7GZZUyuSgk4EpgSEe8BRMR7EbE+IjYANwF7139CRNwYEcMjYnjPHj0rHNfMWipvpXQcRbtuknoVLRsDzKh4IjMrqVx8+gYgqTNwGPDvRcOXSRoCBLCg3jIzy6HclFJEfAxsVW/s6ynFMbMyydvum5lVOZeSmWWKS8nMMsWlZGaZ4lIys0xxKZlZpriUzCxTXEpmlikuJTPLFJeSmWWKS8nMMiU3575Z9Vi0dBWH/OTpkr7mn8YdwrbdOpb0NS0dLiUri/UbgogA4Bd/mcclVzz86cJ1a2DJwpL+eYNmzoK27T+5f8F//gtj9+sPgCTq2qikf56Vjzb+xakFw4YNj+cnTU47RtVauXodH/19HQC7HnM1LHunsCA2QKX/nkmg5OhE9968evfpAHT5XFs6dfD/i8upYzu9FBHDN/f5fnes1V6Yt5SIwhbRY7/8TdpxCiIg1hduL1nIroeeDcCRY0/ijBH9kWDvAd1TDGiN8ZaSbZYp85fx5PwlRMClP7im8ltCrdWmjnN/MhYJDh/Qkz37dU07UdVo7ZaSS8la5J1lq/jm717m5RfmsXrWxLTjlESHQfuy514DuPmre/pgeQl4980qZsczHuCjZR+xZvaktKOU1OqZE5k4cyJ7TprLFt23YM4vRqcdqaa5lKxRGzYEa9dvYOQ1E5j62F9g+btpRyqrNbMnsQTodtgrDB11AOPH7ke7uja08Sd3FZWbL09KWiDpFUlTJU1OxrpLelLSnOS3J6MsgYjgzSUr+cVf5rLNP5/B1Lt/X/WF9BnL32XK7+5lm38+g2ufn8ebS1ZSS4c50pabY0qSFgDDI2JJ0dhlwNKI+Jmk84BuEXFuY6/hY0rNM37mYo4/8ZK0Y2TKXbeNY+TAXk0/0Fp9TCk3W0qNGA3clty+DTgqvSj599isxZzz8GyOP+XKtKNkznGnXMU5D8/m8Vk1tMWYkjxtKc0HllGY4+2GiLhR0vKI6JosF7Bs4/2i550CnALQp2/fYa/PfbOiufPiidnvcsz5D8BCz+e5SX13596Lx3DYblunnSSzamlLaUREDKUwdfdpkg4oXhiFdv2HhvW03U2b9uZyjvn+nS6k5lg4g6PPvpPpCz9MO0nVys2nbxGxKPn9vqT7gb2B9yT1iojFyRTe76caMmc+XLmWfqMuKpyLtnpl2nHy4/35HPjVS6BtexaMv4AtO7VLO1FVycWWkqTOkrpsvA0cDswAHgJOSB52AvBgOgnzZ+GSlfQbfSl8vNyFtDlWr4SPl9NvzM9562/+71dKuSglYGtggqRpwAvAIxHxGPAz4DBJc4BDk/vWhJlvr2Do6ffW1sf85bJ0EUPP+D2z3l6RdpKqkYvdt4iYBwxuYPxvwCGVT5RP7yxbxQWPv86jT81m/Rx/NaJU1r32Iodf1IEjD9mNi47Y2aeqtFIuSslab8Wqtex3/niWv/BM2lGq0sdTJ/CHqRN4esIXmHb5v9Clo48zba687L5ZK6zfEGx/wu0upApYNulP9D3hdjZsyMdXbbLIpVTlPlq1lh7H/Brmv5x2lNox/2W2OvYWPlq1Nu0kueRSqmLvLFvF57//ICyYlnaU2jP/ZfY4+yHeWbYq7SS541KqYuc/9hofvvhs2jFq1vIXnuGCx19PO0buuJSq1Iy3PuSJp19NO0bNe/Tp2f66QAu5lKrQm0tWcvB5D/DxtAlpR6l5H0+dwIHn3e8vWLaAS6nKfLhyLUOOv5p1r7+YdhRLrHvtRfb46tV8uNIHvpvDpVRl+h15ISxdlHYMq2/posJ5htYkl1IVmfbm8sLJtZZN69b46gLN4FKqEk/Ofo+DvvNrWOOPoDNr9UoO/M6veXL2e2knyTSXUhV4bNZijj7/fvhgQdpRrCnvz+fo8+/3FSw3waVUBZ6Ys8wXaMuThTN4et6ytFNklkspxyKCR2Yu5tbLf5N2FGuhm352K+NnLvYsKQ1wKeXYm0tW8rUTL/FF2vJo9UqOP/ESFv7NxwDrcynl1PoNwQOzfVwi7x6YvdhXFKjHpZRTa9dv4KLvX5V2DGulC793FWvXb0g7Rqa4lHJq1LXPpx3BSmTUdX4vi2W+lCT1kfSMpFmSZko6Ixm/UNKiZBrvqZJGpZ21kl5+xBdsqxZTxj+XdoRMyXwpAeuA70fEQGBfCnO+DUyWXRURQ5Kf8elFrKwdTr8fVnyQdgwrleXvstOZnohno8yXUkQsjogpye2PgNlA73RTpeedZav4aNlHacewEluxdIUvCJfIfCkVk9QP2BOYlAyNlTRd0i2SujXynFMkTZY0+YMl+d+6OOnOKax99YW0Y1iJrZk9iW/+zpcshhyVkqT/A9wHnBkRK4DrgR2AIcBi4IqGnldN03ZPmb+MaZPnpx3DyuTlF+fx8oLlacdIXS5KSVI7CoX024j4I0BEvBcR6yNiA3AThWm8q9pj8z5g9ayJacewMlk9cyJPzMv/1nxrZb6UJAm4GZgdEVcWjfcqetgYCtN4VzV/naX6+ayTHJQSsB/wdeAL9T7+v0zSK5KmAwcDZ6WasswmzV3Klef/Mu0YVmaX/vA6Xpi3NO0Yqcr8DLkRMQFQA4tq5isAAEHAhvVpx7By27C+5reW8rClVPM+Xr2OayYsSDuGVcjVE+azcvW6tGOkxqWUAytWrePR625NO4ZVyKPX3cpHf3cpmZllgksp49at38DAY69OO4ZV2K7HXsP6Gr2kiUspD5a+nXYCq7Sli2r2qpQuJTPLlBaXkqTOkurKEcb+0TUT5vkbdbUoNnDd87V5SlGTpSSpjaSvSnpE0vvAq8Di5PpGl0vasfwxa9ePL/MlLWpSBBdd/r9pp0hFc7aUnqFw4usPgG0iok9E/BMwApgIXCrpa2XMaGY1pDnf6D40ItbWH4yIpRROkr0vOWHWzKzVmtxSKi6kxsqnodKy1ntn2SpYtybtGJaWdWtq8sJvzT7QLenXwEJJb0maJOkmSd8tY7aad9B/PwlLF6Udw9KyZCFfuOTptFNUXEtOyN0f2C4i1kvqDQwG9ihPLDOrVS0ppUnAVsD7EbEIWESNnalvZuXXku8p3QD8WdLZkvaXtGW5QplZ7WpJKd0J3E5h6+o/gL9KmluWVGZWs1qy+/Z2RPy0eEBShxLnMbMa15ItpakbZ6fdKCJWlziPmdW4lpTS1sCpkt6R9LCkSyR9pVzBmkvSSEmvSXpD0nlp5zGz1mn27ltEHA2f7LINAj4P7AP8vjzRmpacGPxL4DDgbeBFSQ9FxKy0MplZ67R44oBkl21K8pO2vYE3ImIegKS7gdGAS8ksp1ryje5XJP1W0rmSjpS0naRx5QzXDL2Bt4ruv52MfaLapu02q3YtOaZ0IIWZaFcBx1KY/HFUOUKVUjVN221WC1pyTGkp8Gzyg6SdgPPLkqr5FgF9iu5vl4yZWU61ZPdt5+L7ETGH9M99exHYSVJ/Se0pbME9lHImM2uFlhzovkHSDhS2RKYDnwNmSOocER+XJV0TImKdpLHA40AdcEtEzEwji5mVRpOlJElRcHByvy+FKwQMSX5PkURE7FLWpI2IiPH4xGCzqtGcLaVnJN0HPBgRCyNiIYXrKj1O4XImJwCTyxnSzGpHc0ppJHAycJek/sByCrtudcATwJURMbVcAc2stjRZShHxd+BXwK+Sy+H2AFZFxPIyZzOzGtSib3Qn1+JeXKYsZmaeITfLnvnRYdC9d9MPtOrUoy9P//CQtFNUnEspw3p37wht26cdw9LStn3h70CNacmXJwc2MHZQKcOYmbVkS+ne5GRcSeoo6Vrgp00+y8ysBVpSSvtQOM/srxRO73gH2K8coexTPzx7dNoRLA0S477/pbRTpKIlpbSWwhUCOlL4ntL8iNhQllT2ibMOGABS2jGs0tSGM/cfkHaKVLSklF6kUEp7Ufgm93GSUrvqpJlVp5Z8T+mbEbHxdJLFwGhJXy9DJquv27aevrvWdNsW1egWcrO3lIoKqXjsjtLGsfra1rVh1j1npR3DKuzVe86gro1LycwsdS6lHNiiY1uOOO3EtGNYhYw87US6fK7Fc3pUDZdSDnTu0JYz9++fdgyrkDP3H0CnDi4ly4MaPfBZU6Saf5tdSjmx7w5b8b1Lvpt2DCuzc396OnsP6J52jFRlupQkXS7pVUnTJd0vqWsy3k/SKklTk5//STlqRdRl+t2yUqj1rSTIeCkBTwK7R8QewOvAD4qWzY2IIcnPqenEq6wjBvSk/W77pB3DyqTDwH05rH+PtGOkLtOlFBFPRMS65O5ECvO61axh/bsxZK/aPPWgFuy59wCG9u+WdozUZbqU6jkZeLTofn9JL0v6s6T9G3tStU3bfcvxQ2m7y15px7ASa7/bPtz81T3TjpEJqX/uKOkpYJsGFo2LiAeTx4wD1gG/TZYtBvpGxN8kDQMekDQoIlbUf5GIuBG4EWDYsOFRjnWopN7dO7JFty1YmnYQK6ku3bqwbbfau6BbQ1IvpYg4dFPLJZ0IfAk4JCIiec5qYHVy+yVJc4GdqZGpnuZeO4Zuh0yHFfnf8jOg6za8cfVRaafIjEzvvkkaCZwDfDkiVhaN95RUl9weAOwEzEsnZToGH3lQ2hGsRIaMbPToQ03KdCkB1wFdgCfrffR/ADBd0lTgD8CpEVFTezSPnTEi7QhWIo+d7veyWOq7b5sSETs2Mn4fcF+F42RKu7o2jLv8TC75z1+kHcVa4Uc/P5N2/gLaZ/i/Rk7VtRH/b1CvtGNYK/3boG1pU6OXKGmMSynHtu/RiTtu/SG096c2udO+I3f+Zhx9t/J7V59LKcck8aXdt+Wkc05KO4q10Ld/cDJfHNSrZq8uuSkupSpw6I7dYLtBacew5uq7O18Y0DXtFJnlUqoCowb14u5LxkCPvmlHsab07Mc9Fx/FyIE+HtgYl1KVOGLgNjxz/Sk+vpRlHTrx7PXf4vDdGjqBwTZyKVWRIf26Ql2mv+VR29q2Z/D2XdNOkXkupSoz/9GLoKv/T5w5XbdhwfgL0k6RCy6lKtO1c3um3vU96nYannYUS9TtNJxpd32PLTu1SztKLriUqtD2PTrx7KVj6LTHfmlHqXmdB4/gz5f9K317dEo7Sm64lKrU7n225IhDd0s7Rs078tDdGLTdFmnHyBWXUhX78RG7sOVeB6Udo2ZtuddBXHTEzmnHyB2XUhXr3b0j068YDdvvkXaU2tN/T6ZfMdoXbtsMLqUqt0XHdiy599supkrqN5gld5/MFh19YHtzuJRqQF0b8eYdJ3lXrgK23OsgFt5+InU+83+z+Zt2NWKLju14/uIv8qPHd+Txp2azcvrzaUeqKp0Hj+DwQ3bl4pG70MVbSK3iUqohvbt35JbjhjBjRH8OOnc16+fUxCXNy67tznvx2AVHsnufLdOOUhW8+1aDdu+zJS9dc7S/+V0K3Xsz+eqvuJBKKPOlJOlCSYuKpugeVbTsB5LekPSapCPSzJk32/foxPwHzoGOXXwS7+Zo3xE6bcmC+89me38xsqTysvt2VUT8vHhA0kDgWGAQsC3wlKSdI2J9GgHzqGvn9ix77qdMXbCcg79zIyxZmHakfOjZj2ev/5ZPri2TzG8pbcJo4O6IWB0R84E3gL1TzpRLQ/p15e4rvuELxTXHdoO454qvuZDKKC+lNFbSdEm3SNo42Xpv4K2ix7ydjH1GtU3bXS5HDNyG3158FCed/x/enWtIh06cdP5/cNclR/l6SGWWiVKS9JSkGQ38jAauB3YAhlCYrvuKlrx2RNwYEcMjYnjPHj1LH76KjBrUiytHD+SOG85KO0rm3HnDWVw5eqCvGFkBmTim1NTU3RtJugl4OLm7COhTtHi7ZMxa6YuDevHy+Ev5w8zFNT+v3AVXnMVRu23jg9kVlIktpU2RVPy/pjHAjOT2Q8CxkjpI6k9h6u4XKp2vGkmiX8/OnHXADiz+69UMPuYrsEUNbWVu0ZM9jzuaxX+9mu+OGEC/np0960gFZWJLqQmXSRoCBLAA+HeAiJgp6V5gFrAOOM2fvJVWXRtR16aOZ88+EM4+kB2+ez8rlq1g3Wsvph2tLNrtujddunVh7jVj0o5S0xQRaWeomGHDhsfzk/wt5tZYtHQVJ/92ClNfnMea2ZPSjlMSHQbuy+Dh/bn1a0N9Vn8JdGynlyJisy99moctJcuQ3t078vh39+Ol+QN5fN4+rN8AV467FvL2P7c2dXzv4tOoawMjB/RkaP9uTT/HKsKlZJtlWP9uDEv+IR/a/0I2EFzzl/k88avbUk62aSNPO5GxI/pRJ7HvDlulHcca4FKyVvu/Oxb+cQ/p05UVYz4PwMBjroJl7xQekNZW1MaD0923Y9bdZwCwRce2dO7gv/ZZ5nfHSqZzh0//wX8w/txPxq96bh4/+fmDnz5w3RpYWuJvb3TvDW3bf3L3R+eM5vQRAz6537Yu8x80W8IHuq3iFi1dxcE/frKkr/nsfx3mg9QZ4QPdlju9u3fk9au+nHYMyyhv05pZpriUzCxTXEpmlikuJTPLFJeSmWWKS8nMMsWlZGaZ4lIys0xxKZlZpriUzCxTXEpmlikuJTPLlEyfkCvpHmCX5G5XYHlEDJHUD5gNvJYsmxgRp1Y+oZmVWqZLKSKO2Xhb0hXAh0WL50bEkIqHMrOyynQpbaTC/DZHA19IO4uZlVdejintD7wXEXOKxvpLelnSnyXtn1YwMyut1LeUJD0FNDQ5+7iI2HgN1eOAu4qWLQb6RsTfJA0DHpA0KCJWNPD6pwCnAPTp27e04c2s5FIvpaam7JbUFvhXYFjRc1YDq5PbL0maC+wM/MO1biPiRuBGKFwOt3TJzawc8rD7dijwakS8vXFAUk9JdcntARSm7J6XUj4zK6HUt5Sa4Vg+u+sGcADw35LWAhuAUyNiacWTmVnJZb6UIuLEBsbuA+6rfBozK7c87L6ZWQ1xKZlZpriUzCxTXEpmlikuJTPLFJeSmWWKS8nMMsWlZGaZ4lIys0xxKZlZpriUzCxTXEpmlikuJTPLFJeSmWWKS8nMMsWlZGaZ4lIys0xxKZlZpriUzCxTMlFKkr4iaaakDZKG11v2A0lvSHpN0hFF4yOTsTcknVf51GZWDpkoJWAGhbndniselDSQwmwmg4CRwK8k1SXTK/0SOBIYCByXPNbMci4Ts5lExGwASfUXjQbuTiafnC/pDWDvZNkbETEved7dyWNnVSaxmZVLJkppE3oDE4vuv52MAbxVb3yfhl6geNpuYHXHdppR6pAZ0QNYknaIMqjW9YLqXbddWvPkipWSpKeAbRpYNC4iHizXn1s8bbekyRExvImn5FK1rlu1rhdU77pJmtya51eslCLi0M142iKgT9H97ZIxNjFuZjmWlQPdjXkIOFZSB0n9gZ2AF4AXgZ0k9ZfUnsLB8IdSzGlmJZKJY0qSxgDXAj2BRyRNjYgjImKmpHspHMBeB5wWEeuT54wFHgfqgFsiYmYz/qgby7MGmVCt61at6wXVu26tWi9FRKmCmJm1WtZ338ysxriUzCxTqraUauHUFUkXSlokaWryM6poWYPrmCd5ez82RdICSa8k79PkZKy7pCclzUl+d0s7Z3NIukXS+9Kn3/lrbF1UcE3yHk6XNLTJPyAiqvIH2I3Cl7ieBYYXjQ8EpgEdgP7AXAoHy+uS2wOA9sljBqa9Hk2s44XA2Q2MN7iOaedt4brl7v1oYn0WAD3qjV0GnJfcPg+4NO2czVyXA4ChwIym1gUYBTwKCNgXmNTU61ftllJEzI6I1xpY9MmpKxExH9h46sreJKeuRMQaYOOpK3nU2DrmSTW9H40ZDdyW3L4NOCq9KM0XEc8BS+sNN7Yuo4Hbo2Ai0FVSr029ftWW0ib05h9PUem9ifGsG5tsFt9StPmf13UpVg3rUCyAJyS9lJz6BLB1RCxObr8LbJ1OtJJobF1a/D5m4ntKmyutU1cqaVPrCFwP/JjCX/gfA1cAJ1cunbXAiIhYJOmfgCclvVq8MCJCUlV8P6e165LrUooaOHWlueso6Sbg4eTuptYxL6phHT4REYuS3+9Lup/C7ul7knpFxOJkl+b9VEO2TmPr0uL3sRZ336rm1JV6++ZjKFyXChpfxzzJ3fvRGEmdJXXZeBs4nMJ79RBwQvKwE4A8b903ti4PAd9IPoXbF/iwaDevYWkfyS/jJwRjKOy/rgbeAx4vWjaOwic7rwFHFo2PAl5Plo1Lex2asY53AK8A05M3v1dT65inn7y9H5tYjwEUPj2cBszcuC7AVsDTwBzgKaB72lmbuT53AYuBtcm/sW82ti4UPnX7ZfIevkLRJ+GN/fg0EzPLlFrcfTOzDHMpmVmmuJTMLFNcSmaWKS4lM8sUl5KZZYpLycwyxaVkqZPUUdKfk5mPW/ta7SU9JynXp1DVMpeSZcHJwB8jmRSiNaJwmZOngWNancpS4VKyspJ0atGVMedLeqaBhx1P0Xlfkp6VtGtye6uNVziU9HtJ10maIOlNSSMk3SHpdUk3F73eA8lrWg65lKysIuJ/ImIIsBeF86SuLF6enGw7ICIWFA3vSOGcN4A9KJwzBfB5YF5EjABuAG4GzqFwpc0vSuqQPG5G8udZDrmUrFKuBv4UEf9bb7wHsHzjHUnbA4siYkMytAcwXdLngK7AL5LxAG6OiMURsQ5YD6wBSHYD12w8M9/yxaVkZSfpRGB74KIGFq8CPld0fzCFqx5sNCy5PwiYUlRWg4FJyetvB7wTnz27vAPw91Lkt8pyKVlZSRoGnA18rahQPhERy4C6ZEsIYAhJSUnaicI1nl+hsOs2reipe/BpeX2myCRtBSyJiLUlXRmrCH9sauU2FugOPCMJYHJEfKveY54ARlC4Ds9g4O+SplEomlkULhrWleRCdUmBdUwKDT5bUAAHA4+UY2Ws/Hw9JUtdMhfYWRHxdUlzgKER8VErXu+PFKb7eb3JB1vmePfNUhcRUyhsSW1ZuNuqQmoPPOBCyi9vKZlZpnhLycwyxaVkZpniUjKzTHEpmVmmuJTMLFNcSmaWKS4lM8uU/w+4joOG1/Gc/wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "size = 200 * um\n", "x0 = np.linspace(-size / 2, size / 2, 256)\n", "z0 = np.linspace(-size / 2, size / 2, 256)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_XZ(x=x0, z=z0, wavelength=wavelength)\n", "t1.cylinder(r0=(0 * um, 0 * um), radius=60*um, refractive_index = 1.5, angle=0 * degrees)\n", "t1.draw_refractive_index(scale='scaled')\n", "\n", "cylinders = t1.repeat_structure(\n", " num_repetitions=(3, 4), position=\"center\", new_field=True\n", ")\n", "cylinders.draw_refractive_index(scale='scaled', colorbar_kind='vertical')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Scalar_mask_XZ\n", " - x: (256,), z: (256,), u: (256, 256)\n", " - xmin: -100.00 um, xmax: 100.00 um, Dx: 0.78 um\n", " - zmin: -100.00 um, zmax: 100.00 um, Dz: 0.78 um\n", " - nmin: 1.00+0.00j, nmax: 1.50+0.00j\n", " - Imin: 0.00, Imax: 0.00\n", " - phase_min: 0.00 deg, phase_max: 0.00 deg\n", " - wavelength: 0.63 um\n", " - date: 2024-11-08_15_44_44\n", "\n" ] } ], "source": [ "print(t1)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Scalar_mask_XZ\n", " - x: (768,), z: (1024,), u: (1024, 768)\n", " - xmin: -300.00 um, xmax: 300.00 um, Dx: 0.78 um\n", " - zmin: -400.00 um, zmax: 400.00 um, Dz: 0.78 um\n", " - nmin: 1.00+0.00j, nmax: 1.50+0.00j\n", " - Imin: 0.00, Imax: 0.00\n", " - phase_min: 0.00 deg, phase_max: 0.00 deg\n", " - wavelength: 0.63 um\n", " - date: 2024-11-08_15_44_44\n", "\n" ] } ], "source": [ "print(cylinders)" ] } ], "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 }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }