{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Resonator benchmark (Lumerical)\n", "\n", "Run this notebook in your browser using [Binder](https://mybinder.org/v2/gh/flexcompute-readthedocs/tidy3d-docs/readthedocs?labpath=docs%2Fsource%2Fnotebooks%2FHighQ_Ge.ipynb).\n", "\n", "In this example, we reproduce the findings of Campione et al. (2016), which is linked [here](https://pubs.acs.org/doi/abs/10.1021/acsphotonics.6b00556?casa_token=v7Cq9VMW40UAAAAA:AWrBfYCHrwGQ9PYBYgdprrQ8X8i-nOairIplRs1Ejo2sbDmFT9nsV1M6UEXpvOfYSnwMjagD9IT97Ph2).\n", "\n", "This notebook was originally developed and written by Romil Audhkhasi (USC). \n", "\n", "The paper investigates the resonances of Germanium structures by measuring their transmission spectrum under varying geometric parameters.\n", "\n", "The paper uses a finite-difference time-domain (Lumerical), which matches the result from Tidy3D.\n", "\n", "\n", "\n", "To do this calculation, we use a broadband pulse and frequency monitor to measure the flux on the opposite side of the structure." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2022-07-21T20:31:32.243861Z", "iopub.status.busy": "2022-07-21T20:31:32.243328Z", "iopub.status.idle": "2022-07-21T20:31:33.206226Z", "shell.execute_reply": "2022-07-21T20:31:33.205743Z" }, "id": "8WfOAGgkyh3K", "outputId": "f02b3adf-9117-42b1-a69c-b5f4f3f0a6c5", "tags": [] }, "outputs": [], "source": [ "# standard python imports\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# tidy3D import\n", "import tidy3d as td\n", "from tidy3d import web" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Set Up Simulation" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2022-07-21T20:31:33.208371Z", "iopub.status.busy": "2022-07-21T20:31:33.208213Z", "iopub.status.idle": "2022-07-21T20:31:33.210947Z", "shell.execute_reply": "2022-07-21T20:31:33.210700Z" }, "id": "gy7J23c5yh3S", "tags": [] }, "outputs": [], "source": [ "Nfreq = 1000\n", "wavelengths = np.linspace(8, 12, Nfreq)\n", "freqs = td.constants.C_0 / wavelengths\n", "freq0 = freqs[len(freqs)//2]\n", "freqw = freqs[0] - freqs[-1]\n", "\n", "# Define material properties\n", "n_BaF2 = 1.45\n", "n_Ge = 4\n", "BaF2 = td.Medium(permittivity=n_BaF2**2)\n", "Ge = td.Medium(permittivity=n_Ge**2)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2022-07-21T20:31:33.212487Z", "iopub.status.busy": "2022-07-21T20:31:33.212366Z", "iopub.status.idle": "2022-07-21T20:31:33.214709Z", "shell.execute_reply": "2022-07-21T20:31:33.214301Z" }, "id": "mGFiHbvhyh3T", "tags": [] }, "outputs": [], "source": [ "# space between resonators and source\n", "spc = 8\n", "\n", "# geometric parameters\n", "Px = Py = P = 4.2\n", "h = 2.53\n", "L1 = 3.036\n", "L2 = 2.024\n", "w1 = w2 = w = 1.265\n", "\n", "# resolution (should be commensurate with periodicity)\n", "dl = P / 32" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2022-07-21T20:31:33.216033Z", "iopub.status.busy": "2022-07-21T20:31:33.215929Z", "iopub.status.idle": "2022-07-21T20:31:33.219000Z", "shell.execute_reply": "2022-07-21T20:31:33.218760Z" }, "id": "Ol9GwSGUyh3U", "tags": [] }, "outputs": [], "source": [ "# total size in z and [x,y,z]\n", "Lz = spc + h + h + spc\n", "sim_size = [Px, Py, Lz]\n", "\n", "# BaF2 substrate\n", "substrate = td.Structure(\n", " geometry=td.Box(\n", " center=[0, 0, -Lz/2],\n", " size=[td.inf, td.inf, 2*(spc+h)],\n", " ),\n", " medium=BaF2,\n", " name='substrate'\n", ")\n", "\n", "# Define structure\n", "\n", "cell1 = td.Structure(\n", " geometry=td.Box(\n", " center=[(L1/2)-L2, -w1/2, h/2],\n", " size=[L1, w1, h],\n", " ),\n", " medium=Ge,\n", " name='cell1'\n", ")\n", "\n", "cell2 = td.Structure(\n", " geometry=td.Box(\n", " center=[-L2/2, w2/2, h/2],\n", " size=[L2, w2, h],\n", " ),\n", " medium=Ge,\n", " name='cell2'\n", ")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2022-07-21T20:31:33.220477Z", "iopub.status.busy": "2022-07-21T20:31:33.220301Z", "iopub.status.idle": "2022-07-21T20:31:33.222446Z", "shell.execute_reply": "2022-07-21T20:31:33.222166Z" }, "id": "YO2yKasKyh3U", "tags": [] }, "outputs": [], "source": [ "# time dependence of source\n", "gaussian = td.GaussianPulse(freq0=freq0, fwidth=freqw)\n", "\n", "# plane wave source\n", "source = td.PlaneWave(\n", " source_time=gaussian,\n", " size=(td.inf, td.inf, 0),\n", " center=(0,0,Lz/2 - spc + 2*dl),\n", " direction='-',\n", " pol_angle=0)\n", "\n", "# Simulation run time. Note you need to run a long time to calculate high Q resonances.\n", "run_time = 3e-11" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2022-07-21T20:31:33.223894Z", "iopub.status.busy": "2022-07-21T20:31:33.223792Z", "iopub.status.idle": "2022-07-21T20:31:33.225942Z", "shell.execute_reply": "2022-07-21T20:31:33.225716Z" }, "id": "4TZn_s8kyh3V", "tags": [] }, "outputs": [], "source": [ "# monitor fields on other side of structure (substrate side) at range of frequencies\n", "monitor = td.FluxMonitor(\n", " center=[0., 0., -Lz/2 + spc - 2 * dl],\n", " size=[td.inf, td.inf, 0],\n", " freqs=freqs,\n", " name='flux')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define Case Studies\n", "\n", "Here we define the two simulations to run\n", "\n", "- With no resonator (normalization)\n", "- With Ge resonator\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2022-07-21T20:31:33.227533Z", "iopub.status.busy": "2022-07-21T20:31:33.227389Z", "iopub.status.idle": "2022-07-21T20:31:33.232163Z", "shell.execute_reply": "2022-07-21T20:31:33.231931Z" }, "id": "fnpi5BiZyh3W", "outputId": "d25c2f44-d5a2-4241-b69b-0ffe5369ec5b", "tags": [] }, "outputs": [], "source": [ "grid_spec = td.GridSpec(\n", " grid_x = td.UniformGrid(dl=dl),\n", " grid_y = td.UniformGrid(dl=dl),\n", " grid_z = td.AutoGrid(min_steps_per_wvl=32)\n", ")\n", "\n", "# normalizing run (no Ge) to get baseline transmission vs freq\n", "# can be run for shorter time as there are no resonances\n", "sim_empty = td.Simulation(size=sim_size,\n", " grid_spec=grid_spec,\n", " structures=[substrate],\n", " sources=[source],\n", " monitors=[monitor],\n", " run_time=run_time/10,\n", " boundary_spec=td.BoundarySpec.pml(z=True))\n", "\n", "# run with Ge nanorod\n", "sim_actual = td.Simulation(size=sim_size,\n", " grid_spec=td.GridSpec.uniform(dl=dl),\n", " structures=[substrate,cell1,cell2],\n", " sources=[source],\n", " monitors=[monitor],\n", " run_time=run_time,\n", " boundary_spec=td.BoundarySpec.pml(z=True))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 513 }, "execution": { "iopub.execute_input": "2022-07-21T20:31:33.233631Z", "iopub.status.busy": "2022-07-21T20:31:33.233440Z", "iopub.status.idle": "2022-07-21T20:31:33.585854Z", "shell.execute_reply": "2022-07-21T20:31:33.585488Z" }, "id": "T8YFcftUyh3X", "outputId": "93b60986-ceb3-4064-eb8d-71a75495c11d", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
<Figure size 720x432 with 6 Axes>\n",
       "
\n" ], "text/plain": [ "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 72\u001b[0m\u001b[1;36m0x432\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m6\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmUAAAGDCAYAAABqemclAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA74klEQVR4nO3debgcZZn38e8vK5gFAkEIWQgo4gCjoAF0XEBZRHREHR3BDUQn6rgx4zsqMqMOjjOorzqOqBglLzBsMkoEFdlEBEdAEwRMDJvIkrBkAUICQjjJ/f5RdaC7031O77X073NdfZ3uquqqp/rU3c/dz/NUlSICMzMzM8vWmKwLYGZmZmZOyszMzMxywUmZmZmZWQ44KTMzMzPLASdlZmZmZjngpMzMzMwsB5yU1ZD0M0nHZF0Os6w5FszM+mugkzJJn5N0VuW0iHhtRJzR53LMlRSSxvVhW2+XdLekxyT9SNJ2Iyy7j6Qlkh5P/+5TMU+Svihpbfr4oiT1uvzWG4MYCw22/Yv0eL9F0iEjLPu3kn6dLntVnfkNY8fMrJGuJWVZfIlaayTtBXwHeBewI/A48K0Gy04ALgTOAqYBZwAXptMB5gNvBF4IvAD4a+D9PSx+YTgWCutc4HfA9sCJwA8k7dBg2YeA/wROrp3RROyYmdUXESM+gNnABcBqYC1wSjr9WOB/ga+l0/8N2AY4M132buCfgTHp8s8FfgmsA9YA30+nK13HKuBR4PfA3g3KcixwJ7Ae+BPwjop5xwHLgYeBS4FdKubtBVxO8kX6IPBp4HBgI/AUsAG4KV32KuB96fMx6T7cnZbvTGCbdN5cIIBjgHvSfTpxhM/xdSRf+I8C9wKfq5h3T7quDenjpXXefzHwlYrX5wELR/v/1azj34FzKl4/J/0MptRZ9jBgJaCach6ePv81ML9i3nuB61opT9EejoXsYwHYieTHxPYV016Ufs7jO/jfPg94sjIWgGuAD4zyvvcBV7USO3744YcfjR4jz4SxwE1pRTEJ2Ap4eTrvWGAI+AgwDtg6/aK+EJiSflHfBrw3Xf5ckl+fY2rW8xpgCbBtWin9BTCjTlkmpV/ie6SvZwB7pc+PBO5I3zsurTx+nc6bAtwPfDzd7hTggHTe54CzarZTWREdl653N2AySYX83+m84Yrou+m+vzD9Uv+LBp/lQcBfpvv/ApIK8Y016xo3wv9iJ5LK8NXAO0gq5CnpvJcDj4zwGP6sLwQ+WbPeDcCL62zvH4Cf1Uz7CfDx9Pm64c8xfT0PWJ/1Ad2zQHEs5CkWLgY+WPH6a8A3WomFOut8E7C8Ztopw+sdoSz1krIRY8cPP/zwo9FjtG6W/YGdgX+KiKF02q8q5t8XEd8AkBTAUcA+EbEeWC/pKyRdZaeR/ArfBdg5IlZUrOcpksrh+cBvImL5COXZDOwt6Z6IuJ+kggH4APAfw++V9O/ApyXtAvwV8EBEfCVd9gng+lH2e9g7gK9GxJ3pek8Alkp6T8Uy/xoRfwZuknQTSYW0xT5ExFUVL2+WdC5wIPCjZgoSEQ9I+iBJV8jWJJXY+nTer0gq8tFMJkmmKq0j+fxbXbZ2/jpgsiRFRBlvqOpYyEkskMTAR4FvSxoLHA28IV13s7FQq9HxPrOL66oXZ2ZmTxttTNls4O6KSqjWvRXPpwPjSbo3ht3NM19qnyD59f8bScskHQcQEVeS/CL9JrBK0gJJU2s3FBGPAW8jqXTul/RTSc9PZ+8CfF3SI5IeIemaUbrt2cAfR9nPRnausz/jSMZjDXug4vnjJF/IW5B0QDqIeLWkdel+TG+xPD8mabG5Na18WrUBqP1sp5J0gbW6bO38qcCGkiZk4FjIUyxcCOwpaVfgUGBdRPymhfeTfu4b0scraC02RtPNdZnZABktKbsXmDPCwOXKCngNz7QADJtDMraCiHggIv4uInYmGRD+LUnPTef9V0S8GNiTZGzHP9XdWMSlEXEoSXfNLSTdJcPlfH9EbFvx2Doifp3O262J8tdzX539GSLpbmnVOcBFwOyI2AY4laSybKYcw75A0vIwQ9LRwxMlvaKigqn3eEW66DKS1ovh9+0GTCTpWqu1DHhBzRmVL0inb7Gu9PkyysuxkJNYiIgngPOBd5K0Pv738LxmYyEi9oqIyenjGpJjdzdJla1Z7R7To8WOmVldoyVlvyHpFjlZ0iRJW0l6Wb0FI2ITyRflFyRNSbtL/pHkDCQkvVXSrHTxh0m+fDdL2i/95TweeIykS2Vz7fol7SjpSEmTSMarbKhY7lTghPTsQiRtI+mt6byfkCQxx0uamJbtgHTeg8BcSY0+h3OBf5C0q6TJJAPlvz9Ca8lIpgAPRcQTkvYH3l4xb3W6L40qTCS9EngP8G6SAdXfkDQTICKuqahg6j2uSVdzNvDXacU1CTgJuGC4G7TGVcAm4KPp5/bhdPqV6d8zgX+UNFPSziTjlE5v8TMpEsdCTmIhdSbJWL43UJGUtRALVSLiNuBG4LPp//ZNJInUD+stL2mspK1IWgvHpO8Zn86+ipFjx8ysvtEGnZH8Iv4RyVlla4D/SqcfC/yqZtlpJBXPapJf5Z/hmTPOvkTSUrCBpAtlfjr9YODmdPoaksRhcp1yzOCZM9YeIfni27Ni/rtIzlYbPqNrYcW8vYGfk1SADwCfSqdvTzKe52HghnTaVVSfcfaZdH2r032bls6bS82A5Mr31in/W0i6fNaTVI6nUDGwmiRBWp3u20tq3jsVuAs4qmLaF4HLqDjDq5kHSQV4D0mlfyGwXcW8nwGfrni9L8nA8z8DNwD7VsxT+j99KH18qdWyFO3hWMg+FmrWczvwyy7+f+em5f4zcCtwSMW8dwDLKl4fm+5z5eP0ZmLHDz/88KPRQxFlHQJkZmUm6UqSS7x8L+uymJl1g5MyMyscSfuRXG9tdtTvfjczK5yBvs2SgaSFklZJWloz/SNKbjWzTNKXsiqfWS1JZwBXAMf3IiFzTJhZVtxSNuDSEwg2AGdGxN7ptFeRXNz0dRHxpKRnR8SqLMtp1i+OCTPLilvKBlxEXE0yUL/SB4GTI+LJdBlXPjYwHBNmlhUnZVbP84BXSLpe0i/T8Ttmg8wxYWY9N9ptlgpj6tSpMW3atK6uc/Pm5NJPY8b0JndtZf333HPPmojYoZn1KrnNz7BlJNe7GrYgIhaMsopxwHbAS4D9gPMl7Rbu6y6UTmMiT8d/PY4JMyub0iRl06ZN4+STT+7a+p588knWrFkDwPTp05k4cWLX1t3O+t/+9rffPeICNYYvJh4RT0TEvBaLt4LkorJBciugzSS3wVnd4nosQ53ERN6O/3ocE2ZWNu6+rOPJJ5/koYceYvr06UyfPp2HHnqIJ598sjDrh6QCqr7LS0t+BLwqXc/zgAkkFzO1AVCG478ex4SZ5V1pkrKI6MoX+3CFsd122zFx4kQmTpzIdttt17WKo9frH9ZsBSTpXOBaYA9JKyS9F1hIch/ApcB5wDHuphkMZTn+63FMmFnelab7UlLVl307aiuMYZUVR57X346IOLrBrHf2rRCWC4N4/NfjmDCzrJSmpQzo6Bd3owpjWKe/6Hu9/loddtXYgCnb8V+PY8LM8q5USVm7X+yjVRh5X3+t4crHFZA1o2zHfz2OCTMrglIlZdD6F3uzFUZe19+IKyBrRlmP/3ocE2aWd6VLyqD5L/ZWK4y8rd9sJKOd/OLj38wsX0qZlMHoX+ztVhh5Wf9o3Cpgwye/lPH4d0yYWRmVNimDxl/snVYYWay/Va6ADOqf/FLE47/e+lvlmDCzvCt1UgZbfrF3q8Lo9/pb5QrIoDzHf731t8oxYWZ5V5rrlI1k+Iu9V7eN6cf6W+HKxyqV4fjvdP2OCTMrgtK3lJmZmZkVwUC0lFXeaw/o+pXD+7H+VrlVwIaV4fivt/5WOSbMLO9K31JW9Hv5eVCzdaIsx3+99bfKMWFmeVfqpKyZe+11UnH0c/2tcgVkUL/VqojHf731t8oxYWZ5V9qkrOj38uv0LDZXQBYRpT3+HRNmVkalTMqKfi+/bl9WwAaTJB//ZmYFUrqkrOj38utGheSbL1uzynj81+OYMLMiKFVSVvR7+XWzQnIFZM0q4/Ffj2PCzPKuNJfEGDt2LOvWrWPrrbd++srfrdp6661Zt24dEyZMYMyY6nx18+bNbNy4Mdfrr+TKx8aNG8ejjz7a9PJlOv7rcUyYWd4pIrIuQ1fMmzcvFi9enHUxekbSkoiY18yy48aNi6lTpwLw8MMPN/0+KxfHxDMcE2ZWBKVpKbNqbhUwq+aYMLO8y3RMmaSFklZJWloxbTtJl0u6Pf07LcsyFpXHzxSTY6J3HBNmlndZD/Q/HTi8ZtqngJ9HxO7Az9PX1gKfaVZop+OY6DrHhJkVQaZJWURcDdTeL+VI4Iz0+RnAG/tZprJwBVRMjonecUyYWd5l3VJWz44RcX/6/AFgxywLY5YDjgkzswGQx6TsaZGcGtrw9FBJ8yUtlrR49erVfSxZ/rlVoJwcE+1zTJhZ3uUxKXtQ0gyA9O+qRgtGxIKImBcR83bYYYe+FbAIXAGVimOiCxwTZpZ3eUzKLgKOSZ8fA1yYYVkKyxVQqTgmusAxYWZ5l/UlMc4FrgX2kLRC0nuBk4FDJd0OHJK+thb4TLPickz0hmPCzIog04vHRsTRDWYd3NeCmOWEY8LMbHD5iv4l5RYBs2qOCTPLOydlJeUKyKyaY8LM8s5JWUm5AjKr5pgws7zL49mXZmZmZgPHLWUl5VYBs2qOCTPLOydlJeRT/82qOSbMrAiclJWUKyCzao4JM8s7jykrqWZbBiQtlLRK0tI68z4uKSRN70khzfrIMWFmeeekzE4HDq+dKGk2cBhwT78LZJax03FMmFkGnJSVVLOtAhFxNfBQnVlfAz4BRJeLZpYJx4SZ5Z3HlJVUReUzXdLiilkLImLBKO89ElgZETd5HI6VhWPCzPLOSVkJ1bQIrImIeS2891nAp0m6acxKwTFhZkXg7kur9RxgV+AmSXcBs4AbJO2UaanMsuOYMLO+cEtZSbXbxRIRvweeXbGeu4B5EbGmOyUzy4Zjwszyzi1lJdXC6f/nAtcCe0haIem9PS+cWQYcE2aWd24pK6lmWwUi4uhR5s/tRnnMsuaYMLO8c1JWUj5DzKyaY8LM8s7dl2ZmZmY54JayEvLNl82qOSbMrAiclJWUKyCzao4JM8s7J2Ul5QrIrJpjwszyzklZSbkCMqvmmDCzvPNAfzMzM7MccEtZSblVwKyaY8LM8s5JWQn5TDOzao4JMysCJ2Ul5QrIrJpjwszyzmPKzMzMzHLALWUl5VYBs2qOCTPLOydlJeUKyKyaY8LM8s5JWUm5AjKr5pgws7xzUlZCPtPMrJpjwsyKwAP9zczMzHLALWUl5VYBs2qOCTPLOydlJeUKyKyaY8LM8s5JWUm5AjKr5pgws7xzUlZSroDMqjkmzCzvPNDfzMzMLAfcUlZCPv3frJpjwsyKwElZSbkCMqvmmDCzvHNSVlKugMyqOSbMLO88pszMzMwsB5yUlZTH0JhVc0xYpyT9TNIxWZfDystJWUm5AjKr5piwVkj6nKSzKqdFxGsj4ow+l2OupJDU0+FGkg6WdIukxyX9QtIuIyz7eUm/lzQk6XN15r9d0t2SHpP0I0nb9bLsZeKkrISGKx9XQGYJx0S2ep1QWGckTQcuAP4F2A5YDHx/hLfcAXwC+Gmdde0FfAd4F7Aj8DjwrS4XubSclJWUKyCzao6J7pM0W9IFklZLWivplHT6sZL+V9LXJK0FPidpG0lnpsveLemfJY1Jl3+upF9KWidpjaTvp9OVrmOVpEfT1pm9G5TlWEl3Slov6U+S3lEx7zhJyyU9LOnSylYgSXtJulzSQ5IelPRpSYcDnwbeJmmDpJvSZa+S9L70+Zh0H+5Oy3empG3SecOtW8dIuifdpxNH+BxfJ+l36T7eW9P6dHX695G0LC+t8/7heRvS1qmQNHfUf+Az3gwsi4j/iYgngM8BL5T0/HoLR8QZEfEzYH2d2e8AfhwRV0fEBpJE782SprRQnoHlpMzMzFomaSzwE+BuYC4wEzivYpEDgDtJWku+AHwD2AbYDTgQeDfwnnTZzwOXAdOAWemyAIcBrwSel773b4G1dcoyCfgv4LURMQX4K+DGdN6RJAnWm4EdgGuAc9N5U4ArgEuAnYHnAj+PiEuAfwe+HxGTI+KFdT6CY9PHq9J9mgycUrPMy4E9gIOBz0j6izrrAXgs/Ty2BV4HfFDSG9N5r0z/bpuW5draN0fE8LzJwNfTfVwpaU6asDV6vD1dxV7ATRXrewz4Yzq9VbXr+iOwkeR/aKNwk3JJuUXArJpjouv2J0lk/ikihtJpv6qYf19EfANAUgBHAftExHpgvaSvkHRxnQY8BewC7BwRKyrW8xQwBXg+8JuIWD5CeTYDe0u6JyLuB+5Pp38A+I/h90r6d+DTaWvZXwEPRMRX0mWfAK5vcv/fAXw1Iu5M13sCsFTSeyqW+deI+DNwU9ra9kJgi32IiKsqXt4s6VySxPVHTZaFtAxvA94O7BcRTwH3kCR6o5kMrK6Zto7ks2/V5PS93VjXwHFLWUm5q8asmmOi62YDd1ckZLXurXg+HRhP0qo27G6S1jVIxicJ+I2kZZKOA4iIK0lan74JrJK0QNLU2g2lLTtvI0nA7pf004qut12Arw+3DgEPpduame7DH1vb7aftXGd/xpG0DA57oOL54yQJyxYkHaBkcP1qSevS/ZjeSmEk7UvyWb0pImoTrNFsAGo/16nU757s57oGjpOyknIFZFbNMdF19wJz1HgQf1Q8X8MzrWHD5gArASLigYj4u4jYGXg/8C1Jz03n/VdEvBjYk6QL7J/qbizi0og4FJgB3AJ8t6Kc70+7+IYfW0fEr9N5uzVR/nruq7M/Q8CDo7yvnnOAi4DZEbENcCpJ4thMOZD0bJJWtQ9FxO8qps+pGGtW7zE87m4ZSSve8PsmAc9Jp7eqdl27AROB29pY18BxUlZC8plmZlUcEz3xG5IuwpMlTZK0laSX1VswIjYB5wNfkDQl7Tr8R+AsAElvlTQrXfxhkkRks6T90lak8STjrp4g6aasImlHSUemycSTJK01w8udCpyg5KxAlJxw8NZ03k+AGZKOlzQxLdsB6bwHgblKT0ao41zgHyTtKmkyz4xBa9RyOJIpwEMR8YSk/Um6IIetTvelbvKYJsU/AM6KiPMr50XEPcNjzRo8zk4XXUTS9fs3krYCPgPcHBG3NNjm+HS5McC49H8/Np19NvDXkl6R/j9OAi5Iu61tFE7KBpykhUrOHFpaMe3LSq5Xc7OkRZK2zbCIZn3lmGhOmmj9Ncng+HuAFSRdiI18hCSxupNkzNg5wMJ03n7A9ZI2kLQYfSwdqzWVpMXrYZLuwbXAl+usewxJkncfSffkgcAH03IuAr4InCfpUWAp8Np03nrg0HQ/HgBuJxm4D/A/6d+1km6os82FwH+TnB35J5KE8SMj7P9I/h44SdJ6koTo6eQqIh4nOVHif9Mu2JfUvHcW8Arg+JpWsDnNbjzt7vybdDsPk5ykcdTwfEmnSjq14i3fBf4MHA2cmD5/V7quZSTdr2cDq0gSzr9vtiyDThGjtowWwrx582Lx4sVZF6NnJC2JiHnNLDt16tTYb7/9ALjyyitHfJ+kV5L8qjwzIvZOpx0GXBkRQ5K+CBARn+x0H6y/HBPPcEyYWRG4paykmu2qiYirSX5ZVk67rKIJ/jqSX2JmheaYMLO8c1JWUl0cP3Mc8LNurMgsS44JM8s7X6es/KZLquzDWhARC5p5o5IrUA+RjA0wKwvHhJnlkpOykqpoEVjT7LibmvcfC7weODjKMvDQBppjwszyzklZCXXaTaPkvm+fAA5Mz/wxKzTHhJkVgZOykmq2AlJyO4+DSLp0VgCfBU4gudjf5el6rouID/SmpGb94ZjYkqTZwJkkV6EPkq7cr4/0nunTp8fcuXP7UDorsyVLlqyJiB2aWVbJbboauTQiDu9SsTLnpKykmq2AIuLoOpNP625pzLLnmKhrCPh4RNyg5ObcSyRdHhF/aPSGuXPnUuZLrVh/SLp79KWeMXbs2LrTN23a1NLtqPIut0mZpLtI7pW1CRhqZwyIWZk4JqzbKm/cHRHrJS0nuSdkw6TMLAuDcjeO3CZlqVdFxJqsC1FEg3IADyDHRJscEyOTNBfYF7i+zrz5wHyAOXOavlC8WVdIYsyYwbiC12Ds5QDyff7MqjkmGkvv3fhD4PiIeLR2fkQsiIh5ETFvhx2aGgZk1lVjxoyp+yibPO9RAJdJWpL+StuCpPmSFktavHr16j4XL7/kmy+XlWOiTY6JxpTc7PuHwNkRcUHW5TGrNdxS5qQsWy+PiBeR3Dj2Q+n96Kr411tjroBKyTHRAcfElpR8IKcByyPiq1mXx6yRyh9WrfzIkrRQ0ipJSyumfU7SSkk3po8jGrz3cEm3SrpD0qe6uDsN5TYpi4iV6d9VwCJg/2xLZJYtx4T1wMuAdwGvHq2CMstSBy1lpwP1LpnxtYjYJ31cXDtT0ljgmyQ/gvcEjpa0Zwe70JRcDvSXNAkYk54NNAk4DDgp42IVilsEysUx0TnHxJYi4leAPxjLtU4G+kfE1elJLK3aH7gjIu5My3AecCQ9PjM5l0kZyYUMF6VfouOAcyLikmyLVCyugErHMdEhx4RZcY2QlLV7L9sPS3o3sJjkWn0P18yfCdxb8XoFcECz5W1XLpOyNDN9YdblKDJXQOXimOicY8KsuEaI33buZftt4PMkJ099HvgKcFz7peueXCZlZmZmZtD965RFxIMV6/4u8JM6i60EZle8npVO66ncDvS39vn0f7NqjgmzYuvmJTEkzah4+SZgaZ3FfgvsLmlXSROAo4CL2tpgC9xSVlKufMyqOSbMiquDBOxc4CCSsWcrgM8CB0nah6T78i7g/emyOwPfi4gjImJI0oeBS4GxwMKIWNbhbozKSVlJuQIyq+aYMCumTlq5I+LoOpNPa7DsfcARFa8vBra4XEYvOSkrKVdAZtUcE2bFVcar99fjpMzMzMxyzUmZFZYHNJtVc0yYFVe3z77MMydlJeUKyKyaY8KsuAYlfp2UldSgHMBmzXJMmBWXW8qs0FwBmVVzTJgVk7svzczMzHLCSZkVmlsFzKo5JsyKa1Di10lZCflMM7Nqjgmz4nL3pRWeKyCzao4Js+JyUmZmZmaWMbeUWeG5VcCsmmPCrLgGJX6dlJXUoBzAZs1yTJgVl1vKrNBcAZlVc0yYFZO7L63QfKaZWTXHRPf582wsIrIuQukMSlI2GHtpZmZmhTX8w6r20cT7FkpaJWlpxbQvS7pF0s2SFknatsF775L0e0k3Slrcvb1pzElZSbllwPLgljPPZOm3v81Dy5cTmzdnWhbHhFkxDXdf1ns04XTg8JpplwN7R8QLgNuAE0Z4/6siYp+ImNdW4Vvk7suScuVjebDiyitZf889/OnHP2bcpEnMfvWrmXnQQWy7xx6oz90Rjgmz4mq3+zIirpY0t2baZRUvrwPe0n7JustJWUm5ArJ+euy++7jr4ou3mL7x0UeZMGUKYydOZNPGjfxx0aJnErSDD2bmgQf2LUFzTJgVVw/HlB0HfL/BvAAukxTAdyJiQa8KMaw0SdkjQ49wwZoLer+dxx9h2cplAOy2w27M2HZGz7fZDldA1q+YWLthLavPv4KZF9zG2GdtxRhVfHmOEUzeCg09ngyWmAzwFPHEGh7+wVn8ftE58KwJjHnFnox75yt7mpw5JsyKaZShB9NrxnstaDZ5knQiMASc3WCRl0fESknPBi6XdEtEXN10wdtQmqSsX65cfiUX33wxY8aMYe+d9+ajh3406yKZZerimy9m4x2/5fVDk2HTZrZ51rbPzGz0ZTp2LIzdlJyltv4J4q5VyW9S6ytJC4HXA6siYu+sy2PWyAgtZWvaGe8l6ViSY//gaHC6bESsTP+ukrQI2B9wUpYnEcH4seMZN3YckdNaxAOarZ8igvufDX/ceYhtJ01h2rN3fnre5ltWEk8NofHjiM0Bf94IERAw5vkzGXPQXox90W5oytY9LaNjoqHTgVOAMzMuh9mIutl9Kelw4BPAgRHxeINlJgFjImJ9+vww4KSuFaKB0iRl247bljdPf3PPt3Pr5Fu5duy1TBg7gTkT5/Rlm+1otgKq90tZ0nYkfexzgbuAv42Ih3tSUOuZfsXEdc+6jqXPXsqFh4jXPPcA/vmIU56ed8Wxx/LYypVoaBxEsN1f7sOcww5jpwMOYMI22/S8bJUcE1uqNwjaLG86uXispHOBg0i6OVcAnyU523IiSZckwHUR8QFJOwPfi4gjgB2BRen8ccA5EXFJp/symtIkZVathVaB09nyl/KngJ9HxMmSPpW+/mRXC2gDYdrzn89W06dnlohVcky0T9J8YD7AnDlzMi6NDaIOzr48us7k0xosex9wRPr8TuCFbW20AwOZlHXUjfFy4MXAJrj1yls562/OantVebjqc4NfykeS/LIAOAO4igGqgMqkL112hwLPT57ecckdfPN139xyma98peHb8xAHlRwTW0oHTi8AmDdvXr7+YTYQBmX4wUAmZW15EbA7MIVkQHIAOwFvAx4Afpld0eqpOIDbOTNlx4i4P33+AEkzrlm1lwC7AMONX5G+fhtwL/DrjMrVgGPCrJh870vb0rbATOBJ4Il02jhgBpDthcrrqqiA2jozZVhERHqNFrNq00hi4gmSuIAkJnYG6g6dzZZjwqy4BiUpG4y97IZbgY3AUxXThoBNwLJMStRQK/cFa+BBSTPSdc0AVnWtcFYet5DExFDFtKH0sTyTEjXkmKgvHQR9LbCHpBWS3pt1mcxqdXibpUIp3x71yn0klU3tJybgT/0vzmg6rIAuAo5Jnx8DXNiVQlm53Jv+rTzMRNKNeXf/izMax8SWIuLoiJgREeMjYlZE1B0AbZa1dm9IXjROypoVJLctnVAxbQJwP/DnTErUFQ1+KZ8MHCrpduCQ9LVZtSHgjyQnlg+bQJKQPVX3HYXgmDDLn0FpKfOYslbcCuxZ8VrkrutyWLO/IBqcLgxwcPdKY6V1C/Ccmmk567oc5pgwKyYP9Lf6KrswN5PbrksYnNOHLWO1XZg57boEx4RZkQ1KUjYYe9ktQdJaNoHcd12Wtb/dcqayCzPnXZeOCbPi8pgyq+82nmkly2nXpVlf3cIzl4XJadelmRXXIJ196e7LVg13YU4g112XZfwFYTk13IWZ865Lx4RZcZUxAavHSVmrhrswp5Pbrkvw+Bnro+EuzHHktusSHBNmReWB/jaya6i+NlMOuQKyvrocx4SZ9cygxK+TsnYMjb5I1gblALaccEyYWQ+5pczMzMwsY+6+tMJzq4BZNceEWXENSlI2GHs5YMp8DRezdjgmzIqt3euUSVooaZWkpRXTtpN0uaTb07/TGrz3mHSZ2yUdU2+ZbnNSVlKugMyqOSbMiqnD65SdDhxeM+1TwM8jYnfg5+nr2m1uB3wWOADYH/hso+Stm5yUlZQrILNqjgmz4mo3KYuIq4GHaiYfCZyRPj8DeGOdt74GuDwiHoqIh0nOMa9N7rrOY8rMzMws10ZIwKZLWlzxekFELBhldTtGxP3p8weAHessM5NnLo0NsCKd1lNOykrKLQJm1RwTZsU0Siv3moiY1+66IyIkRbvv7zZ3X5aUu2rMqjkmzIqry/e+fFDSDID076o6y6wEZle8npVO6yknZSXkM83MqjkmzIqty0nZRcDw2ZTHABfWWeZS4DBJ09IB/oel03rKSZmZmZnlVidnX0o6F7gW2EPSCknvBU4GDpV0O3BI+hpJ8yR9DyAiHgI+D/w2fZyUTuspjykrKbcImFVzTJgVV7vxGxFHN5h1cJ1lFwPvq3i9EFjY1obb5KSspFwBmVVzTJgV16Bc0d9JWUm5AjKr5pgwKybf+9IKzxWQWTXHhFlxOSkzMzMzy4FB+VHlpKyEfOq/WTXHhFlxDVL3ZW73UtLhkm6VdIekLW4WaiNzJVQ+jonOOCbq83FlRdDl65TlVi73SNJY4JvAa4E9gaMl7ZltqYolqwpIUr17iFmHHBOdc0xsyceVFUEn1ynLQicxn889gv2BOyLizojYCJxHcld3a1KGrQLvzmKjA8Ax0aEix4Skj6RXFe82H1dWCJV35SjAHTrajvmmkjJJP5d0RM200e7C3olM7s5uXfEmSR+WtEfWBeklx4S1oBsxsSPwW0nnp92N3aqNfFxZIRSppYwOYr7Zgf67Ap+UtF9E/Gs6re27sneLpPnAfIBZs2axdu3apt63Zs2aXharac2Wtx0Z/oJ4E7AP8EZJz42Iv8uqID1WiJjIy7E+kl7GQaUix0RE/LOkfyG5/957gFMknQ+cFhF/7Gpp66g8rubMmdPrzRVenlpwIiLrInSsgAP92475ZvfyEZJbEuwo6ceStmm5iK1p6u7sEbEgIuZFxLztt9++x0Uqjn437Uq6dvh5RDwI/Bq4rMQJGTgmCqUMMRFJ7fpA+hgCpgE/kPSlDora8nG1ww47dLA5s/bkvaWsWzHf7B4pIoYi4u+BHwK/Ap7dyoZa9Ftgd0m7SpoAHEVyV3drUp/72yem2/wqQESsB77Vr41nxDFRMEWOCUkfk7QE+BLwv8BfRsQHgRcDf9NBOX1cWSEUYExZV2K+2aTs1OEnEXE6cCxwWasba1ZEDAEfBi4FlgPnR8SyXm3POqb0bJN3Vox12TrLAvWBY8JG0u2Y2A54c0S8JiL+JyKeAoiIzcDr212pjysrgoKcfdmVmG9qTFlEfKfm9RLguFY31oqIuBi4uJfbKLM+/4I4AbgGOAf4mqTbyO+ZvV3hmCieIsdERHx2hHnL211v+n4fV5Z7OUvA6ulKzPuK/iXVzwooIi4Bnpdu96XAW4H39q0AZk1wTJgVV96Tsm7FvJOyksqqrz0irgWuHXVBsz5zTJgVUyfjx9LLUny/YtJuwGci4j8rljkIuBD4Uzrpgog4qa0N0lnMOykroVYPYEn/ALwPCOD3wHsi4okeFc+s7xwTZsXWbktZRNxKcnmK4TtYrAQW1Vn0mohoe3xmt+S7PdB6TtJM4KPAvIjYGxhLcgaW2UByTJjlT5cG+h8M/DEi7u5BEbvCSVlJtdgyMA7YWtI44FnAfT0rmFlGHBNmxTTK2ZfTJS2ueMwfYVVHAec2mPdSSTdJ+pmkvbq+E01y92VJNVv5RMRKSf8XuAf4M8nF7np2aQezrDgmzIprhPhdExGj3k0lvQ7fG0jOkqx1A7BLRGxIb5/3I2D3NovaEbeUlVRFq8CIvyKU3OT4SJLbBu0MTJL0zv6X2Ky3HBNmxdWF7svXAjekV9uvEhGPRsSG9PnFwHhJ07tT8ta4paykKn5VjPYr4hDgTxGxOn3fBcBfAWf1toRm/eWYMCumLt378mgadF1K2gl4MCJC0v4kDVb9uSlvDSdldg/wEknPIumqORhYnG2RzDLlmDDLmU6SMkmTgEOB91dM+wBARJwKvAX4oKQhkpg/KjK6k7uTshJqZUBzRFwv6QckfepDwO+ABT0snlnfOSbMiq2T6wxGxGPA9jXTKm+VdwpwStsb6CInZSXVygGc3sKl4W1czMrAMWFWTF3qviwEJ2UlldXVy83yyjFhVlxOyszMzMwy5pYyKzy3CphVc0yYFdegxK+TspIalAPYrFmOCbPickuZFVarN182KzvHhFlxufvSCs8VkFk1x4RZcTkpMzMzM8uBQflR5aSspAblADZrlmPCrJjcfWmF5wrIrJpjwqy4nJRZobkCMqvmmDArJreUWaH5TDOzao4Js2IblPh1UmZmZma55pYyK7RB+VVh1izHhFkxufvSCs8VkFk1x4RZcTkps0JzBWRWzTFhVlydxK+ku4D1wCZgKCLm1cwX8HXgCOBx4NiIuKHtDXZgMFJPMzOrIumtkpZJ2ixp3ujvMMvGcPdlvUcLXhUR+9QmZKnXArunj/nAt7tQ7LY4KSspn21mVs0xsYWlwJuBq7MuiNloupCUjeRI4MxIXAdsK2lGt1beCidlJTRc+bgCMks4JrYUEcsj4tasy2HWjA6TsgAuk7RE0vw682cC91a8XpFO6zuPKSspVz5m1RwT7UsrsvkAc+bMybg0NmhG+UE1XdLiitcLImJBzTIvj4iVkp4NXC7plojIZQuxk7KScgVkVm0QY0LSFcBOdWadGBEXNruetJJbADBv3rzoUvHMmjZCq9iaBuPEnhYRK9O/qyQtAvanutt+JTC74vWsdFrflSYpG7NxLRPvPSPrYpjlhmPCIuKQrMtg1g3tjh+TNAkYExHr0+eHASfVLHYR8GFJ5wEHAOsi4v5Oytuu0iRlVm0QWwXMRuKYMCumDi8euyOwKI3/ccA5EXGJpA8ARMSpwMUkl8O4g+SSGO/puNBtclJWUq6AzKo5JqpJehPwDWAH4KeSboyI12RcLLO62o3fiLgTeGGd6adWPA/gQ20XrotKk5RtnrA9T84+Juti9NDHm17SZ5kZOCYqOSa2FBGLgEVZl8OsGb6ivxWaKyCzao4Js2LyvS/NzMzMcsJJmRWaWwXMqjkmzIrJLWVWeK6AzKo5JsyKa1Di10lZCXlQs1k1x0T3JSesmfWHW8rMzMzMMubuSys8twqYVXNMmBWXkzIrNFdAZtUcE2bFNSjx66SspAblADZrlmPCrJjcfWmF5wrIrJpjwqy4nJSZmZmZ5cCgJGWDsZcDZvj0/2ZbBiRtK+kHkm6RtFzSS3tcRLO+ckyYFVdl/NY+ysYtZSXV4sH6deCSiHiLpAnAs3pTKrPsOCbMimtQWsqclJVUCy0C2wCvBI4FiIiNwMaeFcwsI44Js+IalKRsMPZysE2XtLjiMb9m/q7AauD/SfqdpO9JmpRBOc36xTFhViDDZ1/We5RN+fbIgKrbyqyJiHkVjwU1i44DXgR8OyL2BR4DPtXn4pr1nGPCrLjaHVMmabakX0j6g6Rlkj5WZ5mDJK2TdGP6+ExPdqIJ7r4sqRbGz6wAVkTE9enrH+AKyErIMWFWXB20ig0BH4+IGyRNAZZIujwi/lCz3DUR8fqOCtkFbikroVZ+RUTEA8C9kvZIJx0M1B6sZoXmmDArrk66LyPi/oi4IX2+HlgOzOxxkdvmlrKSavFMs48AZ6dnmd0JvKcnhTLLkGPCrLhGSMCmS1pc8XpBnSEJAEiaC+wLXF9n9ksl3QTcB/yfiFjWQXHb5qTMiIgbgXlZl8MsLxwTZvkywo+qNRExaqxKmgz8EDg+Ih6tmX0DsEtEbJB0BPAjYPcOits2d1+WVFkvrGfWLseEWTF1evalpPEkCdnZEXFB7fyIeDQiNqTPLwbGS5rezX1ollvKSsqVj1k1x4RZcbU70F9J4J8GLI+IrzZYZifgwYgISfuTNFitbbesnXBSVlKugMyqOSbMimm4paxNLwPeBfxe0o3ptE8DcwAi4lTgLcAHJQ0BfwaOiojoqNBtclJWQu6mMavmmDArtnbjNyJ+BYz45og4BTilrQ10We7GlEn6nKSVFRdxOyLrMpllyTFhZoNuUK7on9eWsq9FxP/NuhBF5laB0nFMdMgxYVZMHXZfFspg7OUAcneNWTXHRDVJX5Z0i6SbJS2StG3WZTJrZFBayvK6Rx9OvygWSprWaCFJ84dvKrx2bSYnSuSWK6DScUx0yDGxhcuBvSPiBcBtwAkZl8esoXbvfVk0mSRlkq6QtLTO40jg28BzgH2A+4GvNFpPRCwYvqnw9ttv35/Cm/WAY8L6LSIui4ih9OV1wKwsy2PWSKfXKSuSTMaURcQhzSwn6bvAT3pcnFIq4y+IMnNM9J5jYkTHAd9vNFPSfGA+wJw5c/pVJrOnlTEBqyd3eylpRsXLNwFLsypLUZW5aXcQOSY6N6gxMUoL7PAyJwJDwNmN1lPZArvDDjv0o+hmT3NLWba+JGkfIIC7gPdnWpqCGrTKp+QcE10wiDExWguspGOB1wMHZ3WxTLNmDEr85i4pi4h3ZV2GMhiUA3gQOCa6wzFRTdLhwCeAAyPi8azLYzaSMraK1ZO7pMzMzPriFGAicHmasF4XER8Y7U1LlixZI+nu9OV0YE3vilhY/ly2VPuZ7NLsG5csWXLpCDcIL9Xn7KSspNwqYFbNMVEtIp7b5vueHlQmaXFEzOteqcrBn8uWOvlMIuLwbpcnr5yUlZQrILNqjgkzyzsnZSU0iGeZmY3EMWFmReCkrKRcAZlVc0z0xIKsC5BT/ly25M+kCYNxOoOZmXVdRLiircOfy5b8mTTHLWUl5VYBs2qOCTPLO7eUlZTH0JhVc0z0hqQvS7pF0s2SFknaNusyZUXS4ZJulXSHpE9lXZ48kDRb0i8k/UHSMkkfy7pMeeakrKRcAZlVc0z0zOXA3hHxAuA24ISMy5MJSWOBbwKvBfYEjpa0Z7alyoUh4OMRsSfwEuBD/lwac1JmZmZti4jLImIofXkdMCvL8mRof+COiLgzIjYC5wFHjvKe0ouI+yPihvT5emA5MDPbUuWXk7ISGtSbL5s14pjom+OAn2VdiIzMBO6teL0CJx9VJM0F9gWuz7goueWB/iXlysesmmOifZKuAHaqM+vEiLgwXeZEkq6qs/tZNisGSZOBHwLHR8SjWZcnr5yUlZQrILNqjon2RcQhI82XdCzweuDgiIi+FCp/VgKzK17PSqcNPEnjSRKysyPigqzLk2fuviwpd9WYVXNM9Iakw4FPAG+IiMezLk+GfgvsLmlXSROAo4CLMi5T5pQE3WnA8oj4atblyTsnZWZm1olTgCnA5ZJulHRq1gXKQnqyw4eBS0kGs58fEcuyLVUuvAx4F/Dq9Pi4UdIRWRcqr9x9WVJuETCr5pjojYh4btZlyIuIuBi4OOty5ElE/Apw8DXJSVkJuZvGrJpjwsyKwElZSbkCMqvmmDCzvHNSVlKugMyqOSbMLO880N/MzMwsB9xSVlJuFTCr5pgws7xzS1lJtTKwWdJYSb+T9JMeF8ssM44JM8s7J2Ul1MZ9/j5Gcl0ds1JyTJhZETgpG3CSZgGvA76XdVnM8sAxYe2QtJ+kmyVtJWmSpGWS9s66XFYsHlNWUi20CPwnyS1SpvSsMGY54JiwXoqI30q6CPg3YGvgrIhYmnGxrGDcUlZSFV010yUtrnjMr1jm9cCqiFiSWUHN+sQxYX1wEnAoMA/4UsZlsQJyS1lJVbQKrImIeQ0WexnwhvQ+ZFsBUyWdFRHv7EcZzfrJMWF9sD0wGRhPcvw8lm1xrGjcUlZSzQxqjogTImJWRMwFjgKudOVjZeWYsD74DvAvwNnAFzMuixWQW8rMzMw6JOndwFMRcY6kscCvJb06Iq7MumxWHE7KSqidmy9HxFXAVb0oj1nWHBPWaxFxJnBm+nwTcEC2JbIiclJWUr56uVk1x4SZ5Z2TspJyBWRWzTFhZnnnpKykXAGZVXNMmFne+exLMzMzsxxwS1lJuVXArJpjwszyzklZCbVzpplZmTkmzKwInJSVlCsgs2qOCTPLO48pMzMzM8sBt5SVlFsFzKo5Jsws75yUlZQrILNqjgkzyzsnZSXlCsismmPCzPLOSVkJ+Uwzs2qOCTMrAg/0NzMzM8sBt5SVlFsFzKo5Jsws75yUlZQrILNqjgkzyzsnZSXlCsismmPCzPLOSVlJuQIyq+aYMLO880B/MzMzsxxwS1kJ+fR/s2qOCTMrAidlJeUKyKyaY8LM8s5JWUm5AjKr5pgws7zzmDIzMzOzHHBLWUm5VcCsmmPCzPLOSVlJuQIyq+aYMLO8c1JWQj7TzKyaY8LMisBJWUm5AjKr5pgws7zzQH8zMzOzHHBLWUm5VcCsmmPCzPIus5YySW+VtEzSZknzauadIOkOSbdKek1WZSwyj6EpHsdEbzkmzCzvsmwpWwq8GfhO5URJewJHAXsBOwNXSHpeRGzqfxGLy5VPITkmesgxYWZ5l1lLWUQsj4hb68w6EjgvIp6MiD8BdwD797d0xTbcIuBKqFgcE73jmDCzIsjjQP+ZwL0Vr1ek08wGlWPCzGwA9LT7UtIVwE51Zp0YERd2Yf3zgfkAs2bN6nR1peIWgXxyTGTHMWFmedfTpCwiDmnjbSuB2RWvZ6XT6q1/AbAAYJ999ok2tlVaroDyyTGRHceEmeVdHrsvLwKOkjRR0q7A7sBvMi5T4Xj8TKk4JrrAMWFmeZflJTHeJGkF8FLgp5IuBYiIZcD5wB+AS4AP+Syz3pE0W9IvJP0hvRzDx7Iu06ByTOSDY8LMspLZJTEiYhGwqMG8LwBf6G+JyqWFFoEh4OMRcYOkKcASSZdHxB96VzqrxzHRW44JM8u7PHZfWodaOf0/Iu6PiBvS5+uB5fjMPisZx4SZFYFvs1RSFZXPdEmLK2YtSAeD13vPXGBf4Prels6s/xwTZpZ3pUnK1q1bx3nnnff0682bN/PUU08xfvx4xoyp3yDYzDKN5GH9I6mogNZExLyRlk2Xnwz8EDg+Ih5teYOWO4888gjnnHPOQB7/9TgmzCzvSpOUbdq0icmTJwOwceNG1q1bxzbbbMOECRNGfF8ry7bznl6vvxskjSepfM6OiAt6vkHri82bNzN16tQRl/HxX59jwsyyULoxZa1+oU+YMIFtttmGdevWsXHjxsKtv5Fmx88oWeg0YHlEfLXtDVohlfX4r8cxYWZ5V6qkrN0v9GYrjryuv1aL9/l7GfAu4NWSbkwfR7S9cSucsh3/9TgmzKwIStN9CXT0hV5ZcdRbR6cVRq/XX6vZ0/8j4leAr6g54Mp2/NfjmDCzvCtNS1lEdPyF3ugXfbcqjF6v36wTPv7NzLJVmqRMUle+0Gsrjm5XGL1e/zDfUsbaUZbjvx7HhJnlXam6L7tluOJ4+OGHAZg2bVpXK4xerx9882VrXxmO/3ocE2aWd07KSsoVkFk1x4SZ5Z2TsjqGu1SmTZsGdHYCQRbrdzeNdaLox389jgkzK4LSjCmLiKaugzSa2jEurV5nKev1m3XCx7+ZWXZKk5RJ6viLvdGg425VHL1efyW3DFirynT81+OYMLO8K01SBnT0xT7aWWCdVhy9Xn8tV0DWirId//U4Jsws70qVlLX7xd7safl5XX89roCsWWU8/utxTJhZ3pUqKYPi38uvWxWTKyBrRlmP/3ocE2aWd6VLyqD49/Lz4GfrhtFOfvHxb2aWL6VMymD0L/Zu3ssvi/WPpMWbL1tJjXTyS9GPf8eEmZVRaZMyKP69/CrX3ypXQAb1T34p4vFfb/2tckyYWd6VOimD4t/Lb3j9rXIFZFCe47/e+lvlmDCzvBuIK/oX/V5+/bgvoJVXGY7/LO6VaWbWbwORlA0itwiYVXNMmFneKSKyLkNXSFoNPAas6dMmp/d5W5MiYodmFpZ0SfoegDURcXjPSma55Zh4hmPCzIqgNEkZgKTFETHP2zJLlPU4dUyYWRmVfqC/mZmZWRE4KTMzMzPLgbIlZQu8LbMqZT1OHRNmVjqlGlNmZmZmVlRlaykzMzMzK6TSJWWSvizpFkk3S1okadsebONwSbdKukPSp7q9/ortzJb0C0l/kLRM0sd6tS0rL8eEmVkxlK77UtJhwJURMSTpiwAR8ckurn8scBtwKLAC+C1wdET8oVvbqNjWDGBGRNwgaQqwBHhjL7Zl5eWYMDMrhtK1lEXEZRExlL68DpjV5U3sD9wREXdGxEbgPODILm8DgIi4PyJuSJ+vB5YDM3uxLSsvx4SZWTGULimrcRzwsy6vcyZwb8XrFfShUpA0F9gXuL7X27JSc0yYmeVUIe99KekKYKc6s06MiAvTZU4EhoCz+1m2XpA0GfghcHxEPJp1eSx/HBNmZsVXyKQsIg4Zab6kY4HXAwdH9wfNrQRmV7yelU7rCUnjSSqfsyPigl5tx4rNMWFmVnxlHOh/OPBV4MCIWN2D9Y8jGdR8MEnF81vg7RGxrAfbEnAG8FBEHN/t9dtgcEyYmRVDGZOyO4CJwNp00nUR8YEub+MI4D+BscDCiPhCN9dfsZ2XA9cAvwc2p5M/HREX92J7Vk6OCTOzYihdUmZmZmZWRGU/+9LMzMysEJyUmZmZmeWAkzIzMzOzHHBSZmZmZpYDTsrMzMzMcsBJmZmZmVkOOCkzMzMzywEnZS2QdJKk4ytef0HSxzIsklmmJO0n6WZJW0maJGmZpL2zLpeZWRH54rEtkDQXuCAiXiRpDHA7sH9ErB35nWblJenfgK2ArYEVEfEfGRfJzKyQCnlD8qxExF2S1kraF9gR+J0TMjNOIrnf5RPARzMui5lZYTkpa933gGOBnYCF2RbFLBe2ByYD40lazB7LtjhmZsXk7ssWSZpAcjPk8cDuEbEp4yKZZUrSRcB5wK7AjIj4cMZFMjMrJLeUtSgiNkr6BfCIEzIbdJLeDTwVEedIGgv8WtKrI+LKrMtmZlY0bilrUTrA/wbgrRFxe9blMTMzs3LwJTFaIGlP4A7g507IzMzMrJvcUmZmZmaWA24pMzMzM8sBJ2VmZmZmOeCkzMzMzCwHnJSZmZmZ5YCTMjMzM7MccFJmZmZmlgP/H+Dyt5S/4QEsAAAAAElFTkSuQmCC\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Structure visualization in various planes\n", "\n", "fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(10, 6))\n", "sim_actual.plot_eps(x=0, ax=ax1)\n", "sim_actual.plot_eps(y=-0.1, ax=ax2)\n", "sim_actual.plot_eps(z=0.1, ax=ax3)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run Simulations" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "execution": { "iopub.execute_input": "2022-07-21T20:31:33.587765Z", "iopub.status.busy": "2022-07-21T20:31:33.587638Z", "iopub.status.idle": "2022-07-21T20:32:36.349401Z", "shell.execute_reply": "2022-07-21T20:32:36.348996Z" }, "id": "IG0QZ-PDyh3Y", "outputId": "332212da-3f04-4920-e593-801457a5e339", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
[16:31:33] INFO     Auto meshing using wavelength 10.0020 defined from       grid_spec.py:472\n",
       "                    sources.                                                                 \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:31:33]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Auto meshing using wavelength \u001b[1;36m10.0020\u001b[0m defined from \u001b]8;id=924019;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/components/grid/grid_spec.py\u001b\\\u001b[2mgrid_spec.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=277782;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/components/grid/grid_spec.py#472\u001b\\\u001b[2m472\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m sources. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
           INFO     Using Tidy3D credentials from stored file                      auth.py:74\n",
       "
\n" ], "text/plain": [ "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Using Tidy3D credentials from stored file \u001b]8;id=835349;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/auth.py\u001b\\\u001b[2mauth.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=931398;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/auth.py#74\u001b\\\u001b[2m74\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:31:35] INFO     Uploaded task 'norm' with task_id                           webapi.py:120\n",
       "                    '7edb0a64-0fd6-46fe-93ce-4147688fd467'.                                  \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:31:35]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Uploaded task \u001b[32m'norm'\u001b[0m with task_id \u001b]8;id=434975;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=963525;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#120\u001b\\\u001b[2m120\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m \u001b[32m'7edb0a64-0fd6-46fe-93ce-4147688fd467'\u001b[0m. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d1c71a02f391415ab2f74bc976668fce", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "
\n",
       "
\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:31:38] INFO     Uploaded task 'actual' with task_id                         webapi.py:120\n",
       "                    '0ab5b45e-04c3-4c7b-b1a8-5fd534cc06ff'.                                  \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:31:38]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Uploaded task \u001b[32m'actual'\u001b[0m with task_id \u001b]8;id=24088;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=127674;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#120\u001b\\\u001b[2m120\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m \u001b[32m'0ab5b45e-04c3-4c7b-b1a8-5fd534cc06ff'\u001b[0m. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e36ef4f2e8104ded989bb90ebaab3159", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "
\n",
       "
\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:31:40] Started working on Batch.                                         container.py:384\n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:31:40]\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch. \u001b]8;id=211772;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/container.py\u001b\\\u001b[2mcontainer.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=830472;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/container.py#384\u001b\\\u001b[2m384\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3257a441a2f243b884e3c5c8f7e58609", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "
\n",
       "
\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:32:36] Batch complete.                                                   container.py:405\n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:32:36]\u001b[0m\u001b[2;36m \u001b[0mBatch complete. \u001b]8;id=155246;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/container.py\u001b\\\u001b[2mcontainer.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=259932;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/container.py#405\u001b\\\u001b[2m405\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# run all simulations, take about 2-3 minutes each with some download time\n", "batch = web.Batch(\n", " simulations={\n", " 'norm': sim_empty,\n", " 'actual': sim_actual\n", " }\n", ")\n", "batch_data = batch.run(path_dir='data')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The normalizing run computes the transmitted flux for an air -> SiO2 interface, which is just below unity due to some reflection.\n", "\n", "While not technically necessary for this example, since this transmission can be computed analytically, it is often a good idea to run a normalizing run so you can accurately measure the *change* in output when the structure is added. For example, for multilayer structures, the normalizing run displays frequency dependence, which would make it prudent to include in the calculation." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2022-07-21T20:32:36.767175Z", "iopub.status.busy": "2022-07-21T20:32:36.767082Z", "iopub.status.idle": "2022-07-21T20:32:40.400771Z", "shell.execute_reply": "2022-07-21T20:32:40.400341Z" } }, "outputs": [ { "data": { "text/html": [ "
[16:32:37] INFO     downloading file \"output/monitor_data.hdf5\" to              webapi.py:574\n",
       "                    \"data/0ab5b45e-04c3-4c7b-b1a8-5fd534cc06ff.hdf5\"                         \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:32:37]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m downloading file \u001b[32m\"output/monitor_data.hdf5\"\u001b[0m to \u001b]8;id=518597;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=343305;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#574\u001b\\\u001b[2m574\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m \u001b[32m\"data/0ab5b45e-04c3-4c7b-b1a8-5fd534cc06ff.hdf5\"\u001b[0m \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "de2da8365f474faba08054495f3d884f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "
\n",
       "
\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:32:38] INFO     loading SimulationData from                                 webapi.py:398\n",
       "                    data/0ab5b45e-04c3-4c7b-b1a8-5fd534cc06ff.hdf5                           \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:32:38]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m loading SimulationData from \u001b]8;id=29624;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=683152;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#398\u001b\\\u001b[2m398\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m data/\u001b[93m0ab5b45e-04c3-4c7b-b1a8-5fd534cc06ff\u001b[0m.hdf5 \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
           WARNING  Simulation final field decay value of 1.64e-05 is greater   webapi.py:404\n",
       "                    than the simulation shutoff threshold of 1e-05. Consider                 \n",
       "                    simulation again with large run_time duration for more                   \n",
       "                    accurate results.                                                        \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Simulation final field decay value of \u001b[1;36m1.64e-05\u001b[0m is greater \u001b]8;id=963425;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=43354;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#404\u001b\\\u001b[2m404\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m than the simulation shutoff threshold of \u001b[1;36m1e-05\u001b[0m. Consider \u001b[2m \u001b[0m\n", "\u001b[2;36m \u001b[0m simulation again with large run_time duration for more \u001b[2m \u001b[0m\n", "\u001b[2;36m \u001b[0m accurate results. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:32:39] INFO     downloading file \"output/monitor_data.hdf5\" to              webapi.py:574\n",
       "                    \"data/7edb0a64-0fd6-46fe-93ce-4147688fd467.hdf5\"                         \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:32:39]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m downloading file \u001b[32m\"output/monitor_data.hdf5\"\u001b[0m to \u001b]8;id=957034;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=453544;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#574\u001b\\\u001b[2m574\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m \u001b[32m\"data/7edb0a64-0fd6-46fe-93ce-4147688fd467.hdf5\"\u001b[0m \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "141bba2b9dcf473585fa84ec1c722dcd", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "
\n",
       "
\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[16:32:40] INFO     loading SimulationData from                                 webapi.py:398\n",
       "                    data/7edb0a64-0fd6-46fe-93ce-4147688fd467.hdf5                           \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m[16:32:40]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m loading SimulationData from \u001b]8;id=795673;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py\u001b\\\u001b[2mwebapi.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=342473;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/web/webapi.py#398\u001b\\\u001b[2m398\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m data/\u001b[93m7edb0a64-0fd6-46fe-93ce-4147688fd467\u001b[0m.hdf5 \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
           INFO     Auto meshing using wavelength 10.0020 defined from       grid_spec.py:472\n",
       "                    sources.                                                                 \n",
       "
\n" ], "text/plain": [ "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Auto meshing using wavelength \u001b[1;36m10.0020\u001b[0m defined from \u001b]8;id=394989;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/components/grid/grid_spec.py\u001b\\\u001b[2mgrid_spec.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=989486;file:///home/shashwat/flexcompute/repositories/tidy3d-docs/tidy3d/tidy3d/components/grid/grid_spec.py#472\u001b\\\u001b[2m472\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m sources. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "batch_data = batch.load(path_dir='data')\n", "transmission = batch_data['actual']['flux'] / batch_data['norm']['flux']\n", "reflection = 1 - transmission" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 311 }, "execution": { "iopub.execute_input": "2022-07-21T20:32:40.413174Z", "iopub.status.busy": "2022-07-21T20:32:40.413038Z", "iopub.status.idle": "2022-07-21T20:32:40.513280Z", "shell.execute_reply": "2022-07-21T20:32:40.512948Z" }, "id": "x10TjU0uyh3a", "outputId": "b74cd9e6-f5a4-468f-f1d0-90c8d9861ed9", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
<Figure size 432x324 with 1 Axes>\n",
       "
\n" ], "text/plain": [ "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 432x324 with \u001b[0m\u001b[1;36m1\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot transmission, compare to paper results, look similar\n", "fig, ax = plt.subplots(1, 1, figsize=(6, 4.5))\n", "plt.plot(wavelengths, reflection, 'k', label='R')\n", "plt.plot(wavelengths, transmission, 'r--', label='T')\n", "plt.xlabel('wavelength ($\\mu m$)')\n", "plt.ylabel('Magnitude')\n", "plt.xlim([8.8, 12])\n", "plt.ylim([0.0, 1.0])\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "Ge_HighQ.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.10" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "0ef4027b037843e38101f37de98e68e6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "141bba2b9dcf473585fa84ec1c722dcd": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_db80a10349a4486f91ad9a323f60ab96", "msg_id": "", "outputs": [ { "data": { "text/html": "
 monitor_data.hdf5 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0%0.0/46.1 kB?-:--:--\n
\n", "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mmonitor_data.hdf5\u001b[0m \u001b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m0.0%\u001b[0m • \u001b[32m0.0/46.1 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m-:--:--\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "269bd77f612e47438cd547f31eb064fb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3257a441a2f243b884e3c5c8f7e58609": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_7c47dc8c70a142c087ae9ae300603f69", "msg_id": "", "outputs": [ { "data": { "text/html": "
norm: status = success   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00\nactual: status = success ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00\n
\n", "text/plain": "norm: status = success \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\nactual: status = success \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "7c47dc8c70a142c087ae9ae300603f69": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8ee52ea1e32f4410b34b081cab0da006": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d1c71a02f391415ab2f74bc976668fce": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_0ef4027b037843e38101f37de98e68e6", "msg_id": "", "outputs": [ { "data": { "text/html": "
 simulation.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0%40.0/40.0 kB?0:00:00\n
\n", "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m40.0/40.0 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "db80a10349a4486f91ad9a323f60ab96": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "de2da8365f474faba08054495f3d884f": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_8ee52ea1e32f4410b34b081cab0da006", "msg_id": "", "outputs": [ { "data": { "text/html": "
 monitor_data.hdf5 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0%0.0/46.6 kB?-:--:--\n
\n", "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mmonitor_data.hdf5\u001b[0m \u001b[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m0.0%\u001b[0m • \u001b[32m0.0/46.6 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m-:--:--\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "e36ef4f2e8104ded989bb90ebaab3159": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_269bd77f612e47438cd547f31eb064fb", "msg_id": "", "outputs": [ { "data": { "text/html": "
 simulation.json ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.0%41.2/41.2 kB?0:00:00\n
\n", "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m41.2/41.2 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }