{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "32895d95-6fa3-477e-bebd-d2ad6f87f6a2",
   "metadata": {},
   "source": [
    "# Integrated plasmonic Vivaldi antenna with silicon waveguide\n",
    "\n",
    "**Running the entire notebook costs more than 1 FlexCredit.**\n",
    "\n",
    "Chip Multiprocessors (CMP) enhance efficiency by using multiple parallel cores. Efficient interconnection is crucial, leading to Network on Chip (NoC) and optical interconnections (ONoC) for better performance. ONoC faces issues like complexity and signal loss. Wireless connections (WiNoC) and on-chip wireless optical connections (OWiNoC) offer solutions by combining optical and wireless benefits, reducing complexity, and eliminating electro-optical conversion. \n",
    "\n",
    "In this notebook, we design a Vivaldi plasmonic antenna for on-chip optical communications. Known for high gain and wide bandwidth in the microwave range, the Vivaldi antenna can also perform well at optical frequencies with proper geometry adjustments. Its simple design, compact size, high gain, and large bandwidth make it ideal for optical wireless communications. The design principles are based on the work `Gaetano Bellanca, Giovanna Calò, Ali Emre Kaplan, Paolo Bassi, and Vincenzo Petruzzelli, \"Integrated Vivaldi plasmonic antenna for wireless on-chip optical communications,\" Opt. Express 25, 16214-16227 (2017).` [DOI: OE.25.016214](https://doi.org/10.1364/OE.25.016214).\n",
    "\n",
    "The design consists of three sections: the silicon waveguide, the coupling section, and the Vivaldi antenna as schematically shown below. We start by optimizing the coupling region geometry through coupled mode theory and normal mode analysis. Then the optimized coupler region is verified using FDTD. Finally we simulate the antenna structure and evaluate the antenna performance. Through this example, we demonstrate various features and functionalities in Tidy3D. They mainly include:\n",
    "\n",
    "1. How to use the [waveguide plugin](https://www.flexcompute.com/tidy3d/examples/notebooks/WaveguidePluginDemonstration/) for quick waveguide mode analysis on simple waveguide configurations.\n",
    "\n",
    "2. How to use the regular [mode solver plugin](https://www.flexcompute.com/tidy3d/examples/notebooks/ModeSolver/) to perform mode solving on arbitrary waveguide cross sections.\n",
    "\n",
    "3. How to [run mode solvers in parallel](https://www.flexcompute.com/tidy3d/examples/notebooks/BatchModeSolver/) to speed up the analysis.\n",
    "\n",
    "4. How to turn on volumetric averaging scheme for metal structures for enhanced accuracy. \n",
    "\n",
    "5. How to [perform near field to far field projection](https://www.flexcompute.com/tidy3d/examples/notebooks/FieldProjections/) and evaluate antenna performance by computing the antenna directivity.\n",
    "\n",
    "<img src=\"img/integrated_antenna.png\" width=\"500\" alt=\"Schematic of the integrated antenna\">\n",
    "\n",
    "For users who are interested in the physical principle behind the field projection, our [technical article](https://www.flexcompute.com/tidy3d/learn-center/technical-article/far-field-projection/) on this topic is a great learning source."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3ab059ef-9027-49a6-a094-d6d53f57d923",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:24.574442Z",
     "iopub.status.busy": "2025-05-15T10:48:24.573575Z",
     "iopub.status.idle": "2025-05-15T10:48:26.503238Z",
     "shell.execute_reply": "2025-05-15T10:48:26.502791Z"
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tidy3d as td\n",
    "import tidy3d.web as web\n",
    "from tidy3d.plugins import waveguide\n",
    "from tidy3d.plugins.mode import ModeSolver"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "271991ba-fdd0-436a-a175-b420e4bd5ec5",
   "metadata": {},
   "source": [
    "## Basic Simulation Parameter Setup\n",
    "\n",
    "First we define the basic parameters used throughout the notebook. The wavelength range of interest is centered around the 1550 nm telecom wavelength. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2c067b14-48c6-4d62-bda6-04c23409bcf5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:26.504598Z",
     "iopub.status.busy": "2025-05-15T10:48:26.504375Z",
     "iopub.status.idle": "2025-05-15T10:48:26.506549Z",
     "shell.execute_reply": "2025-05-15T10:48:26.506288Z"
    }
   },
   "outputs": [],
   "source": [
    "lda0 = 1.55  # central wavelength\n",
    "freq0 = td.C_0 / lda0  # central frequency\n",
    "\n",
    "ldas = np.linspace(1.5, 1.6, 101)  # wavelength range\n",
    "freqs = td.C_0 / ldas  # frequency range\n",
    "\n",
    "fwidth = 0.5 * (np.max(freqs) - np.min(freqs))  # width of the source frequency range"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b16cb17-da7c-453e-a4a7-215a59c3f063",
   "metadata": {},
   "source": [
    "Three materials are used in the simulations, namely silicon, silicon oxide, and silver. All three materials are contained in the [material library](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/material_library.html) so users can use them conveniently. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "98ee78e4-d7dc-47ca-9dc8-d601d45e5590",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:26.507535Z",
     "iopub.status.busy": "2025-05-15T10:48:26.507431Z",
     "iopub.status.idle": "2025-05-15T10:48:26.509337Z",
     "shell.execute_reply": "2025-05-15T10:48:26.509018Z"
    }
   },
   "outputs": [],
   "source": [
    "si = td.material_library[\"cSi\"][\"Palik_Lossless\"]\n",
    "\n",
    "sio2 = td.material_library[\"SiO2\"][\"Palik_Lossless\"]\n",
    "\n",
    "ag = td.material_library[\"Ag\"][\"JohnsonChristy1972\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65607d49-5ba2-4374-8b9b-d1b291c0038c",
   "metadata": {},
   "source": [
    "Define fixed geometric parameters. The silicon waveguide thickness and silver waveguide thickness are fixed due to fabrication constraints. The slot width of the silver waveguide is varied in the [reference](https://doi.org/10.1364/OE.25.016214) but is fixed here for the sake of simplicity. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0640e5de-9aa0-4dc7-aeb3-bee57bfc7bbb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:26.510499Z",
     "iopub.status.busy": "2025-05-15T10:48:26.510404Z",
     "iopub.status.idle": "2025-05-15T10:48:26.512475Z",
     "shell.execute_reply": "2025-05-15T10:48:26.512165Z"
    }
   },
   "outputs": [],
   "source": [
    "h = 0.22  # silicon waveguide thickness\n",
    "t = 0.05  # silver waveguide thickness\n",
    "s = 0.03  # slot size of the silver slot waveguide"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e647b1c0-8069-4636-8ac2-002fea8d3e70",
   "metadata": {},
   "source": [
    "## Coupled Mode Theory and Normal Mode Analysis\n",
    "\n",
    "The coupling region comprises a silicon waveguide with a plasmonic slot waveguide positioned above it. The objective is to efficiently convert the silicon waveguide mode to the plasmonic waveguide mode. This can be achieved in two steps. First, we achieve phase matching by examining the effective indices of the silicon and plasmonic waveguides using various geometric parameters. When the effective indices of the silicon waveguide mode and the plasmonic waveguide mode are equal, maximum power conversion is realized. In the second step, we conduct mode analysis on the hybrid waveguide cross-section and determine the optimal coupling length based on the effective indices of the first and second normal modes. In this notebook, we will try to explain the design principles but for full detail, please refer to the referenced [paper](https://doi.org/10.1364/OE.25.016214).\n",
    "\n",
    "We start by defining a function to generate a silicon waveguide mode solver given the width of the silicon waveguide. Since the silicon waveguide is just a strip waveguide, we can use the [waveguide plugin](https://www.flexcompute.com/tidy3d/examples/notebooks/WaveguidePluginDemonstration/) for convenience."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1d18d944-c13b-4968-8e41-91da5da25837",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:26.513731Z",
     "iopub.status.busy": "2025-05-15T10:48:26.513542Z",
     "iopub.status.idle": "2025-05-15T10:48:26.515816Z",
     "shell.execute_reply": "2025-05-15T10:48:26.515527Z"
    }
   },
   "outputs": [],
   "source": [
    "# define a function to create silicon waveguide mode solver\n",
    "def silicon_waveguide_mode_solver(w):\n",
    "    silicon_waveguide = waveguide.RectangularDielectric(\n",
    "        wavelength=lda0,\n",
    "        core_width=w,\n",
    "        core_thickness=h,\n",
    "        core_medium=si,\n",
    "        clad_medium=sio2,\n",
    "        grid_resolution=15,\n",
    "        mode_spec=td.ModeSpec(num_modes=1, target_neff=3),\n",
    "    )\n",
    "\n",
    "    return silicon_waveguide.mode_solver"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d20055eb-004f-48af-a787-f7bdca9948f3",
   "metadata": {},
   "source": [
    "To verify the setup, we can create an example mode solver and plot the cross section. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "9ff38551-4cf5-47d1-83db-dc042e641904",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:26.517122Z",
     "iopub.status.busy": "2025-05-15T10:48:26.516829Z",
     "iopub.status.idle": "2025-05-15T10:48:26.811028Z",
     "shell.execute_reply": "2025-05-15T10:48:26.810761Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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z+mzzz7Tiy++qNatW2vo0KFO53fo0EGzZs3S3r171bp163LHA7iVyi5dAYWGDh1qvL29zbffflvkWOEUwsKFC40k07VrV/P777/bj588edL4+vqaXr16Oa2zmTt3rpFkFixYYIz573qNpUuXlhjHrFmzjCTzyy+/WIq/NOe98847xtvbu8g6lML1Lps2bTLGGLN//37j7e1t/vznPxdZN+Q4nVLStNrXX39tJJmvv/7aGGNMXl6eueaaa0zr1q3NhQsX7O0+/fRTI8lMmTLFvm/YsGFGknnmmWec+mzfvr3p0KHDpX8I5o8pqos9+OCDpkaNGiYnJ8e+z+q02okTJ0zdunXNbbfdZnJzc0379u1No0aNnKanjDGmcePGRtJlt8TERPs5Y8aMMT4+PsVet0GDBmbgwIGXjC0qKsrceuutRfbv3bvXSDLJycnGGGOWLl1qJJn169cXadu/f38TGhp6yet89dVXRpL55JNPihy7eEyFGjdubIYNG2Z/Xfg3FB8f7/S7FBsba7y8vMxDDz1k3/f777+ba6+9ttjfsc2bNxtJZsmSJZeMGaiKmFaDWygoKNDy5ct15513Fvm/aklFphBGjRolHx8f++uvvvpKeXl5GjdunLy9vZ3aBQUF2adFgoODJUlffPGFzp8/X2wshRWUFStWqKCgoNRjKM15S5cu1Q033KCWLVvq1KlT9u3WW2+V9Mf0jvTH1ElBQYGmTJniNB6p6M+iNLZv366TJ0/qkUcekb+/v31/nz591LJly2KnjR566CGn17fccot++umny14rICDA/u9nz57VqVOndMstt+j8+fP6z3/+Yzn2QqGhoZo3b55WrVqlW265Rbt379aCBQuKVGsWLVqkVatWXXZzrIRcuHDBqTLpyN/fXxcuXLhkbBcuXJCfn1+x5xYed/xnSW0vd53Tp09LkurUqXPJdqUxYsQIp9+lmJgYGWM0YsQI+z4fHx917Nix2Pe9MIZTp06VOxbA3TCtBrfwyy+/yGazlbo8HxkZ6fS68HkvLVq0cNrv6+ur6667zn48MjJSCQkJmjlzphYtWqRbbrlFd911l+677z574jRgwAC9+eabGjlypCZMmKCePXvq7rvv1r333lskUXFUmvP279+vH374QQ0aNCi2j5MnT0qSDh48KG9vb7Vq1apUP4/LKennI0ktW7bUxo0bnfb5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ZGV8Velvzpj/3rp+8VY4pmHDhplu3boVOSc6Otr4+vqa6667zixcuLBIv5f6mV1JVsf3wgsvmKZNmxp/f39Tt25d0717d7NmzZoi/brL+HBleBljzJWrUwEAALg31hwBAAA4IDkCAABwQHIEAADggOQIAADAAckRAACAA5IjAAAAByRHAAAADkiOAAAAHJAcAXCJt956S7169arw66Smpio6OloFBQUVfi0AVyeSIwDllpOTo8mTJysxMbHCr/WnP/1J1atX16JFiyr8WgCuTiRHAMrt3//+t4KCgnTzzTdfkevdf//9mjNnzhW5FoCrD8kRALu3335b9erVU25urtP+fv36aciQISWe9/777+vOO+902te9e3eNGzeuSD/333+//XWTJk00ffp0DR06VIGBgWrcuLE+/vhj/fLLL+rbt68CAwPVtm1bbd++3amfO++8U9u3b9fBgwfLNlAAuASSIwB2/fv3V35+vj7++GP7vpMnT2rlypV64IEHSjxv48aN6tixY5muOWvWLN18883atWuX+vTpoyFDhmjo0KG67777tHPnTjVt2lRDhw6V43dkN2rUSCEhIdqwYUOZrgkAl0JyBMAuICBAf/3rX7Vw4UL7vnfffVeNGjVS9+7diz0nMzNTWVlZCg8PL9M1b7/9dj344INq3ry5pkyZIpvNpk6dOql///66/vrr9dRTT+mHH35QRkaG03nh4eE6dOhQma4JAJdCcgTAyahRo/Tll1/q2LFjkqSUlBTdf//98vLyKrb9hQsXJEn+/v5lul7btm3t/x4SEiJJatOmTZF9J0+edDovICBA58+fL9M1AeBSqlV2AADcS/v27dWuXTu9/fbb6tWrl/bu3auVK1eW2L5evXry8vLSmTNnLtt3fn5+kX3Vq1e3/3thAlbcvotv3f/111/VoEGDy14TAKyicgSgiJEjRyolJUULFy5UXFycIiIiSmzr6+urVq1a6fvvvy9y7OKpsJ9++skl8eXk5OjgwYNq3769S/oDAEckRwCK+Otf/6qjR4/qjTfeuORC7ELx8fHauHFjkf0rVqzQsmXLdPDgQT377LP6/vvvdejQIfuUXVl988038vPzU2xsbLn6AYDikBwBKCI4OFj33HOPAgMD1a9fv8u2HzFihD777DNlZWU57e/Tp49mzJihVq1aaf369Xr11Ve1bds2vfPOO+WK77333tPgwYNVo0aNcvUDAMXxMo73xwLA/69nz56Kiooq9cMW+/fvrxtvvFETJ06U9MdzjqKjozV79myXxnXq1Cm1aNFC27dvV2RkpEv7BgCJyhGAi5w5c0YfffSR1q5dqzFjxpT6vBdffFGBgYEVGNkffv75Z7366qskRgAqDHerAXDSvn17nTlzRi+88IJatGhR6vOaNGmisWPHVmBkf+jYsWOZHzgJAKXBtBoAAIADptUAAAAckBwBAAA4IDkCAABwQHIEAADggOQIAADAAckRAACAA5IjAAAAByRHAAAADv4/flgH8ZnMPbsAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mode_solver_example = silicon_waveguide_mode_solver(w=0.5)\n",
    "mode_solver_example.plot_eps()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3634ba0-bd4d-4370-bbf9-1c10fa9e4ef4",
   "metadata": {},
   "source": [
    "The mode solving is done for the waveguide width from 220 nm to 500 nm. Instead of running the mode solving sequentially, we run them in parallel through a batch to maximize the time saving."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e4883910-9388-4c3c-8445-ee7788205377",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:26.812517Z",
     "iopub.status.busy": "2025-05-15T10:48:26.812395Z",
     "iopub.status.idle": "2025-05-15T10:48:26.888772Z",
     "shell.execute_reply": "2025-05-15T10:48:26.888427Z"
    }
   },
   "outputs": [],
   "source": [
    "w_list = np.linspace(h, 0.5, 8)  # range of the waveguide width to be studied\n",
    "\n",
    "# generate a dictionary of mode solvers\n",
    "silicon_waveguide_mode_solvers = {f\"w={w:.2f}\": silicon_waveguide_mode_solver(w) for w in w_list}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "25b19894-3f68-4270-9fc4-f3311fd9c563",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:26.890244Z",
     "iopub.status.busy": "2025-05-15T10:48:26.890164Z",
     "iopub.status.idle": "2025-05-15T10:48:52.233649Z",
     "shell.execute_reply": "2025-05-15T10:48:52.232894Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2c8b0427ea574272b5b5deaf1d29b6a8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:48:30 CEST </span>Started working on Batch containing <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">8</span> tasks.                      \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:48:30 CEST\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m8\u001b[0m tasks.                      \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:48:37 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.030</span> for the whole batch.               \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:48:37 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.030\u001b[0m for the whole batch.               \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Use <span style=\"color: #008000; text-decoration-color: #008000\">'Batch.real_cost()'</span> to get the billed FlexCredit cost after   \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>the Batch has completed.                                          \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed FlexCredit cost after   \n",
       "\u001b[2;36m              \u001b[0mthe Batch has completed.                                          \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "08ec8745ae2d447f8475d115d7bc9e25",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:48:42 CEST </span>Batch complete.                                                   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:48:42 CEST\u001b[0m\u001b[2;36m \u001b[0mBatch complete.                                                   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2d0b1a79bb124d40a43fc8e5ee65bb19",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# run mode solvers in parallel\n",
    "batch = web.Batch(simulations=silicon_waveguide_mode_solvers)\n",
    "silicon_waveguide_batch_results = batch.run(path_dir=\"data\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fde51560-c8e0-4298-a15f-abbf96b2f0eb",
   "metadata": {},
   "source": [
    "We are mainly interested in the effective index of the fundamental mode. However we can also visualize the mode profile. For example, here we visualize the mode profile from one of the mode solvers. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d735dda6-a0fa-45fd-88dc-9a7a404c82bb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:52.311901Z",
     "iopub.status.busy": "2025-05-15T10:48:52.311763Z",
     "iopub.status.idle": "2025-05-15T10:48:52.466231Z",
     "shell.execute_reply": "2025-05-15T10:48:52.466013Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "silicon_waveguide_mode_solvers[f\"w={w_list[3]:.2f}\"].plot_field(\"E\", \"abs\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9687fdc-afb8-47e2-b3df-8c01fe940e35",
   "metadata": {},
   "source": [
    "Extract and plot the effective index as a function of the waveguide width."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "612f5018-c1d8-41ae-8ffb-be07908c9fbe",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:52.467288Z",
     "iopub.status.busy": "2025-05-15T10:48:52.467172Z",
     "iopub.status.idle": "2025-05-15T10:48:54.433262Z",
     "shell.execute_reply": "2025-05-15T10:48:54.433013Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# extract the effective index of the fundamental mode\n",
    "n_eff_silicon = [result.n_eff[0][0].values for _, result in silicon_waveguide_batch_results.items()]\n",
    "\n",
    "plt.plot(w_list, n_eff_silicon)\n",
    "plt.xlabel(\"Waveguide width (μm)\")\n",
    "plt.ylabel(\"Effective index\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f5cabf25-57bb-48b9-a51d-a9fd4052ac24",
   "metadata": {},
   "source": [
    "Next we will perform the same analysis for the plasmonic waveguide. A few things to note here: \n",
    "\n",
    "1. The slot mode has a strong field inside the small slot region and near the metal surface. To ensure the effective index is accurate, we need to use a fine grid resolution. Here we use the automatic nonuniform grid with `min_steps_per_wvl=50` mainly for convenience. Alternatively, one could consider using an overall coarser grid but add a mesh refinement region around the slot and metal. This approach can potentially reduce the total number of grid points and thus save some computational cost.\n",
    "\n",
    "2. By default, we apply [staircasing](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.Staircasing.html) for metal structures. For enhanced accuracy, we can turn on [volumetric averaging](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.VolumetricAveraging.html) for metal.\n",
    "\n",
    "3. For the same reason, we use double precision instead of the default single precision in the mode solver."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "bf41ee48-9b75-41a6-899a-832679224d1c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:54.434354Z",
     "iopub.status.busy": "2025-05-15T10:48:54.434233Z",
     "iopub.status.idle": "2025-05-15T10:48:54.436900Z",
     "shell.execute_reply": "2025-05-15T10:48:54.436653Z"
    }
   },
   "outputs": [],
   "source": [
    "# define a function to create plasmonic waveguide mode solver\n",
    "def plasmonic_waveguide_mode_solver(p):\n",
    "    # define the waveguide left to the slot\n",
    "    slot_left = td.Structure(\n",
    "        geometry=td.Box(center=(-(s + p) / 2, 0, 0), size=(p, t, td.inf)), medium=ag\n",
    "    )\n",
    "\n",
    "    # define the waveguide right to the slot\n",
    "    slot_right = td.Structure(\n",
    "        geometry=td.Box(center=((s + p) / 2, 0, 0), size=(p, t, td.inf)), medium=ag\n",
    "    )\n",
    "\n",
    "    # define mode solving plane size\n",
    "    mode_plane_size_x = 2 * (2 * p + s)\n",
    "    mode_plane_size_y = 6 * t\n",
    "\n",
    "    # define a simulation\n",
    "    sim = td.Simulation(\n",
    "        size=(mode_plane_size_x, mode_plane_size_y, 1),\n",
    "        grid_spec=td.GridSpec.auto(\n",
    "            min_steps_per_wvl=50, wavelength=lda0\n",
    "        ),  # fine grid resolution is used to ensure accurate result\n",
    "        structures=[slot_left, slot_right],\n",
    "        run_time=1e-12,\n",
    "        medium=sio2,\n",
    "        subpixel=td.SubpixelSpec(\n",
    "            metal=td.VolumetricAveraging()\n",
    "        ),  # enable volumetric averaging for metal for improved accuracy\n",
    "    )\n",
    "\n",
    "    # define a mode solver\n",
    "    mode_solver = ModeSolver(\n",
    "        simulation=sim,\n",
    "        plane=td.Box(size=(mode_plane_size_x, mode_plane_size_y, 0)),\n",
    "        mode_spec=td.ModeSpec(\n",
    "            num_modes=1, precision=\"double\", target_neff=3\n",
    "        ),  # use double precision\n",
    "        freqs=[freq0],\n",
    "    )\n",
    "\n",
    "    return mode_solver"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e17d5cac-2f63-45d0-93c9-7e3246211e05",
   "metadata": {},
   "source": [
    "Again we create an example mode solver and visualize it. More importantly, we inspect the grid to ensure resolution is sufficiently fine."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "da960dd0-f580-4bde-8fd6-237165253372",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:54.437783Z",
     "iopub.status.busy": "2025-05-15T10:48:54.437694Z",
     "iopub.status.idle": "2025-05-15T10:48:54.542679Z",
     "shell.execute_reply": "2025-05-15T10:48:54.542436Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAG5CAYAAAADAnkFAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAStxJREFUeJzt3Xl4VPXZ//HPJJAJEAjIkhDZIqAIsihLRFGw5DEosqhFoSKLFBSlLc3l0iiLgBoERbSCPLZFlCIgPjX0JzWKEdwaUbZWBRWR3SSASMIiCcmc3x+UKUNmJjOZmTMnx/fruuZyzvfc9/09JxOau+c7c8ZhGIYhAAAA1Hgx0T4AAAAAhAeNHQAAgE3Q2AEAANgEjR0AAIBN0NgBAADYBI0dAACATdDYAQAA2ASNHQAAgE3Q2AEAANgEjR0A21q/fr0cDofWr18f7UNBmL322mu64IILdPz4cdPn3rZtm2rVqqUvvvjC9LmBqtDYAajxFi5cqCVLlkT7MKrl1Vdf1fz586N9GJIkl8ulOXPmKDU1VfHx8erSpYuWL18ecP7Ro0c1YcIENW3aVPXq1dN1112nzZs3e439+9//riuuuELx8fFq1aqVpk+frvLy8oDmqaio0PTp0/Wb3/xGCQkJAR9fuHTs2FEDBw7UtGnTTJ8bqIqD74oFUNNddtllatKkSaUrcy6XS2VlZYqLi1NMjDX/f+xNN92kL774Qrt37472oSgrK0uzZ8/W+PHj1bNnT61evVpr1qzR8uXLNXz4cL+5LpdL11xzjf71r3/pgQceUJMmTbRw4ULt27dPmzZtUvv27d2xb731lgYOHKh+/fppxIgR+vzzz7VgwQJNmDBBL7zwQpXHmZOTo1tuuUX79u3ThRdeGPJ5V8dbb72lG2+8Ud9++63atm0blWMAvDIA2MLx48ejfQhR06lTJ6Nv377RPoxqGThwoNG6detoH4axf/9+o3bt2sZ9993nHnO5XMY111xjtGjRwigvL/ebv3LlSkOSsWrVKvfYwYMHjYYNGxojRozwiO3YsaPRtWtX4/Tp0+6xRx55xHA4HMb27durPNbBgwcbffr0CfTUIqKsrMxo1KiRMXXq1KgeB3A+a/5fWOBn7sCBAxo3bpxSUlLkdDqVmpqqiRMnqqysTJK0ZMkSORwOvf/++7r33nvVrFkztWjRwp2/cOFCderUSU6nUykpKbrvvvt09OhRjzl27NihW2+9VcnJyYqPj1eLFi00fPhwFRcXu2PWrl2rPn36qGHDhkpISNAll1yihx9+uMrjDySvtLRU06dPV7t27eR0OtWyZUs9+OCDKi0trVTvr3/9q3r16qW6deuqUaNGuvbaa/XOO+9Iktq0aaMvv/xS77//vhwOhxwOh/r16yfJ93vsVq1ape7du6tOnTpq0qSJRo4cqQMHDnjEjBkzRgkJCTpw4ICGDh2qhIQENW3aVPfff78qKiqq/BmsXr1aAwcOdL+Gbdu21axZszxy+/XrpzVr1mjPnj3uY2/Tpo3PmmPGjHHHnf949NFHqzymqo739OnTuvfee91jDodDEydO1P79+5Wfn+83//XXX1dSUpJuueUW91jTpk112223afXq1e7Xddu2bdq2bZsmTJigWrVquWPvvfdeGYah119/3e88p06dUm5urtLT0z3Gd+/eLYfD4XVJ/vyfz6OPPiqHw6FvvvlGI0eOVGJiopo2baqpU6fKMAzt27dPQ4YMUYMGDZScnKynn366Us3atWurX79+Wr16td/jBcxWq+oQAGb6/vvv1atXL/f7lTp06KADBw7o9ddf18mTJxUXF+eOvffee9W0aVNNmzZNJ06ckHTmj9aMGTOUnp6uiRMn6uuvv9YLL7ygzz77TB9//LFq166tsrIyZWRkqLS0VL/5zW+UnJysAwcO6M0339TRo0eVmJioL7/8UjfddJO6dOmimTNnyul06ttvv9XHH3/s9/gDyXO5XBo8eLA++ugjTZgwQZdeeqk+//xzPfPMM/rmm2+Uk5Pjjp0xY4YeffRRXXXVVZo5c6bi4uK0YcMGvffee7r++us1f/5893utHnnkEUlSUlKSz+NbsmSJxo4dq549eyo7O1tFRUV69tln9fHHH2vLli1q2LChO7aiokIZGRlKS0vTU089pXfffVdPP/202rZtq4kTJ/r9OSxZskQJCQnKzMxUQkKC3nvvPU2bNk0lJSWaO3euJOmRRx5RcXGx9u/fr2eeeUaS/L5n7O67767U0OTm5mrZsmVq1qyZe+zw4cN+j+2s+vXry+l0SpK2bNmievXq6dJLL/WI6dWrl3t/nz59fNbasmWLrrjiikpL3r169dKLL76ob775Rp07d9aWLVskST169PCIS0lJUYsWLdz7fdm0aZPKysp0xRVXBHSO/tx+++269NJLNXv2bK1Zs0aPPfaYLrjgAv3v//6vfvGLX+jJJ5/UsmXLdP/996tnz5669tprPfK7d++u1atXq6SkRA0aNAj5eICwiPYlQwCeRo0aZcTExBifffZZpX0ul8swDMN46aWXDElGnz59PJbIDh48aMTFxRnXX3+9UVFR4R5//vnnDUnG4sWLDcMwjC1btlRaNjvfM888Y0gyDh06FNTxB5K3dOlSIyYmxvjwww89xhctWmRIMj7++GPDMAxjx44dRkxMjHHzzTd7nI9h/PdnYRi+l2LXrVtnSDLWrVtnGMaZ5bNmzZoZl112mfHTTz+54958801DkjFt2jT32OjRow1JxsyZMz1qXn755Ub37t39/xAMwzh58mSlsbvvvtuoW7eucerUKfdYKEuxO3bsMBITE43/+Z//8fg9kBTQ46WXXvI4josuuqjSHCdOnDAkGX/4wx/8Hku9evWMu+66q9L4mjVrDElGbm6uYRiGMXfuXEOSsXfv3kqxPXv2NK688kq/8/z5z382JBmff/65x/iuXbsqndNZkozp06e7t6dPn25IMiZMmOAeKy8vN1q0aGE4HA5j9uzZ7vEff/zRqFOnjjF69OhKdV999VVDkrFhwwa/xwyYiaVYwEJcLpdycnI0aNCgSlc0pDNLSucaP368YmNj3dvvvvuuysrKNHnyZI8rJ+PHj1eDBg20Zs0aSVJiYqIk6e2339bJkye9HsvZK1erV6+Wy+UK+BwCyVu1apUuvfRSdejQQYcPH3Y/fvGLX0iS1q1bJ+nMm+RdLpemTZtW6UrQ+T+LQGzcuFEHDx7Uvffeq/j4ePf4wIED1aFDB/fP51z33HOPx/Y111yj7777rsq56tSp435+7NgxHT58WNdcc41Onjypr776KuhjP9+JEyd08803q1GjRlq+fLnH78HatWsDemRkZLhzfvrpJ/fVu3Od/Tn99NNPfo8n0Pyz//UVW9U8P/zwgySpUaNGfuMC8etf/9r9PDY2Vj169JBhGBo3bpx7vGHDhrrkkku8vuZnjyHQK6SAGViKBSzk0KFDKikp0WWXXRZQfGpqqsf2nj17JEmXXHKJx3hcXJwuuugi9/7U1FRlZmZq3rx5WrZsma655hoNHjzY/X4j6cwy1Z///Gf9+te/1h/+8Af1799ft9xyi375y1/6/YRpIHk7duzQ9u3b1bRpU681Dh48KEnauXOnYmJi1LFjx4B+HlXx9fORpA4dOuijjz7yGIuPj690jI0aNdKPP/5Y5VxffvmlpkyZovfee08lJSUe+859H2N1jR8/Xjt37tQ///lPNW7c2GPf+cu1gahTp47X9zeeOnXKvT8c+Wf/6yu2qnnOMsJwQ4dWrVp5bCcmJio+Pl5NmjSpNH62ofR2DNX5PxlApNDYATVYoH8EvXn66ac1ZswYrV69Wu+8845++9vfKjs7W5988olatGihOnXq6IMPPtC6deu0Zs0a5ebmauXKlfrFL36hd955x+MK0fnHVFWey+VS586dNW/ePK81WrZsWe3zCidf51iVo0ePqm/fvmrQoIFmzpyptm3bKj4+Xps3b9ZDDz0U1BVQb5599lktX75cf/3rX9WtW7dK+wsLCwOqk5iY6P4dat68udatWyfDMDwalYKCAkln3gPnT/Pmzd2x5zo/v3nz5u7x81/ngoIC93v6fDnbxP74448eHxjyxV8D6O319fWae6tztsE/vxEEoomlWMBCmjZtqgYNGlT7jvatW7eWJH399dce42VlZdq1a5d7/1mdO3fWlClT9MEHH+jDDz/UgQMHtGjRIvf+mJgY9e/fX/PmzdO2bdv0+OOP67333nMvlfpSVV7btm115MgR9e/fX+np6ZUeZ6+otW3bVi6XS9u2bfM7X6BXTHz9fM6Onf/zqa7169frhx9+0JIlS/S73/1ON910k9LT070uHwZ7tefDDz/U/fffr8mTJ+uOO+7wGtO8efOAHitXrnTndOvWTSdPntT27ds9am3YsMG9359u3bpp8+bNlZrWDRs2qG7durr44os96mzcuNEj7vvvv9f+/furnKdDhw6SpF27dnndf+zYMY/toqIiv/VCsWvXLsXExLjPDbACGjvAQmJiYjR06FD9v//3/yr94ZOqXn5KT09XXFycnnvuOY/Yv/zlLyouLtbAgQMlSSUlJZXu8t+5c2fFxMS4l8iOHDlSqf7ZP7reltHOCiTvtttu04EDB/SnP/2pUuxPP/3k/oTv0KFDFRMTo5kzZ1ZqGM49v3r16lW6nYs3PXr0ULNmzbRo0SKPc3jrrbe0fft2988nVGev+px7jGVlZVq4cGGl2Hr16gW8NFtQUKDbbrtNffr0cX+y1pvqvMduyJAhql27tscxGoahRYsW6cILL9RVV13lcRxfffWVTp8+7R775S9/qaKiIv3tb39zjx0+fFirVq3SoEGD3O+p69Spkzp06KAXX3zR49YvL7zwghwOh375y1/6/Rl0795dcXFxXv99SKr0fzreeOMN97mE26ZNm9SpUyf32xcAK2ApFrCYJ554Qu+884769u3rvhVIQUGBVq1apY8++sjjdhzna9q0qbKysjRjxgwNGDBAgwcP1tdff62FCxeqZ8+eGjlypCTpvffe06RJkzRs2DBdfPHFKi8v19KlSxUbG6tbb71VkjRz5kx98MEHGjhwoFq3bq2DBw9q4cKFatGihd/bXgSSd+edd+q1117TPffco3Xr1unqq69WRUWFvvrqK7322mt6++231aNHD7Vr106PPPKIZs2apWuuuUa33HKLnE6nPvvsM6WkpCg7O1vSmT/2L7zwgh577DG1a9dOzZo1c38Q41y1a9fWk08+qbFjx6pv374aMWKE+3Ynbdq00e9///vqvmwerrrqKjVq1EijR4/Wb3/7WzkcDi1dutRrc9G9e3etXLlSmZmZ6tmzpxISEjRo0CCvdX/729/q0KFDevDBB7VixQqPfV26dFGXLl0kVe89di1atNDkyZM1d+5cnT59Wj179lROTo4+/PBDLVu2zGOJMisrSy+//LJ27drlvu/eL3/5S1155ZUaO3astm3b5v7miYqKCs2YMcNjrrlz52rw4MG6/vrrNXz4cH3xxRd6/vnn9etf/7rS7VbOFx8fr+uvv17vvvuuZs6cWWl/bm6u7rjjDl177bX65ptv9OKLL6pu3bp655131LNnT910001B/2y8OX36tPs+koClROWzuAD82rNnjzFq1CijadOmhtPpNC666CLjvvvuM0pLSw3D+O/tTrzdEsUwztzepEOHDkbt2rWNpKQkY+LEicaPP/7o3v/dd98Zd911l9G2bVsjPj7euOCCC4zrrrvOePfdd90xeXl5xpAhQ4yUlBQjLi7OSElJMUaMGGF88803fo890LyysjLjySefNDp16mQ4nU6jUaNGRvfu3Y0ZM2YYxcXFHrGLFy82Lr/8cndc3759jbVr17r3FxYWGgMHDjTq169vSHLf+uT8252ctXLlSne9Cy64wLjjjjuM/fv3e8SMHj3aqFevXqXzO3urjKp8/PHHxpVXXmnUqVPHSElJMR588EHj7bffrnQ8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uk606psxT2FhwKFcsQMAALAJGjsAAACboLEDAACwCRo7AAAAm6CxAwAAsAkaOwAAAJugsQMAALAJGjsAAACboLEDAACwCRq7INSqxRd1AAAA67JUY2cYhqZNm6bmzZurTp06Sk9P144dO/zmfPDBBxo0aJBSUlLkcDiUk5MTlrre0NgBAAArs1RjN2fOHD333HNatGiRNmzYoHr16ikjI0OnTp3ymXPixAl17dpVCxYsCGtdb8rLy4OKBwAAMJNlLkEZhqH58+drypQpGjJkiCTplVdeUVJSknJycjR8+HCveTfccINuuOGGsNf1hsYOAABYmWWu2O3atUuFhYVKT093jyUmJiotLU35+fmm1y0tLVVJSYnHAwAAwMos09gVFhZKkpKSkjzGk5KS3PvMrJudna3ExET3o2XLltU+BgAAADNErbFbtmyZEhIS3I/Tp09H61C8ysrKUnFxsfuxb9++aB8SAACAX1F7j93gwYOVlpbm3i4tLZUkFRUVqXnz5u7xoqIidevWrdrzJCcnV6uu0+mU0+ms9rwAAABmi9oVu/r166tdu3buR8eOHZWcnKy8vDx3TElJiTZs2KDevXtXe57U1NSI1AUAALAay3wq1uFwaPLkyXrsscfUvn17paamaurUqUpJSdHQoUPdcf3799fNN9+sSZMmSZKOHz+ub7/91r1/165d2rp1qy644AK1atUq4LoAAAA1nWUaO0l68MEHdeLECU2YMEFHjx5Vnz59lJubq/j4eHfMzp07dfjwYff2xo0bdd1117m3MzMzJUmjR4/WkiVLAq4LAABQ01mqsXM4HJo5c6ZmzpzpM2b37t0e2/369ZNhGCHXBQAAqOksc7sTAAAAhMZSV+xqhL17pbKyyNTesycydc2eJ1z1g60TSHxVMb72exs/d8zX80DjyK/Z+d62wzVupfMk3/w5/Y35Gw90f6AxocRHuk606ps5T0FBwKFcsQMAALAJrtgFq1WrM49IatcusvXNmidc9YOtE0h8VTG+9nsbP3fM1/NA48iv2fnetsM1bqXzJN/8Of2N+RsPdH+gMaHER7pOtOqbMU8Q38DFFTsAAACboLEDAACwCRq7IMTFxUX7EAAAAHyisQtCTAw/LgAAYF10KkEoLS2N9iEAAAD4RGMXhKq+4QIAACCaaOwAAABsgsYOAADAJmjsAAAAbILGDgAA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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mode_solver_example = plasmonic_waveguide_mode_solver(p=0.1)\n",
    "ax = mode_solver_example.plot()\n",
    "mode_solver_example.plot_grid(ax=ax, colors=\"r\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3a0b264-a078-4fa9-b084-5c74b7d40971",
   "metadata": {},
   "source": [
    "Here the mode solving is done for the waveguide width from 50 nm to 500 nm."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b6e754be-b6dd-45d7-876a-bcb11e02ecb2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:48:54.543796Z",
     "iopub.status.busy": "2025-05-15T10:48:54.543715Z",
     "iopub.status.idle": "2025-05-15T10:49:20.376449Z",
     "shell.execute_reply": "2025-05-15T10:49:20.375967Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1d0ec249b6054a0cbd3e2f91251bb0b4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:48:57 CEST </span>Started working on Batch containing <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">9</span> tasks.                      \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:48:57 CEST\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m9\u001b[0m tasks.                      \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:04 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.034</span> for the whole batch.               \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:04 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.034\u001b[0m for the whole batch.               \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Use <span style=\"color: #008000; text-decoration-color: #008000\">'Batch.real_cost()'</span> to get the billed FlexCredit cost after   \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>the Batch has completed.                                          \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed FlexCredit cost after   \n",
       "\u001b[2;36m              \u001b[0mthe Batch has completed.                                          \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "d72a087b0e9640d5b6ce1c1319a1793d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:10 CEST </span>Batch complete.                                                   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:10 CEST\u001b[0m\u001b[2;36m \u001b[0mBatch complete.                                                   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8027ae3e7b284827a6d453216cd322f3",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "p_list = np.linspace(0.05, 0.5, 9)  # range of the plasmonic waveguide width\n",
    "\n",
    "# create a list of mode solvers\n",
    "plasmonic_waveguide_mode_solvers = {\n",
    "    f\"p={p:.2f}\": plasmonic_waveguide_mode_solver(p) for p in p_list\n",
    "}\n",
    "\n",
    "# run mode solvers in parallel\n",
    "batch = web.Batch(simulations=plasmonic_waveguide_mode_solvers)\n",
    "plasmonic_waveguide_batch_results = batch.run(path_dir=\"data\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b54117bc-6f55-4c66-b9c1-8126223fa7e6",
   "metadata": {},
   "source": [
    "Plot the mode profile of a mode solver to ensure we are looking at the correct slot mode."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "b2b0aab2-79f7-4765-998d-eaecde68d87b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:20.477549Z",
     "iopub.status.busy": "2025-05-15T10:49:20.477468Z",
     "iopub.status.idle": "2025-05-15T10:49:20.701671Z",
     "shell.execute_reply": "2025-05-15T10:49:20.701201Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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kdOwaZWIiIgoTDEiR0RERObhPHKmYkSOiIiIKEwxIkdERETm4TxypmJFjoiIiMxleEXO2OzCGZtWiYiIiMIUI3JERERkHiG4soOJWJEjIiIi83DUqqnYtEpEREQUphiRIyIiIvMwImcqRuSIiIiIwhQjckRERGQeziNnKlbkiIiIyFxGL3JvdH5hjE2rRERERGGKETkiIiIyjRCAMHglBqPzC2esyBEREZF52EfOVGxaJSIiIgpTrMgRXeA2b94MSZKwefPm6i4KGew///kPGjRogDNnzpz3c+/duxdWqxU//fTTeT831UCKMP5FAFiRI7pgLF68GMuWLavuYlRKVlYW5s+fX93FAAAoioK5c+eiVatWiIqKQseOHfHuu+8GffypU6cwevRoNG7cGDExMbjhhhvw7bff+kz73//+F3/7298QFRWF5s2bY8aMGbDb7UGdx+FwYMaMGRg3bhxiY2ODLp9RUlJSkJGRgenTp5/3cxNdSFiRI7pA+KvIXX/99Th37hyuv/7681+oINWkitzUqVMxadIk3HTTTVi4cCGaN2+Oe++9FytWrKjwWEVRkJGRgaysLIwdOxZz585Ffn4+evbsif379+vSfvLJJ+jfvz/q1auHhQsXon///nj66acxbty4oMr54YcfYt++fRg9enSlrtMIDz30EFatWoUDBw5UWxmoBnAOdjD6RSoOdqALSlFREWJiYqq7GDWKLMuIioqq7mKEhaNHj2LevHnIzMzEP//5TwDAAw88gB49euCxxx7DnXfeCYvF4vf4999/H1999RVWrlyJO+64AwBw11134ZJLLsGMGTOQlZWlpX300UfRsWNHbNiwAVar+qs6Li4Os2fPxiOPPIJ27doFLOubb76Ja6+9FhdddFFVL7vS0tLSUL9+fbz11luYNWtWtZWDqhmX6DIVI3IUto4ePYqRI0ciOTkZNpsNrVq1wpgxY1BaWgoAWLZsGSRJwpYtW/Dwww8jISEBTZs21Y5fvHgxLrvsMthsNiQnJyMzMxOnTp3SnWP//v0YOHAgkpKSEBUVhaZNm+Kee+5BQUGBlmbjxo3o3r076tWrh9jYWFx66aWYMmVKheUP5riSkhLMmDEDbdq0gc1mQ7NmzfD444+jpKTEK7933nkHV111FaKjo1G/fn1cf/312LBhAwCgZcuW2LNnD7Zs2QJJkiBJEnr27AnAfx+5lStXonPnzqhTpw4aNWqEIUOG4OjRo7o0I0aMQGxsLI4ePYr+/fsjNjYWjRs3xqOPPgqHw1HhPVizZg0yMjK097B169Z46qmndMf27NkTH330EQ4dOqSVvWXLln7zHDFihJbO8zVz5swKy1RRecvKyvDwww9r2yRJwpgxY/DHH38gOzs74PHvv/8+EhMTMWDAAG1b48aNcdddd2HNmjXa+7p3717s3bsXo0eP1ipxAPDwww9DCIH3338/4HmKi4uxbt06pKWl6bb//vvvkCTJZ2TW8/7MnDkTkiTh119/xZAhQxAfH4/GjRvjiSeegBACR44cQb9+/RAXF4ekpCTMmzfPK8+IiAj07NkTa9asCVheIqo8RuQoLB07dgxXXXWV1t+oXbt2OHr0KN5//32cPXsWkZGRWtqHH34YjRs3xvTp01FUVARA/SP15JNPIi0tDWPGjMG+ffuwZMkSfPPNN/jyyy8RERGB0tJSpKeno6SkBOPGjUNSUhKOHj2KtWvX4tSpU4iPj8eePXtw6623omPHjpg1axZsNht+++03fPnllwHLH8xxiqLgtttuw7Zt2zB69Gi0b98eP/74I1566SX8+uuvWL16tZb2ySefxMyZM3HNNddg1qxZiIyMxPbt2/HZZ5+hd+/emD9/vtZXaurUqQCAxMREv+VbtmwZ7rvvPnTt2hVz5sxBXl4eXn75ZXz55Zf47rvvUK9ePS2tw+FAeno6unXrhhdeeAGffvop5s2bh9atW2PMmDEB78OyZcsQGxuLiRMnIjY2Fp999hmmT5+OwsJCPP/88wDUpsyCggL88ccfeOmllwAgYJ+vBx980KsCs27dOixfvhwJCQnathMnTgQsm0vdunVhs9kAAN999x1iYmLQvn17XZqrrrpK29+9e3e/eX333Xf429/+BlnWf4a+6qqr8Morr+DXX39Fhw4d8N133wEAunTpokuXnJyMpk2bavv92bVrF0pLS/G3v/0tqGsM5O6770b79u3x7LPP4qOPPsLTTz+NBg0a4F//+hduvPFGPPfcc1i+fDkeffRRdO3a1auJvnPnzlizZg0KCwsRFxdX5fJQGBIAjG4KZdNqOUEUhoYNGyZkWRbffPON1z5FUYQQQrz55psCgOjevbuw2+3a/vz8fBEZGSl69+4tHA6Htv2f//ynACDeeOMNIYQQ3333nQAgVq5c6bccL730kgAgjh8/HlL5gznu7bffFrIsiy+++EK3fenSpQKA+PLLL4UQQuzfv1/Isixuv/123fUIUX4vhBDisssuEz169PA6z+effy4AiM8//1wIIURpaalISEgQl19+uTh37pyWbu3atQKAmD59urZt+PDhAoCYNWuWLs8rr7xSdO7cOfBNEEKcPXvWa9uDDz4ooqOjRXFxsbYtIyNDtGjRosL8fNm/f7+Ij48XN910k+45gPrnpcLXm2++qSvHxRdf7HWOoqIiAUD84x//CFiWmJgYcf/993tt/+ijjwQAsW7dOiGEEM8//7wAIA4fPuyVtmvXruLqq68OeJ7XXntNABA//vijbvvBgwe9rskFgJgxY4b2/YwZMwQAMXr0aG2b3W4XTZs2FZIkiWeffVbb/tdff4k6deqI4cOHe+WblZUlAIjt27cHLDPVTlOmTBEPXNlWlEwdaujrzD8GCwAiJyenui+x2rFplcKOoihYvXo1+vbt6xWxANQmInejRo3S9Vv69NNPUVpaivHjx+siI6NGjUJcXBw++ugjAEB8fDwAYP369Th79qzPsrgiU2vWrIGiBP8RMZjjVq5cifbt26Ndu3Y4ceKE9rrxxhsBAJ9//jkAYPXq1VAUBdOnT/eK9Hjei2Ds3LkT+fn5ePjhh3V95zIyMtCuXTvt/rh76KGHdN9fd911+N///lfhuerUqaN9ffr0aZw4cQLXXXcdzp49i19++SXksnsqKirC7bffjvr16+Pdd9/VPQcbN24M6pWenq4dc+7cOS065851n86dOxewPMEe7/rfX9qKzvPnn38CAOrXrx8wXTAeeOAB7WuLxYIuXbpACIGRI0dq2+vVq4dLL73U53vuKkOwEVAiCg2bVinsHD9+HIWFhbj88suDSt+qVSvd94cOHQIAXHrppbrtkZGRuPjii7X9rVq1wsSJE/Hiiy9i+fLluO6663Dbbbdp/YUAtdnptddewwMPPIB//OMf6NWrFwYMGIA77rjDq1LlLpjj9u/fj59//hmNGzf2mUd+fj4A4MCBA5BlGSkpKUHdj4r4uz8A0K5dO2zbtk23LSoqyquM9evXx19//VXhufbs2YNp06bhs88+Q2FhoW6fez/Eyho1ahQOHDiAr776Cg0bNtTt82x+DUadOnV89k8sLi7W9htxvOt/f2krOo+LMGBh8ebNm+u+j4+PR1RUFBo1auS13VWB9FWGynyooFqETaumYUWOar1g/+j5Mm/ePIwYMQJr1qzBhg0b8Pe//x1z5szB119/jaZNm6JOnTrYunUrPv/8c3z00UdYt24d3nvvPdx4443YsGGD3xGMwRynKAo6dOiAF1980WcezZo1q/R1GSnQKM1ATp06hR49eiAuLg6zZs1C69atERUVhW+//RaTJk0KKcLpy8svv4x3330X77zzDjp16uS1Pzc3N6h84uPjtWeoSZMm+PzzzyGE0FVMcnJyAKh92AJp0qSJltad5/FNmjTRtnu+zzk5OVqfPH9clda//vpLN8DHn0AVPl/vr7/33Fc+rgq9Z8WPiIzBplUKO40bN0ZcXFylZ4xv0aIFAGDfvn267aWlpTh48KC236VDhw6YNm0atm7dii+++AJHjx7F0qVLtf2yLKNXr1548cUXsXfvXjzzzDP47LPPtKZPfyo6rnXr1jh58iR69eqFtLQ0r5crYta6dWsoioK9e/cGPF+wERF/98e1zfP+VNbmzZvx559/YtmyZXjkkUdw6623atNVeAo1mvPFF1/g0Ucfxfjx4zF48GCfaZo0aRLU67333tOO6dSpE86ePYuff/5Zl9f27du1/YF06tQJ3377rVcldfv27YiOjsYll1yiy2fnzp26dMeOHcMff/xR4XlcU5McPHjQ5/7Tp0/rvs/LywuYX1UcPHgQsixr10YXoKB7pIb4IgCsyFEYkmUZ/fv3x4cffuj1hw6ouDkpLS0NkZGRWLBggS7t66+/joKCAmRkZAAACgsLvWbR79ChA2RZ1pq8Tp486ZW/64+sr2Yxl2COu+uuu3D06FG8+uqrXmnPnTunjcDt378/ZFnGrFmzvCoI7tcXExPjNb2KL126dEFCQgKWLl2qu4ZPPvkEP//8s3Z/qsoV1XEvY2lpKRYvXuyVNiYmJuim1pycHNx1113o3r27NvLVl8r0kevXrx8iIiJ0ZRRCYOnSpbjoootwzTXX6Mrxyy+/oKysTNt2xx13IC8vDx988IG27cSJE1i5ciX69u2r9Ym77LLL0K5dO7zyyiu6qViWLFkCSZK0Oej86dy5MyIjI33+fADw+pCxatUq7VqMtmvXLlx22WVadwS6AAlAKMLwF6nYtEphafbs2diwYQN69OihTc2Rk5ODlStXYtu2bbrpMTw1btwYkydPxpNPPok+ffrgtttuw759+7B48WJ07doVQ4YMAQB89tlnGDt2LO68805ccsklsNvtePvtt2GxWDBw4EAAwKxZs7B161ZkZGSgRYsWyM/Px+LFi9G0adOA01AEc9zQoUPxn//8Bw899BA+//xzXHvttXA4HPjll1/wn//8B+vXr0eXLl3Qpk0bTJ06FU899RSuu+46DBgwADabDd988w2Sk5MxZ84cAOof9yVLluDpp59GmzZtkJCQoA2ccBcREYHnnnsO9913H3r06IFBgwZp04+0bNkSEyZMqOzbpnPNNdegfv36GD58OP7+979DkiS8/fbbPisTnTt3xnvvvYeJEyeia9euiI2NRd++fX3m+/e//x3Hjx/H448/7rXaQseOHdGxY0cAlesj17RpU4wfPx7PP/88ysrK0LVrV6xevRpffPEFli9frmtynDx5Mt566y0cPHhQm/fujjvuwNVXX4377rsPe/fuRaNGjbB48WI4HA48+eSTunM9//zzuO2229C7d2/cc889+Omnn/DPf/4TDzzwgNf0J56ioqLQu3dvfPrppz4n4l23bh0GDx6M66+/Hr/++iteeeUVREdHY8OGDejatStuvfXWkO+NL2VlZdo8jkRkkmoZK0tkgEOHDolhw4aJxo0bC5vNJi6++GKRmZkpSkpKhBDl04/4mqJECHW6kXbt2omIiAiRmJgoxowZI/766y9t///+9z9x//33i9atW4uoqCjRoEEDccMNN4hPP/1US7Np0ybRr18/kZycLCIjI0VycrIYNGiQ+PXXXwOWPdjjSktLxXPPPScuu+wyYbPZRP369UXnzp3Fk08+KQoKCnRp33jjDXHllVdq6Xr06CE2btyo7c/NzRUZGRmibt26AoA2FYnn9CMu7733npZfgwYNxODBg8Uff/yhSzN8+HARExPjdX2uqSsq8uWXX4qrr75a1KlTRyQnJ4vHH39crF+/3qs8Z86cEffee6+oV6+eABBwKpIePXr4bYxxn16jshwOh5g9e7Zo0aKFiIyMFJdddpl45513vNK5pmY5ePCgbvvJkyfFyJEjRcOGDUV0dLTo0aOH32d01apVolOnTsJms4mmTZuKadOmidLS0qDK+cEHHwhJknRTmLimH5k9e7ZIS0sTNptNtGrVSrz//vtiypQpIjo6Wjz55JNCiPL30HOKHH/v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jx5d2VtjCFbkaoDly5cjNjZWe5WVlYWcx5EjR/DII49g+fLliIqKMqGU4c+I++wpMzMTP/30E1asWGFACYnOr2effRYrVqzAqlWr+HvDIKdPn8bQoUPx6quvolGjRtVdHHJz88034+mnn8btt9/utU8Igfnz52PatGno168fOnbsiH//+984duyYFrn7+eefsW7dOrz22mvo1q0bunfvjoULF2LFihU4duzYeb6acqzI1QC33XYbdu/erb1cP/yeoxzz8vL8LkWya9cu5Ofn429/+xusViusViu2bNmCBQsWwGq1wuFwICkpCaWlpTh16lTQ+dYmRtxnd2PHjsXatWvx+eefo2nTptr2C/0+A0CjRo1gsVhCurdJSUkB07v+r+z7VRtV5j67vPDCC3j22WexYcMG3cAo3me9UO/xgQMH8Pvvv6Nv377a7+J///vf+O9//wur1YoDBw5ckPdYCONfRgqmuTs7Oxv16tVDly5dtDRpaWmQZRnbt283tkAhYEWuBqhbty7atGmjvVJSUpCUlIRNmzZpaQoLC7F9+3akpqb6zKNXr1748ccfdRWVLl26YPDgwdi9ezcsFgs6d+6MiIgIXb779u3D4cOH/eZbmxhxnwH1k9vYsWOxatUqfPbZZ2jVqpVu/4V+nwEgMjISnTt31t0DRVGwadMmv/cgNTVVlx4ANm7cqKVv1apVpd6v2qwy9xlQm5CeeuoprFu3TvdHCeB99hTqPW7Xrp3X7+LbbrsNN9xwA3bv3o1mzZpdcPdYbVo1/gUAJSUlKCws1L1KSkpCLmMwzd25ublISEjQ7bdarWjQoEG1NolzQuAayDX/29NPP422bduiVatWeOKJJ5CcnKybi6hXr164/fbbMXbsWNStW1fro+USExODhg0batvj4+MxcuRITJw4EQ0aNEBcXBzGjRuH1NRUXH311efzEmuEytxnQG1OzcrKwpo1a1C3bl3tBzg+Ph516tThfXaaOHEihg8fji5duuCqq67C/PnzUVRUhPvuuw8AMGzYMFx00UVan85HHnkEPXr0wLx585CRkYEVK1Zg586deOWVVwAE/35daEK9z8899xymT5+OrKwstGzZUnt+XV0OeJ+9hXKPo6KivH4Xu/rLum/nPTbGwoULMW/ePN22GTNmYObMmdVToGrAilwN9fjjj6OoqAijR4/GqVOn0L17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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plasmonic_waveguide_mode_solvers[f\"p={p_list[3]:.2f}\"].plot_field(\"E\", \"abs\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "19f87baa-63c7-4724-8efc-d73f92db105a",
   "metadata": {},
   "source": [
    "To help the analysis, we plot the effective indices of both the silicon waveguide and the plasmonic waveguide together, similar to Fig. 2(a) of the referenced [paper](https://doi.org/10.1364/OE.25.016214).\n",
    "\n",
    "From this plot, we can determine the silicon waveguide width and the plasmonic waveguide width given a target effective index. The option is seemingly infinite as for any effective index between ~2.1 and ~2.5, we can identify a `w` and a `p` such that the mode indices are equal. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "94869227-83f1-4cbe-9a3f-477eb52676d7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:20.703009Z",
     "iopub.status.busy": "2025-05-15T10:49:20.702858Z",
     "iopub.status.idle": "2025-05-15T10:49:22.951093Z",
     "shell.execute_reply": "2025-05-15T10:49:22.950726Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXodJREFUeJzt3Xd8zPcfB/DXZScSkYggxN57FylJUYoapa3Rn9gzNqVaI2ZQe1SLEtUotbVKjErsVYndhBihQpTIQtZ9f3986+SbSyKX3N33xuv5eNyj7n3fu3vHNcnL9/sZCkEQBBARERGZCAu5GyAiIiLSJoYbIiIiMikMN0RERGRSGG6IiIjIpDDcEBERkUlhuCEiIiKTwnBDREREJsVK7gb0TalU4tGjR3BycoJCoZC7HSIiIsoDQRCQmJgIDw8PWFjkfm7G7MLNo0eP4OnpKXcbRERElA8PHjxA6dKlcz3G7MKNk5MTAPEvp3DhwjJ3Q0RERHmRkJAAT09P1e/x3JhduHlzKapw4cIMN0REREYmL0NKOKCYiIiITArDDREREZkUhhsiIiIyKQw3REREZFIYboiIiMikMNwQERGRSWG4ISIiIpPCcENEREQmheGGiIiITArDDREREZkUhhsiIiIyKQw32nToENChA/D6tdydEBERmS2GG2149gzo1w9o1w44cACYN0/ujoiIiMwWw402+PoCmza9vR8QAFy9Kl8/REREZozhRhvmzQOsrN7eT08HBg0CMjLk64mIiMhMMdxoQ926wKRJ0tr588CqVfL0Q0REZMYYbrRl2jSgShVp7euvgXv3ZGmHiIjIXDHcaIudHbBunbT28iUwbBggCPL0REREZIYYbrSpZUsxzGQWHAz8/LM8/RAREZkhhhttmz8f8PCQ1saOBWJjZWmHiIjI3DDcaJuzM/Ddd9La8+fAuHHy9ENERGRmGG50oUsX4LPPpLUtW4D9++Xph4iIyIww3OjKihWAi4u0Nnw4kJgoTz9ERERmguFGV0qUABYvltYePBCnhxMREZHOMNzoUr9+QKtW0trq1cDp07K0Q0REZA4YbnRJoQDWrgXs7d/WBEHcmiElRb6+iIiITBjDja5VrAjMmiWt3bwpbq5JREREWsdwow9jxwING0pr8+YB16/L0g4REZEpY7jRBysrYP16wNLybS0tjTuHExER6QDDjb7Uqwd8+aW0dvas+oJ/REREVCAMN/o0fTpQubK0NmUKEB0tTz9EREQmiOFGn+zt1XcOT07mzuFERERaxHCjb97ewODB0tqBA8Avv8jTDxERkYlhuJHDwoVAyZLS2pgxwL//ytMPERGRCWG4kUORIuJKxZn9+y93DiciItIChhu5fPIJ0K2btPbzz8DBg/L0Q0REZCIYbuS0ahXg7CytDR0KJCXJ0w8REZEJYLiRU8mSwKJF0lp0NDB1qjz9EBERmQCGG7kNHAh88IG0tmIFcO6cPP0QEREZOYYbuSkUwA8/AHZ2b2tvdg5PTZWvLyIiIiPFcGMIKlcG/P2ltWvXgAULZGmHiIjImDHcGIoJE4D69aW1OXOAmzfl6YeIiMhIMdwYiux2Dk9NFS9PKZXy9UVERKShBw/kfX+GG0PSoAEwfry0dvo08P338vRDRESkgbt3gU8/BapUAe7dk68PhhtD4+8PVKworU2eLH8MJiIiykFysriKSfXqwM6dwOvXwKRJ8vXDcGNoHByAtWultaQkYMQI7hxOREQGRRCAoCCgalVg7lwgJeXtY9u3A6Gh8vTFcGOIWrUS17/J7PffgV9/lacfIiKiLC5cALy8gP/9D/jnH/XHXV2Bp0/13xfAcGO4vv0WKF5cWhs1Cnj2TJ5+iIiIAMTEAP37A02aAGfOqD9uaQmMHg3cuiWOv5EDw42hcnER957K7OlTcco4ERGRnr1+DcyfLw4WDgzM/pgPPwSuXAGWLxfP3MiF4caQde8OdO0qrW3aBBw6JEs7RERkfgQB2LsXqFkTmDIl+72dK1YE9u0DgoOBGjX032NWDDeGTKEQz94ULiytDx0qDk0nIiLSoWvXgLZtxX9n37mj/riTE7BwIXD9OtCpk/hryxAw3Bi6UqXE8TeZ3bsHTJ8uSztERGT6nj8Xh3nWqwccOaL+uEIBDBgAREYCX34J2NrqvcVcMdwYg0GDgJYtpbVly8Sh6kRERFqSng6sXi1uebhqFZCRoX5M8+bA+fPAjz8CJUrov8e8YLgxBhYWwLp10misVIrTxdPS5OuLiIhMxpEj4pmakSPFMzdZlS4NbNkCnDwJNGqk9/Y0wnBjLKpUAWbMkNauXhUvdhIREeVTVJQ4pubDD8WxM1nZ2YkjIf7+G+jVy3DG1eSG4caYTJwI1K0rrc2aJf4fR0REpIHERHH2U40a4myo7Hz+ufgrZuZMoFAh/fZXEAw3xsTaWtw53CLTx5aaCgwZwp3DiYgoT5RKcVWRKlXEdWtSU9WPqVdP3Dph2zagbFm9t1hgsoabgIAANG7cGE5OTnB3d0fXrl0RERGR5+dv3boVCoUCXbOuBWPKGjUCxo2T1k6cUN+PioiIKIszZ4CmTYF+/YDHj9Ufd3MTf51cvKg+j8WYyBpuQkND4efnh7Nnz+Lw4cNIS0tD27ZtkZyHNVzu3buHiRMnokWLFnro1MDMnAmULy+tTZqU/eYeRERk9v75B+jTR5zplN1EWysrYPx4ccuEwYPFLRSMmUIQDGer6adPn8Ld3R2hoaFomUtkzMjIQMuWLTFgwACcOHECL168wJ49e7I9NiUlBSmZtilNSEiAp6cn4uPjUTjr4njG5MgRcfRXZp07A3v2GMdoLyIi0rlXr4AlS4B584CXL7M/pkMH8ZiqVfXbm6YSEhLg7Oycp9/fBjXmJj4+HgDg+o4NKWbNmgV3d3cMzLpzdjYCAgLg7Oysunl6emqlV9m1aSOeV8xs3z5gxw5Z2iEiIsMhCMDOneJg4alTsw82VasC+/eLN0MPNpoymDM3SqUSnTt3xosXL3Dy5Mkcjzt58iR69uyJ8PBwuLm5oV+/fuZ55gYQFyKoXh2IjX1bc3cHbt6Ud8cyIiKSzeXLwNixQEhI9o87O4sri/j5ATY2+uysYIzyzI2fnx+uXbuGrVu35nhMYmIi+vTpg3Xr1sHNzS1Pr2tra4vChQtLbibD1RVYuVJai40Vp4wTEZFZefoUGD4caNAg+2CjUIiTayMjxXkpxhRsNGUQZ25GjhyJvXv34vjx4yifdaBsJuHh4ahfvz4sM410Uv43BdrCwgIRERGoWLFiru+lSfIzCoIAdOkC/PabtH74sHjpioiITFpaGvDdd4C/P/DiRfbHtGwJLF8uTvE2Vpr8/pY13AiCgFGjRmH37t0ICQlB5cqVcz3+9evXuH37tqQ2depUJCYmYvny5ahSpQps3hFFTS7cAMDDh+KF1cTEt7UKFcQVjB0c5OuLiIh0KjhYvASV01quZcoAixYBn35q/HNNjOaylJ+fH37++Wds2bIFTk5OePz4MR4/foxXr16pjvH19cWUKVMAAHZ2dqhVq5bkVqRIETg5OaFWrVrvDDYmq3RpYMECae3OHfXtGoiIyCRERgKdOgEffZR9sLG3f7uA/WefGX+w0ZSs4WbNmjWIj4+Hj48PSpYsqbpt27ZNdUx0dDRiYmJk7NJIDB0KvP++tLZkCfDXX/L0Q0REWpeQAHz5JVCrFvD779kf07s3EBEBTJsmhhxzZBBjbvTJJC9LvfH33+LeU5nX0q5bV1yxydpavr6IiKjAzpwBevYEoqOzf7xhQ3FcjZeXfvvSF6O5LEVaVq2aGNUzu3wZWLxYnn6IiKjAlEpx5EGLFtkHm+LFgQ0bgPPnTTfYaIrhxtRMmgTUri2t+fuLa2oTEZFRiY0VVxD+6isgI0P6mI0NMHmyOP6mf3/pnsrmjn8VpsbGRtw5PPPosZQUcbMQ7hxORGQ0QkLEqdvBweqPeXsD16+Lu3qb2ggLbWC4MUVNmgBjxkhroaHAjz/K0w8REeVZRoa4P3Lr1kDW+TQKhTgR9uhRoFIlefozBhxQbKqSk8Xh9Pfuva05OwM3bgAeHrK1RUREOXv0CPjf/4Bjx9QfK1ECCAoCWrXSf1+GgAOKCShUCPjhB2ktPh4YOVKefoiIKFfBweJlqOyCTdu24vwQcw02mmK4MWVt2wK+vtLa7t3Arl3y9ENERGrS0oApU8QF+Z4+lT5maQkEBAAHDoj7IlPeMNyYuiVLgGLFpDU/PyAuTp5+iIhIJToa8PERBwZn5ekpDpf86ivOhNIU/7pMXdGi4qpOmT1+LE4ZJyIi2ezbJ16GOn1a/bFOnYCwMK5bk18MN+agZ0+gY0dpbf367C/sEhGRTqWmAuPGAV26qJ9Et7YGli4F9u4V/21K+cNwYw4UCuC77wBHR2l98GAg0yalRESkW1FR4tmYZcvUH6tQQTyLM3as+W10qW0MN+aiTBn1i7pRUeJiCkREpHO//go0aABcvKj+2GefAZcuAY0a6b8vU8RwY06GDweaNZPWFi0Sv6OIiEgnXr0Sf/z26CHu6p2ZrS3w/ffAtm3iUmSkHQw35sTCQhxrY2PztpaRAQwaBKSny9cXEZGJ+vtvoGlTMcBkVbUqcO4cMHQoL0NpG8ONualRA/jmG2ktLEycMk5ERFqzebN4menKFfXH+vQRL0/Vrav/vswBw405+uoroGZNaW3GDOD2bXn6ISIyIcnJ4i7dvr7inzNzcAACA4GfflKf40Haw3BjjrLbOfz1a2DIEMC8thojItKqq1fFszWBgeqP1aolnq3p21fvbZkdhhtz1bQpMGqUtHbsGLBhgzz9EBEZMUEA1q4FmjQRx9lkNWQIcP48UL26/nszRww35mzuXHGKeGYTJwIxMfL0Q0RkhBISgF69xIHBr19LH3NyAn75RdzH2N5env7MEcONOXN0VB/C/+IFMHq0LO0QERmbv/4S167Ztk39sQYNxJU2evbUf1/mjuHG3LVvD3zxhbS2YwewZ48s7RARGQNBAFasEJcOi4pSf3z0aHG14UqV9N8bMdwQIK4D7uYmrY0YIZ7FISIiiefPgU8+AcaMAdLSpI8VKQLs3i3uV2xrK0t7BIYbAsRgk3Wjk5gYYPJkWdohIjJUZ84A9euLG1tm1bQpEB4OdO2q764oK4YbEvXuLV6iymztWiA0VJ5+iIgMiFIJLFgAtGgBREerPz5pEnD8OFC2rP57I3UMNyRSKIA1a4BChaT1wYPVh/8TEZmR2FigQwdx/dOMDOljbm7AH3+IwcfaWp7+SB3DDb1Vtiwwb560dusWMGuWPP0QEcksJASoVw8IDlZ/rGVL8TJU1pPeJD+GG5Ly8xMvHGe2cCFw+bI8/RARySAjA5g5E2jdWn3pL4UCmD4dOHoUKFVKnv4odww3JGVpKW7NkPn8akYGMHAgdw4nIrPw6BHw4YeAv7841iazEiWAI0fE4GNlJUt7lAcMN6SuZk1gyhRp7a+/xLmNREQm7PBh8TLUsWPqj334oXgZqlUrfXdFmmK4oex9/bX6JijTpgF37sjTDxGRjv3yizh+5ulTad3SEggIAA4eBIoXl6c30gzDDWXP1lZ95/BXr8TNU7hzOBGZmA0bxMXas86GKl1aXBHjq68AC/7GNBr8qChnzZuLKxVnduQIsGmTPP0QEenA6tXisMKs/27r1Em8DOXlJUtbVAAMN5S7gADxny6ZDR0KDBkC/P23PD0REWnJt98CI0eq18eMEVchLlpU/z1RwTHcUO6cnNR3Dk9NBdatE8fkdO4sLsvJS1VEZEQEQZzxNGmS+mNffw0sXSq9Kk/GheGG3q1jR/Wdw9/47TfA2xt47z3g1185XZyIDJ4giBNC/f3VH5szB5g7l8HG2DHcUN5s2ACMGgXY2GT/+IULQI8eQOXKwIoVQFKSfvsjIsoDpVK85LRggfpjS5YA33yj/55I+xhuKG9sbMTQcv+++N3v4pL9cffuiT85PD3Fc7tZl/YkIpJJRoY4ZHDlSvXH1qwBxo3Tf0+kGww3pJkSJcTztg8eiD8hypfP/rgXL8TByOXKAQMGANev67NLIiKJ9HSgb19xhYvMLCyAwEBg2DBZ2iIdYbih/ClUSJxicOsWsH070KRJ9selpgIbNwK1aonb6v75JwcfE5FepaYCPXsCQUHSupUVsGWLGHrItDDcUMFYWgKffgqcPQucOCHOnsrJgQPiLnQNG4o/UdLS9NcnEZml16+BTz4Bdu6U1m1sgB07xKGCZHoYbkg7FArg/ffFhSH+/ltcB8fWNvtjw8LE2VcVK4oj+BIT9dsrEZmF5GTg44+BP/6Q1u3sgH37gC5d5OmLdI/hhrSvalXghx+A6Ghg+vScV8F68ACYMEEcfDx5MvDPP/rtk4hMVkIC8NFHwNGj0nqhQuJJ5Hbt5OmL9IPhhnTH3V1cJSs6GvjuO6BSpeyPi48HFi4UBx/37QtcuaLXNonItDx/DrRpA5w8Ka07O4u7fvv4yNIW6RHDDemegwMwfLh4uWrXLnHPquykpwM//QTUrSv+s+rwYQ4+JiKNxMYCH3wgLr2VWdGi4nyGZs3k6Yv0i+GG9MfSUhzZd+qUeOvWLedlQA8dAtq2BerVAzZvFqc7EBHl4tEjccH0rCd/ixcHQkKABg1kaYtkwHBD8mjeXJy+EBkp7jxub5/9cVeuAL6+QIUK4g538fH67ZOIjML9+0DLlur7+ZYuLW5/V6uWPH2RPBhuSF6VKgGrV4vjcmbNAooVy/64f/4Rd7jz9BQHIUdH67dPIjJYt28DLVoAUVHSerlyYrCpUkWWtkhGDDdkGNzcgGnTxH9+rV0rzrjKTmKiOH28QgVxOvmlS/rtk4gMyo0b4hmbBw+k9SpVxKW3clpEnUwbww0ZFnt7YPBg8SfWvn3iT63sZGSICwE2bCguDHjgAAcfE5mZ8HBxjE3WLexq1RLP2JQuLUtbZAAYbsgwWVgAnToBoaHAuXPA55+Ltez8+ae4tUPt2uJWDykp+u2ViPTu/HlxVtS//0rrDRoAx46Jg4jJfDHckOFr0gTYtk28sD56tDi1PDvXr4ubdJYrJ27aGRen1zaJSD9OnBDXsXnxQlpv1kxctM/NTZa2yIAw3JDxKF8eWL5cvLg+b564Q3l2Hj8Gvv5aHHw8Zgxw965++yQinTlyRFx5OOuuLT4+4goSRYrI0RUZGoYbMj6ursCUKcC9e8CGDUCNGtkfl5wMrFghzsjq0UN9VS8iMir794t7Rb18Ka23ayc+5ugoT19keBhuyHjZ2gL9+wNXr4o747Vqlf1xSiXw66/i5S1vb+C338QaERmNHTuArl3Vh9R16SLu15vT1WoyT7KGm4CAADRu3BhOTk5wd3dH165dERERketz1q1bhxYtWsDFxQUuLi5o06YNzp8/r6eOySBZWADt24sX2y9eBHr1EldDzs7x40DnzuLZnnXrgNev9dsrEWns55/Fk6/p6dJ6jx7A9u3iv3OIMpM13ISGhsLPzw9nz57F4cOHkZaWhrZt2yI5OTnH54SEhKBXr144duwYzpw5A09PT7Rt2xb/cEdpAsSp4Vu2iKt5jRuX83nqiAhgyBCgbFlg9mz1KRdEZBDWrRMXKc96srVfPyAoCLC2lqUtMnAKQTCcxUGePn0Kd3d3hIaGomVO65tkkZGRARcXF6xatQq+vr7vPD4hIQHOzs6Ij49H4cKFC9oyGboXL8RFAZcvFzeeyYm9vXiJa9y4nHcvJyK9WrFCnBOQ1fDhwKpVOa8OQaZJk9/fBvW/Rvx/+wa5urrm+TkvX75EWlpajs9JSUlBQkKC5EZmpEgRcduGu3eBTZvEtXCy8+oV8N134rKmrVsDX30ljtO5dYvjc4hksGBB9sFm/HhxxxYGG8qNwZy5USqV6Ny5M168eIGTJ0/m+XkjRoxAcHAwrl+/Djs7O7XH/f39MXPmTLU6z9yYKUEADh8GFi0S/5sXTk5A/frirUED8b/VqwNWVrrtlcgMCQLg7y9uNZfVtGnAzJmAQqH3tsgAaHLmxmDCzfDhw3HgwAGcPHkSpfO4Zvb8+fOxcOFChISEoE6dOtkek5KSgpRMw+sTEhLg6enJcEPA5cvA4sXAL7+oj1R8Fzs78SzQm7DToIF4P5uATUR5IwjiidZFi9QfmzdPXAGCzJfRhZuRI0di7969OH78OMrncZezRYsWYc6cOThy5AgaNWqU5/fimBtS8/CheHH/hx+Agly2tLQUZ2FlDjz16olnfogoV0olMGqUeHU4q2XLsr9ERebFaMKNIAgYNWoUdu/ejZCQEFSuXDlPz1u4cCHmzp2L4OBgNG3aVKP3ZLihHCUkiJeqLl16e4uNLfjrVq4sDTz163N9eKJMMjLE/XI3bpTWFQrg++/FiY1ERhNuRowYgS1btmDv3r2oWrWqqu7s7Ax7e3sAgK+vL0qVKoWAgAAAwIIFCzB9+nRs2bIFXl5equc4OjrCMQ/LUzLcUJ4JgrjdcFjY27ATFgbcv1/w1/b0fBt23gSeUqU4mIDMTlqaONV761Zp3cICCAwE+vSRpS0yQEYTbhQ5/CDfuHEj+vXrBwDw8fFBuXLlEBgYCAAoV64c7mfzy2XGjBnw9/d/53sy3FCBPXsGhIe/DTuXLgGRkWIYKohixaRndxo0ACpU4LQQMlkpKUDPnsCePdK6lZW4XNVnn8nSFhkonYabwMBAVfDILD09HdOmTVOdYTFUDDekE0lJ4gDlzIHn+nXNBypnVbiwOG4nc+CpVo0ztcjovXoFdOsGHDwordvYiFstdOokT19kuHQabgoXLox27dph7dq1cHFxAQBERESgd+/eePbsGe7du5fvxvWB4Yb0JiUFuHZNGniuXBF/qheEnR1Qp4408NSqxZlaZDSSksRdUI4dk9bt7cV9oj78UJ6+yLDpNNxERUXhf//7Hx48eICNGzciMjISkyZNQteuXfHdd9/B2dm5QM3rGsMNySo9Xdz6Ies4noIuLmllJc7UynxZizO1yADFxwMdOgCnT0vrjo7izt55XJyezJDOx9wolUqMHTsWq1evhqWlJTZt2oRevXrlu2F9Yrghg6NUiisovwk8YWHAX38BT58W7HUVCnGmVubAw5laJKOEBKBVK/F/78yKFBEvT733nixtkZHQebj57bffMHDgQFSpUgWRkZGoU6cOfvrpJ3h4eOS7aX1huCGjIAjiXliZA8+lS0B0dMFfu0QJoGRJ8VaiRM43R0fO3iKtUSqBTz4B9u2T1t3cxBUY6tWTpS0yIpr8/tZ4VOLQoUOxadMmzJ07F+PHj8eTJ08wYMAA1K5dG2vWrMHnn3+e78aJ6D8KhTg1vFQp4OOP39afPVMPPLduaTZT6/Fj8RYWlvtxDg5vg05uQcjdXRwFSpQLf3/1YFOiBHD0qHhFlUibND5zU6tWLQQFBaFu3bqS+urVqzF58mQkJSVptUFt45kbMjmJieoztW7cKPhMLU0ULZq3IOTqyrNBZmjHDvVp3a6uwJkz4l61RHmh08tSKSkpsLW1zfaxiIgIyWJ8hojhhszC69fiTK3MA5evXBHrcrK2BooXlwaenMKQg4O8vZJWXLkCNGsGvHz5tmZpCRw6JI6/IcornV6WsrW1RVRUFDZu3IioqCgsX74c7u7uOHDgAMqUKZPvpolIi+zsgEaNxNsbb2ZqRUeLl6ViYt5eosp8S0zUXV9paeJeXg8fvvtYJ6fsQ0/WMFSsGNf9MVD//gt06SINNgCwdCmDDemWxmduQkND0b59e3h5eeH48eO4efMmKlSogPnz5+PixYvYsWOHrnrVCp65IXqH5GTgyZOcw0/mmz4vfeVEoRADzpuwU7y4uPiho6MYkBwd394y38/850KFuBK0lqWlAe3aqa9lM2AAsH49r06S5nR6WapZs2b47LPPMH78eDg5OeHy5cuoUKECzp8/j27duuFhXv5FJiOGGyItUSqB58/fHYAePxYHQhu6QoXyFoTyGpocHMz6N/iYMcCKFdJa06ZASAiQw8gGolzp9LLU1atXsWXLFrW6u7s7/v33X01fjoiMlYWFOI/XzU1cITk3KSniDuu5BaA3Z4oKuoJzfiUnvz1rpQ0KhRiYChqSMt+3szOKwLRhg3qw8fAAdu1isCH90DjcFClSBDExMShfvrykHhYWhlKlSmmtMSIyIba24k7onp65HycI4pifdwWgx4/FsKRU6qf//BAEcZ8Bbc4gtbAQg46dnfh3amPz9r9y/9nSElAocOYMMHy4tG1bW2D3bnG4FJE+aBxuevbsicmTJ2P79u1QKBRQKpU4deoUJk6cCF9fX130SETmQqEQx8sULvzuOcIZGeKI1awBKDb2bahIShLDUtY/JyaKzzc2SqW4zG9Bt+vQBYUC/1iXQ7e000gVSkgeWlvsGzTxO5T3wGRtLQ4St7R8e8vtvhyPWVgYxVk0c6XxmJvU1FT4+fkhMDAQGRkZsLKyQkZGBnr37o3AwEBYWlrqqlet4JgbIoIgAKmp0uCTNQhpej8x0bDPJOnYa9iiJY7jAppI6uOwBEswQaaudMzCIv+BycLibUB68+es9+V8TBuvYWsLDBmitb9unW+/AADR0dG4du0akpKSUL9+fVSuXDlfzeobww0R6YQgiOsIaSMoZb6fvx/ReiUA6ItN2Azp2fs2OIwDaA8rGOFZMio4JyetnmXU6YDiN8qUKcN1bYiI3lAoAHt78VasmHZeUxDEAdZZzxClpIhnnlJT9fvntLRs21yGsWrBpgKisA09GGzMmYzLK+Qp3IwfPz7PL7hkyZJ8N0NERJkoFOKUcgcHcf0euSmVYsDJFHoOH7XAxH7FgUxX5Bzt07Fv2WO4ltyU/yCVkSG9padn/+fcHsvrcWZ8OVGnZByTlKdwE5Zlg71Lly4hPT1dtdVCZGQkLC0t0bBhQ+13SEREhuHNOApbW8DJCbdvAz3GqGeDzVusULOrlzw95ocgaDcs5eU4QRD/4pRK6Z+z3s/Ln7V9nLaeU6iQbB9pnsLNsUxLTC5ZsgROTk7YtGkTXFxcAABxcXHo378/WrRooZsuiYjIoCQmilsrxMVJ6zNnAl27ytJS/ikU4mBfbuNhMjQeUFyqVCkcOnQINWvWlNSvXbuGtm3b4tGjR1ptUNs4oJiIqGCUSqBbN2DvXmm9Wzdg+3buZEG6ocnvb43/F0xISMDTp0/V6k+fPkWiLjfcIyIigzBzpnqwqVUL2LSJwYYMg8b/G37yySfo378/du3ahYcPH+Lhw4fYuXMnBg4ciG7duumiRyIiMhA7dwKzZklrrq5i2HF0lKcnoqw0vsD4/fffY+LEiejduzfS/psWaGVlhYEDB+Lbb7/VeoNERGQYrlwB+vaV1iwtgV9/BSpUkKcnouzkexG/5ORkREVFAQAqVqyIQjKOitYEx9wQEWnu33+Bxo2Be/ek9eXLgdGjZWmJzIxeFvErVKgQ6tSpk9+nExGRkUhLAz7/XD3Y9O8PjBolS0tEudI43CQnJ2P+/Pk4evQoYmNjocyywMGdO3e01hwREclv4kQg04ogAICmTYE1a7h3JBkmjcPNoEGDEBoaij59+qBkyZJQ8P9sIiKTtXEjsGKFtObhAezaJa7lR2SINA43Bw4cwP79++HlZUSrTxIRkcbOngWGDZPWbG2B3buBkiXl6YkoLzSeCu7i4gJXV1dd9EJERAbi0SNxUb7UVGl97VqgSRN5eiLKK43DzezZszF9+nS8fPlSF/0QEZHMXr8GPvkEiImR1seNA3x9s38OkSHR+LLU4sWLERUVheLFi6NcuXKwtraWPH7p0iWtNUdERPolCOKlqPPnpfU2bYCFC+XpiUhTGoebrka3IxoREeXV8uXiNgqZVagAbNvGfSXJeOR7ET9jxUX8iIiyd+QI0K6duDHmG46O4sDiLHslE+mdTjfOJCIi0xMVJS7Ul2XpMmzezGBDxidPJxldXV0RGRkJNzc3uLi45Lq2zfPnz7XWHBER6V5iItClCxAXJ63PnAlwJAIZozyFm6VLl8LJyQkAsGzZMl32Q0REeqRUijOgrl+X1rt1A6ZOlacnooLimBsiIjPm7y+eocmsVi3gzBlxvA2RoeCYGyIieqddu9SDjasrsHcvgw0ZN4YbIiIzdPWq+oJ8lpbAr7+KU7+JjBnDDRGRmXn2TBxAnJwsrS9ZArRuLU9PRNrEcENEZEbS08Up33fvSuv9+wOjRsnTE5G25Tvc3L59G8HBwXj16hUAwMzGJRMRGaWJE4E//5TWmjYF1qwBclnlg8ioaBxunj17hjZt2qBKlSro0KEDYv7bWW3gwIGYMGGC1hskIiLt2LhR3F4hMw8PcWCxra08PRHpgsbhZty4cbCyskJ0dDQcHBxU9R49euDgwYNabY6IiLTj7FlxQ8zMbG2B3buBkiXl6YlIVzTeBu3QoUMIDg5G6dKlJfXKlSvj/v37WmuMiIi049EjcVG+1FRpfe1aoEkTeXoi0iWNz9wkJydLzti88fz5c9jyvCYRkUF5/Rr45BPgvxEEKuPGqU8FJzIVGoebFi1a4KefflLdVygUUCqVWLhwIT744AOtNkdERPknCOKlqPPnpfU2bYCFC+XpiUgfNL4stXDhQrRu3RoXL15EamoqJk2ahOvXr+P58+c4deqULnokIqJ8WLEC2LRJWqtQAdi2DbDS+Kc/kfHQ+MxNrVq1EBkZiffffx9dunRBcnIyunXrhrCwMFSsWFEXPRIRkYaOHAGyTmB1dAT27RO3WCAyZdw4k4jIxERFAY0bA3Fx0vru3UDXrrK0RFRgOt04s1KlSvD398etW7fy3SAREelGYqK4tULWYOPvz2BD5kPjcOPn54f9+/ejatWqaNy4MZYvX47Hjx/rojciItKAUgn07Qtcvy6tf/IJMG2aPD0RySFfi/hduHABf//9Nzp06IDVq1fD09MTbdu2lcyiIiIi/Vq5Urz0lFmtWuKgYgvuJEhmRCtjbs6ePYvhw4fjypUryMjI0EZfOsMxN0Rkim7fBurUAf7b7g+AOHD4wgVxhhSRsdPk93eBJgOeP38eW7ZswbZt25CQkIDPPvusIC9HRET5oFQCAwZIgw0AbN3KYEPmSeMTlZGRkZgxYwaqVKkCLy8v3Lx5EwsWLMCTJ0+wdetWjV4rICAAjRs3hpOTE9zd3dG1a1dERES883nbt29HtWrVYGdnh9q1a+OPP/7Q9MsgIjIZq1cDJ05IayNHAh9+KE8/RHLTONxUq1YNBw8ehJ+fHx4+fIjg4GD4+vrC0dFR4zcPDQ2Fn58fzp49i8OHDyMtLQ1t27ZFcnJyjs85ffo0evXqhYEDByIsLAxdu3ZF165dce3aNY3fn4jI2EVFAV99Ja2VLw8EBMjTD5Eh0HjMza1bt1C5cmWdNPP06VO4u7sjNDQULVu2zPaYHj16IDk5Gb///ruq1rRpU9SrVw/ff/+92vEpKSlISUlR3U9ISICnpyfH3BCR0VMqgVatgNBQaf3oUbFOZEp0us6NroINAMTHxwMAXHNZPvPMmTNo06aNpNauXTucOXMm2+MDAgLg7Oysunl6emqvYSIiGa1Zox5shg9nsCHKU7hxdXXFv//+CwBwcXGBq6trjrf8UiqVGDt2LLy8vFCrVq0cj3v8+DGKFy8uqRUvXjzHtXamTJmC+Ph41e3Bgwf57pGIyFDcvQtMniytlS0LLFggTz9EhiRPs6WWLl0KJycn1Z8VCoXWG/Hz88O1a9dw8uRJrb6ura0tbG1ttfqaRERyUiqBgQOBrMMTf/wR+O9HNZFZy1O46du3r+rP/fr103oTI0eOxO+//47jx4+jdOnSuR5bokQJPHnyRFJ78uQJSpQoofW+iIgM0dq1wLFj0trQoUDr1vL0Q2RoNB5zY2lpidjYWLX6s2fPYGlpqdFrCYKAkSNHYvfu3fjzzz9Rvnz5dz6nWbNmOHr0qKR2+PBhNGvWTKP3JiIyRvfuAV9+Ka15egILF8rSDpFB0ngRv5wmV6WkpMDGxkaj1/Lz88OWLVuwd+9eODk5qcbNODs7w97eHgDg6+uLUqVKIeC/eY1jxoyBt7c3Fi9ejI4dO2Lr1q24ePEi1q5dq+mXQkRkVAQBGDwYSEqS1tevBzj5k+itPIebFStWAAAUCgXWr18vWdcmIyMDx48fR7Vq1TR68zVr1gAAfHx8JPWNGzeqLn9FR0fDItOmKM2bN8eWLVswdepUfP3116hcuTL27NmT6yBkIiJTsH49cOSItDZoENC2rTz9EBmqPK9z8+aS0f3791G6dGnJJSgbGxuUK1cOs2bNwnvvvaebTrWEe0sRkTGKjhY3wUxMfFsrXRq4dg1wdpavLyJ90cneUnfv3gUAfPDBB9i1axdcXFwK1iUREeXJm8tRmYMNAKxbx2BDlB2Nx9wcyzpEn4iIdGrDBuDQIWltwADgo4/k6YfI0Gk8W6p79+5YkM0qUQsXLuSu4EREWvbgATB+vLRWqhSweLE8/RAZA43DzfHjx9GhQwe1evv27XH8+HGtNEVEROLlqCFDgIQEaX3tWqBIEVlaIjIKGoebpKSkbKd8W1tbIyHrdyAREeXbpk3AwYPSWt++QDb/viSiTDQON7Vr18a2bdvU6lu3bkWNGjW00hQRkbn75x9g7FhprWRJYOlSWdohMioaDyieNm0aunXrhqioKLT6b+vZo0eP4pdffsH27du13iARkbkRBHE7hfh4af2HHwBOVCV6N43DTadOnbBnzx7MmzcPO3bsgL29PerUqYMjR47A29tbFz0SEZmVzZuB/fultT59gE6d5OmHyNjkeRE/U8FF/IjIkD16BNSsCbx48bZWogRw/Trg6ipbW0Sy0+T3t8ZjbgDgxYsXWL9+Pb7++ms8f/4cAHDp0iX8888/+Xk5IiKCeDlq2DBpsAGA779nsCHShMaXpa5cuYI2bdrA2dkZ9+7dw6BBg+Dq6opdu3YhOjoaP/30ky76JCIyeVu2AL/9Jq317g106SJPP0TGSuMzN+PHj0e/fv1w69Yt2NnZqeodOnTgOjdERPn0+DEwapS05u4O/LdnMRFpQONwc+HCBQwdOlStXqpUKTx+/FgrTRERmZM3l6Pi4qT1778HihaVpyciY6ZxuLG1tc12sb7IyEgUK1ZMK00REZmTrVuBvXultZ49gU8+kacfImOncbjp3LkzZs2ahbS0NACAQqFAdHQ0Jk+ejO7du2u9QSIiU/bkCTBypLRWrBiwcqU8/RCZAo3DzeLFi5GUlAR3d3e8evUK3t7eqFSpEpycnDB37lxd9EhEZJIEARgxAvhv0qnKd98Bbm7y9ERkCjSeLeXs7IzDhw/j1KlTuHz5MpKSktCgQQO0adNGF/0REZms7duBXbuktc8+Az79VJ5+iExFnhbxc3V1RWRkJNzc3DBgwAAsX74cTk5O+uhP67iIHxEZgthYcbG+f/99W3NzExfrc3eXry8iQ6X1RfxSU1NVg4g3bdqE169fF7xLIiIzNnKkNNgAwOrVDDZE2pCny1LNmjVD165d0bBhQwiCgNGjR8Pe3j7bYzds2KDVBomITM327eIts+7dxUtSRFRweQo3P//8M5YuXYqoqCgAQHx8PM/eEBHlw9OngJ+ftFa0qHjWRqGQpyciU6Pxxpnly5fHxYsXUdRIV5bimBsiklOvXuK6Nplt2SLWiShnWh9z4+rqin//uzj8wQcfwMbGpuBdEhGZmV271INN167ign1EpD0cUExEpAfPngHDh0trLi7AmjW8HEWkbRxQTESkB6NHi9O/M1u5EihRQp5+iEyZxgOKFQoFBxQTEWlgzx5xXE1mnTsDvXvL0g6RyeOAYiIiHXr+HKhRQ9xD6o0iRYAbN4CSJWVri8joaPL7W+PtF+7evZvvxoiIzM3YsdJgAwDLlzPYEOlSnjfO7NChA+Lj41X358+fjxcvXqjuP3v2DDVq1NBqc0RExuy334DNm6W1jh2BPn3k6YfIXOQ53AQHByMlJUV1f968eXieaSvb9PR0REREaLc7IiIjFRcHDB0qrTk7Az/8wNlRRLqW53CTdWiOhkN1iIjMyrhxQEyMtLZsGVCqlCztEJmVPIcbIiLKm/37gU2bpLX27YG+feXph8jc5DncKBQKKLKcS816n4jI3L14oX45qnBhYO1aXo4i0pc8z5YSBAH9+vWDra0tAOD169cYNmwYChUqBACS8ThEROZqwgTgn3+ktSVLgNKl5emHyBzleZ2b/v375+kFN27cWKCGdI3r3BCRrhw8KF5+yqxtW7HOszZEBaPJ72+NF/Ezdgw3RKQL8fFArVrAw4dva05OwLVrQJky8vVFZCq0vis4ERHlbuJEabABgMWLGWyI5MBwQ0RUQIcOAevXS2tt2gCDBsnTD5G5Y7ghIiqAhARg8GBpzdFRDDscZ0MkD4YbIqICmDQJiI6W1hYtAsqWlacfImK4ISLKtyNHxO0UMmvVChgyRJ5+iEjEcENElA+JiepjagoV4uUoIkPAcENElA+TJwP370trCxcC5cvL0w8RvcVwQ0SkoT//BNaskdZ8fIBhw2Rph4iyYLghItJAUpL65SgHB+DHHwEL/kQlMgj8ViQi0sCUKcDdu9LaggVAhQry9ENE6hhuiIjyKDQUWLVKWmvZEhgxQp5+iCh7DDdERHnw8iUwcKC0Zm/Py1FEhojfkkREeTBtGhAVJa3NmwdUqiRPP0SUM4YbIqJ3OHsWWLpUWvPyAkaPlqcfIsodww0RUS5SUoABAwBBeFuzteXlKCJDxm9NIqJczJ4N3Lwprc2cCVStKk8/RPRuDDdERDkICwPmz5fWGjYEJkyQpx8iyhuGGyKibKSlAf37AxkZb2vW1sDGjYCVlXx9EdG7yRpujh8/jk6dOsHDwwMKhQJ79ux553OCgoJQt25dODg4oGTJkhgwYACePXum+2aJyKwsWABcviytffMNULu2PP0QUd7JGm6Sk5NRt25drF69Ok/Hnzp1Cr6+vhg4cCCuX7+O7du34/z58xg8eLCOOyUic3L9OjBrlrRWu7a4OjERGT5ZT662b98e7du3z/PxZ86cQbly5TD6v/mX5cuXx9ChQ7FgwQJdtUhEZiYjQ5wdlZb2tmZhAWzYANjYyNcXEeWdUY25adasGR48eIA//vgDgiDgyZMn2LFjBzp06JDjc1JSUpCQkCC5ERHlZNky4Px5ae3LL4FGjWRph4jywajCjZeXF4KCgtCjRw/Y2NigRIkScHZ2zvWyVkBAAJydnVU3T09PPXZMRMbk1i1g6lRprWpVYMYMefohovwxqnBz48YNjBkzBtOnT8dff/2FgwcP4t69exg2bFiOz5kyZQri4+NVtwcPHuixYyIyFkqluHfU69dvawqFuFifvb18fRGR5oxqQmNAQAC8vLzw5ZdfAgDq1KmDQoUKoUWLFpgzZw5Kliyp9hxbW1vY2trqu1UiMjJr1gAnTkhro0eL2ywQkXExqjM3L1++hEWW9c4tLS0BAELmtdGJiDRw7x4webK0Vr48MHeuLO0QUQHJGm6SkpIQHh6O8PBwAMDdu3cRHh6O6OhoAOIlJV9fX9XxnTp1wq5du7BmzRrcuXMHp06dwujRo9GkSRN4eHjI8SUQkZETBGDIECA5WVpftw4oVEienoioYGS9LHXx4kV88MEHqvvjx48HAPTt2xeBgYGIiYlRBR0A6NevHxITE7Fq1SpMmDABRYoUQatWrTgVnIjybeNG4PBhaW3IEKB1a3n6IaKCUwhmdj0nISEBzs7OiI+PR+HCheVuh4hk9M8/QM2aQHz821rp0sC1a4Czs3x9EZE6TX5/G9WYGyIibREEYNgwabABgB9+YLAhMnYMN0Rkln75Bfj9d2nN1xfIZU1QIjISDDdEZHZiY8Vp3pkVLw4sXSpPP0SkXQw3RGR2Ro0Cnj2T1r77DnB1lacfItIuhhsiMiu7dgG//iqtffYZ0K2bPP0QkfYx3BCR2Xj+HBgxQlorWhRYuVKefohINxhuiMhsjBsHPHkira1YIY63ISLTwXBDRGbhjz+An36S1j7+GOjVS55+iEh3GG6IyOQlJABDh0prhQsD338v7vxNRKaF4YaITN6kScDDh9LakiVAqVLy9ENEusVwQ0Qm7c8/xVWHM2vTBhgwQJ5+iEj3GG6IyGQlJwODBklrhQqJO37zchSR6WK4ISKT9c03wN270tqCBUC5crK0Q0R6wnBDRCbp1ClxmndmLVoAw4fL0w8R6Q/DDRGZnNevgYEDxZ2/37CzA9avByz4U4/I5PHbnIhMzsyZQESEtDZ7NlClijz9EJF+MdwQkUm5eBH49ltprUkTcXViIjIPDDdEZDJSU8Up3hkZb2vW1sCGDYClpXx9EZF+MdwQkckICACuXpXWpk8HataUpx8ikgfDDRGZhKtXgTlzpLW6dYHJk+Xph4jkw3BDREYvPV28HJWe/rZmaSlejrK2lq8vIpIHww0RGb0lS8SBxJlNngw0aCBPP0QkL4YbIjJqERHiuJrMqlcHpk2Tpx8ikh/DDREZrYwM8XJUSsrbmkIhXo6ys5OvLyKSF8MNERmt1auB06eltbFjgaZNZWmHiAwEww0RGaU7d4ApU6S1ihXVZ0wRkflhuCEioyMIwODBwMuX0vr69YCDgzw9EZHhYLghIqOzfj3w55/S2vDhgI+PLO0QkYFhuCEio/LgATBhgrRWpgywYIE8/RCR4WG4ISKjIQjAsGFAYqK0vnYt4OQkT09EZHgYbojIaPz8M/DHH9Jav35Au3aytENEBorhhoiMwuPHwJgx0lqJEuLqxEREmTHcEJFRGDkSiIuT1r7/HnBxkacfIjJcDDdEZPB27AB27pTWevYEunSRpx8iMmwMN0Rk0P79F/Dzk9bc3IAVK+Tph4gMH8MNERm0sWOB2FhpbeVKoFgxWdohIiPAcENEBuu334CgIGmtSxegRw95+iEi48BwQ0QG6cULcU2bzIoUAb77Ttz5m4goJww3RGSQvvwSePRIWlu6FPDwkKcfIjIeDDdEZHAOHxb3j8qsXTugb195+iEi48JwQ0QGJSlJ3PE7M0dHcYsFXo4iorxguCEigzJlCnD/vrS2cKG4OSYRUV4w3BCRwThyBFi1Slrz9gaGDpWnHyIyTgw3RGQQzp4FunaV1uztxbE3FvxJRUQa4I8MIpJdeDjQvj2QnCytz50LVKokS0tEZMQYbohIVjdvAm3biuvaZNa9OzB6tCwtEZGRY7ghItncuQO0aQM8fSqtt28PbNkCWFrK0xcRGTeGGyKSxcOHQOvW6gv1+fiIO4Db2MjSFhGZAIYbItK7J0/EYHPvnrTetCmwb584kJiIKL+s5G6AiMzL8+fiGJvISGm9Xj3gjz8AJydZ2tI7pVKJ1NRUudsgMig2Njaw0ML0SIYbItKbhARxPM2VK9J69erAoUOAi4s8felbamoq7t69C6VSKXcrRAbFwsIC5cuXh00Br0sz3BCRXrx8CXTqBJw/L61XqCDuJVWsmDx96ZsgCIiJiYGlpSU8PT218q9UIlOgVCrx6NEjxMTEoEyZMlAUYL8Vhhsi0rmUFKBbN+D4cWm9dGng6FGgVCl5+pJDeno6Xr58CQ8PDzg4OMjdDpFBKVasGB49eoT09HRYW1vn+3X4TwYi0qn0dKBXLyA4WFp3dxe3WyhXTpa2ZJORkQEABT7tTmSK3nxfvPk+yS+GGyLSGaUS6NcP2L1bWndxES9FVa0qS1sGoSCn3IlMlba+L2QNN8ePH0enTp3g4eEBhUKBPXv2vPM5KSkp+Oabb1C2bFnY2tqiXLly2LBhg+6bJSKNCAIwfDgQFCStOzoCBw8CderI0xcRmT5Zw01ycjLq1q2L1atX5/k5n3/+OY4ePYoff/wRERER+OWXX1DVnP/5R2SABAGYMAFYu1Zat7cH9u8HmjSRpy/SrXLlymHZsmVyt1Fg/v7+qFevntxtGJyQkBAoFAq8yLpXSiaBgYEoUqSI3nrKiawDitu3b4/27dvn+fiDBw8iNDQUd+7cgaurKwDxmyk3KSkpSElJUd1PSEjIV69ElHf+/sDSpdKatbV4eaplS1laIsqziRMnYtSoUXK3YXCaN2+OmJgYODs7y93KOxnVbKl9+/ahUaNGWLhwITZv3oxChQqhc+fOmD17NuxzWNI0ICAAM2fO1HOnROZr4UJg1ixpzdIS2LYNaNdOnp4MllIJPHsmbw9FiwKcji7h6OgIR0dHudswODY2NihRooTcbeSJUf0ffefOHZw8eRLXrl3D7t27sWzZMuzYsQMjRozI8TlTpkxBfHy86vbgwQM9dkxkXr77Dpg8WVpTKIBNm4BPPpGnJ4P27Jk4bUzOWx7DlY+PD0aOHImRI0fC2dkZbm5umDZtGgRByPE5S5YsQe3atVGoUCF4enpixIgRSEpKUj1+//59dOrUCS4uLihUqBBq1qyJP/74A8DbSyDBwcGoX78+7O3t0apVK8TGxuLAgQOoXr06ChcujN69e+Ply5eq10xJScHo0aPh7u4OOzs7vP/++7hw4YLq8Teve/ToUTRq1AgODg5o3rw5IiIiVMdkd1lqw4YNqFmzJmxtbVGyZEmMHDky26/52rVrsLCwwNP/doN9/vw5LCws0LNnT9Uxc+bMwfvvvw9AnBU0cOBAlC9fHvb29qhatSqWL1+uOvbQoUOws7NTuxQ0ZswYtGrVSnX/5MmTaNGiBezt7eHp6YnRo0cjOTlZ9XhMTAw6duwIe3t7lC9fHlu2bJFcRrx37x4UCgXCw8NVz3nx4gUUCgVCQkIkf3eZewkMDESZMmXg4OCATz75BM+y+f9p7969aNCgAezs7FChQgXMnDkT6enp2f79aYtRhRulUgmFQoGgoCA0adIEHTp0wJIlS7Bp0ya8evUq2+fY2tqicOHCkhsRad+mTYCfn3r9hx+AL77Qfz+kfZs2bYKVlRXOnz+P5cuXY8mSJVi/fn2Ox1tYWGDFihW4fv06Nm3ahD///BOTJk1SPe7n54eUlBQcP34cV69exYIFC9TOmPj7+2PVqlU4ffo0Hjx4gM8//xzLli3Dli1bsH//fhw6dAgrV65UHT9p0iTs3LkTmzZtwqVLl1CpUiW0a9cOz58/l7zuN998g8WLF+PixYuwsrLCgAEDcvw61qxZAz8/PwwZMgRXr17Fvn37UKlSpWyPrVmzJooWLYrQ0FAAwIkTJyT3ASA0NBQ+Pj4AxN9rpUuXxvbt23Hjxg1Mnz4dX3/9NX799VcAQOvWrVGkSBHs3LlT9fyMjAxs27YNX/z3jRUVFYWPPvoI3bt3x5UrV7Bt2zacPHlSEsB8fX3x6NEjhISEYOfOnVi7di1iY2Nz/Jrz4ty5cxg4cCBGjhyJ8PBwfPDBB5gzZ47kmBMnTsDX1xdjxozBjRs38MMPPyAwMBBz584t0Hu/k2AgAAi7d+/O9RhfX1+hYsWKktqNGzcEAEJkZGSe3ic+Pl4AIMTHx+e3VSLK4tdfBcHCQhDEocRvb0uXyt2Z4Xn16pVw48YN4dWrV4IQG6v+l6bvW2xsnvr29vYWqlevLiiVSlVt8uTJQvXq1VX3y5YtKyzN5UPfvn27ULRoUdX92rVrC/7+/tkee+zYMQGAcOTIEVUtICBAACBERUWpakOHDhXatWsnCIIgJCUlCdbW1kJQUJDq8dTUVMHDw0NYuHBhjq+7f/9+AYD4mQiCMGPGDKFu3bqqxz08PIRvvvkmx68rq27dugl+fn6CIAjC2LFjhS+//FJwcXERbt68KaSmpgoODg7CoUOHcny+n5+f0L17d9X9MWPGCK1atVLdDw4OFmxtbYW4uDhBEARh4MCBwpAhQySvceLECcHCwkJ49eqVcPPmTQGAcOHCBdXjt27dEgCoPq+7d+8KAISwsDDVMXFxcQIA4dixY4IgvP27e/O+vXr1Ejp06CB53x49egjOzs6q+61btxbmzZsnOWbz5s1CyZIls/3aJd8fWWjy+9uoztx4eXnh0aNHktOakZGRsLCwQOnSpWXsjMh87d8P9O4tDh/JbPZsYOxYWVoiHWnatKlkHZJmzZrh1q1bOS64duTIEbRu3RqlSpWCk5MT+vTpg2fPnqkuI40ePRpz5syBl5cXZsyYgStZNx0DUCfTmgHFixeHg4MDKlSoIKm9OQMRFRWFtLQ0eHl5qR63trZGkyZNcPPmzRxft2TJkgCQ7ZmM2NhYPHr0CK1bt875LyYLb29v1aWc0NBQtGrVCi1btkRISAguXLig1uPq1avRsGFDFCtWDI6Ojli7di2io6NVj3/xxRcICQnBo0ePAABBQUHo2LGjalbS5cuXERgYqBor5OjoiHbt2kGpVOLu3buIiIiAlZUVGjRooHrNSpUqwaWAm7ndvHkT7733nqTWrFkzyf3Lly9j1qxZkt4GDx6MmJgYyeVEbZN1QHFSUhJu376tun/37l2Eh4fD1dUVZcqUwZQpU/DPP//gp59+AgD07t0bs2fPRv/+/TFz5kz8+++/+PLLLzFgwIAcBxQTke78+SfQvbu4CnFmkycD33wjT09GpWhRoICXBrTSgw7cu3cPH3/8MYYPH465c+fC1dUVJ0+exMCBA5GamgoHBwcMGjQI7dq1U11eCggIwOLFiyUzlTIvwa9QKNSW5FcoFPnagDTr6wLI9nXy87vFx8cHY8eOxa1bt3Djxg28//77+PvvvxESEoK4uDjVWB8A2Lp1KyZOnIjFixejWbNmcHJywrfffotz586pXq9x48aoWLEitm7diuHDh2P37t0IDAxUPZ6UlIShQ4di9OjRar2UKVMGkZGR7+z5zR5nQqYxVGlpaRp/7VklJSVh5syZ6Natm9pjdnZ2BX79nMgabi5evIgPPvhAdX/8+PEAgL59+yIwMBAxMTGS9Oro6IjDhw9j1KhRaNSoEYoWLYrPP/9c7RofEene6dNA587ivlGZ+fkBAQHiQGJ6BwsLo9oxNPMvXAA4e/YsKleuDEtLS7Vj//rrLyiVSixevFj1i/PNOJLMPD09MWzYMAwbNgxTpkzBunXr8j0Nu2LFirCxscGpU6dQtmxZAOIv6AsXLmBsPk8jOjk5oVy5cjh69Kjk91VuateuDRcXF8yZMwf16tWDo6MjfHx8sGDBAsTFxanG2wDAqVOn0Lx5c8nEmKioKLXX/OKLLxAUFITSpUvDwsICHTt2VD3WoEED3LhxI8dxQFWrVkV6ejrCwsLQsGFDAMDt27cRFxenOqbYf/8fxsTEoH79+gAgGVycnerVq2f7/0RmDRo0QERERI696Yqs4cbHxyfXkfaZk+kb1apVw+HDh3XYFRG9y6VLQIcOQKbJGADErRZWrGCwMVXR0dEYP348hg4dikuXLmHlypVYvHhxtsdWqlQJaWlpWLlyJTp16oRTp07h+++/lxwzduxYtG/fHlWqVEFcXByOHTuG6tWr57u/QoUKYfjw4fjyyy9VVwAWLlyIly9fYuDAgfl+XX9/fwwbNgzu7u5o3749EhMTcerUqRxDmEKhQMuWLREUFISJEycCEC+DpaSk4OjRo6p/yANA5cqV8dNPPyE4OBjly5fH5s2bceHCBZQvX17yml988QX8/f0xd+5cfPrpp7C1tVU9NnnyZDRt2hQjR47EoEGDUKhQIdy4cQOHDx/GqlWrUK1aNbRp0wZDhgzBmjVrYG1tjQkTJsDe3l511sre3h5NmzbF/PnzUb58ecTGxmLq1Km5/r2MHj0aXl5eWLRoEbp06YLg4GAcPHhQcsz06dPx8ccfo0yZMvj0009hYWGBy5cv49q1azo9MWFUY26ISH7XrwNt2wLx8dL6Z58B69dzyRRT5uvri1evXqFJkybw8/PDmDFjMGTIkGyPrVu3LpYsWYIFCxagVq1aCAoKQkBAgOSYjIwM+Pn5oXr16vjoo49QpUoVfPfddwXqcf78+ejevTv69OmDBg0a4Pbt2wgODi7Q+JK+ffti2bJl+O6771CzZk18/PHHuHXrVq7P8fb2RkZGhuosjYWFBVq2bAmFQiEZbzN06FB069YNPXr0wHvvvYdnz55lu7xJpUqV0KRJE1y5ckU1S+qNOnXqIDQ0FJGRkWjRogXq16+P6dOnw8PDQ3XMTz/9hOLFi6Nly5b45JNPMHjwYDg5OUkuDW3YsAHp6elo2LAhxo4d+87w0bRpU6xbtw7Lly9H3bp1cejQIbVA1K5dO/z+++84dOgQGjdujKZNm2Lp0qWqM2u6ohByO3VighISEuDs7Iz4+HhOCyfS0O3b4grDMTHSeseOwK5dADe6frfXr1/j7t27KF++vE7HHGibj48P6tWrZxLbKxDw8OFDeHp6qgZ9G4rcvj80+f1tVCsUE5F8oqOB1q3Vg02rVsD27Qw2RIbszz//RFJSEmrXro2YmBhMmjQJ5cqVQ0sT3Q+F4YaI3unxY6BNGzHgZNasGbB3r7ghJhEZrrS0NHz99de4c+cOnJyc0Lx5cwQFBanNPjMVDDdElKtnz4APPwSyDjGoXx/44w+AW/CYhzfrtpBxateuHdqZ0eZuHPpHRDlKSAA++gi4dk1ar1EDOHQI+G8NMSIig8JwQ0TZSk4WBwpfvCitV6wIHD4MuLnJ0xcR0bsw3BCRmpQUcRfvkyeldU9P4OhRINMMUyIig8NwQ0QSaWlAjx7i2ZnMihcHjhwBdLw8BRFRgTHcEJFKRgbQt684AyozV1cx7FSpIk9fRESaYLghIgDirt5DhwK//CKtOzkBwcFA7dry9EVEpCmGGyKCIADjxgE//iit29uL070bNZKnLzIO/fr1Q9euXVX33+yK/Ua5cuW4srGOBAYGosg7pi36+/ujXr16eunHUHCdGyLCtGnihpeZ2diIl6fef1+ensh4LF++PNdNkC9cuIBChQrpsSPz0aNHD3To0EHuNgwOww2RmQsIAObOldYsLcUtFT78UJ6ezIVSKS6SKKeiRQu+2amzs3OujxcrVqxgb0A5sre3hz2XCFfDy1JEZmzlSuDrr6U1hQLYvBno3FmenszJs2eAu7u8t7yGqx07dqB27dqwt7dH0aJF0aZNGyQnJwNQvyyVVdbLUi9evMDQoUNRvHhx2NnZoVatWvj9999Vj+/cuRM1a9aEra0typUrh8WLF6u93rx58zBgwAA4OTmhTJkyWLt2bY7v//vvv6NIkSLIyMgAAISHh0OhUOCrr75SHTNo0CD873//++9zeYZevXqhVKlScHBwQO3atfFLpsFoa9euhYeHB5RKpeR9unTpggEDBqju7927Fw0aNICdnR0qVKiAmTNnIj09XfX433//jffffx92dnaoUaMGjhw5AoVCgT179gAQV4VWKBR48eKF6jlver937x6A7C9LzZ8/H8WLF4eTkxMGDhyI169fq/2drF+/HtWrV4ednR2qVatW4N3YDQ3DDZGZ2rABGD1avb5uHdCrl/77IcMVExODXr16YcCAAbh58yZCQkLQrVu3XC9F5USpVKJ9+/Y4deoUfv75Z9y4cQPz58+HpaUlAOCvv/7C559/jp49e+Lq1avw9/fHtGnTEBgYKHmdxYsXo1GjRggLC8OIESMwfPhwREREZPueLVq0QGJiIsLCwgAAoaGhcHNzk2wpERoaCh8fHwDiztQNGzbE/v37ce3aNQwZMgR9+vTB+fPnAQCfffYZnj17hmPHjqme//z5cxw8eBBffPEFAODEiRPw9fXFmDFjcOPGDfzwww8IDAzE3P9Ok2ZkZKBr165wcHDAuXPnsHbtWnzzzTca/31m9euvv8Lf3x/z5s3DxYsXUbJkSbXgEhQUhOnTp2Pu3Lm4efMm5s2bh2nTpmHTpk0Ffn+DIZiZ+Ph4AYAQHx8vdytEsvnlF0FQKARBHEr89rZsmdydmb5Xr14JN27cEF69eiXExqp/Bvq+xca+u+e//vpLACDcu3cv28f79u0rdOnSRXXf29tbGDNmjOp+2bJlhaVLlwqCIAjBwcGChYWFEBERke1r9e7dW/jwww8ltS+//FKoUaOG5PX+97//qe4rlUrB3d1dWLNmTY5fQ4MGDYRvv/1WEARB6Nq1qzB37lzBxsZGSExMFB4+fCgAECIjI3N8fseOHYUJEyao7nfp0kUYMGCA6v4PP/wgeHh4CBkZGYIgCELr1q2FefPmSV5j8+bNQsmSJQVBEIQDBw4IVlZWQkxMjOrxw4cPCwCE3bt3C4IgCMeOHRMACHFxcapjwsLCBADC3bt3BUEQhI0bNwrOzs6qx5s1ayaMGDFC8r7vvfeeULduXdX9ihUrClu2bJEcM3v2bKFZs2Y5fv36kvn7IytNfn/zzA2Rmdm3D+jTR/zVltncucCYMfL0RIatbt26aN26NWrXro3PPvsM69atQ1xcXL5eKzw8HKVLl0aVHBZNunnzJry8vCQ1Ly8v3Lp1S3VZCQDq1Kmj+rNCoUCJEiUQGxub4/t6e3sjJCQEgiDgxIkT6NatG6pXr46TJ08iNDQUHh4eqFy5MgDxrMrs2bNRu3ZtuLq6wtHREcHBwYiOjla93hdffIGdO3ciJSUFgHg2pGfPnrD4bwDT5cuXMWvWLDg6OqpugwcPRkxMDF6+fImIiAh4enqiRIkSqtds0qRJXv8ac3Tz5k289957klqzZs1Uf05OTkZUVBQGDhwo6W3OnDmIiooq8PsbCg4oJjIjR44An30GZLrsDwCYMkV97A3pXtGiQC6/j/XWw7tYWlri8OHDOH36NA4dOoSVK1fim2++wblz51C+fHmN3k9bg1+tra0l9xUKhdoYmMx8fHywYcMGXL58GdbW1qhWrRp8fHwQEhKCuLg4eHt7q4799ttvsXz5cixbtgy1a9dGoUKFMHbsWKSmpqqO6dSpEwRBwP79+9G4cWOcOHECS5cuVT2elJSEmTNnolu3bmq92NnZ5elrfBOUhEz/EklLS8vTc3OSlJQEAFi3bp1aCHpzadAUMNwQmYlTp4AuXYBMP58BAKNGqc+WIv2wsACMZSKRQqGAl5cXvLy8MH36dJQtWxa7d+/G+PHjNXqdOnXq4OHDh4iMjMz27E316tVx6tQpSe3UqVOoUqVKgX75vhl3s3TpUlWQ8fHxwfz58xEXF4cJEyZI3q9Lly6qAcZKpRKRkZGoUaOG6hg7Ozt069YNQUFBuH37NqpWrYoGDRqoHm/QoAEiIiJQqVKlbPupWrUqHjx4gCdPnqB48eIAxCnzmb2ZZRYTEwMXFxcA4pmv3FSvXh3nzp2Dr6+vqnb27FnVn4sXLw4PDw/cuXNHNT7IFDHcEJkJOzvx9vLl29qAAcCyZeIMKaKcnDt3DkePHkXbtm3h7u6Oc+fO4enTp6hevbrGr+Xt7Y2WLVuie/fuWLJkCSpVqoS///4bCoUCH330ESZMmIDGjRtj9uzZ6NGjB86cOYNVq1YVeDaPi4sL6tSpg6CgIKxatQoA0LJlS3z++edIS0uTnLmpXLkyduzYgdOnT8PFxQVLlizBkydPJOEGEC9Nffzxx7h+/boqCL0xffp0fPzxxyhTpgw+/fRTWFhY4PLly7h27RrmzJmDDz/8EBUrVkTfvn2xcOFCJCYmYurUqQDEIAkAlSpVgqenJ/z9/TF37lxERkaqzRzLasyYMejXrx8aNWoELy8vBAUF4fr166hQoYLqmJkzZ2L06NFwdnbGRx99hJSUFFy8eBFxcXEah1VDxTE3RGaiYUMgNBR4c4m/Rw9g7dqCr3FCpq9w4cI4fvw4OnTogCpVqmDq1KlYvHgx2rdvn6/X27lzJxo3boxevXqhRo0amDRpkmo8TYMGDfDrr79i69atqFWrFqZPn45Zs2ahX79+Bf46vL29kZGRoZoV5erqiho1aqBEiRKoWrWq6ripU6eiQYMGaNeuHXx8fFCiRIlsp7q3atUKrq6uiIiIQO/evSWPtWvXDr///jsOHTqExo0bo2nTpli6dCnK/rfzrKWlJfbs2YOkpCQ0btwYgwYNUs2WenPZytraGr/88gv+/vtv1KlTBwsWLMCcOXNy/Rp79OiBadOmYdKkSWjYsCHu37+P4cOHS44ZNGgQ1q9fj40bN6J27drw9vZGYGCgxpcYDZlCELIOKzRtCQkJcHZ2Rnx8PAoXLix3O0R6d+sWsHixuMZNlmELpAevX7/G3bt3Ub58+TyPvSDzcOrUKbz//vu4ffs2KlasKHc7ssjt+0OT39+8LEVkZipXBr7/Xu4uiGj37t1wdHRE5cqVcfv2bYwZMwZeXl5mG2y0ieGGiIhIBomJiZg8eTKio6Ph5uaGNm3avHNMDeUNww0REZEMfH19JbOaSHs4lJCIiIhMCsMNEZEMzGwuB1GeaOv7guGGiEiP3ixEl5p1NUUiUn1fFHS1ZI65ISLSIysrKzg4OODp06ewtrZWLbFPZO6USiWePn0KBwcHWFkVLJ4w3BAR6ZFCoUDJkiVx9+5d3L9/X+52iAyKhYUFypQpo1qlOb8YboiI9MzGxgaVK1fmpSmiLGxsbLRyNpPhhohIBhYWFlyhmEhHeLGXiIiITArDDREREZkUhhsiIiIyKWY35ubNAkEJCQkyd0JERER59eb3dl4W+jO7cJOYmAgA8PT0lLkTIiIi0lRiYiKcnZ1zPUYhmNka4EqlEo8ePYKTk1OB59GbqoSEBHh6euLBgwcoXLiw3O2YPX4ehoWfh+HhZ2JYdPV5CIKAxMREeHh4vHO6uNmdubGwsEDp0qXlbsMoFC5cmD8oDAg/D8PCz8Pw8DMxLLr4PN51xuYNDigmIiIik8JwQ0RERCaF4YbU2NraYsaMGbC1tZW7FQI/D0PDz8Pw8DMxLIbweZjdgGIiIiIybTxzQ0RERCaF4YaIiIhMCsMNERERmRSGGyIiIjIpDDdmavXq1ShXrhzs7Ozw3nvv4fz58zkee/36dXTv3h3lypWDQqHAsmXL9NeomdDk81i3bh1atGgBFxcXuLi4oE2bNrkeT5rT5PPYtWsXGjVqhCJFiqBQoUKoV68eNm/erMduzYMmn0lmW7duhUKhQNeuXXXboJnR5PMIDAyEQqGQ3Ozs7HTaH8ONGdq2bRvGjx+PGTNm4NKlS6hbty7atWuH2NjYbI9/+fIlKlSogPnz56NEiRJ67tb0afp5hISEoFevXjh27BjOnDkDT09PtG3bFv/884+eOzdNmn4erq6u+Oabb3DmzBlcuXIF/fv3R//+/REcHKznzk2Xpp/JG/fu3cPEiRPRokULPXVqHvLzeRQuXBgxMTGq2/3793XbpEBmp0mTJoKfn5/qfkZGhuDh4SEEBAS887lly5YVli5dqsPuzE9BPg9BEIT09HTByclJ2LRpk65aNCsF/TwEQRDq168vTJ06VRftmaX8fCbp6elC8+bNhfXr1wt9+/YVunTpoodOzYOmn8fGjRsFZ2dnPXUn4pkbM5Oamoq//voLbdq0UdUsLCzQpk0bnDlzRsbOzJM2Po+XL18iLS0Nrq6uumrTbBT08xAEAUePHkVERARatmypy1bNRn4/k1mzZsHd3R0DBw7UR5tmI7+fR1JSEsqWLQtPT0906dIF169f12mfDDdm5t9//0VGRgaKFy8uqRcvXhyPHz+WqSvzpY3PY/LkyfDw8JD8sKH8ye/nER8fD0dHR9jY2KBjx45YuXIlPvzwQ123axby85mcPHkSP/74I9atW6ePFs1Kfj6PqlWrYsOGDdi7dy9+/vlnKJVKNG/eHA8fPtRZn2a3KziRKZk/fz62bt2KkJAQnQ/Qo5w5OTkhPDwcSUlJOHr0KMaPH48KFSrAx8dH7tbMTmJiIvr06YN169bBzc1N7nYIQLNmzdCsWTPV/ebNm6N69er44YcfMHv2bJ28J8ONmXFzc4OlpSWePHkiqT958oSDhWVQkM9j0aJFmD9/Po4cOYI6derosk2zkd/Pw8LCApUqVQIA1KtXDzdv3kRAQADDjRZo+plERUXh3r176NSpk6qmVCoBAFZWVoiIiEDFihV127QJ08bvEGtra9SvXx+3b9/WRYsAeFnK7NjY2KBhw4Y4evSoqqZUKnH06FFJsib9yO/nsXDhQsyePRsHDx5Eo0aN9NGqWdDW94dSqURKSoouWjQ7mn4m1apVw9WrVxEeHq66de7cGR988AHCw8Ph6empz/ZNjja+RzIyMnD16lWULFlSV21ytpQ52rp1q2BraysEBgYKN27cEIYMGSIUKVJEePz4sSAIgtCnTx/hq6++Uh2fkpIihIWFCWFhYULJkiWFiRMnCmFhYcKtW7fk+hJMiqafx/z58wUbGxthx44dQkxMjOqWmJgo15dgUjT9PObNmyccOnRIiIqKEm7cuCEsWrRIsLKyEtatWyfXl2ByNP1MsuJsKe3S9POYOXOmEBwcLERFRQl//fWX0LNnT8HOzk64fv26znrkZSkz1KNHDzx9+hTTp0/H48ePUa9ePRw8eFA1QCw6OhoWFm9P6j169Aj169dX3V+0aBEWLVoEb29vhISE6Lt9k6Pp57FmzRqkpqbi008/lbzOjBkz4O/vr8/WTZKmn0dycjJGjBiBhw8fwt7eHtWqVcPPP/+MHj16yPUlmBxNPxPSLU0/j7i4OAwePBiPHz+Gi4sLGjZsiNOnT6NGjRo661EhCIKgs1cnIiIi0jNGXSIiIjIpDDdERERkUhhuiIiIyKQw3BAREZFJYbghIiIik8JwQ0RERCaF4YaIiIhMCsMNERERmRSGGyIyOS1btsSWLVt0/j49e/bE4sWLdf4+RKQZhhsiMhihoaEF3thw3759ePLkCXr27KmlrnI2depUzJ07F/Hx8Tp/LyLKO4YbIjIYe/fuRadOnQr0GitWrED//v31stdQrVq1ULFiRfz88886fy8iyjuGGyLSut9//x1FihRBRkYGACA8PBwKhQJfffWV6phBgwbhf//7n+R5+/btQ+fOnQEAPj4+GDlyJEaOHAlnZ2e4ublh2rRpyG07vKdPn+LPP/+UBKR79+5BoVAgPDxcVXvx4gUUCoVq49eQkBAoFAoEBwejfv36sLe3R6tWrRAbG4sDBw6gevXqKFy4MHr37o2XL19K3rNTp07YunVrvv6eiEg3GG6ISOtatGiBxMREhIWFARAvN7m5uUl2kQ8NDYWPj4/q/vXr1xEbG4tWrVqpaps2bYKVlRXOnz+P5cuXY8mSJVi/fn2O73vy5Ek4ODigevXq+erb398fq1atwunTp/HgwQN8/vnnWLZsGbZs2YL9+/fj0KFDWLlypeQ5TZo0wfnz55GSkpKv9yQi7WO4ISKtc3Z2Rr169SRnRsaNG4ewsDAkJSXhn3/+we3bt+Ht7a16zt69e9GuXTvY2Nioap6enli6dCmqVq2KL774AqNGjcLSpUtzfN/79++jePHi+b4kNWfOHHh5eaF+/foYOHAgQkNDsWbNGtSvXx8tWrTAp59+imPHjkme4+HhgdTUVDx+/Dhf70lE2sdwQ0Q64e3tjZCQEAiCgBMnTqBbt26oXr06Tp48idDQUHh4eKBy5cqq4/fu3au6JPVG06ZNoVAoVPebNWuGW7duqS53ZfXq1SvY2dnlu+c6deqo/ly8eHE4ODigQoUKklpsbKzkOfb29gCgdrmKiORjJXcDRGSafHx8sGHDBly+fBnW1taoVq0afHx8EBISgri4OMlZm5iYGISFhaFjx44Fek83NzfExcW987icwpG1tbXqzwqFQnL/TU2pVEpqz58/BwAUK1ZM03aJSEd45oaIdOLNuJulS5eqgsybcBMSEiIZb/Pbb7+hefPmcHV1lbzGuXPnJPfPnj2LypUrw9LSMtv3rF+/Ph4/fpxtwHny5Inqz3fu3Mnvl6Xm2rVrKF26NNzc3LT2mkRUMAw3RKQTLi4uqFOnDoKCglRBpmXLlrh06RIiIyMlZ24yz5LKLDo6GuPHj0dERAR++eUXrFy5EmPGjMnxPevXrw83NzecOnVK7bFZs2bh8uXLCA8Px4QJEwCIwSQxMbFAX+eJEyfQtm3bAr0GEWkXL0sRkc54e3sjPDxcFW5cXV1Ro0YNPHnyBFWrVgUAJCcn4+jRo1i2bJna8319ffHq1Ss0adIElpaWGDNmDIYMGZLj+1laWqJ///4ICgrCxx9/LHmsRYsWaNu2LVJSUvD111+jSJEimDFjRoGCyevXr7Fnzx4cPHgw369BRNqnEHJbNIKISMd27dqFqVOn4saNG5K6j48P6tWrl23oyc3jx49Rs2ZNXLp0CWXLlsW9e/dQvnx5hIWFoV69etprHMCaNWuwe/duHDp0SKuvS0QFw8tSRCQrR0dHLFiwQGuvV6JECfz444+Ijo7W2mvmxNraWm3dGyKSHy9LEZGsdDFepWvXrlp/zewMGjRIL+9DRJrhZSkiIiIyKbwsRURERCaF4YaIiIhMCsMNERERmRSGGyIiIjIpDDdERERkUhhuiIiIyKQw3BAREZFJYbghIiIik/J/sEyi9PjoN24AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# extract the effective index of the fundamental mode\n",
    "n_eff_plasmonic = [\n",
    "    result.n_eff[0][0].values for _, result in plasmonic_waveguide_batch_results.items()\n",
    "]\n",
    "\n",
    "# plot the effective indices of the silicon waveguide and plasmonic waveguide\n",
    "plt.plot(p_list, n_eff_plasmonic, c=\"red\", linewidth=3, label=\"plasmonic waveguide\")\n",
    "plt.plot(w_list, n_eff_silicon, c=\"blue\", linewidth=3, label=\"silicon waveguide\")\n",
    "\n",
    "plt.xlabel(\"w/p (μm)\")\n",
    "plt.ylabel(\"Effective index\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9f30339d-507d-4d82-945d-280dfa0c9683",
   "metadata": {},
   "source": [
    "In fact, for optimal result, we cannot use an arbitrary target effective index. Since the plasmonic waveguide is lossy, we prefer to shorten the coupling region length as much as possible to minimize the absorption loss. Therefore, we need to analyze the optimal coupling length for different effective index values. This can be done by performing a normal mode analysis for the hybrid waveguide cross section. According to the normal mode analysis, the optimal coupling length is then given by $L_c = \\frac{\\lambda}{2(n_1-n_2)}$, where $n_1$ and $n_2$ are the effective indices of the first and second normal modes. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "deab04ec-f604-49f7-8f48-f611b4f8b768",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:22.952262Z",
     "iopub.status.busy": "2025-05-15T10:49:22.952135Z",
     "iopub.status.idle": "2025-05-15T10:49:22.955753Z",
     "shell.execute_reply": "2025-05-15T10:49:22.955420Z"
    }
   },
   "outputs": [],
   "source": [
    "# define a function to create hybrid waveguide mode solver\n",
    "def hybrid_waveguide_mode_solver(n_eff):\n",
    "    w = np.interp(\n",
    "        n_eff, n_eff_silicon, w_list\n",
    "    )  # determine the silicon waveguide width given the effective index\n",
    "    p = np.interp(\n",
    "        n_eff, np.flipud(n_eff_plasmonic), np.flipud(p_list)\n",
    "    )  # determine the plasmonic waveguide width given the effective index\n",
    "    g = 0.08  # gap size between the silicon waveguide and the plasmonic waveguide\n",
    "\n",
    "    # create the plasmonic waveguide structures\n",
    "    slot_left = td.Structure(\n",
    "        geometry=td.Box(center=(-(s + p) / 2, h / 2 + g + t / 2, 0), size=(p, t, td.inf)), medium=ag\n",
    "    )\n",
    "    slot_right = td.Structure(\n",
    "        geometry=td.Box(center=((s + p) / 2, h / 2 + g + t / 2, 0), size=(p, t, td.inf)), medium=ag\n",
    "    )\n",
    "\n",
    "    # create the silicon waveguide structure\n",
    "    silicon_waveguide = td.Structure(geometry=td.Box(size=(w, h, td.inf)), medium=si)\n",
    "\n",
    "    # mode solving plane size\n",
    "    mode_plane_size_x = 2 * (2 * p + s + w)\n",
    "    mode_plane_size_y = 3 * (t + g + h)\n",
    "\n",
    "    # create a simulation\n",
    "    sim = td.Simulation(\n",
    "        size=(mode_plane_size_x, mode_plane_size_y, 1),\n",
    "        grid_spec=td.GridSpec.auto(min_steps_per_wvl=50, wavelength=lda0),\n",
    "        structures=[silicon_waveguide, slot_left, slot_right],\n",
    "        run_time=1e-12,\n",
    "        medium=sio2,\n",
    "        subpixel=td.SubpixelSpec(metal=td.VolumetricAveraging()),\n",
    "        symmetry=(-1, 0, 0),  # use symmetry that is compatible with the fundamental TE mode\n",
    "    )\n",
    "\n",
    "    # create a mode solver\n",
    "    mode_solver = ModeSolver(\n",
    "        simulation=sim,\n",
    "        plane=td.Box(size=(mode_plane_size_x, mode_plane_size_y, 0)),\n",
    "        mode_spec=td.ModeSpec(num_modes=2, precision=\"double\", target_neff=3),  # solve for 2 modes\n",
    "        freqs=[freq0],\n",
    "    )\n",
    "\n",
    "    return mode_solver"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f6520a9-366f-49d3-955a-b75f2f350890",
   "metadata": {},
   "source": [
    "Create an example mode solver to visualize the setup. We correctly see the silicon waveguide with the plasmonic waveguide on top of it. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "d5029afa-60c5-4d59-ab01-2bcbea0395b4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:22.957057Z",
     "iopub.status.busy": "2025-05-15T10:49:22.956944Z",
     "iopub.status.idle": "2025-05-15T10:49:23.041353Z",
     "shell.execute_reply": "2025-05-15T10:49:23.041131Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHYCAYAAADAqqX6AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAS9BJREFUeJzt3Xl8VOXd9/HvzGSWQDZkSYggRowCIqJsIlhU8pg+ooC7VhTQgkVQkdtbSxVQREHcqK3ALe4WhWIrWK244IpFFNA+WhApoiCQAMUkQJz1XM8f3IxONuYEkhkmn/frNa82Z8655jdXFr5e55zfOIwxRgAAADjiORNdAAAAAA4Pgh0AAECKINgBAACkCIIdAABAiiDYAQAApAiCHQAAQIog2AEAAKQIgh0AAECKINgBAACkCIIdgJT13nvvyeFw6L333kt0KTjM/vznP+uoo47S3r17G/21165dq7S0NH355ZeN/trAwRDsABzxZs+erWeeeSbRZdTLCy+8oFmzZiW6DEmSZVmaOXOmCgoK5PP51K1bN7344otxH19WVqbRo0erdevWat68uc4++2ytWbOmxn1feeUVnXbaafL5fDrmmGM0ZcoUhcPhuF4nEoloypQpuvHGG5WRkRF3fYdLly5dNGjQIE2ePLnRXxs4GAefFQvgSNe1a1e1atWq2sqcZVkKBoPyeDxyOpPzv2PPP/98ffnll/r2228TXYomTpyoGTNmaNSoUerVq5eWLFmi1157TS+++KKuuOKKOo+1LEtnnnmm/vnPf+q///u/1apVK82ePVtbtmzR6tWrVVhYGN339ddf16BBg3TWWWfpyiuv1BdffKHHHntMo0eP1pw5cw5a5+LFi3XRRRdpy5YtOvroow/5fdfH66+/rvPOO0///ve/1bFjx4TUANTIAEgJe/fuTXQJCXPSSSeZAQMGJLqMehk0aJDp0KFDossw33//vXG73Wbs2LHRbZZlmTPPPNO0a9fOhMPhOo9fuHChkWQWLVoU3bZjxw6Tk5Njrrzyyph9u3TpYk455RQTCoWi2+644w7jcDjMunXrDlrr4MGDTf/+/eN9aw0iGAyaFi1amEmTJiW0DqCq5PxPWKCJ27p1q6677jrl5+fL6/WqoKBAY8aMUTAYlCQ988wzcjgcev/993XDDTeoTZs2ateuXfT42bNn66STTpLX61V+fr7Gjh2rsrKymNfYsGGDLr74YuXl5cnn86ldu3a64oorVF5eHt3nrbfeUv/+/ZWTk6OMjAydeOKJ+t3vfnfQ+uM5LhAIaMqUKTr++OPl9XrVvn173XbbbQoEAtXG+9Of/qTevXurWbNmatGihX7xi1/ozTfflCQde+yx+te//qX3339fDodDDodDZ511lqTar7FbtGiRevToofT0dLVq1UrDhg3T1q1bY/YZMWKEMjIytHXrVg0dOlQZGRlq3bq1br31VkUikYPOwZIlSzRo0KDo97Bjx4665557Yo4966yz9Nprr+m7776L1n7sscfWOuaIESOi+1V93HXXXQet6WD1hkIh3XDDDdFtDodDY8aM0ffff68VK1bUefxLL72k3NxcXXTRRdFtrVu31mWXXaYlS5ZEv69r167V2rVrNXr0aKWlpUX3veGGG2SM0UsvvVTn6/j9fi1dulRFRUUx27/99ls5HI4aT8lXnZ+77rpLDodDX3/9tYYNG6bs7Gy1bt1akyZNkjFGW7Zs0ZAhQ5SVlaW8vDw99NBD1cZ0u90666yztGTJkjrrBRpb2sF3AdCYtm3bpt69e0evV+rUqZO2bt2ql156SZWVlfJ4PNF9b7jhBrVu3VqTJ0/Wvn37JO3/R+vuu+9WUVGRxowZo/Xr12vOnDn69NNP9dFHH8ntdisYDKq4uFiBQEA33nij8vLytHXrVr366qsqKytTdna2/vWvf+n8889Xt27dNHXqVHm9Xv373//WRx99VGf98RxnWZYGDx6s5cuXa/To0ercubO++OILPfLII/r666+1ePHi6L5333237rrrLp1xxhmaOnWqPB6PVq5cqXfeeUfnnnuuZs2aFb3W6o477pAk5ebm1lrfM888o5EjR6pXr16aPn26SktL9fvf/14fffSRPvvsM+Xk5ET3jUQiKi4uVp8+ffTggw/q7bff1kMPPaSOHTtqzJgxdc7DM888o4yMDE2YMEEZGRl65513NHnyZFVUVOiBBx6QJN1xxx0qLy/X999/r0ceeUSS6rxm7Prrr68WaJYuXar58+erTZs20W27du2qs7YDMjMz5fV6JUmfffaZmjdvrs6dO8fs07t37+jz/fv3r3Wszz77TKeddlq1U969e/fW448/rq+//lonn3yyPvvsM0lSz549Y/bLz89Xu3btos/XZvXq1QoGgzrttNPieo91ufzyy9W5c2fNmDFDr732mqZNm6ajjjpK//M//6NzzjlH999/v+bPn69bb71VvXr10i9+8YuY43v06KElS5aooqJCWVlZh1wPcFgkeskQQKxrrrnGOJ1O8+mnn1Z7zrIsY4wxTz/9tJFk+vfvH3OKbMeOHcbj8Zhzzz3XRCKR6PY//vGPRpJ56qmnjDHGfPbZZ9VOm1X1yCOPGElm586dtuqP57jnn3/eOJ1O8+GHH8Zsnzt3rpFkPvroI2OMMRs2bDBOp9NceOGFMe/HmJ/mwpjaT8W+++67RpJ59913jTH7T5+1adPGdO3a1fz444/R/V599VUjyUyePDm6bfjw4UaSmTp1asyYp556qunRo0fdk2CMqaysrLbt+uuvN82aNTN+vz+67VBOxW7YsMFkZ2eb//N//k/Mz4GkuB5PP/10TB3HHXdctdfYt2+fkWR++9vf1llL8+bNzbXXXltt+2uvvWYkmaVLlxpjjHnggQeMJLN58+Zq+/bq1cucfvrpdb7OE088YSSZL774Imb7pk2bqr2nAySZKVOmRL+eMmWKkWRGjx4d3RYOh027du2Mw+EwM2bMiG7/4YcfTHp6uhk+fHi1cV944QUjyaxcubLOmoHGxKlYIIlYlqXFixfrggsuqLaiIe0/pfRzo0aNksvlin799ttvKxgMavz48TErJ6NGjVJWVpZee+01SVJ2drYk6Y033lBlZWWNtRxYuVqyZIksy4r7PcRz3KJFi9S5c2d16tRJu3btij7OOeccSdK7774raf9F8pZlafLkydVWgqrORTxWrVqlHTt26IYbbpDP54tuHzRokDp16hSdn5/7zW9+E/P1mWeeqW+++eagr5Wenh79/3v27NGuXbt05plnqrKyUl999ZXt2qvat2+fLrzwQrVo0UIvvvhizM/BW2+9FdejuLg4esyPP/4YXb37uQPz9OOPP9ZZT7zHH/jf2vY92Ov85z//kSS1aNGizv3i8etf/zr6/10ul3r27CljjK677rro9pycHJ144ok1fs8P1BDvCinQGDgVCySRnTt3qqKiQl27do1r/4KCgpivv/vuO0nSiSeeGLPd4/HouOOOiz5fUFCgCRMm6OGHH9b8+fN15plnavDgwdHrjaT9p6meeOIJ/frXv9Zvf/tbDRw4UBdddJEuueSSOu8wjee4DRs2aN26dWrdunWNY+zYsUOStHHjRjmdTnXp0iWu+TiY2uZHkjp16qTly5fHbPP5fNVqbNGihX744YeDvta//vUv3XnnnXrnnXdUUVER89zPr2Osr1GjRmnjxo36xz/+oZYtW8Y8V/V0bTzS09NrvL7R7/dHnz8cxx/439r2PdjrHGAOQ0OHY445Jubr7Oxs+Xw+tWrVqtr2A4Gyphrq8x8ZQEMh2AFHsHj/EazJQw89pBEjRmjJkiV68803ddNNN2n69On6+OOP1a5dO6Wnp+uDDz7Qu+++q9dee01Lly7VwoULdc455+jNN9+MWSGqWtPBjrMsSyeffLIefvjhGsdo3759vd/X4VTbezyYsrIyDRgwQFlZWZo6dao6duwon8+nNWvW6Pbbb7e1AlqT3//+93rxxRf1pz/9Sd27d6/2fElJSVzjZGdnR3+G2rZtq3fffVfGmJigsn37dkn7r4GrS9u2baP7/lzV49u2bRvdXvX7vH379ug1fbU5EGJ/+OGHmBuGalNXAKzp+1vb97ymcQ4E/KpBEEgkTsUCSaR169bKysqqd0f7Dh06SJLWr18fsz0YDGrTpk3R5w84+eSTdeedd+qDDz7Qhx9+qK1bt2ru3LnR551OpwYOHKiHH35Ya9eu1b333qt33nkneqq0Ngc7rmPHjtq9e7cGDhyooqKiao8DK2odO3aUZVlau3Ztna8X74pJbfNzYFvV+amv9957T//5z3/0zDPP6Oabb9b555+voqKiGk8f2l3t+fDDD3Xrrbdq/Pjxuuqqq2rcp23btnE9Fi5cGD2me/fuqqys1Lp162LGWrlyZfT5unTv3l1r1qypFlpXrlypZs2a6YQTTogZZ9WqVTH7bdu2Td9///1BX6dTp06SpE2bNtX4/J49e2K+Li0trXO8Q7Fp0yY5nc7oewOSAcEOSCJOp1NDhw7V3/72t2r/8EkHP/1UVFQkj8ejRx99NGbfJ598UuXl5Ro0aJAkqaKiolqX/5NPPllOpzN6imz37t3Vxj/wj25Np9EOiOe4yy67TFu3btW8efOq7fvjjz9G7/AdOnSonE6npk6dWi0w/Pz9NW/evFo7l5r07NlTbdq00dy5c2Pew+uvv65169ZF5+dQHVj1+XmNwWBQs2fPrrZv8+bN4z41u337dl122WXq379/9M7amtTnGrshQ4bI7XbH1GiM0dy5c3X00UfrjDPOiKnjq6++UigUim675JJLVFpaqr/+9a/Rbbt27dKiRYt0wQUXRK+pO+mkk9SpUyc9/vjjMa1f5syZI4fDoUsuuaTOOejRo4c8Hk+Nvx+Sqv1Hx8svvxx9L4fb6tWrddJJJ0UvXwCSAadigSRz33336c0339SAAQOirUC2b9+uRYsWafny5THtOKpq3bq1Jk6cqLvvvlu//OUvNXjwYK1fv16zZ89Wr169NGzYMEnSO++8o3HjxunSSy/VCSecoHA4rOeff14ul0sXX3yxJGnq1Kn64IMPNGjQIHXo0EE7duzQ7Nmz1a5duzrbXsRz3NVXX60///nP+s1vfqN3331X/fr1UyQS0VdffaU///nPeuONN9SzZ08df/zxuuOOO3TPPffozDPP1EUXXSSv16tPP/1U+fn5mj59uqT9/9jPmTNH06ZN0/HHH682bdpEb8T4Obfbrfvvv18jR47UgAEDdOWVV0bbnRx77LG65ZZb6vtti3HGGWeoRYsWGj58uG666SY5HA49//zzNYaLHj16aOHChZowYYJ69eqljIwMXXDBBTWOe9NNN2nnzp267bbbtGDBgpjnunXrpm7dukmq3zV27dq10/jx4/XAAw8oFAqpV69eWrx4sT788EPNnz8/5hTlxIkT9eyzz2rTpk3RvnuXXHKJTj/9dI0cOVJr166NfvJEJBLR3XffHfNaDzzwgAYPHqxzzz1XV1xxhb788kv98Y9/1K9//etq7Vaq8vl8Ovfcc/X2229r6tSp1Z5funSprrrqKv3iF7/Q119/rccff1zNmjXTm2++qV69eun888+3PTc1CYVC0T6SQFJJyL24AOr03XffmWuuuca0bt3aeL1ec9xxx5mxY8eaQCBgjPmp3UlNLVGM2d/epFOnTsbtdpvc3FwzZswY88MPP0Sf/+abb8y1115rOnbsaHw+nznqqKPM2Wefbd5+++3oPsuWLTNDhgwx+fn5xuPxmPz8fHPllVear7/+us7a4z0uGAya+++/35x00knG6/WaFi1amB49epi7777blJeXx+z71FNPmVNPPTW634ABA8xbb70Vfb6kpMQMGjTIZGZmGknR1idV250csHDhwuh4Rx11lLnqqqvM999/H7PP8OHDTfPmzau9vwOtMg7mo48+MqeffrpJT083+fn55rbbbjNvvPFGtXr27t1rfvWrX5mc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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mode_solver_example = hybrid_waveguide_mode_solver(n_eff=2.2)\n",
    "mode_solver_example.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f690c1db-95b7-4e62-926b-8d7698015a94",
   "metadata": {},
   "source": [
    "Now we perform mode solving for a range of target effective indices from 2.15 to 2.5. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "64ee1dfa-b4c2-475b-95e1-cd1fd0589516",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:23.042937Z",
     "iopub.status.busy": "2025-05-15T10:49:23.042841Z",
     "iopub.status.idle": "2025-05-15T10:49:46.868606Z",
     "shell.execute_reply": "2025-05-15T10:49:46.868262Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0ebe579cd80146228ac1bf3bb5901db6",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:25 CEST </span>Started working on Batch containing <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">8</span> tasks.                      \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:25 CEST\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m8\u001b[0m tasks.                      \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:32 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.030</span> for the whole batch.               \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:32 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.030\u001b[0m for the whole batch.               \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Use <span style=\"color: #008000; text-decoration-color: #008000\">'Batch.real_cost()'</span> to get the billed FlexCredit cost after   \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>the Batch has completed.                                          \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed FlexCredit cost after   \n",
       "\u001b[2;36m              \u001b[0mthe Batch has completed.                                          \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2170a1f749ed4ce6b0aff8739bba1e58",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:37 CEST </span>Batch complete.                                                   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:37 CEST\u001b[0m\u001b[2;36m \u001b[0mBatch complete.                                                   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3704871fdde54502b0e6f35a94a57c37",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_eff_list = np.linspace(2.15, 2.5, 8)  # effective index range\n",
    "\n",
    "# create a list of mode solvers\n",
    "hybrid_waveguide_mode_solvers = {\n",
    "    f\"n_eff={n_eff:.2f}\": hybrid_waveguide_mode_solver(n_eff) for n_eff in n_eff_list\n",
    "}\n",
    "\n",
    "# run mode solvers in parallel\n",
    "batch = web.Batch(simulations=hybrid_waveguide_mode_solvers)\n",
    "hybrid_waveguide_batch_results = batch.run(path_dir=\"data\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90f195f1-fa48-4f9d-9b1e-ae55b9db9cde",
   "metadata": {},
   "source": [
    "Compute and plot the coupling length as a function of the effective index. The coupling length is found to increase with the effective index. Therefore, a lower refractive index is preferred to minimize absorption loss. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "78142ef4-6a99-4dec-b9e0-82e980373290",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:46.933203Z",
     "iopub.status.busy": "2025-05-15T10:49:46.933138Z",
     "iopub.status.idle": "2025-05-15T10:49:48.944983Z",
     "shell.execute_reply": "2025-05-15T10:49:48.944767Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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CAKvg8rtt9/u9rjD4VD79u0vtx4AgL+lplory06fLl244L5N5crWPj29etGLgqDyOqicOHEi2+PMzEwlJydr+PDhuvXWW31WGADAx9LSpNdekyZOlM6ccd+mdGlrnsrjj0tRUYGtD3DD67t+PElMTNQdd9wR0CX0uesHAPLg3DnrTp1x4yRP/0aXKCE98YQ0fLgUExPY+lDk+PWuH09CQkIUHh7uq6cDAFyuixet1WTHjpV+/dV9m7AwqX9/a7JshQqBrQ/IA6+DypYtW3IcO3LkiMaOHavevXtnO1+vXr3Lqw4A4L2sLGtfnpEjpaQk921CQqzNBUePlqpXD2R1gFfyteCbw+GQp2/741wgFn9j6AcA/sQYafFi6V//khITPbfr1El64QXpuusCVhrwZ34d+klJScl3YQAAP1m71poE+913ntu0aiW99JJ0002Bqwu4TF4Hlbi4OH/UAQDIj82brfklX37puU3jxlZAad06cHUBPpKnTQkXLFiQ5yc8ePCg1q5dm++CAAB5sGePtatxw4aeQ8q110offyytX09IQYGVp6Aybdo0XXvttXrllVe0Y8eOHOfT0tL01Vdf6cEHH9QNN9ygY8eO+bxQAICk336TBgywQsgHH1jzUi5VrZp1t8/WrVLnzmweiAItT0M/3377rT7//HNNmTJFI0aMUIkSJVShQgVFRkbqxIkTOnz4sMqWLatHHnlE27ZtUwVucQMA3zp+XBo/XpoyxVoXxZ1y5aw9ex57TIqICGx9gJ94fdfP77//rjVr1mj//v06d+6cypYtq4YNG6phw4YKCclTB43PcNcPgELv9Glp0iTp1VetlWXdiY62FmobOlQqWTKg5QH54de7fsqWLauOHTvmtzYAQF44ndLMmdZtxKmp7ttERlpL3f/zn9KVVwa2PiBAfLYyLQDABzIzpXnzrA0B9+1z3yY0VOrTx1rQrUqVgJYHBBpBBQDswBjps8+sOSbbt3tu98AD1pL4NWsGrjYgiAgqABBs33xjrSa7fr3nNu3aSS++aN2ODBQhBBUACJaNG62Asny55za33GLtety8eeDqAmwksLfpAACkHTuk++6zlrL3FFLq1ZMWLbKWxCekoAjzukclMzNTc+fO1YoVK5SamqqsrKxs57/55hufFQcAhcqBA9Zuxe++a+1w7M7VV0vPPy917WrtcAwUcV4H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8PBwn9XnC8nJyZKkDh06yOFweDzmLxUrVvTr8wfqNQDQowIEXMWKFV1fMTExcjgcrsdnzpxR9+7dVaFCBV1xxRVq3Lixli9fnu37q1evrueff149evRQdHS0+vXrJ0maNWuWYmNjVbx4cXXq1EkTJ07MMazw2Wef6YYbblBkZKTi4+M1ZswYZWRkuJ5Xkjp16iSHw+F67M7BgwfVpUsXlSpVSmXKlFGHDh20b98+SVYvR/v27SVJISEhrl6iS4/9Yfbs2br22msVGRmp2rVr66233sr2Wr/88ou6deumMmXKqESJEmrUqJHWr1+vuXPnasyYMdq8ebOrN2ru3LmSsvcMNWvWTE8//XS25zx69KjCwsK0evVqSZLT6dTw4cNVpUoVlShRQk2aNNGqVas8Xv+lr7Fv3z45HA4tXLhQLVu2VPHixVW/fn0lJCRk+565c+eqWrVqrp/RsWPHcjxvbj+jsWPHqnLlytm+75577lHLli2VlZWVa71AgeXTnYMAeGXOnDkmJibG9TgxMdFMnz7dbN261ezevds8++yzJjIy0uzfv9/VJi4uzkRHR5sJEyaYPXv2mD179pg1a9aYkJAQ8+qrr5pdu3aZN99805QpUybbc69evdpER0ebuXPnmuTkZLN06VJTvXp1M3r0aGOMMampqa5Nyg4dOuRxJ/ALFy6Ya6+91vTu3dts2bLF/Pzzz+bBBx80tWrVMk6n05w6dcrMmTPHSMq26/Slx4wx5v333zeVKlUyH3/8sdm7d6/5+OOPTZkyZczcuXONMdbutPHx8aZ58+bmu+++M0lJSebDDz8069atM2fPnjVPPvmkqVOnTo6dYCWZTz75xBhjzNSpU021atVMVlaW6xqmTJmS7dijjz5qmjVrZlavXm327NljXn31VRMREWF2797t8Wf359f4YyPT2rVrm0WLFpldu3aZ++67z8TFxZmLFy8aY4z5/vvvTUhIiBk/frzZtWuXmTRpkilVqpRXP6OMjAzTtGlT07FjR9e1lSpVKtvnAyhsCCpAEF0aVNypU6eOmTJliutxXFyc6xfVH7p27WruueeebMe6d++e7blbtWplXnrppWxt3nvvPVOpUiXX4z//8vXkvffeM7Vq1cr2i9/pdJqoqCizZMkSY4wxn3zyibn07yB3x66++mozf/78bMeef/5507RpU2OMMTNmzDAl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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# compute the coupling length based on the normal mode effective indices\n",
    "L_c = []\n",
    "for _, result in hybrid_waveguide_batch_results.items():\n",
    "    n_1 = result.n_eff.sel(mode_index=0).values[0]\n",
    "    n_2 = result.n_eff.sel(mode_index=1).values[0]\n",
    "\n",
    "    L_c.append(lda0 / (2 * (n_1 - n_2)))\n",
    "\n",
    "# plot the coupling length\n",
    "plt.plot(n_eff_list, L_c, c=\"red\", linewidth=3)\n",
    "plt.ylim(0, 7)\n",
    "plt.xlabel(\"Target effective index\")\n",
    "plt.ylabel(\"Coupling length (μm)\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48f794f8-33d5-48a1-b49b-70108a50b603",
   "metadata": {},
   "source": [
    "## FDTD Verification of the Coupling Efficiency\n",
    "\n",
    "We use the target effective index of 2.15. The corresponding silicon waveguide and plasmonic waveguide widths can be calculated by simple interpolation. The optimal coupling length from this analysis turns out to be around 1.65 μm. We will verify the coupling efficiency using FDTD. To do so, we define a [Simulation](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.Simulation.html#tidy3d.Simulation) with a [ModeSource](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.ModeSource.html) as excitation and two [ModeMonitor](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.ModeMonitor.html) instances to measure the coupling efficiency and return loss. To help with visualization, we also use a [FieldMonitor](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.FieldMonitor.html) in the $yz$ plane.\n",
    "\n",
    "To ensure accuracy, again we use a fine grid resolution and turn on the volumetric averaging for metal. In addition, to make the simulation domain as compact as possible and prevent simulation divergence, we use the [Absorber](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.Absorber.html) boundary condition instead of the default [PML](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.PML.html). The simulation can diverge is a dispersive medium is inside PML or the distance between the structure and PML is too close. To minimize the artificial reflection of the absorber, we increase the number of layers to `60` in the $z$ direction."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "3756c264-ebf3-4bbe-994d-0bb163f33c43",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:48.946230Z",
     "iopub.status.busy": "2025-05-15T10:49:48.946147Z",
     "iopub.status.idle": "2025-05-15T10:49:48.963606Z",
     "shell.execute_reply": "2025-05-15T10:49:48.963405Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Silicon waveguide width is 375.74 nm.\n",
      "Plasmonic waveguide width is 261.83 nm\n",
      "Optimal coupling length is 1652.90 nm\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "    <div class=\"simulation-viewer\" data-width=\"800\" data-height=\"800\" data-simulation=\"H4sIAMzGJWgC/+1b3Y7bxhXedRLACFAgvWt7Zeg2XmL+f3pV19nYCZLY8AZFAddguRK1S4QiVZJaezfwfZsn6CP0so/Qy75V+p0ZUqLk3TpJ0cKLirEt6XBmzt93zpwzZP7y+JNPf/bhrz48oOvu3YP3Dz46GF/f99c/3Pbv4f4f+8/D/vPP/eff7gz0w3DvFz395/36u+O+fnZ8TKO/37kGPuz9+Hn3YH/9P16Pjx88pc/f978HPP3zzva4z0+efJWefP3ss68ebeHyNz+R7+HBB3GNw+H33a1134Mk9P2Xh4cB2R+t78VxH+CTft+5E8l3e8nfGxbaibeDg7++0344+erJJ4drKxwc3Htvj839tb9u6/UdQwa6u9nDHz188gV9/p1t7+vf9b+/nWRd17STX9/79vX9e5Pucpnj++SkWKzKrCvqagLqNK+6vAH9OUvY/Xss4Zz+dcIoLZixQhslpHuBoW1xRQs854nTznqvpJTeaeXV/Xs8YcqPL3f/nkwEE54pLpXmwilraZVFPitWCxJqW7wqW/TiPRHp06wsvkm/qNu2zNuW5Jw3+Z9WeTW9TJusOgtyaO+1U54bRhdJz8HXcCOdiVcS5M7Ksn6ZnmVFhVnzrGxzYldXZVHlWZO2y3yKG9WqLEm8etZbZ+fGRXG1QznPs26HNNj4aV3mz/K2mK1yEj5ftmlRzXGHJ1rCZDCpNM5qIz1uLzGa7PD8+beTJs9KfD3iXJPlfCKtEtYaCyNPikV2Fm4m2mvuQWTWSWt1/jE3MOJ6utXMGqcTJZkShunNXKWlVtxwJxy3nMz2GjYaMRbKS88SqQ0EUFzLMV8rhGOWNGBWSOgyZqqMsCLRzHgHlysmR2y9t0xpJYWQXABA7vWLF+T1tmtW027VRP13IHGW14u8ay7fBMtg59/Wr7ZBfAQAK+05TKeZ4/gmCc6CQxZN2o6BDHowhLAMoME3rWnwDpI9XMQDwF6McNo7/DSbfnPW1Ktqli7zZlF0XXFRdJfXDlgjfwcsJ4MNJj8gPB6cpZ/X51VbVw/Pm6LtLrm34oYA4RoxBw8ihqGeSATUg0m0cl4xbhlcCeK7FyLshpgQgjkpet9qacLAAZvaKwd4IlcxoNMIAHuETeMZyNobBQw7pcdThdPkZQHYKqZo2Z2QUAR3LgwiCTbzCTMjvoZwTXh32jKr3DZfsIWhlWGYinS1LbHljgLbMOeN94nbZasYYslzC8b4mvitFKAZQIm8yrC8cwipMdsjI5BjLOeCUrQXCR9NtQzBiLxsER3a+ETs8PWMcr8Q3EkueSLcmC34aSYhsWfeOETQmK00yhjcZdgenEqM2ZIYDpDwEpg6LsB2V1/jnODGWADTeeSRLb6MK/jWSiQXZVmixmyBC9CUNxKshZXJaCb4wLvYGLAydGYGqdJS8gkL/KfpZp9t9tlmn2322eZ/lW1ChY5/jpA0Em5RylkvhQWMtjONtBpE+FJaVOA+JBohQmbhidGjqvxdyDLTkyJW/G8p+HkwrEdU9vU+alVKp8rJcCVS3Z70whOrUEkramI4otWNAYgIhGZeaeQYhop9O8yhu/HKIm4ULqHQZW3mygQVvwMiAGwLgDoVmgPCYMDI5WKA3fMjavXwJ9DrVTO9tgrfBseg8Zf1LD8Jc27EKGCIFmcMzMln1byoCEsgjr4PO2VYL+2KwHBHjGyxLItuNcs3Vj3P2jyaYyTYo2zVtkVWPV3B8QOQGE3yUnEkTs/QhWgX8+r8ZTHrzillC6UNch9zAUghDdXzeZt3uBkzaZMv6os8nU3Tab1Y1hV0xj0APQ9mWi1SYkUCU/6bFU0+DV02hPp4EqGWD/jZtTEm0+1hcpc1Z3mXVvl8HlzK+jHLRRmM3DttXpQwewp4bRyEYClhw/O8y9a2ibTlebGmLCFc0fbSZauuJgFPc0R0kyFY21GwEzF7VbS7LJq6y3r9hiDrGmSGYIUQ1jBQA8BSskO2WCIkZvmrtO3y5XjOGFBknNeDqcJwkjgA95TyTdZc3mDBV2+SlmXQ4wfB+cFpWzengHBv6DK7zMMcFayVNZjVRcrOem1xtsjSupkF/Ms1ZRHST7R2T8lISJOoa/g+JQ7t5HVQvqhup+CbjSu6Krjycu+Yd9MxV/8lx5jb6hjzjjhmlzjKitgv6+a6TXqcRb+Mw/7Nvkwl8Y/ZmIdC7RndLmjJi6xEIs6msS67T5sWp5HTuqynWZf3G2O//QaJdw5nUa+HA1tqkJyRKGOkQ8EQaOgaNefUIyuBoi7Q6HSRSxQ73JnQJYBGFTg6Fq0lRzkc10OHir4A0zE+8YHEjJbUmjomVUIHmhxdisQeL9FISfQrYTXnGEdLYdHy0clpIKGKR0ngFWcCVgsM0Aqi5+NGa4O2gotAQ6VvNJg6aNgrhsKUOhDu6E8Sh6H8QEkkqdpjPQk8UYZr5SFiP9M6Opxl2tBf6qVAsmiRQGMC9utVQLHCvZCaFPFRXot2x0pLDQ9HfRk4oIlBE4oeVkimennxG6LSYlz3RrJQEd2WhZG0DM0fR5toUV2Hg2Dt4zCqLKkvQgsE8+pAsmiW0Ps56ixj1++Ndpo6OnSiWic20hQddytoqjhMHjmgebHSS41ezPUCG3hMaAGpYZyEBV0N+k54zCs0NiqaBL2dsA4AMFQfR4GBa0UPJizaXLANJOOoY0AdbOFCEzhorb0crh5f8BX8RKtxaBG5alhMk3U9bJPYgBLNIbDjmqODGjCsGZpUrIqmy9t+riLXoMK3wPXgCshmPLpw6xQZL45DnY5f8b8e11TXAyMwC2c2aqsUR6dnlIJZZC+KgpeJBkSZ/rgFSEVLjKDCfCl6dRUaUYWKF3qYAWPSc2AFq8FHcG0wFYADcxHsHNwdRZboqkHXaBkt7yMAkKO/iE+mEZ73r62sQYPhMBOiI5gTF0SWiBsYBLFj176FkRnCRgMDVsXlBPXP0sc/vRbCAhWWEA6ERLgLA+da5ZgFfnsIIJQU2AAa6KAiZpFE0OwajZBkfawLqOPRx5P+KsJYcAINPe5CJPSaovfiWoWDGG96FUCFUogdh2DvVeAIGuuBWWiq44MobhwFF2zA1stxjXiwhkkkHtc7giMjUAZAanODE2FZOinUuAdrRvV58C2CCNxtH8acHsJwQScgwvU80OwzeJBuugGz+IYcKBm3lDtVcDYCyprQOiszpDamnaFHNACvtX3UwkZaKgDeQvg+VpBGCY/xGsYJASjCkZit+lzMOAtMkR0QKwEVwCAUQy4nlPXAc8izQsC/8BTrzykAHSUYcq8A0CCzCjRDZy9wN3OKR1sBsQypQyMDQ6FhPYmNwyJrUS6Me4oDWIAqHWKBJXE5si8St4AFYraAswAWhfCUtFrkCiI8QSkfiSRq5px15CFDWc1GqwANBvwUwQ+gjVo4jegkGCDPsWE9hWwEH9HxoAtgcYAKd4rOT7E7RiA7R8FHT1gNXysG1RE6CAqDXSPA1gF2Fh4CBJFYY/6AcBK7Ga3v6Rw20ui00mCfQWC4qL+lLI5QUHSG1psJ0URhAPhSSAVdoRSypxE6PmUNJyzLelZcDd3fbpWE5rXblF1oHzc/hm57tyTbrLfdAu675R/SLbeo9vJ0XuTlrE3H5w4kwZsnjz+iVhRJiJfNI3zzE6rGr/dV475q3FeN+6pxXzXuq8Z91bivGvdV4y2uGj+lCW8pG99484VtF4ib7+M6MYhyY62IyFBvrRV3d5T/FeyiFUNNfBwe2h8HNY+v6N/HgfI4UB5fTV6Ex1lnTTG7Aajh1qub3wt4ACg9wpjwTDGDs6dZGZ+KqvCwvT0P/rhh9iOAL599GUfRjVm5dYCN7wE+LT38T19eEOz1dbfaYpH2HuYsPKCOkl/eWsmvbqPkL7OLvMyrswBVFFv00m19kTcQFplw6/XaEJNVtlwW1RkSGsJsTQ4PQdImR1jmC0R0gOb67kaPYrbGPHgMyQ31UaIm4QFS3aVRmnSFAKcVJn9YMXk6XdD9crVY5rMUAhOTjVCr02XxKi/ftOAMgYXE1BTTm637tC6zBkaZPYBI2RmUi1sBsnN586zf1RAmp5U302JCKJpp1uZpVTcL5KDrnvVfG7ZrcY4fPqyreZhNK9LrDORBWHe2GnIsdk6aU9Zte5m+RdKTVTNHHvyMTJdV8YWLGxZl2/OiVTcZf/3mfzqM6YrZpQyoXtZtF3Rev18xrVdNFvRmCb2WOIkWgaU3j+Zp1XPERthDeX4UXjVvVtXwEofOj7h8Hf9/hH8Bw+gfLMA4AAA=\" ></div>\n",
       "    <script>\n",
       "        \n",
       "        /**\n",
       "        * Simulation Viewer Injector\n",
       "        *\n",
       "        * Monitors the document for elements being added in the form:\n",
       "        *\n",
       "        *    <div class=\"simulation-viewer\" data-width=\"800\" data-height=\"800\" data-simulation=\"{...}\" />\n",
       "        *\n",
       "        * This script will then inject an iframe to the viewer application, and pass it the simulation data\n",
       "        * via the postMessage API on request. The script may be safely included multiple times, with only the\n",
       "        * configuration of the first started script (e.g. viewer URL) applying.\n",
       "        *\n",
       "        */\n",
       "        (function() {\n",
       "            const TARGET_CLASS = \"simulation-viewer\";\n",
       "            const ACTIVE_CLASS = \"simulation-viewer-active\";\n",
       "            const VIEWER_URL = \"https://tidy3d.simulation.cloud/simulation-viewer\";\n",
       "\n",
       "            class SimulationViewerInjector {\n",
       "                constructor() {\n",
       "                    for (var node of document.getElementsByClassName(TARGET_CLASS)) {\n",
       "                        this.injectViewer(node);\n",
       "                    }\n",
       "\n",
       "                    // Monitor for newly added nodes to the DOM\n",
       "                    this.observer = new MutationObserver(this.onMutations.bind(this));\n",
       "                    this.observer.observe(document.body, {childList: true, subtree: true});\n",
       "                }\n",
       "\n",
       "                onMutations(mutations) {\n",
       "                    for (var mutation of mutations) {\n",
       "                        if (mutation.type === 'childList') {\n",
       "                            /**\n",
       "                            * Have found that adding the element does not reliably trigger the mutation observer.\n",
       "                            * It may be the case that setting content with innerHTML does not trigger.\n",
       "                            *\n",
       "                            * It seems to be sufficient to re-scan the document for un-activated viewers\n",
       "                            * whenever an event occurs, as Jupyter triggers multiple events on cell evaluation.\n",
       "                            */\n",
       "                            var viewers = document.getElementsByClassName(TARGET_CLASS);\n",
       "                            for (var node of viewers) {\n",
       "                                this.injectViewer(node);\n",
       "                            }\n",
       "                        }\n",
       "                    }\n",
       "                }\n",
       "\n",
       "                injectViewer(node) {\n",
       "                    // (re-)check that this is a valid simulation container and has not already been injected\n",
       "                    if (node.classList.contains(TARGET_CLASS) && !node.classList.contains(ACTIVE_CLASS)) {\n",
       "                        // Mark node as injected, to prevent re-runs\n",
       "                        node.classList.add(ACTIVE_CLASS);\n",
       "\n",
       "                        var uuid;\n",
       "                        if (window.crypto && window.crypto.randomUUID) {\n",
       "                            uuid = window.crypto.randomUUID();\n",
       "                        } else {\n",
       "                            uuid = \"\" + Math.random();\n",
       "                        }\n",
       "\n",
       "                        var frame = document.createElement(\"iframe\");\n",
       "                        frame.width = node.dataset.width || 800;\n",
       "                        frame.height = node.dataset.height || 800;\n",
       "                        frame.style.cssText = `width:${frame.width}px;height:${frame.height}px;max-width:none;border:0;display:block`\n",
       "                        frame.src = VIEWER_URL + \"?uuid=\" + uuid;\n",
       "\n",
       "                        var postMessageToViewer;\n",
       "                        postMessageToViewer = event => {\n",
       "                            if(event.data.type === 'viewer' && event.data.uuid===uuid){\n",
       "                                frame.contentWindow.postMessage({ type: 'jupyter', uuid, value: node.dataset.simulation, fileType: 'hdf5'}, '*');\n",
       "\n",
       "                                // Run once only\n",
       "                                window.removeEventListener('message', postMessageToViewer);\n",
       "                            }\n",
       "                        };\n",
       "                        window.addEventListener(\n",
       "                            'message',\n",
       "                            postMessageToViewer,\n",
       "                            false\n",
       "                        );\n",
       "\n",
       "                        node.appendChild(frame);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "\n",
       "            if (!window.simulationViewerInjector) {\n",
       "                window.simulationViewerInjector = new SimulationViewerInjector();\n",
       "            }\n",
       "        })();\n",
       "    \n",
       "    </script>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "target_n_eff = 2.15\n",
    "w = np.interp(\n",
    "    target_n_eff, n_eff_silicon, w_list\n",
    ")  # calculate the silicon waveguide width given the target effective index\n",
    "p = np.interp(\n",
    "    target_n_eff, np.flipud(n_eff_plasmonic), np.flipud(p_list)\n",
    ")  # calculate the plasmonic waveguide width given the target effective index\n",
    "L_c_opt = np.interp(\n",
    "    target_n_eff, n_eff_list, L_c\n",
    ")  # calculate the coupling length given the target effective index\n",
    "\n",
    "print(f\"Silicon waveguide width is {w * 1e3:.2f} nm.\")\n",
    "print(f\"Plasmonic waveguide width is {p * 1e3:.2f} nm\")\n",
    "print(f\"Optimal coupling length is {L_c_opt * 1e3:.2f} nm\")\n",
    "\n",
    "g = 0.08  # gap size between the silicon waveguide and the plasmonic waveguide\n",
    "inf_eff = 1e3  # effective infinity\n",
    "buffer = lda0 / 2  # buffer spacing for padding the simulation domain\n",
    "\n",
    "# define both waveguide structures\n",
    "slot_left = td.Structure(\n",
    "    geometry=td.Box.from_bounds(\n",
    "        rmin=(-s / 2 - p, h / 2 + g, 0), rmax=(-s / 2, h / 2 + g + t, inf_eff)\n",
    "    ),\n",
    "    medium=ag,\n",
    ")\n",
    "\n",
    "slot_right = td.Structure(\n",
    "    geometry=td.Box.from_bounds(\n",
    "        rmin=(s / 2, h / 2 + g, 0), rmax=(s / 2 + p, h / 2 + g + t, inf_eff)\n",
    "    ),\n",
    "    medium=ag,\n",
    ")\n",
    "\n",
    "silicon_waveguide = td.Structure(\n",
    "    geometry=td.Box.from_bounds(rmin=(-w / 2, -h / 2, -inf_eff), rmax=(w / 2, h / 2, L_c_opt)),\n",
    "    medium=si,\n",
    ")\n",
    "\n",
    "# define a mode source\n",
    "mode_spec = td.ModeSpec(num_modes=1, target_neff=3)\n",
    "mode_source = td.ModeSource(\n",
    "    center=(0, 0, -buffer / 2),\n",
    "    size=(td.inf, td.inf, 0),\n",
    "    source_time=td.GaussianPulse(freq0=freq0, fwidth=fwidth),\n",
    "    direction=\"+\",\n",
    "    mode_spec=mode_spec,\n",
    "    mode_index=0,\n",
    ")\n",
    "\n",
    "# add a mode monitor to measure transmission at the plasmonic waveguide\n",
    "mode_monitor_t = td.ModeMonitor(\n",
    "    center=(0, 0, L_c_opt + buffer / 2),\n",
    "    size=(td.inf, td.inf, 0),\n",
    "    freqs=freqs,\n",
    "    mode_spec=mode_spec,\n",
    "    name=\"T\",\n",
    ")\n",
    "\n",
    "# add a mode monitor to measure reflection at the silicon waveguide\n",
    "mode_monitor_r = td.ModeMonitor(\n",
    "    center=(0, 0, -0.75 * buffer),\n",
    "    size=(td.inf, td.inf, 0),\n",
    "    freqs=freqs,\n",
    "    mode_spec=mode_spec,\n",
    "    name=\"R\",\n",
    ")\n",
    "\n",
    "# add a field monitor to visualize field distribution\n",
    "field_monitor = td.FieldMonitor(\n",
    "    size=(0, td.inf, td.inf), freqs=[freq0], interval_space=(1, 2, 4), name=\"field\"\n",
    ")\n",
    "\n",
    "run_time = 5e-13  # simulation run time\n",
    "\n",
    "# construct simulation\n",
    "sim_coupler = td.Simulation(\n",
    "    center=(0, h / 2, L_c_opt / 2),\n",
    "    size=(2 * (2 * p + s + w), 3 * (t + g + h), L_c_opt + 2 * buffer),\n",
    "    grid_spec=td.GridSpec.auto(min_steps_per_wvl=50, wavelength=lda0),\n",
    "    structures=[slot_left, slot_right, silicon_waveguide],\n",
    "    sources=[mode_source],\n",
    "    monitors=[mode_monitor_r, mode_monitor_t, field_monitor],\n",
    "    run_time=run_time,\n",
    "    boundary_spec=td.BoundarySpec(\n",
    "        x=td.Boundary.absorber(), y=td.Boundary.absorber(), z=td.Boundary.absorber(num_layers=60)\n",
    "    ),  # using a larger number of layers to minimize reflection\n",
    "    subpixel=td.SubpixelSpec(\n",
    "        metal=td.VolumetricAveraging()\n",
    "    ),  # turn on volumetric averaging for metal\n",
    "    medium=sio2,\n",
    "    symmetry=(-1, 0, 0),\n",
    ")\n",
    "\n",
    "sim_coupler.plot_3d()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ae2a684d-f2d1-434d-b9d1-d1c175dcaa12",
   "metadata": {},
   "source": [
    "Since a fine grid resolution is used, we would like to estimate the cost before running the simulation to ensure it's affordable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "80b62648-74d7-4555-8bf5-1cb230048baf",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:48.964935Z",
     "iopub.status.busy": "2025-05-15T10:49:48.964838Z",
     "iopub.status.idle": "2025-05-15T10:49:52.282440Z",
     "shell.execute_reply": "2025-05-15T10:49:52.281774Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:49 CEST </span>Created task <span style=\"color: #008000; text-decoration-color: #008000\">'coupling'</span> with task_id                              \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #008000; text-decoration-color: #008000\">'fdve-f2ba7329-e364-420a-ab2f-34f3871fb805'</span> and task_type <span style=\"color: #008000; text-decoration-color: #008000\">'FDTD'</span>. \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:49 CEST\u001b[0m\u001b[2;36m \u001b[0mCreated task \u001b[32m'coupling'\u001b[0m with task_id                              \n",
       "\u001b[2;36m              \u001b[0m\u001b[32m'fdve-f2ba7329-e364-420a-ab2f-34f3871fb805'\u001b[0m and task_type \u001b[32m'FDTD'\u001b[0m. \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>View task using web UI at                                         \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><a href=\"https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e364-420a-ab2f-34f3871fb805\" target=\"_blank\"><span style=\"color: #008000; text-decoration-color: #008000\">'https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e3</span></a>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><a href=\"https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e364-420a-ab2f-34f3871fb805\" target=\"_blank\"><span style=\"color: #008000; text-decoration-color: #008000\">64-420a-ab2f-34f3871fb805'</span></a>.                                       \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mView task using web UI at                                         \n",
       "\u001b[2;36m              \u001b[0m\u001b]8;id=322971;https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e364-420a-ab2f-34f3871fb805\u001b\\\u001b[32m'https://tidy3d.simulation.cloud/workbench?\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=319875;https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e364-420a-ab2f-34f3871fb805\u001b\\\u001b[32mtaskId\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=322971;https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e364-420a-ab2f-34f3871fb805\u001b\\\u001b[32m=\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=241783;https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e364-420a-ab2f-34f3871fb805\u001b\\\u001b[32mfdve\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=322971;https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e364-420a-ab2f-34f3871fb805\u001b\\\u001b[32m-f2ba7329-e3\u001b[0m\u001b]8;;\u001b\\\n",
       "\u001b[2;36m              \u001b[0m\u001b]8;id=322971;https://tidy3d.simulation.cloud/workbench?taskId=fdve-f2ba7329-e364-420a-ab2f-34f3871fb805\u001b\\\u001b[32m64-420a-ab2f-34f3871fb805'\u001b[0m\u001b]8;;\u001b\\.                                       \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Task folder: <a href=\"https://tidy3d.simulation.cloud/folders/folder-bfe11006-2cae-4abd-bc02-04b6047e01be\" target=\"_blank\"><span style=\"color: #008000; text-decoration-color: #008000\">'default'</span></a>.                                           \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mTask folder: \u001b]8;id=130765;https://tidy3d.simulation.cloud/folders/folder-bfe11006-2cae-4abd-bc02-04b6047e01be\u001b\\\u001b[32m'default'\u001b[0m\u001b]8;;\u001b\\.                                           \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "999b11775a63496e9b51ef6d48924ca9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:51 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2.522</span>. Minimum cost depends on task      \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>execution details. Use <span style=\"color: #008000; text-decoration-color: #008000\">'web.real_cost(task_id)'</span> to get the billed \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>FlexCredit cost after a simulation run.                           \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:51 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m2.522\u001b[0m. Minimum cost depends on task      \n",
       "\u001b[2;36m              \u001b[0mexecution details. Use \u001b[32m'web.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed \n",
       "\u001b[2;36m              \u001b[0mFlexCredit cost after a simulation run.                           \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:52 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2.522</span>. Minimum cost depends on task      \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>execution details. Use <span style=\"color: #008000; text-decoration-color: #008000\">'web.real_cost(task_id)'</span> to get the billed \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>FlexCredit cost after a simulation run.                           \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:52 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m2.522\u001b[0m. Minimum cost depends on task      \n",
       "\u001b[2;36m              \u001b[0mexecution details. Use \u001b[32m'web.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed \n",
       "\u001b[2;36m              \u001b[0mFlexCredit cost after a simulation run.                           \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "job = web.Job(simulation=sim_coupler, task_name=\"coupling\")\n",
    "estimated_cost = web.estimate_cost(job.task_id)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93aac9c9-5a42-412c-882d-4634305b8e10",
   "metadata": {},
   "source": [
    "Run the simulation after the cost is checked."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "bd5d9d94-49f5-4c7b-bf64-6d67777e6f6a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:52.299126Z",
     "iopub.status.busy": "2025-05-15T10:49:52.299027Z",
     "iopub.status.idle": "2025-05-15T10:49:55.879759Z",
     "shell.execute_reply": "2025-05-15T10:49:55.879402Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:53 CEST </span>status = success                                                  \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:53 CEST\u001b[0m\u001b[2;36m \u001b[0mstatus = success                                                  \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8c65c0446b5444aa8aa7c904b7c6a458",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:55 CEST </span>loading simulation from data/simulation_data.hdf5                 \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:55 CEST\u001b[0m\u001b[2;36m \u001b[0mloading simulation from data/simulation_data.hdf5                 \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sim_data_coupler = job.run(path=\"data/simulation_data.hdf5\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f42e7d4-1685-4646-91a6-579364e26c04",
   "metadata": {},
   "source": [
    "After the simulation is finished, extract and plot the coupling efficiency and return loss from 1500 nm to 1600 nm. We see a good coupling efficiency of around 1 dB across the entire wavelength range and a very low return loss, indicating efficient coupling. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "0901db4c-6b08-46a5-849d-82a7cb47a09a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:55.891819Z",
     "iopub.status.busy": "2025-05-15T10:49:55.891760Z",
     "iopub.status.idle": "2025-05-15T10:49:55.938954Z",
     "shell.execute_reply": "2025-05-15T10:49:55.938735Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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YdCgQRg1alTxBJKdDdy+XTznNpavr1FDQC5evIimTZvCy8sLM2bMQM2aNZGZmYnffvsNAwcOxOnTp80QbP4CAwNlff0c586dAwB06tRJ2+/FUJmzs7PR57S3t7eY96c0kyYBUVFP969eBZYsAYYMkS+muDjg8eOn+/b2Ik4iMiPJygwePFh66aWXJADSiRMntOVpaWlSQECA1L17d+nkyZPSd999J7m6ukqLFy8u1PnT0tIkAFJaWppO+ePHj6W///5bevz4sSi4cUOSxDI78m03bhj1nl566SWpTJky0oMHD/SO3b17V/v40qVLUseOHSV3d3fJw8ND6tKli5Samqo93rt3b6lTp046zx8yZIgUFRWl3Y+KipIGDhwoDRw4UCpZsqTk6+srffzxx1J2dra2TmhoqPT5559r9wFI69evlyRJki5cuCABkNauXStFR0dLrq6uUq1ataT9+/frvO6SJUuksmXLSq6urlLnzp2lWbNmSZ6engVeh5SUFKlLly6Sp6en5O3tLXXs2FG6cOGCJEmSNGHCBAmAzmaozNB1yMrKkqZNmyaFh4dLTk5OUnBwsPTpp5/qvJ/cn9W//vpLatu2reTu7i75+/tLPXr0kG7evKlzDQcNGiSNHDlS8vb2lgICAqQJEybovJe7d+9K77zzjuTv7y85OztL1atXlzZu3Cg9ePBA8vDwkH788Ued+uvXr5fc3NwktVqtd130Pts2pFUr3V+ZgABJevhQnlguXZIkJyfdePr3lycWIluU3/d3XlbVx2fLli3Ytm0bZs6cqXfsm2++QUZGBpYvX47q1auja9euGDx4MGbPni1DpJbjzp072Lp1KwYOHAh3d3e9415eXgCA7OxsdOrUCXfu3MGePXsQHx+P8+fP48033yz0a65atQoODg44fPgw5syZg9mzZ2NpITtYjB07FiNGjEBCQgIqVaqEt956C0+ePAEA7Nu3D++99x6GDBmChIQEtG7dGlOe0UkiMzMTMTEx8PDwwN69e7Fv3z6UKFECbdu2RUZGBkaMGIEV/w39uXbtGq5du2awzJAxY8Zg6tSpGDduHP7++298++23CAgIMFj33r17aNmyJerWrYujR49i69atuH79Ot544w29a+ju7o5Dhw5h+vTp+OSTTxAfHw9A/Fu99NJL2LdvH77++mv8/fffmDp1Kuzt7eHu7o6u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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# extract the transmission data from the mode monitor\n",
    "T = np.abs(sim_data_coupler[\"T\"].amps.sel(mode_index=0, direction=\"+\")) ** 2\n",
    "R = np.abs(sim_data_coupler[\"R\"].amps.sel(mode_index=0, direction=\"-\")) ** 2\n",
    "\n",
    "plt.plot(ldas, 10 * np.log10(T), c=\"red\", linewidth=3, label=\"Coupling efficiency\")\n",
    "plt.plot(ldas, 10 * np.log10(R), c=\"blue\", linewidth=3, label=\"Return loss\")\n",
    "plt.ylim(-45, 0)\n",
    "plt.xlabel(r\"Wavelength ($\\mu m$)\")\n",
    "plt.legend()\n",
    "plt.ylabel(\"dB\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f76b4f7-b6d4-495a-bff5-b3230baa94da",
   "metadata": {},
   "source": [
    "Plot the field distribution to visualize the coupling."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "22586667-9126-40bd-9174-b1b63ac7ba52",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:55.940134Z",
     "iopub.status.busy": "2025-05-15T10:49:55.940055Z",
     "iopub.status.idle": "2025-05-15T10:49:56.131462Z",
     "shell.execute_reply": "2025-05-15T10:49:56.131190Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc8AAAHWCAYAAAARoQJ4AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAggBJREFUeJzt3Xl8E3X+P/DXTNr0oLSVoxeXlbtc5bIEUREqFbsIK8sPXJYii7C6hRW7grJCuXSrqIAHggdQD1iU/SIqsNwCIgXlWjkUAVkrQgqIbaHSIzOf3x+TmWRyp5k0afp+9jG0mfnM5DOhzTufm2OMMRBCCCHEY3ygM0AIIYTUNxQ8CSGEEC9R8CSEEEK8RMGTEEII8RIFT0IIIcRLFDwJIYQQL1HwJIQQQrxEwZMQQgjxEgVPQgghxEsUPEm9tXv3bnAch927dwc6K8QPvvrqK+j1evz44491/ty//PILGjVqhM2bN9f5c5P6gYInCXpvvPEGCgsLA52NWlmzZg2WLFkS6GyorFixAp07d0ZkZCTat2+P1157zeNzq6qq8NRTTyElJQVRUVHIyMjA9u3bHabdv38/BgwYgOjoaCQlJeFvf/sbbty44fFzPfPMM3jooYfQpk0bj8/RStOmTfHII49g9uzZdf7cpJ5ghAS5Ll26sLvvvttuvyAI7ObNm0wQhLrPlIeys7NZmzZtAp0NxfLlyxkANnLkSPbWW2+xcePGMQDs+eef9+j8MWPGsLCwMPbkk0+yN998kxkMBhYWFsa++OILVbqjR4+yyMhI1rNnT7Zs2TL2zDPPsIiICHbfffd59DxHjx5lANj+/fu9vketnDp1igFgO3fuDFgeSPCi4FlP3LhxI9BZCBhnwbM+CKbg+dtvv7GmTZuy7Oxs1f6xY8eyRo0asWvXrrk8/+DBgwwAe/HFF5V9N2/eZG3btmUGg0GVdujQoSw5OZmVlZUp+95++20GgG3dutVtXv/2t7+x1q1bM1EUPbk1v+natSsbN25cQPNAghMFzwC4cOEC+/Of/8ySk5OZXq9nt956K3v00UdZVVUVY4yxVatWMQBs9+7d7LHHHmPNmzdn8fHxyvlLly5laWlpTK/Xs+TkZPbXv/6V/frrr6rn+P7779mDDz7IEhMTWUREBGvRogUbPXo0Ky0tVdJs27aN3XHHHSwuLo41atSIdejQgc2cOdNt/j05r7KykuXn57O2bdsyvV7PWrZsyaZPn84qKyvtrvf++++zvn37sqioKBYfH8/uvPNO5Q22TZs2DIBqkwPp559/zgCwzz//XHW9jz76iPXq1YtFRkaypk2bsrFjx7ILFy6o0owfP541atSIXbhwgQ0fPpw1atSINWvWjP39739nJpPJ7WuwYcMGdv/99yv/h7fddhubP3++6ty7777bLu+uAunKlSsZALZixQrV/ueee44BYJs2bXKbL1c2bdrk8Dr79+9nANj777/v8vzp06cznU6nCoiMMfbPf/6TAWDFxcWMMcbKyspYWFgYmz59uipdVVUVi4mJYRMnTnSb19atW7OHH37Ybj8ANmfOHLv9bdq0YePHj1cey39DX3zxBZs6dSpr1qwZi4uLY5MnT2ZVVVXs119/ZePGjWPx8fEsPj6eTZ8+3WGgfuKJJ1h8fHzAgzgJPmF1WENMAFy8eBG33347SktLMXnyZHTq1Ak///wz/v3vf+O3336DXq9X0v71r39F8+bNkZ+fj4qKCgDA3LlzMW/ePGRmZuKxxx7D6dOnsWzZMnz99df48ssvER4ejurqamRlZaGqqgpTp05FUlISfv75Z2zcuBGlpaWIi4vDyZMn8bvf/Q7du3fH/PnzERERgbNnz+LLL790mX9PzhNFEQ888AD27duHyZMno3Pnzjh+/DgWL16M77//Hhs2bFDSzps3D3PnzkX//v0xf/586PV6HDx4ELt27cKQIUOwZMkSTJ06FTExMXjmmWcAAImJiU7zV1hYiAkTJqBv374oKChASUkJXnnlFXz55Zc4evQo4uPjlbSCICArKwsZGRl46aWXsGPHDrz88sto27YtHnvsMZevQ2FhIWJiYpCXl4eYmBjs2rUL+fn5KC8vx4svvghAarMrKyvDhQsXsHjxYgBATEyM02tOmDAB69evR15eHu699160atUKx48fx7x58zBx4kTcf//9Stpff/0VgiC4zCMAREdHIzo6GgBw9OhRAECfPn1UaXr37g2e53H06FH86U9/cnqto0ePokOHDoiNjVXtv/322wEAx44dU/JsMpnsnkev1yM9PV3JhzM///wziouL0atXL7f35478+z9v3jwcOHAAb731FuLj47F//360bt0a//znP7F582a8+OKL6Nq1K3JyclTn9+7dG4sXL8bJkyfRtWtXn/NDQkigo3dDk5OTw3ieZ19//bXdMfnTrfypecCAAaqSzOXLl5ler2dDhgxRtfO9/vrrDABbuXIlY8zSXrRu3Tqn+Vi8eDEDwK5cueJV/j057/3332c8z9u1g8ntbV9++SVjjLEzZ84wnufZ73//e7t2S+tP+s6qbW1LntXV1SwhIYF17dqV3bx5U0m3ceNGBoDl5+cr+8aPH88AsPnz56uu2bNnT9a7d2/XLwKTqkBt/eUvf2HR0dGq0rW31baXLl1iTZo0Yffeey+rqqpiPXv2ZK1bt7Yr7TkqkTvarEtpubm5TKfTOXze5s2bszFjxrjMW5cuXdigQYPs9p88eZIBYMuXL2eMMbZu3ToGgO3du9cu7ahRo1hSUpLL59mxYwcDwD777DO7Y7b3JHNW8szKylL9LhkMBsZxHHv00UeVfSaTibVs2dLh75hcKv/www9d5pk0PNTbtg6JoogNGzZg2LBhdp/KAYDjONXjSZMmQafTKY937NiB6upqTJs2DTzPq9LFxsZi06ZNAIC4uDgAwNatW/Hbb785zItcAvvkk08giqLH9+DJeevWrUPnzp3RqVMnXL16VdkGDRoEAPj8888BABs2bIAoisjPz1fdD2D/Wnji0KFDuHz5Mv76178iMjJS2Z+dnY1OnTopr4+1Rx99VPX4zjvvxA8//OD2uaKiopSfr1+/jqtXr+LOO+/Eb7/9hu+++87rvMuSkpKwdOlSbN++HXfeeSeOHTuGlStX2pX2Vq9eje3bt7vdrEtSN2/eVNVsWIuMjMTNmzdd5u3mzZuIiIhweK583Pq7s7TunueXX34BANxyyy0u03li4sSJqt+ljIwMMMYwceJEZZ9Op0OfPn0c/r/Lebh69arPeSGhhapt69CVK1dQXl7ucfVPamqq6rE83q1jx46q/Xq9HrfddptyPDU1FXl5eVi0aBFWr16NO++8Ew888AD+9Kc/KYF19OjReOedd/DII4/g6aefxuDBg/Hggw/iD3/4g10gs+bJeWfOnMG3336L5s2bO7zG5cuXAQDnzp0Dz/NIS0vz6PVwx9nrAwCdOnXCvn37VPsiIyPt8njLLbfg119/dftcJ0+exKxZs7Br1y6Ul5erjpWVlXmbdZUxY8bggw8+wKZNmzB58mQMHjzYLs0dd9zh9XWjoqJQXV3t8FhlZaXqA4Gz86uqqhyeKx+3/u4srbvnkTHGPErnSuvWrVWP5d//Vq1a2e139P8u56E2H+ZIaKPgGcQ8fZNx5OWXX8bDDz+MTz75BNu2bcPf/vY3FBQU4MCBA2jZsiWioqKwd+9efP7559i0aRO2bNmCDz/8EIMGDcK2bdtUJV7bPLk7TxRFdOvWDYsWLXJ4Dds3rkBxdo/ulJaW4u6770ZsbCzmz5+Ptm3bIjIyEkeOHMFTTz3lVUnekV9++QWHDh0CAJw6dQqiKNp9oLly5YpHbZ4xMTFKO2tycjIEQcDly5eRkJCgpKmursYvv/yClJQUl9dKTk7Gzz//bLf/0qVLAKCcn5ycrNpvm9bd8zRt2hQAPPoQI3MWaJ39Hzva7+gach6aNWvmcV5Iw0DVtnWoefPmiI2NxYkTJ2p1vjxY/PTp06r91dXVOH/+vN1g8m7dumHWrFnYu3cvvvjiC/z8889Yvny5cpzneQwePBiLFi3CqVOn8Nxzz2HXrl1Ktaoz7s5r27Ytrl27hsGDByMzM9Nuk0uGbdu2hSiKOHXqlMvn8/RTv7PXR96n1WD73bt345dffkFhYSEef/xx/O53v0NmZqbDasbalFhyc3Nx/fp1FBQUYN++fQ4nWejbty+Sk5Pdbi+99JJyTnp6OgAogVl26NAhiKKoHHcmPT0d33//vV1J++DBg6rrd+3aFWFhYXbPU11djWPHjrl9nk6dOgEAzp8/7/D49evX7fbJtRlak/PQuXNnv1yf1F8UPOsQz/MYMWIEPvvsM7s3FsB9NVVmZib0ej1effVVVdoVK1agrKwM2dnZAIDy8nKYTCbVud26dQPP80pV2rVr1+yuL7+pOapuk3ly3v/7f/8PP//8M95++227tDdv3lR6Do8YMQI8z2P+/Pl2pTXr+2vUqBFKS0ud5knWp08fJCQkYPny5ap7+M9//oNvv/1WeX18JZdarPNYXV2NN954wy5to0aNvKrG/fe//40PP/wQzz//PJ5++mmMGTMGs2bNwvfff69KV5s2z0GDBqFJkyZYtmyZ6lrLli1DdHS06vW5evUqvvvuO1Wb+R/+8AcIgoC33npL2VdVVYVVq1YhIyNDqVGIi4tDZmYmPvjgA1Wge//993Hjxg2MGjXK5WvQokULtGrVyuHfCAC76Rj/85//oLKyUpNqXluHDx9GXFwcunTpovm1ST0XqJ5KDdWFCxdYUlISi46OZtOmTWNvvvkmmzt3LuvSpYsyVlPuKeioR+6cOXMYADZkyBD2+uuvs6lTpzKdTsf69u3LqqurGWOMffzxx6xFixZs2rRp7I033mCvvvoq69u3LwsPD2dFRUWMMcYef/xx1rNnTzZr1iz29ttvs+eee461aNGCtWzZUjUW1JYn5wmCwO6//37GcRwbM2YMe+2119iSJUvYo48+ypo0aaK6r9mzZzMArH///uyll15ir732GsvJyWFPP/20kuavf/0r4ziOLViwgP3rX/9SZnxxNM5Tfu0yMjLYkiVL2MyZM1l0dDS79dZbVWNh5XGezl5fV65evcpuueUW1qZNG/byyy+zRYsWsZ49e7IePXrY5WfhwoUMAHviiSfYmjVr2Keffur0uiUlJaxZs2bsnnvuUXqIXr16lSUmJjKDwaDJTEpLly5lANgf/vAH9vbbb7OcnBwGgD333HOqdPLrYDuGdtSoUcoYzjfffJP179+fhYWFsT179qjSHT58mEVERKhmGIqMjGRDhgzxKJ9TpkxhLVq0sBtfCYBFRUWxoUOHsmXLlrHZs2ez2NhYFhcXx9q1a8fWrFnDGHP+NyTfl21vcWe/D127dmV/+tOfPMozaVgoeAbAjz/+yHJycljz5s1ZREQEu+2221hubq7dJAmOgidj0tCUTp06sfDwcJaYmMgee+wxVWD44Ycf2J///GfWtm1bFhkZyZo0acLuuecetmPHDiXNzp072fDhw1lKSgrT6/UsJSWFPfTQQ+z77793mXdPz6uurmYvvPAC69KlC4uIiGC33HIL6927N5s3b57dsIuVK1eynj17Kunuvvtutn37duW40Whk2dnZrHHjxh5NkvDhhx8q12vSpInLSRJseRI8GWPsyy+/ZP369WNRUVEsJSWFzZgxg23dutUuPzdu3GB//OMfWXx8vNtJEh588EHWuHFj9r///U+1/5NPPmEA2AsvvOA2X5546623WMeOHZler2dt27ZlixcvtgtSzoLnzZs32ZNPPsmSkpJYREQE69u3L9uyZYvD5/niiy9Y//79WWRkJGvevDnLzc1l5eXlHuXxyJEjyiQH1gCwvLw8NmrUKBYVFcWSk5PZ66+/zpYvX86io6PZI488whjTJnh+++23DIDq74YQGceYH+o6CCHER4MHD0ZKSgref/99ZR/HcZgzZw7mzp3r9+ef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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sim_data_coupler.plot_field(field_monitor_name=\"field\", field_name=\"E\", val=\"abs\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "54b2abdb-475c-4a6b-8a0a-a598d40d60fb",
   "metadata": {},
   "source": [
    "## Simulation of the Plasmonic Antenna"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b37f1b36-6696-47df-b5b2-0ec1d5dbaafe",
   "metadata": {},
   "source": [
    "Once the coupling region design is complete, we move on to design the plasmonic antenna. In this case, we will explore the Vivaldi antenna design with exponential tapers. That is, the taper profile is described by $x = A e^{Rz} + B$, where $R$ determines the shape of the profile. \n",
    "\n",
    "The design and optimization of the antenna usually require a good amount of simulations, but for the sake of keeping the notebook short, we will skip the optimization procedure and only simulate the optimized design. The optimization can be done via parameter sweep or other optimization techniques as demonstrated in other examples in the [example library](https://www.flexcompute.com/tidy3d/learning-center/example-library/).\n",
    "\n",
    "For the optimal design, the antenna length $L_a$ is 1.75 μm and $R$ is 3 μm$^{-1}$. We will first create the antenna structure and then simulate it. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "053d854d-ac78-4d9f-9656-ac5bfebfd50d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:56.132862Z",
     "iopub.status.busy": "2025-05-15T10:49:56.132758Z",
     "iopub.status.idle": "2025-05-15T10:49:56.140575Z",
     "shell.execute_reply": "2025-05-15T10:49:56.140124Z"
    }
   },
   "outputs": [],
   "source": [
    "L_a = 1.75  # antenna length\n",
    "R = 3  # shape parameter\n",
    "\n",
    "# set up the system of equations\n",
    "# s/2 = A * exp(R * L_c_opt) + B\n",
    "# s/2+p = A * exp(R * (L_c_opt+L_a)) + B\n",
    "\n",
    "# this can be written as a matrix equation:\n",
    "# [exp(R * L_c_opt), 1] [A] = [s/2]\n",
    "# [exp(R * (L_c_opt+L_a)), 1] [B] = [s/2+p]\n",
    "\n",
    "# create the matrix\n",
    "matrix = np.array([[np.exp(R * L_c_opt), 1], [np.exp(R * (L_c_opt + L_a)), 1]])\n",
    "\n",
    "# create the right-hand side vector\n",
    "vector = np.array([s / 2, s / 2 + p])\n",
    "\n",
    "# solve the system of equations\n",
    "A, B = np.linalg.solve(matrix, vector)\n",
    "\n",
    "\n",
    "# function to compute the x coordinate of the exponential curve given the z coordinate\n",
    "def compute_x(z):\n",
    "    return A * np.exp(R * z) + B\n",
    "\n",
    "\n",
    "n_pt = 100  # number of points for the polyslab\n",
    "\n",
    "# compute the vertices for the left antenna arm\n",
    "vertices = [[compute_x(z), z] for z in np.linspace(L_c_opt, L_c_opt + L_a, n_pt)]\n",
    "vertices.append([s / 2 + p, L_c_opt])\n",
    "\n",
    "# create the left antenna arm structure\n",
    "antenna_left = td.Structure(\n",
    "    geometry=td.PolySlab(vertices=vertices, axis=1, slab_bounds=(h / 2 + g, h / 2 + g + t)),\n",
    "    medium=ag,\n",
    ")\n",
    "\n",
    "# similarly for the right antenna arm\n",
    "vertices = [[-compute_x(z), z] for z in np.linspace(L_c_opt, L_c_opt + L_a, n_pt)]\n",
    "vertices.append([-s / 2 - p, L_c_opt])\n",
    "antenna_right = td.Structure(\n",
    "    geometry=td.PolySlab(vertices=vertices, axis=1, slab_bounds=(h / 2 + g, h / 2 + g + t)),\n",
    "    medium=ag,\n",
    ")\n",
    "\n",
    "# create the plasmonic waveguide structures\n",
    "slot_left = td.Structure(\n",
    "    geometry=td.Box.from_bounds(\n",
    "        rmin=(-s / 2 - p, h / 2 + g, 0), rmax=(-s / 2, h / 2 + g + t, L_c_opt)\n",
    "    ),\n",
    "    medium=ag,\n",
    ")\n",
    "\n",
    "slot_right = td.Structure(\n",
    "    geometry=td.Box.from_bounds(\n",
    "        rmin=(s / 2, h / 2 + g, 0), rmax=(s / 2 + p, h / 2 + g + t, L_c_opt)\n",
    "    ),\n",
    "    medium=ag,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48bfe178-d662-4c30-baf4-f0a9d906abc8",
   "metadata": {},
   "source": [
    "To ensure the antenna structure is created correctly, we can plot the shape and visualize it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "23a5b64b-980f-49ff-af7b-c305b0c74891",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:56.141557Z",
     "iopub.status.busy": "2025-05-15T10:49:56.141490Z",
     "iopub.status.idle": "2025-05-15T10:49:56.180785Z",
     "shell.execute_reply": "2025-05-15T10:49:56.180291Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "antenna_left.plot(y=h / 2 + g + t / 2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fb8e3e03-b8d4-4a53-afc7-c8107591b208",
   "metadata": {},
   "source": [
    "To investigate the performance of the antenna, we need to perform near field to far field projection using the [FieldProjectionAngleMonitor](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.FieldProjectionAngleMonitor.html). More specifically, we want to calculate the antenna directivity in the E-plane and H-plane. Therefore, we focus on `phi=0` and `phi=pi/2` respectively, where `phi` is the azimuth angles with respect to the global z axis. Note that the field projection monitor encloses the antenna but intersects the silicon waveguide. We require the surfaces of the field projection monitor to be in uniform medium only. To get around this, we set `exclude_surfaces` to `[\"z-\"]`. This way, the surface in the $z-$ direction is ignored in the calculation. This will introduce a small inaccuracy as some radiation in that direction is not captured. However, for the antenna, we are mainly interested in the forward radiation so this inaccuracy is acceptable. \n",
    "\n",
    "For the directivity calculation, we also need to know the total radiated power and thus we define a [FluxMonitor](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.FluxMonitor.html) surrounding the antenna."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "eb7b1d30-8d50-4b97-ae51-ada757b21970",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:56.181931Z",
     "iopub.status.busy": "2025-05-15T10:49:56.181834Z",
     "iopub.status.idle": "2025-05-15T10:49:56.184529Z",
     "shell.execute_reply": "2025-05-15T10:49:56.184066Z"
    }
   },
   "outputs": [],
   "source": [
    "# create a FieldProjectionAngleMonitor to perform the near field to far field transformation in spherical coordinates\n",
    "theta_array = np.linspace(0, 2 * np.pi, 200)  # theta angle range\n",
    "phi_array = np.linspace(0, np.pi / 2, 2)  # phi angle range\n",
    "\n",
    "# define the field projection monitor\n",
    "n2f_monitor = td.FieldProjectionAngleMonitor(\n",
    "    center=(0, h / 2, (L_c_opt + L_a) / 2),\n",
    "    size=(2 * p + s + w, 2 * (t + g + h), L_c_opt + L_a + 1.2 * buffer),\n",
    "    freqs=[freq0],\n",
    "    name=\"n2f_monitor\",\n",
    "    custom_origin=(0, 0, 0),\n",
    "    phi=phi_array,\n",
    "    theta=theta_array,\n",
    "    exclude_surfaces=[\"z-\"],\n",
    ")\n",
    "\n",
    "# define a flux monitor to calculate the total radiated power\n",
    "flux_monitor = td.FluxMonitor(\n",
    "    center=n2f_monitor.center,\n",
    "    size=n2f_monitor.size,\n",
    "    freqs=[freq0],\n",
    "    name=\"power\",\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96999b6c-2070-4dd6-837a-00178b712259",
   "metadata": {},
   "source": [
    "Create the antenna simulation. The overall settings are similar to that of the coupler simulation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "9bb8c0ad-4dbe-434a-91e7-7a16f29b432f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:56.185608Z",
     "iopub.status.busy": "2025-05-15T10:49:56.185510Z",
     "iopub.status.idle": "2025-05-15T10:49:56.274435Z",
     "shell.execute_reply": "2025-05-15T10:49:56.274093Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:56 CEST </span><span style=\"color: #800000; text-decoration-color: #800000\">WARNING: Structure at structures</span><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2</span><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">]</span><span style=\"color: #800000; text-decoration-color: #800000\"> was detected as being less    </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">than half of a central wavelength from a PML on side z-max. To    </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">avoid inaccurate results or divergence, please increase gap       </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">between any structures and PML or fully extend structure through  </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">the pml.                                                          </span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:56 CEST\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING: Structure at structures\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;31m]\u001b[0m\u001b[31m was detected as being less    \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31mthan half of a central wavelength from a PML on side z-max. To    \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31mavoid inaccurate results or divergence, please increase gap       \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31mbetween any structures and PML or fully extend structure through  \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31mthe pml.                                                          \u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">WARNING: Suppressed </span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">1</span><span style=\"color: #800000; text-decoration-color: #800000\"> WARNING message.                            </span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING: Suppressed \u001b[0m\u001b[1;36m1\u001b[0m\u001b[31m WARNING message.                            \u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# construct simulation\n",
    "sim_antenna = td.Simulation(\n",
    "    center=(0, h / 2, (L_c_opt + L_a) / 2),\n",
    "    size=(2 * (2 * p + s + w), 3 * (t + g + h), L_c_opt + L_a + 2 * buffer),\n",
    "    grid_spec=td.GridSpec.auto(min_steps_per_wvl=50, wavelength=lda0),\n",
    "    structures=[slot_left, slot_right, antenna_right, antenna_left, silicon_waveguide],\n",
    "    sources=[mode_source],\n",
    "    monitors=[flux_monitor, n2f_monitor],\n",
    "    run_time=run_time,\n",
    "    boundary_spec=td.BoundarySpec(\n",
    "        x=td.Boundary.absorber(),\n",
    "        y=td.Boundary.absorber(),\n",
    "        z=td.Boundary(plus=td.PML(), minus=td.Absorber(num_layers=60)),\n",
    "    ),\n",
    "    subpixel=td.SubpixelSpec(metal=td.VolumetricAveraging()),\n",
    "    medium=sio2,\n",
    "    symmetry=(-1, 0, 0),\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6568f908-3104-4fdf-b4e0-ea58224327a5",
   "metadata": {},
   "source": [
    "Visualize the simulation in 3D."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "cccd72d2-ebc5-43df-9d43-d89e8c4a31c0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:56.275751Z",
     "iopub.status.busy": "2025-05-15T10:49:56.275657Z",
     "iopub.status.idle": "2025-05-15T10:49:56.280628Z",
     "shell.execute_reply": "2025-05-15T10:49:56.280355Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <div class=\"simulation-viewer\" data-width=\"800\" data-height=\"800\" data-simulation=\"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\" ></div>\n",
       "    <script>\n",
       "        \n",
       "        /**\n",
       "        * Simulation Viewer Injector\n",
       "        *\n",
       "        * Monitors the document for elements being added in the form:\n",
       "        *\n",
       "        *    <div class=\"simulation-viewer\" data-width=\"800\" data-height=\"800\" data-simulation=\"{...}\" />\n",
       "        *\n",
       "        * This script will then inject an iframe to the viewer application, and pass it the simulation data\n",
       "        * via the postMessage API on request. The script may be safely included multiple times, with only the\n",
       "        * configuration of the first started script (e.g. viewer URL) applying.\n",
       "        *\n",
       "        */\n",
       "        (function() {\n",
       "            const TARGET_CLASS = \"simulation-viewer\";\n",
       "            const ACTIVE_CLASS = \"simulation-viewer-active\";\n",
       "            const VIEWER_URL = \"https://tidy3d.simulation.cloud/simulation-viewer\";\n",
       "\n",
       "            class SimulationViewerInjector {\n",
       "                constructor() {\n",
       "                    for (var node of document.getElementsByClassName(TARGET_CLASS)) {\n",
       "                        this.injectViewer(node);\n",
       "                    }\n",
       "\n",
       "                    // Monitor for newly added nodes to the DOM\n",
       "                    this.observer = new MutationObserver(this.onMutations.bind(this));\n",
       "                    this.observer.observe(document.body, {childList: true, subtree: true});\n",
       "                }\n",
       "\n",
       "                onMutations(mutations) {\n",
       "                    for (var mutation of mutations) {\n",
       "                        if (mutation.type === 'childList') {\n",
       "                            /**\n",
       "                            * Have found that adding the element does not reliably trigger the mutation observer.\n",
       "                            * It may be the case that setting content with innerHTML does not trigger.\n",
       "                            *\n",
       "                            * It seems to be sufficient to re-scan the document for un-activated viewers\n",
       "                            * whenever an event occurs, as Jupyter triggers multiple events on cell evaluation.\n",
       "                            */\n",
       "                            var viewers = document.getElementsByClassName(TARGET_CLASS);\n",
       "                            for (var node of viewers) {\n",
       "                                this.injectViewer(node);\n",
       "                            }\n",
       "                        }\n",
       "                    }\n",
       "                }\n",
       "\n",
       "                injectViewer(node) {\n",
       "                    // (re-)check that this is a valid simulation container and has not already been injected\n",
       "                    if (node.classList.contains(TARGET_CLASS) && !node.classList.contains(ACTIVE_CLASS)) {\n",
       "                        // Mark node as injected, to prevent re-runs\n",
       "                        node.classList.add(ACTIVE_CLASS);\n",
       "\n",
       "                        var uuid;\n",
       "                        if (window.crypto && window.crypto.randomUUID) {\n",
       "                            uuid = window.crypto.randomUUID();\n",
       "                        } else {\n",
       "                            uuid = \"\" + Math.random();\n",
       "                        }\n",
       "\n",
       "                        var frame = document.createElement(\"iframe\");\n",
       "                        frame.width = node.dataset.width || 800;\n",
       "                        frame.height = node.dataset.height || 800;\n",
       "                        frame.style.cssText = `width:${frame.width}px;height:${frame.height}px;max-width:none;border:0;display:block`\n",
       "                        frame.src = VIEWER_URL + \"?uuid=\" + uuid;\n",
       "\n",
       "                        var postMessageToViewer;\n",
       "                        postMessageToViewer = event => {\n",
       "                            if(event.data.type === 'viewer' && event.data.uuid===uuid){\n",
       "                                frame.contentWindow.postMessage({ type: 'jupyter', uuid, value: node.dataset.simulation, fileType: 'hdf5'}, '*');\n",
       "\n",
       "                                // Run once only\n",
       "                                window.removeEventListener('message', postMessageToViewer);\n",
       "                            }\n",
       "                        };\n",
       "                        window.addEventListener(\n",
       "                            'message',\n",
       "                            postMessageToViewer,\n",
       "                            false\n",
       "                        );\n",
       "\n",
       "                        node.appendChild(frame);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "\n",
       "            if (!window.simulationViewerInjector) {\n",
       "                window.simulationViewerInjector = new SimulationViewerInjector();\n",
       "            }\n",
       "        })();\n",
       "    \n",
       "    </script>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sim_antenna.plot_3d()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b2c825e-61bd-431c-ad2c-fa9dec31acbe",
   "metadata": {},
   "source": [
    "Submit the simulation to the cloud. The cost of this simulation will be slightly higher than that of the previous simulation due to its larger simulation domain. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "0f8cea33-cea0-4859-bc95-2cff33236c23",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:49:56.281649Z",
     "iopub.status.busy": "2025-05-15T10:49:56.281577Z",
     "iopub.status.idle": "2025-05-15T10:52:32.690299Z",
     "shell.execute_reply": "2025-05-15T10:52:32.689957Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Created task <span style=\"color: #008000; text-decoration-color: #008000\">'antenna'</span> with task_id                               \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #008000; text-decoration-color: #008000\">'fdve-bc0e0939-2792-44b9-b131-f70c8bf53647'</span> and task_type <span style=\"color: #008000; text-decoration-color: #008000\">'FDTD'</span>. \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mCreated task \u001b[32m'antenna'\u001b[0m with task_id                               \n",
       "\u001b[2;36m              \u001b[0m\u001b[32m'fdve-bc0e0939-2792-44b9-b131-f70c8bf53647'\u001b[0m and task_type \u001b[32m'FDTD'\u001b[0m. \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>View task using web UI at                                         \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><a href=\"https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\" target=\"_blank\"><span style=\"color: #008000; text-decoration-color: #008000\">'https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-27</span></a>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><a href=\"https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\" target=\"_blank\"><span style=\"color: #008000; text-decoration-color: #008000\">92-44b9-b131-f70c8bf53647'</span></a>.                                       \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mView task using web UI at                                         \n",
       "\u001b[2;36m              \u001b[0m\u001b]8;id=615350;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[32m'https://tidy3d.simulation.cloud/workbench?\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=632477;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[32mtaskId\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=615350;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[32m=\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=989316;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[32mfdve\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=615350;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[32m-bc0e0939-27\u001b[0m\u001b]8;;\u001b\\\n",
       "\u001b[2;36m              \u001b[0m\u001b]8;id=615350;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[32m92-44b9-b131-f70c8bf53647'\u001b[0m\u001b]8;;\u001b\\.                                       \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Task folder: <a href=\"https://tidy3d.simulation.cloud/folders/folder-bfe11006-2cae-4abd-bc02-04b6047e01be\" target=\"_blank\"><span style=\"color: #008000; text-decoration-color: #008000\">'default'</span></a>.                                           \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mTask folder: \u001b]8;id=510952;https://tidy3d.simulation.cloud/folders/folder-bfe11006-2cae-4abd-bc02-04b6047e01be\u001b\\\u001b[32m'default'\u001b[0m\u001b]8;;\u001b\\.                                           \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "cc92fd24116849269d99d2b3e8521edf",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:58 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">3.217</span>. Minimum cost depends on task      \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>execution details. Use <span style=\"color: #008000; text-decoration-color: #008000\">'web.real_cost(task_id)'</span> to get the billed \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>FlexCredit cost after a simulation run.                           \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:58 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m3.217\u001b[0m. Minimum cost depends on task      \n",
       "\u001b[2;36m              \u001b[0mexecution details. Use \u001b[32m'web.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed \n",
       "\u001b[2;36m              \u001b[0mFlexCredit cost after a simulation run.                           \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:49:59 CEST </span>status = queued                                                   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:49:59 CEST\u001b[0m\u001b[2;36m \u001b[0mstatus = queued                                                   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>To cancel the simulation, use <span style=\"color: #008000; text-decoration-color: #008000\">'web.abort(task_id)'</span> or             \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #008000; text-decoration-color: #008000\">'web.delete(task_id)'</span> or abort/delete the task in the web UI.     \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Terminating the Python script will not stop the job running on the\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>cloud.                                                            \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mTo cancel the simulation, use \u001b[32m'web.abort\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m or             \n",
       "\u001b[2;36m              \u001b[0m\u001b[32m'web.delete\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m or abort/delete the task in the web UI.     \n",
       "\u001b[2;36m              \u001b[0mTerminating the Python script will not stop the job running on the\n",
       "\u001b[2;36m              \u001b[0mcloud.                                                            \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "817919b76a4040ce92939252e23f033f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:50:06 CEST </span>status = preprocess                                               \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:50:06 CEST\u001b[0m\u001b[2;36m \u001b[0mstatus = preprocess                                               \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:50:11 CEST </span>starting up solver                                                \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:50:11 CEST\u001b[0m\u001b[2;36m \u001b[0mstarting up solver                                                \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>running solver                                                    \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mrunning solver                                                    \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fb04f747d9c6462cbbe7573153c03fc9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:52:26 CEST </span>early shutoff detected at <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">80</span>%, exiting.                           \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:52:26 CEST\u001b[0m\u001b[2;36m \u001b[0mearly shutoff detected at \u001b[1;36m80\u001b[0m%, exiting.                           \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>status = postprocess                                              \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mstatus = postprocess                                              \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ced86cfe15b14cf9b404cc31760be3fe",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:52:28 CEST </span>status = success                                                  \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:52:28 CEST\u001b[0m\u001b[2;36m \u001b[0mstatus = success                                                  \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:52:31 CEST </span>View simulation result at                                         \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><a href=\"https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\" target=\"_blank\"><span style=\"color: #000080; text-decoration-color: #000080; text-decoration: underline\">'https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-27</span></a>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><a href=\"https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\" target=\"_blank\"><span style=\"color: #000080; text-decoration-color: #000080; text-decoration: underline\">92-44b9-b131-f70c8bf53647'</span></a><span style=\"color: #000080; text-decoration-color: #000080; text-decoration: underline\">.</span>                                       \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:52:31 CEST\u001b[0m\u001b[2;36m \u001b[0mView simulation result at                                         \n",
       "\u001b[2;36m              \u001b[0m\u001b]8;id=310740;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[4;34m'https://tidy3d.simulation.cloud/workbench?\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=260486;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[4;34mtaskId\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=310740;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[4;34m=\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=300122;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[4;34mfdve\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=310740;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[4;34m-bc0e0939-27\u001b[0m\u001b]8;;\u001b\\\n",
       "\u001b[2;36m              \u001b[0m\u001b]8;id=310740;https://tidy3d.simulation.cloud/workbench?taskId=fdve-bc0e0939-2792-44b9-b131-f70c8bf53647\u001b\\\u001b[4;34m92-44b9-b131-f70c8bf53647'\u001b[0m\u001b]8;;\u001b\\\u001b[4;34m.\u001b[0m                                       \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e28e43b1e386439bae60305ac48ddc9e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:52:32 CEST </span>loading simulation from simulation_data.hdf5                      \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:52:32 CEST\u001b[0m\u001b[2;36m \u001b[0mloading simulation from simulation_data.hdf5                      \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">WARNING: Structure at structures</span><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2</span><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">]</span><span style=\"color: #800000; text-decoration-color: #800000\"> was detected as being less    </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">than half of a central wavelength from a PML on side z-max. To    </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">avoid inaccurate results or divergence, please increase gap       </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">between any structures and PML or fully extend structure through  </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">the pml.                                                          </span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING: Structure at structures\u001b[0m\u001b[1;31m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;31m]\u001b[0m\u001b[31m was detected as being less    \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31mthan half of a central wavelength from a PML on side z-max. To    \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31mavoid inaccurate results or divergence, please increase gap       \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31mbetween any structures and PML or fully extend structure through  \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31mthe pml.                                                          \u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">WARNING: Suppressed </span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">1</span><span style=\"color: #800000; text-decoration-color: #800000\"> WARNING message.                            </span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING: Suppressed \u001b[0m\u001b[1;36m1\u001b[0m\u001b[31m WARNING message.                            \u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">WARNING: Warning messages were found in the solver log. For more  </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #800000; text-decoration-color: #800000\">information, check </span><span style=\"color: #008000; text-decoration-color: #008000\">'SimulationData.log'</span><span style=\"color: #800000; text-decoration-color: #800000\"> or use                    </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #008000; text-decoration-color: #008000\">'web.download_log(task_id)'</span><span style=\"color: #800000; text-decoration-color: #800000\">.                                      </span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING: Warning messages were found in the solver log. For more  \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[31minformation, check \u001b[0m\u001b[32m'SimulationData.log'\u001b[0m\u001b[31m or use                    \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[32m'web.download_log\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m\u001b[31m.                                      \u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sim_data_antenna = web.run(simulation=sim_antenna, task_name=\"antenna\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0d5e2dd-c00b-4c10-864c-8a6fe8bc3fa1",
   "metadata": {},
   "source": [
    "Calculate and plot the antenna directivity in the E-plane and H-plane. We see a strong forward radiation with a directivity over 12 (~11 dB). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "d647b604-b191-49fc-9f1c-0e8383a44082",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-05-15T10:53:34.733997Z",
     "iopub.status.busy": "2025-05-15T10:53:34.733932Z",
     "iopub.status.idle": "2025-05-15T10:53:34.823622Z",
     "shell.execute_reply": "2025-05-15T10:53:34.823351Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAckAAAHQCAYAAADK5pEiAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsnXd4HNXVh9/dVe9W7726SpbcLXewKQZCAAMmmE4gJJQUQgidUAMfvSWhhB5Cs8GhuFuWLVm2ZFlW771r1cuW+f5Y79qyJVsr7YyK532efVZazZ17dyXNb865pygEQRCQkZGRkZGROQ3leC9ARkZGRkZmoiKLpIyMjIyMzDDIIikjIyMjIzMMskjKyMjIyMgMgyySMjIyMjIywyCLpIyMjIyMzDDIIikjIyMjIzMMskjKyMjIyMgMgyySMjIyMjIywyCLpIzMCHj00UdRKBTjvYxBjGVNCoWCRx991LILkpGZgsgiKXNO8v7776NQKEwPOzs7/P39Wbt2La+88gqdnZ3jvUQAenp6ePTRR9m1a5eo86SmpvLoo4+iVqtFnUdGZrKhkGu3ypyLvP/++9x44408/vjjhIWFodFoqK+vZ9euXfz8888EBwezefNmZs+eDYBWq0Wr1WJnZyfpOpubm/Hy8uKRRx45zfIby5r6+vqwsrLCysoKgL///e/88Y9/pKysjNDQUAusXEZmamA13guQkRlPLrjgApKSkkzfP/DAA+zYsYOLL76YSy65hLy8POzt7QcJynDo9XoGBgYkE9KRrGk4pBZ7GZnJiuxulZE5hVWrVvHQQw9RUVHBRx99BAy9/6dQKLjrrrv4+OOPmTFjBra2tvzwww8A1NTUcNNNN+Hj44OtrS0zZszg3XffPW2uvr4+Hn30UaKjo7Gzs8PPz4/LL7+ckpISysvL8fLyAuCxxx4zuYaNFuWpa5o5cyYrV648bQ69Xk9AQABXXHHFoLWffJ4//vGPAISFhZnmKS8vZ/ny5cyZM2fIzykmJoa1a9eO5COVkZm0yCIpIzMEv/rVrwD46aefznjcjh07uPfee9mwYQMvv/wyoaGhNDQ0sHDhQrZt28Zdd93Fyy+/TGRkJDfffDMvvfSSaaxOp+Piiy/mscceIzExkRdeeIG7776b9vZ2cnJy8PLy4s033wTgF7/4BR9++CEffvghl19++ZBr2bBhA3v27KG+vn7Q6ykpKdTW1nL11VcPOe7yyy/nmmuuAeD//u//TPN4eXnxq1/9iuzsbHJycgaNOXjwIIWFhVx33XVn/HxkZCY9gozMOch7770nAMLBgweHPcbV1VVISEgQBEEQHnnkEeHUfxdAUCqVwrFjxwa9fvPNNwt+fn5Cc3PzoNevvvpqwdXVVejp6REEQRDeffddARBefPHF0+bW6/WCIAhCU1OTAAiPPPLIacecuqaCggIBEF599dVBx915552Ck5OTaV7j2k8+5/PPPy8AQllZ2aCxarVasLOzE+6///5Br//ud78THB0dha6urtPWJSMzlZAtSRmZYXBycjprlOvy5cuZPn266XtBEPjyyy9Zv349giDQ3Nxseqxdu5b29nYOHz4MwJdffomnpye//e1vTzvvaFI7oqOjiY+P5/PPPze9ptPp+O9//8v69euxt7c3+5yurq5ceumlfPrppwjHY/x0Oh2ff/45l112GY6OjmafU0ZmMiGLpIzMMHR1deHs7HzGY8LCwgZ939TUhFqt5p133sHLy2vQ48YbbwSgsbERgJKSEmJiYkYdfDMUGzZsYN++fdTU1ACwa9cuGhsb2bBhw6jPef3111NZWcnevXsB2LZtGw0NDSaXtIzMVEaObpWRGYLq6mra29uJjIw843GnWmd6vR6A6667jk2bNg05xphWIgYbNmzggQce4IsvvuCee+7hP//5D66urqxbt27U51y7di0+Pj589NFHLFu2jI8++ghfX1/WrFljwZXLyExMZJGUkRmCDz/8EMDs6E0vLy+cnZ3R6XRnFZGIiAjS0tLQaDRYW1sPeYy5btewsDDmz5/P559/zl133cVXX33FZZddhq2t7RnHnWkelUrFtddey/vvv8+zzz7LN998w6233opKpTJrbTIykxHZ3Sojcwo7duzgiSeeICwsjI0bN5o1VqVS8ctf/pIvv/zytIhQMLhjjfzyl7+kubmZ11577bTjjPt/Dg4OAGZVwtmwYQMHDhzg3Xffpbm5eUSuVuPe4nDz/OpXv6KtrY3bb7+drq4uOapV5pxBtiRlzmn+97//kZ+fj1arpaGhgR07dvDzzz8TEhLC5s2bR5V0/8wzz7Bz504WLFjArbfeyvTp02ltbeXw4cNs27aN1tZWwLDX9+9//5v77ruP9PR0kpOT6e7uZtu2bdx5551ceuml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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "P0 = np.array(sim_data_antenna[\"power\"].flux)  # total radiated power of the antenna\n",
    "\n",
    "# angular radiated power of the antenna\n",
    "# by default, the power is calculated at 1 meter away from the antenna.\n",
    "# The 1e12 factor normalizes the power to unit distance (1 um)\n",
    "P_e = np.squeeze(\n",
    "    1e12 * sim_data_antenna[\"n2f_monitor\"].power.sel(f=freq0, phi=0, method=\"nearest\").values\n",
    ")\n",
    "D_e = 4 * np.pi * P_e / P0  # directivity of the antenna\n",
    "\n",
    "P_h = np.squeeze(\n",
    "    1e12\n",
    "    * sim_data_antenna[\"n2f_monitor\"].power.sel(f=freq0, phi=np.pi / 2, method=\"nearest\").values\n",
    ")\n",
    "D_h = 4 * np.pi * P_h / P0  # directivity of the antenna\n",
    "\n",
    "# plot the directivity in the E-plane and H-plane\n",
    "fig, ax = plt.subplots(subplot_kw={\"projection\": \"polar\"})\n",
    "ax.set_theta_direction(-1)\n",
    "ax.set_theta_offset(np.pi / 2.0)\n",
    "ax.plot(theta_array, D_h, c=\"red\", linestyle=\"--\", label=\"H plane\")\n",
    "ax.plot(theta_array, D_e, c=\"blue\", label=\"E plane\")\n",
    "ax.set_rlim(0, 15)\n",
    "ax.set_title(\"Directivity\")\n",
    "ax.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71fd4a2b-8b8c-450c-adab-e4db39a01469",
   "metadata": {},
   "source": [
    "The result confirms that the antenna design works well. In the referenced [paper](https://doi.org/10.1364/OE.25.016214), an optical wireless link simulation is performed where two antennas are separated over a long distance. One antenna functions as the transmitter while the other antenna functions as a receiver. The same power budget analysis can also be done via the Friis transmission equation. "
   ]
  }
 ],
 "metadata": {
  "applications": [
   "Passive photonic integrated circuit components",
   "Plasmonics",
   "Optical scattering and far-field radiation"
  ],
  "description": "This notebook demonstrates how to design a Vivaldi antenna integrated with silicon waveguide.",
  "feature_image": "./img/integrated_antenna.png",
  "features": [
   "Mode analysis",
   "Far field projection"
  ],
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "keywords": "antenna, photonic integrated circuits, design, silicon photonics, waveguide, directivity, Vivaldi, Tidy3D, FDTD",
  "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.12.3"
  },
  "title": "Integrated Plasmonic Vivaldi Antenna | Flexcompute",
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "04bdd81ce5e84a8bb097f2685a7dd891": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "08ec8745ae2d447f8475d115d7bc9e25": {
      "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_37fa9eca2e004407930736ca2c65f846",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">w=0.22          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:05</span>\nw=0.26          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\nw=0.30          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\nw=0.34          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\nw=0.38          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\nw=0.42          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:03</span>\nw=0.46          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:03</span>\nw=0.50          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:03</span>\n</pre>\n",
          "text/plain": "w=0.22          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:05\u001b[0m\nw=0.26          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\nw=0.30          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\nw=0.34          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\nw=0.38          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\nw=0.42          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:03\u001b[0m\nw=0.46          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:03\u001b[0m\nw=0.50          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:03\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "0ebe579cd80146228ac1bf3bb5901db6": {
      "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_b62d97cf96624c178e6abfd7428075d2",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Uploading data for 8 tasks <span style=\"color: #f92672; text-decoration-color: #f92672\">━━━━━━━━━━━━━━━━━━━━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">╺━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\"> 50%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:02</span>\n</pre>\n",
          "text/plain": "Uploading data for 8 tasks \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;5;237m╺\u001b[0m\u001b[38;5;237m━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m 50%\u001b[0m \u001b[33m0:00:02\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "1d0ec249b6054a0cbd3e2f91251bb0b4": {
      "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_ed65d8c496da437288d80d384f3a9967",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Uploading data for 9 tasks <span style=\"color: #f92672; text-decoration-color: #f92672\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\"> 89%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:02</span>\n</pre>\n",
          "text/plain": "Uploading data for 9 tasks \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;2;249;38;114m╸\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 89%\u001b[0m \u001b[33m0:00:02\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "2048d2542c074d84bf45c53db5a6b821": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "2170a1f749ed4ce6b0aff8739bba1e58": {
      "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_3238deeb1f0c4732be31c60d1a58be3f",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">n_eff=2.15      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:05</span>\nn_eff=2.20      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:05</span>\nn_eff=2.25      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\nn_eff=2.30      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\nn_eff=2.35      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\nn_eff=2.40      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\nn_eff=2.45      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:03</span>\nn_eff=2.50      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:03</span>\n</pre>\n",
          "text/plain": "n_eff=2.15      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:05\u001b[0m\nn_eff=2.20      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:05\u001b[0m\nn_eff=2.25      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\nn_eff=2.30      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\nn_eff=2.35      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\nn_eff=2.40      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\nn_eff=2.45      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:03\u001b[0m\nn_eff=2.50      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:03\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "2c8b0427ea574272b5b5deaf1d29b6a8": {
      "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_c689ae3adc5e4e5db9c9ec17e384b07e",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Uploading data for 8 tasks <span style=\"color: #f92672; text-decoration-color: #f92672\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">╺━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\"> 88%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:02</span>\n</pre>\n",
          "text/plain": "Uploading data for 8 tasks \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;5;237m╺\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 88%\u001b[0m \u001b[33m0:00:02\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "2d0b1a79bb124d40a43fc8e5ee65bb19": {
      "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_6fccc834781140d1b5df28253c4edc0d",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Downloading data for 8 tasks <span style=\"color: #f92672; text-decoration-color: #f92672\">━━━━━━━━━━━━━━━━━━━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">╺━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\"> 50%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:02</span>\n</pre>\n",
          "text/plain": "Downloading data for 8 tasks \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;5;237m╺\u001b[0m\u001b[38;5;237m━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m 50%\u001b[0m \u001b[33m0:00:02\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "3238deeb1f0c4732be31c60d1a58be3f": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "3704871fdde54502b0e6f35a94a57c37": {
      "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_990e27fb87614b20b18aa8059329aa6c",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Downloading data for 8 tasks <span style=\"color: #f92672; text-decoration-color: #f92672\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">╺━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\"> 88%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:03</span>\n</pre>\n",
          "text/plain": "Downloading data for 8 tasks \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;5;237m╺\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 88%\u001b[0m \u001b[33m0:00:03\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "37fa9eca2e004407930736ca2c65f846": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "55b01048c2694b6ba5df7fcccc3d5978": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "6fccc834781140d1b5df28253c4edc0d": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "8027ae3e7b284827a6d453216cd322f3": {
      "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_c514c0a366524e97bc92dc2905daf331",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Downloading data for 9 tasks <span style=\"color: #f92672; text-decoration-color: #f92672\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\"> 89%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:02</span>\n</pre>\n",
          "text/plain": "Downloading data for 9 tasks \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;2;249;38;114m╸\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 89%\u001b[0m \u001b[33m0:00:02\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "817919b76a4040ce92939252e23f033f": {
      "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_55b01048c2694b6ba5df7fcccc3d5978",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000\">🏃 </span> <span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">Waiting for 'antenna'...</span>\n</pre>\n",
          "text/plain": "\u001b[32m🏃 \u001b[0m \u001b[1;32mWaiting for 'antenna'...\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "8c65c0446b5444aa8aa7c904b7c6a458": {
      "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_b203d2a29c4b4dcfbccb3ca3893cac36",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">↓</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation_data.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">589.7/589.7</span> • <span style=\"color: #800000; text-decoration-color: #800000\">924.3 kB/s</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n                                              <span style=\"color: #008000; text-decoration-color: #008000\">kB         </span>                       \n</pre>\n",
          "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34msimulation_data.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m589.7/589.7\u001b[0m • \u001b[31m924.3 kB/s\u001b[0m • \u001b[36m0:00:00\u001b[0m\n                                              \u001b[32mkB         \u001b[0m                       \n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "990e27fb87614b20b18aa8059329aa6c": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "999b11775a63496e9b51ef6d48924ca9": {
      "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_9e35aab9059f498992ecd8f417d5a1e5",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">3.2/3.2 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m3.2/3.2 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "9e35aab9059f498992ecd8f417d5a1e5": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "b203d2a29c4b4dcfbccb3ca3893cac36": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "b62d97cf96624c178e6abfd7428075d2": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "c514c0a366524e97bc92dc2905daf331": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "c689ae3adc5e4e5db9c9ec17e384b07e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "cc92fd24116849269d99d2b3e8521edf": {
      "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_f622fc12533e42679d97466c7110a13b",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">6.7/6.7 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m6.7/6.7 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "ced86cfe15b14cf9b404cc31760be3fe": {
      "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_d6559750770b4132aaffe443b21e1caa",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000\">🚶 </span> <span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">Finishing 'antenna'...</span>\n</pre>\n",
          "text/plain": "\u001b[32m🚶 \u001b[0m \u001b[1;32mFinishing 'antenna'...\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "d6559750770b4132aaffe443b21e1caa": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "d72a087b0e9640d5b6ce1c1319a1793d": {
      "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_daa3c9dad7ed471a925b2cbc0863fc34",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">p=0.05          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:05</span>\np=0.11          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:05</span>\np=0.16          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:05</span>\np=0.22          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:05</span>\np=0.28          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:05</span>\np=0.33          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\np=0.39          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\np=0.44          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\np=0.50          → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\n</pre>\n",
          "text/plain": "p=0.05          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:05\u001b[0m\np=0.11          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:05\u001b[0m\np=0.16          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:05\u001b[0m\np=0.22          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:05\u001b[0m\np=0.28          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:05\u001b[0m\np=0.33          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\np=0.39          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\np=0.44          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\np=0.50          → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:04\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "daa3c9dad7ed471a925b2cbc0863fc34": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "e28e43b1e386439bae60305ac48ddc9e": {
      "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_04bdd81ce5e84a8bb097f2685a7dd891",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">↓</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation_data.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">24.3/24.3 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34msimulation_data.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m24.3/24.3 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "ed65d8c496da437288d80d384f3a9967": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "f622fc12533e42679d97466c7110a13b": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": 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,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "fb04f747d9c6462cbbe7573153c03fc9": {
      "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_2048d2542c074d84bf45c53db5a6b821",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">solver progress (field decay = 4.16e-06) <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "solver progress (field decay = 4.16e-06) \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
