{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Automatic nonuniform grid\n", "\n", "Here we demonstrate how to use the automatic nonuniform grid generation available in Tidy3D. We will show different possible ways to discretize the air-slot waveguide first introduced in [this reference](https://opg.optica.org/ol/abstract.cfm?uri=ol-29-11-1209)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2023-03-28T01:20:49.066009Z", "iopub.status.busy": "2023-03-28T01:20:49.065423Z", "iopub.status.idle": "2023-03-28T01:20:50.294545Z", "shell.execute_reply": "2023-03-28T01:20:50.294004Z" }, "scrolled": true }, "outputs": [], "source": [ "# basic imports\n", "import numpy as np\n", "import matplotlib.pylab as plt\n", "\n", "# tidy3d imports\n", "import tidy3d as td\n", "from tidy3d.plugins.mode import ModeSolver\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2023-03-28T01:20:50.297073Z", "iopub.status.busy": "2023-03-28T01:20:50.296789Z", "iopub.status.idle": "2023-03-28T01:20:50.320358Z", "shell.execute_reply": "2023-03-28T01:20:50.319738Z" }, "scrolled": true }, "outputs": [], "source": [ "# basic parameters (note, all length units are microns)\n", "nm = 1e-3\n", "wavelength = 1550 * nm\n", "freq0 = td.C_0 / wavelength\n", "\n", "# waveguide parameters\n", "slot_width = 50 * nm\n", "box_length = 300 * nm\n", "box_height = 180 * nm\n", "\n", "# materials\n", "si_med = td.Medium(permittivity=3.48**2)\n", "sub_med = td.Medium(permittivity=1.46**2)\n", "\n", "# structures\n", "box1 = td.Structure(\n", " geometry=td.Box(\n", " center=(0, -box_length / 2 - slot_width / 2, 0),\n", " size=(td.inf, box_length, box_height),\n", " ),\n", " medium=si_med,\n", ")\n", "box2 = td.Structure(\n", " geometry=td.Box(\n", " center=(0, box_length / 2 + slot_width / 2, 0),\n", " size=(td.inf, box_length, box_height),\n", " ),\n", " medium=si_med,\n", ")\n", "\n", "# boundaries\n", "boundary_spec = td.BoundarySpec.all_sides(boundary=td.PML())\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define a helper function to show us the various grids as we go along this exmaple." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2023-03-28T01:20:50.322477Z", "iopub.status.busy": "2023-03-28T01:20:50.322318Z", "iopub.status.idle": "2023-03-28T01:20:50.341360Z", "shell.execute_reply": "2023-03-28T01:20:50.340763Z" }, "scrolled": true }, "outputs": [], "source": [ "# Plot simulation and overlay grid in the yz and xy planes\n", "def plot_sim_grid(sim):\n", " fig, ax = plt.subplots(1, 2, figsize=(12, 6))\n", " sim.plot(x=0, ax=ax[0])\n", " sim.plot_grid(x=0, ax=ax[0], lw=0.4, colors=\"r\")\n", " ax[0].set_xlim(-0.6, 0.6)\n", " ax[0].set_ylim(-0.4, 0.4)\n", " sim.plot(z=0, ax=ax[1])\n", " sim.plot_grid(z=0, ax=ax[1], lw=0.4, colors=\"r\")\n", " ax[1].set_xlim(-0.6, 0.6)\n", " ax[1].set_ylim(-0.4, 0.4)\n", " print(f\"Total number of grid points (millions): {sim.num_cells / 1e6:1.2}\")\n", "\n", " return ax\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Uniform grid\n", "\n", "The most standard way to define a simulation is to use a constant grid size in each of the three directions. This can be achieved simply using `td.GridSpec.uniform(dl=...)` as shown below." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2023-03-28T01:20:50.343492Z", "iopub.status.busy": "2023-03-28T01:20:50.343325Z", "iopub.status.idle": "2023-03-28T01:20:50.745898Z", "shell.execute_reply": "2023-03-28T01:20:50.745333Z" }, "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
[14:06:53] WARNING: No sources in simulation. log.py:50\n", "\n" ], "text/plain": [ "\u001b[2;36m[14:06:53]\u001b[0m\u001b[2;36m \u001b[0mWARNING: No sources in simulation. \u001b]8;id=795664;file:///home/weiliang/Documents/tidy3d-core/tidy3d_frontend/tidy3d/log.py\u001b\\\u001b[2mlog.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=621035;file:///home/weiliang/Documents/tidy3d-core/tidy3d_frontend/tidy3d/log.py#50\u001b\\\u001b[2m50\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Total number of grid points (millions): 8.3\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/8AAAFvCAYAAAAc+3s8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABOYElEQVR4nO3de3hU1d33/08CJOEUAhKSgAiCyllADhFuKQpRKNSCVQpIBZEbPIBWY30kPyngMWARaSlCoaJ3EZTqUym3BxSBVE4F5OCDiKgoRZBwMEI4mUCyfn9Qpg6ZCcMcMmsW79d15dLZn71mvrNB16zsPfsbZ4wxAgAAAAAAzoqPdgEAAAAAACCyWPwDAAAAAOA4Fv8AAAAAADiOxT8AAAAAAI5j8Q8AAAAAgONY/AMAAAAA4DgW/wAAAAAAOI7FPwAAAAAAjmPxDwAAAACA41j8A7hgeXl5iouLU15eXrRLAQAAEcJ8D7iFxT8Av1544QW9/PLL0S4jKAsWLNC0adOiXYaXF198US1atFBSUpKuvPJKTZ8+PeCxRUVFevTRR1W/fn1VrVpVmZmZWrp0qc9916xZo+uuu07VqlVTenq6HnjgAR07dixcbwMA4Bjm+/AoLS3Vs88+q8svv1xJSUm6+uqr9eqrrwY8/vDhwxo1apRSU1NVvXp13XDDDdq0aZPPfRcvXqxrrrlGSUlJuuyyyzRhwgSdPn06XG8FjoozxphoFwHATq1bt1bdunXL/Ma/tLRUxcXFSkhIUHy8nb9D/NnPfqZPPvlEu3btinYpkqQ//elPuueee3TrrbeqV69eWrlypebNm6dJkybp0UcfPe/4wYMH64033tCDDz6oK6+8Ui+//LI2bNigFStW6LrrrvPst2XLFnXp0kUtWrTQqFGjtGfPHk2ZMkU33HCD3n333Ui+RQBAjGK+D4+cnBxNmjRJI0eOVKdOnfT3v/9db7/9tl599VUNGjSo3LGlpaXq1q2bPv74Yz3yyCOqW7euXnjhBX3zzTfauHGjrrzySs++7777rvr27avrr79egwcP1tatWzVjxgyNGjVKM2fOjPTbRCwzAMp17NixaJcQNa1atTLdu3ePdhlB6du3r2nUqFG0yzDGGHPixAlzySWXmL59+3ptHzJkiKlevbopKCgod/y6deuMJPO73/3Os+3kyZOmadOmpkuXLl77/vSnPzUZGRnmyJEjnm1z5swxksx7770XhncDAG5ivu8e7TKCYst8v2fPHlOlShUzevRoz7bS0lLTrVs3c+mll5rTp0+XO37hwoVGknn99dc92w4cOGBSUlLM4MGDvfZt2bKladu2rTl16pRn22OPPWbi4uLM9u3bw/SO4CIW/7io7Nmzx9x1110mIyPDJCQkmMaNG5t77rnHFBUVGWOMeemll4wkk5eXZ+69916TmppqUlJSPONnzJhhWrZsaRISEkxGRoa57777zPfff+/1Gp9//rn5xS9+YdLS0kxiYqJp0KCBGThwoDl8+LBnn/fff9/813/9l6lVq5apXr26ueqqq0xOTs556w9k3A8//GDGjx9vmjZtahISEsyll15qHnnkEfPDDz+Ueb558+aZTp06mapVq5qUlBTTrVs3zwKxUaNGRpLXz9kPBitWrDCSzIoVK7ye769//au55pprTFJSkrnkkkvMkCFDzJ49e7z2GTZsmKlevbrZs2eP6devn6levbqpW7euefjhh887MRpjzKJFi0yfPn08f4ZNmjQxTzzxhNfY7t27l6m9vA8Gc+fONZLMiy++6LX96aefNpLM22+/fd66yvP222/7fJ41a9YYSWbevHnljn/kkUdMpUqVvBb0xhjzzDPPGElm9+7dxhhjjhw5YipXrmweeeQRr/2KiopMjRo1zIgRI0J6HwAQK5jvvTHf/6emc/c/+zNhwoTz1lSeGTNmGElm27ZtXtsXLFhgJJmVK1eWO37AgAEmLS3NlJSUeG0fNWqUqVatmufPddu2bUaSmTFjhtd+e/fuNZLMk08+GdL7gNsqR/KqAsAm3377rTp37uz5PlXz5s21d+9evfHGGzpx4oQSEhI8+953331KTU3V+PHjdfz4cUnSxIkT9fjjjysrK0v33nuvduzYoZkzZ2rDhg1avXq1qlSpouLiYvXq1UtFRUW6//77lZ6err179+qtt97S4cOHVatWLW3btk0/+9nPdPXVV+uJJ55QYmKivvzyS61evbrc+gMZV1paqp///OdatWqVRo0apRYtWmjr1q16/vnn9fnnn2vRokWefR9//HFNnDhRXbt21RNPPKGEhAStW7dOy5cv10033aRp06bp/vvvV40aNfTYY49JktLS0vzW9/LLL2v48OHq1KmTcnNztX//fv3+97/X6tWrtXnzZqWkpHj2LSkpUa9evZSZmakpU6bogw8+0HPPPaemTZvq3nvvLfc4vPzyy6pRo4ays7NVo0YNLV++XOPHj1dhYaF+97vfSZIee+wxHTlyRHv27NHzzz8vSapRo4bf5xw+fLj+9re/KTs7WzfeeKMaNmyorVu36vHHH9eIESPUp08fz77ff/+9SkpKyq1RkqpVq6Zq1apJkjZv3ixJ6tixo9c+HTp0UHx8vDZv3qxf/epXfp9r8+bNuuqqq5ScnOy1vXPnzpLOXOp/tubTp0+XeZ2EhAS1a9fOUwcAuIz5nvnen7vvvltZWVle25YsWaL58+erXr16nm2HDh0qt7azatasqcTEREln5urq1aurRYsWXvucnas3b97s9TW9c23evFnXXHNNma9XdO7cWbNnz9bnn3+uNm3a+P1MUb9+fV166aXM9ShftH/7AFSUoUOHmvj4eLNhw4YyWWlpqTHmP2cCrrvuOq/fLB84cMAkJCSYm266yes3sn/84x+NJDN37lxjjDGbN28uc8nWuZ5//nkjyRw8ePCC6g9k3Lx580x8fHyZ3y7PmjXLSDKrV682xhjzxRdfmPj4eHPLLbeU+Q3z2WNhjP/LAM89E1BcXGzq1atnWrdubU6ePOnZ76233jKSzPjx4z3bzv7W/YknnvB6zvbt25sOHTqUfxDMmUvoz3X33Xd7/VbcmAu/DHDfvn2mTp065sYbbzRFRUWmffv25rLLLitztt3XGRJfPz8+gzB69GhTqVIln6+bmppqBg0aVG5trVq1Mj169Ciz/exv/2fNmmWMMeb11183ksyHH35YZt8BAwaY9PT08x0GAIh5zPfM94H64osvTK1atcyNN97o9fcgkHleknnppZe86mjSpEmZ1zh+/LiRZMaOHVtuLdWrVzd33XVXme1nrx5csmSJMcaY3/3ud15X/f1Yp06dzLXXXhvo28dFyM47dwBhVlpaqkWLFunmm28u85tSSYqLi/N6PHLkSFWqVMnz+IMPPlBxcbEefPBBr9/Ijhw5UsnJyXr77bclSbVq1ZIkvffeezpx4oTPWs7+Rvzvf/+7SktLA34PgYx7/fXX1aJFCzVv3lyHDh3y/PTo0UOStGLFCknSokWLVFpaqvHjx5f5DfO5xyIQH330kQ4cOKD77rtPSUlJnu19+/ZV8+bNPcfnx+655x6vx926ddNXX3113teqWrWq59+PHj2qQ4cOqVu3bjpx4oQ+++yzC679rPT0dM2YMUNLly5Vt27dtGXLFs2dO7fM2fb58+dr6dKl5/0ZOnSoZ8zJkye9zjT9WFJSkk6ePFlubSdPnvScWTh37Nn8x//0t+/5XgcAYh3zPfN9oI4fP65bbrlFtWvX1quvvur19yCQeX7p0qXq1auXZ0ygc7U/zPWoCFz2j4vCwYMHVVhYqNatWwe0/+WXX+71+F//+pckqVmzZl7bExIS1KRJE09++eWXKzs7W1OnTtX8+fPVrVs3/fznP9evfvUrzweFgQMH6s9//rP++7//W2PHjlXPnj31i1/8Qrfddlu5d9INZNwXX3yh7du3KzU11edzHDhwQJK0c+dOxcfHq2XLlgEdj/Pxd3wkqXnz5lq1apXXtqSkpDI11q5dW99///15X2vbtm0aN26cli9frsLCQq/syJEjF1q6l0GDBumVV17R22+/rVGjRqlnz55l9vmv//qvC37eqlWrqri42Gf2ww8/eH3A8Te+qKjI59iz+Y//6W/f870OAMQ65vszmO/Pb+TIkdq5c6fWrFmjSy65xCs796sBgQh0rg51PHM9QsHiH/AhlP9xPvfcc7rzzjv197//Xe+//74eeOAB5ebm6p///KcuvfRSVa1aVR9++KFWrFiht99+W0uWLNHChQvVo0cPvf/++16/eT63pvONKy0tVZs2bTR16lSfz9GwYcOg31c4+XuP53P48GF1795dycnJeuKJJ9S0aVMlJSVp06ZNevTRRy/ozIov3333nT766CNJ0qeffqrS0tIyH9AOHjwY0Hf+a9So4fneYUZGhkpKSnTgwAGv7xQWFxfru+++U/369ct9royMDO3du7fM9n379kmSZ3xGRobX9nP3Pd/rAMDFhvk+smyd73//+9/r1Vdf1SuvvKJ27dqVyfPz8wN6nlq1ann+DmVkZGjFihUyxnhdVXHuXO1PRkaG3/n7x+N/PNef++e8b98+zz0GAF+47B8XhdTUVCUnJ+uTTz4JanyjRo0kSTt27PDaXlxcrK+//tqTn9WmTRuNGzdOH374oVauXKm9e/dq1qxZnjw+Pl49e/bU1KlT9emnn+rpp5/W8uXLPZfp+XO+cU2bNlVBQYF69uyprKysMj9nf1PftGlTlZaW6tNPPy339QK9JNDf8Tm77dzjE6y8vDx99913evnl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e1wkyRijn/70p4qLi9OiRYsiW2gUXOixKSgo0P33369mzZqpatWquuyyy/TAAw/oyJEjFVh1+M2YMUONGzdWUlKSMjMztX79+nL3f/3119W8eXMlJSWpTZs2eueddyqo0op3Icdmzpw56tatm2rXrq3atWsrKyvrvMcyVl3o35mzXnvtNcXFxal///6RLTCKLvTYHD58WKNHj1ZGRoYSExN11VVXOf3fVKiY631jrvePuf4M5nr/mOt9Y673r8LneoMyevfubdq2bWv++c9/mpUrV5orrrjCDB48uNwxa9asMcnJySY3N9d88skn5rPPPjMLFy40P/zwQwVVHXnBHJezpk6dan76058aSebNN9+MbKFRcKHHZuvWreYXv/iFWbx4sfnyyy/NsmXLzJVXXmluvfXWCqw6vF577TWTkJBg5s6da7Zt22ZGjhxpUlJSzP79+33uv3r1alOpUiXz7LPPmk8//dSMGzfOVKlSxWzdurWCK4+8Cz02t99+u5kxY4bZvHmz2b59u7nzzjtNrVq1zJ49eyq48si60ONy1tdff20aNGhgunXrZvr161cxxVawCz02RUVFpmPHjqZPnz5m1apV5uuvvzZ5eXlmy5YtFVx57GCu94253j/meub68jDX+8Zc71805noW/+f49NNPjSSzYcMGz7Z3333XxMXFmb179/odl5mZacaNG1cRJUZFsMfFGGM2b95sGjRoYPbt2+fkB4JQjs2P/fWvfzUJCQnm1KlTkSgz4jp37mxGjx7teVxSUmLq169vcnNzfe7/y1/+0vTt29drW2Zmprn77rsjWmc0XOixOdfp06dNzZo1zf/8z/9EqsSoCOa4nD592nTt2tX8+c9/NsOGDXP2A8GFHpuZM2eaJk2amOLi4ooqMaYx1/vGXO8fc/0ZzPX+Mdf7xlzvXzTmei77P8fatWuVkpKijh07erZlZWUpPj5e69at8znmwIEDWrdunerVq6euXbsqLS1N3bt316pVqyqq7IgL5rhI0okTJ3T77bdrxowZSk9Pr4hSK1ywx+ZcR44cUXJysipXrhyJMiOquLhYGzduVFZWlmdbfHy8srKytHbtWp9j1q5d67W/JPXq1cvv/rEqmGNzrhMnTujUqVOqU6dOpMqscMEelyeeeEL16tXTiBEjKqLMqAjm2CxevFhdunTR6NGjlZaWptatW+uZ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\n", "text/plain": [ "