diff --git a/_images/1bf7001c97363cb5f3fb2601b97ec9d6273a66cee4a8621048021573cda77d12.png b/_images/1bf7001c97363cb5f3fb2601b97ec9d6273a66cee4a8621048021573cda77d12.png new file mode 100644 index 0000000..de229f0 Binary files /dev/null and b/_images/1bf7001c97363cb5f3fb2601b97ec9d6273a66cee4a8621048021573cda77d12.png differ diff --git a/_images/6f55ba31bf0a482c807b04fc82cf7fc9711ae9df443b39ff96562fa47613df31.png b/_images/6f55ba31bf0a482c807b04fc82cf7fc9711ae9df443b39ff96562fa47613df31.png new file mode 100644 index 0000000..742e63a Binary files /dev/null and b/_images/6f55ba31bf0a482c807b04fc82cf7fc9711ae9df443b39ff96562fa47613df31.png differ diff --git a/_images/9a415e85d0c43a7a40bed466a818eb08f4cae62e6a4b0a95e4be1e379298b378.png b/_images/9a415e85d0c43a7a40bed466a818eb08f4cae62e6a4b0a95e4be1e379298b378.png deleted file mode 100644 index 2259d12..0000000 Binary files a/_images/9a415e85d0c43a7a40bed466a818eb08f4cae62e6a4b0a95e4be1e379298b378.png and /dev/null differ diff --git a/_images/d30d68ddd43e49e0882b36f1269edec6dc7dbfabcadf0dd3dea898b99afe6fe2.png b/_images/d30d68ddd43e49e0882b36f1269edec6dc7dbfabcadf0dd3dea898b99afe6fe2.png deleted file mode 100644 index 43c706e..0000000 Binary files a/_images/d30d68ddd43e49e0882b36f1269edec6dc7dbfabcadf0dd3dea898b99afe6fe2.png and /dev/null differ diff --git a/_sources/pages/mzi.ipynb b/_sources/pages/mzi.ipynb index c0fca61..699df22 100644 --- a/_sources/pages/mzi.ipynb +++ b/_sources/pages/mzi.ipynb @@ -148,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -199,7 +199,7 @@ "-----\n", "See also the PDK documentation:\n", "https://github.com/SiEPIC/SiEPIC_EBeam_PDK/blob/master/Documentation/SiEPIC_EBeam_PDK%20-%20Components%20with%20Models.docx\n", - "\u001b[0;31mFile:\u001b[0m ~/git/simphony/simphony/libraries/siepic/models.py\n", + "\u001b[0;31mFile:\u001b[0m ~/miniconda3/envs/photonics/lib/python3.11/site-packages/simphony/libraries/siepic/models.py\n", "\u001b[0;31mType:\u001b[0m function" ] } @@ -395,34 +395,22 @@ { "data": { "text/plain": [ - "{'gc_in': {'wl': Array(1.55, dtype=float64),\n", + "{'gc_in': {'wl': 1.55, 'pol': 'te', 'thickness': 220.0, 'dwidth': 0},\n", + " 'splitter': {'wl': 1.55, 'pol': 'te', 'thickness': 220.0, 'width': 500.0},\n", + " 'long_wg': {'wl': 1.55,\n", " 'pol': 'te',\n", - " 'thickness': Array(220., dtype=float64),\n", - " 'dwidth': Array(0., dtype=float64)},\n", - " 'splitter': {'wl': Array(1.55, dtype=float64),\n", + " 'length': 0.0,\n", + " 'width': 500.0,\n", + " 'height': 220.0,\n", + " 'loss': 0.0},\n", + " 'short_wg': {'wl': 1.55,\n", " 'pol': 'te',\n", - " 'thickness': Array(220., dtype=float64),\n", - " 'width': Array(500., dtype=float64)},\n", - " 'long_wg': {'wl': Array(1.55, dtype=float64),\n", - " 'pol': 'te',\n", - " 'length': Array(0., dtype=float64),\n", - " 'width': Array(500., dtype=float64),\n", - " 'height': Array(220., dtype=float64),\n", - " 'loss': Array(0., dtype=float64)},\n", - " 'short_wg': {'wl': Array(1.55, dtype=float64),\n", - " 'pol': 'te',\n", - " 'length': Array(0., dtype=float64),\n", - " 'width': Array(500., dtype=float64),\n", - " 'height': Array(220., dtype=float64),\n", - " 'loss': Array(0., dtype=float64)},\n", - " 'combiner': {'wl': Array(1.55, dtype=float64),\n", - " 'pol': 'te',\n", - " 'thickness': Array(220., dtype=float64),\n", - " 'width': Array(500., dtype=float64)},\n", - " 'gc_out': {'wl': Array(1.55, dtype=float64),\n", - " 'pol': 'te',\n", - " 'thickness': Array(220., dtype=float64),\n", - " 'dwidth': Array(0., dtype=float64)}}" + " 'length': 0.0,\n", + " 'width': 500.0,\n", + " 'height': 220.0,\n", + " 'loss': 0.0},\n", + " 'combiner': {'wl': 1.55, 'pol': 'te', 'thickness': 220.0, 'width': 500.0},\n", + " 'gc_out': {'wl': 1.55, 'pol': 'te', 'thickness': 220.0, 'dwidth': 0}}" ] }, "execution_count": 8, @@ -516,22 +504,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[32m2024-01-09 23:00:01.222\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.technology.layer_views\u001b[0m:\u001b[36m__init__\u001b[0m:\u001b[36m785\u001b[0m - \u001b[1mImporting LayerViews from YAML file: '/home/sequoia/git/Photonics-Bootcamp/env/lib/python3.11/site-packages/gdsfactory/generic_tech/layer_views.yaml'.\u001b[0m\n", - "\u001b[32m2024-01-09 23:00:01.227\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mactivate\u001b[0m:\u001b[36m258\u001b[0m - \u001b[1m'generic' PDK is now active\u001b[0m\n" - ] - }, { "data": { - "image/png": "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rHVm5HKdtRGRsUw4qNx+++1YunTpqK+ZMWNG4vPKykpUVlbiM5/5DE455RT4fD5s2bIFTU1N8Hq96OjoGPS12n2v1zvie9vtdtjt9mGPm83mnPslGZ1WU9Y2M1jrzGCdM4e1zoxcrfN42zvhoFJVVYWqqqoJNwhIjkdpc0yamppw1113JSbXAsDGjRtx8sknjzjsQ0RERIVFt/j11ltv4Uc/+hG2b9+OTz/9FK+88gr++Z//GSeccAKampoAAF/+8pdhs9mwbNkyfPDBB3juuefw0EMPDRraISIiosKlW1BxOp34zW9+g0suuQQnn3wyli1bhjlz5mDz5s2JoZvS0lJs2LABra2tmDt3Lm6//XbcfffdPDWZiIiIAOh41s9pp52GV155ZczXzZkzB2+88YZezSAiIqIcllszb4iIiKigMKgQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhMagQERGRYTGoEBERkWExqBAREZFhZSSoRCIRnH766TCZTNi+ffug5959911ccMEFcDgc8Pl8uO+++zLRJCIiIsoBGQkqX//611FXVzfs8UAggEsvvRTTpk3Dtm3bcP/99+Pb3/42Hn/88Uw0i4iIiAyuSO9v8NJLL2HDhg349a9/jZdeemnQc8888wyi0SiefPJJ2Gw2nHrqqdi+fTseeOAB3HjjjXo3jYiIiAxO16DS0dGBG264AS+88AKcTuew51taWjB//nzYbLbEYwsXLsTatWvR1dWFKVOmDPuaSCSCSCSSuB8IBAAAiqJAURQdforCpdWUtdUf65wZrHPmsNaZkct1Hm+bdQsqqqpi6dKl+NrXvoZ58+Zhz549w17j9/vR2Ng46LGamprEcyMFlTVr1mD16tXDHm9ra4PH40lP4wkAEA6HEQwGsW/fvhGDJqWPqqro6uqCyWSCyWTKdnPyFuucOax1ZuRynYPB4LheN+GgsnLlSqxdu3bU13z00UfYsGEDgsEgVq1aNdFvMapVq1ahubk5cT8QCMDn88Hn86GkpCSt36vQhUIh7Ny5E/X19XC73dluTl5TFAWqqsLn88Fs5sl4emGdM4e1zoxcrrM2IjKWCQeV22+/HUuXLh31NTNmzMArr7yClpYW2O32Qc/NmzcP1157LX72s5/B6/Wio6Nj0PPafa/XO+J72+32Ye8JAGazOed+SUan1ZS1zQzWOjNY58xhrTMjV+s83vZOOKhUVVWhqqpqzNc9/PDD+N73vpe4397ejoULF+K5557DOeecAwBoamrCXXfdhVgsBqvVCgDYuHEjTj755BGHfUaiqiqA8SczGr9QKIRwOIxAIJCT45+5RFEUBINBBAKBnNvY5BLWOXNY68zI5Tpr+21tP35Maoa0traqANS//OUvice6u7vVmpoa9brrrlPff/999dlnn1WdTqf6k5/8ZNzv29bWpgLgjTfeeOONN95y8NbW1jbqfl7305NHU1paig0bNmD58uWYO3cuKisrcffdd0/o1OS6urrERNpcm0hkdNr8n7a2Ns7/0RlrnRmsc+aw1pmRy3VWVRXBYHDEddZSmVR1rD4XKlSBQAClpaXo6enJuX+AXMNaZwbrnDmsdWYUQp1za0CLiIiICgqDChERERkWgwodk91ux7e+9a0RTwen9GKtM4N1zhzWOjMKoc6co0JERESGxR4VIiIiMiwGFSIiIjIsBhUiIiIyLAYVIiIiMiwGFTqmdevWYfr06XA4HDjnnHPw9ttvZ7tJOW3NmjU466yz4PF4UF1djUWLFmHHjh2DXtPf34/ly5ejoqICbrcbixcvHnbhTpqYe++9FyaTCbfeemviMdY5ffbv349/+Zd/QUVFBYqLi3Haaadh69atiedVVcXdd9+N2tpaFBcXY8GCBdi5c2cWW5x74vE4vvnNb6KxsRHFxcU44YQT8N3vfnfQNXLyus4TvWYPFYZnn31Wtdls6pNPPql+8MEH6g033KCWlZWpHR0d2W5azlq4cKH61FNPqe+//766fft29e///u/VhoYGNRQKJV7zta99TfX5fOqmTZvUrVu3queee6563nnnZbHVue3tt99Wp0+frs6ZM0e95ZZbEo+zzulx5MgRddq0aerSpUvVt956S929e7f68ssvq7t27Uq85t5771VLS0vVF154Qf3rX/+qfvGLX1QbGxvVvr6+LLY8t9xzzz1qRUWF+uKLL6qtra3q888/r7rdbvWhhx5KvCaf68ygQiM6++yz1eXLlyfux+Nxta6uTl2zZk0WW5VfOjs7VQDq5s2bVVWVi3RarVb1+eefT7zmo48+UgGoLS0t2WpmzgoGg+pJJ52kbty4Uf385z+fCCqsc/rceeed6uc+97ljPq8oiur1etX7778/8Vh3d7dqt9vVX/ziF5loYl644oor1K9+9auDHrvqqqvUa6+9VlXV/K8zh35omGg0im3btmHBggWJx8xmMxYsWICWlpYstiy/9PT0AADKy8sBANu2bUMsFhtU95kzZ6KhoYF1Pw7Lly/HFVdcMaieAOucTv/1X/+FefPm4eqrr0Z1dTXOOOMM/PSnP00839raCr/fP6jWpaWlOOecc1jrCTjvvPOwadMm/O1vfwMA/PWvf8Wbb76Jyy+/HED+1zmrV08mYzp06BDi8ThqamoGPV5TU4OPP/44S63KL4qi4NZbb8X555+P2bNnAwD8fj9sNhvKysoGvbampgZ+vz8Lrcxdzz77LP785z/jnXfeGfYc65w+u3fvxqOPPorm5mb8+7//O9555x3827/9G2w2G5YsWZKo50jbEtZ6/FauXIlAIICZM2fCYrEgHo/jnnvuwbXXXgsAeV9nBhWiLFi+fDnef/99vPnmm9luSt5pa2vDLbfcgo0bN8LhcGS7OXlNURTMmzcP3//+9wEAZ5xxBt5//3089thjWLJkSZZblz9++ctf4plnnsH69etx6qmnYvv27bj11ltRV1dXEHXm0A8NU1lZCYvFMuwsiI6ODni93iy1Kn+sWLECL774Il599VXU19cnHvd6vYhGo+ju7h70etZ9YrZt24bOzk6ceeaZKCoqQlFRETZv3oyHH34YRUVFqKmpYZ3TpLa2FrNmzRr02CmnnIK9e/cCQKKe3JZMzh133IGVK1fiS1/6Ek477TRcd911uO2227BmzRoA+V9nBhUaxmazYe7cudi0aVPiMUVRsGnTJjQ1NWWxZblNVVWsWLECv/3tb/HKK6+gsbFx0PNz586F1WodVPcdO3Zg7969rPsEXHLJJXjvvfewffv2xG3evHm49tprE5+zzulx/vnnDzvF/m9/+xumTZsGAGhsbITX6x1U60AggLfeeou1noBwOAyzefDu2mKxQFEUAAVQ52zP5iVjevbZZ1W73a4+/fTT6ocffqjeeOONallZmer3+7PdtJx10003qaWlpeprr72mHjhwIHELh8OJ13zta19TGxoa1FdeeUXdunWr2tTUpDY1NWWx1fkh9awfVWWd0+Xtt99Wi4qK1HvuuUfduXOn+swzz6hOp1P9+c9/nnjNvffeq5aVlam/+93v1HfffVe98sor8+a02UxZsmSJOnXq1MTpyb/5zW/UyspK9etf/3riNflcZwYVOqZHHnlEbWhoUG02m3r22WerW7ZsyXaTchqAEW9PPfVU4jV9fX3qv/7rv6pTpkxRnU6n+o//+I/qgQMHstfoPDE0qLDO6fP73/9enT17tmq329WZM2eqjz/++KDnFUVRv/nNb6o1NTWq3W5XL7nkEnXHjh1Zam1uCgQC6i233KI2NDSoDodDnTFjhnrXXXepkUgk8Zp8rrNJVVOWtiMiIiIyEM5RISIiIsNiUCEiIiLDYlAhIiIiw2JQISIiIsNiUCEiIiLDYlAhIiIiw2JQISIiIsNiUCEiIiLDYlAhIiIiw2JQISIiIsNiUCEiIiLDYlAhIiIiw/r/Os9whGbaTHsAAAAASUVORK5CYII=", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -541,14 +521,11 @@ "source": [ "import gdsfactory as gf\n", "\n", - "PDK = gf.get_generic_pdk()\n", - "PDK.activate()\n", - "\n", "# The << is shorthand for c.add_ref()\n", "c = gf.Component(\"my_component\")\n", "mzi = c << gf.components.mzi(delta_length=0)\n", "\n", - "c.plot_matplotlib()" + "c.plot()" ] }, { @@ -640,22 +617,14 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 14, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[32m2024-01-09 22:59:50.499\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.technology.layer_views\u001b[0m:\u001b[36m__init__\u001b[0m:\u001b[36m785\u001b[0m - \u001b[1mImporting LayerViews from YAML file: '/home/sequoia/git/Photonics-Bootcamp/env/lib/python3.11/site-packages/gdsfactory/generic_tech/layer_views.yaml'.\u001b[0m\n", - "\u001b[32m2024-01-09 22:59:50.508\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mactivate\u001b[0m:\u001b[36m258\u001b[0m - \u001b[1m'generic' PDK is now active\u001b[0m\n" - ] - }, { "data": { - "image/png": "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0CHW2qhaE4DcrnMwGJzQ/SYVVFatWoX7779/3Pt8+OGHmDNnzmR+7aSsXr0aK1euTFwPBALw+Xzw+Xzwer2G/d1CFAqFsGvXLjQ2NsLtdme7OXlN0zQopeDz+WBN95kivb1yKSmRDyhsaABKS9P7N3KEoXUGpM49PVJrmw2orwcK9LVjeK0JQG7XWR8ROZFJBZU777wTy5YtG/c+s2bNmtDvqqurwzvvvDNkW2dnZ+K2sTidTjhHOUKxWq05908yO72mrG1mGFZrmw3QABzuBoocQLAfKODeR0Of0zYboCzJWocGgAI+gOL7R2bkap0n2t5JBZXq6mpUV1efVIOGa2lpwb333ovDhw+jpqYGALB+/Xp4vV7MnTs3LX+DiCBDD0cGAH8IsAAIDQJV5fIZQJReTifQ1c9aE6WRYXNU2tracOzYMbS1tSEej2Pbtm0AgFNPPRVutxuXX3455s6dixtvvBEPPPAA/H4/vv3tb2PFihWj9pgQ0UlSCqguBiqOzzOyc3Vaw7DWRGlnWFC555578POf/zxxXT+L54033sAll1wCm82Gl19+GbfeeitaWlpQWlqKpUuX4vvf/75RTSIqXA474Dl+AJBy1hwZgLUmSivDgsozzzyDZ555Ztz7zJgxA//93/9tVBOIiIgox+XWzBsiIiIqKAwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWoYFlf3792P58uVobm5GcXExTjnlFHz3u99FNBodcr/33nsPF198MVwuF3w+Hx544AGjmkREREQ5xm7UL/7oo4+gaRr+6Z/+Caeeeiref/993Hzzzejr68OPf/xjAEAgEMDll1+OxYsX44knnsD27dtx0003oby8HLfccotRTSMiIqIcYVhQueKKK3DFFVckrs+aNQs7d+7E448/nggqzz77LKLR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j9eTosutAS0iIiIqKAwqREREZFoMKjQmp9OJ7373u3A6ndluSt5jrTODdc4c1jozCqHOOT+ZloiIiPIXe1SIiIjItBhUiIiIyLQYVIiIiMi0GFSIiIjItBhUaEzr1q3DzJkz4XK5sHDhQrzzzjvZblJOW7t2Lc477zx4PB7U1NTgmmuuwc6dO4fcZ2BgACtWrMC0adPgdrtx3XXXobOzM0stzg/33XcfLBYLbr/99sQ21jl9Dh48iL/927/FtGnTUFxcjLPPPhtbtmxJ3K6Uwj333IP6+noUFxdj8eLF2LVrVxZbnHvi8Ti+853voLm5GcXFxTjllFPwgx/8YMhn5OR1nRXRKH75y18qh8OhnnrqKbVjxw518803q/LyctXZ2ZntpuWsJUuWqKefflq9//77atu2beov/uIvVFNTkwqFQon7fPWrX1U+n09t2LBBbdmyRV1wwQXqwgsvzGKrc9s777yjZs6cqebNm6e+/vWvJ7azzulx7NgxNWPGDLVs2TK1efNmtXfvXvXqq6+q3bt3J+5z3333qbKyMvXSSy+pP/3pT+rzn/+8am5uVv39/VlseW6599571bRp09TLL7+s9u3bp1544QXldrvVI488krhPPteZQYVGdf7556sVK1YkrsfjcdXQ0KDWrl2bxVbll8OHDysAauPGjUoppXp6elRRUZF64YUXEvf58MMPFQDV2tqarWbmrGAwqE477TS1fv169Wd/9meJoMI6p883v/lN9ZnPfGbM2zVNU3V1derBBx9MbOvp6VFOp1P927/9WyaamBeuuuoqddNNNw3Zdu2116obbrhBKZX/debQD40QjUaxdetWLF68OLHNarVi8eLFaG1tzWLL8ktvby8AoLKyEgCwdetWxGKxIXWfM2cOmpqaWPeTsGLFClx11VVD6gmwzun0n//5n1iwYAGuv/561NTU4NOf/jT++Z//OXH7vn374Pf7h9S6rKwMCxcuZK0n4cILL8SGDRvw8ccfAwD+9Kc/4fe//z2uvPJKAPlf55z/UEJKvyNHjiAej6O2tnbI9traWnz00UdZalV+0TQNt99+Oy666CKcddZZAAC/3w+Hw4Hy8vIh962trYXf789CK3PXL3/5S/zv//4v3n333RG3sc7ps3fvXjz++ONYuXIlvvWtb+Hdd9/F3//938PhcGDp0qWJeo72XsJaT9yqVasQCAQwZ84c2Gw2xONx3HvvvbjhhhsAIO/rzKBClAUrVqzA+++/j9///vfZbkreaW9vx9e//nWsX78eLpcr283Ja5qmYcGCBfjRj34EAPj0pz+N999/H0888QSWLl2a5dblj3//93/Hs88+i+eeew5nnnkmtm3bhttvvx0NDQ0FUWcO/dAIVVVVsNlsI86C6OzsRF1dXZZalT9uu+02vPzyy3jjjTfQ2NiY2F5XV4doNIqenp4h92fdJ2fr1q04fPgwzj33XNjtdtjtdmzcuBGPPvoo7HY7amtrWec0qa+vx9y5c4dsO+OMM9DW1gYAiXryvWRq7rrrLqxatQpf/OIXcfbZZ+PGG2/EHXfcgbVr1wLI/zozqNAIDocD8+fPx4YNGxLbNE3Dhg0b0NLSksWW5TalFG677Ta8+OKLeP3119Hc3Dzk9vnz56OoqGhI3Xfu3Im2tjbWfRIuu+wybN++Hdu2bUtcFixYgBtuuCHxPeucHhdddNGIU+w//vhjzJgxAwDQ3NyMurq6IbUOBALYvHkzaz0J4XAYVuvQ3bXNZoOmaQAKoM7Zns1L5vTLX/5SOZ1O9cwzz6gPPvhA3XLLLaq8vFz5/f5sNy1n3XrrraqsrEy9+eab6tChQ4lLOBxO3OerX/2qampqUq+//rrasmWLamlpUS0tLVlsdX5IPetHKdY5Xd555x1lt9vVvffeq3bt2qWeffZZVVJSon7xi18k7nPfffep8vJy9Zvf/Ea999576uqrr86b02YzZenSpWr69OmJ05N//etfq6qqKvWNb3wjcZ98rjODCo3pscceU01NTcrhcKjzzz9fbdq0KdtNymkARr08/fTTifv09/erv/u7v1MVFRWqpKRE/dVf/ZU6dOhQ9hqdJ4YHFdY5fX7729+qs846SzmdTjVnzhz1s5/9bMjtmqap73znO6q2tlY5nU512WWXqZ07d2aptbkpEAior3/966qpqUm5XC41a9Ysdffdd6tIJJK4Tz7X2aJUytJ2RERERCbCOSpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRaDCpERERkWgwqREREZFoMKkRERGRa/z8XTKrCES/eCAAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -665,13 +634,10 @@ "source": [ "import gdsfactory as gf\n", "\n", - "PDK = gf.get_generic_pdk()\n", - "PDK.activate()\n", - "\n", "c = gf.Component(\"my_component\")\n", "mzi = c << gf.components.mzi(delta_length=15)\n", "\n", - "c.plot_matplotlib()" + "c.plot()" ] }, { @@ -744,7 +710,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.7" }, "orig_nbformat": 4 }, diff --git a/pages/directional_couplers.html b/pages/directional_couplers.html index cdd9e3c..9bce10b 100644 --- a/pages/directional_couplers.html +++ b/pages/directional_couplers.html @@ -564,8 +564,8 @@

Coupling length and the gap between waveguides\(\Delta n\) gets larger, making the cross-over length shorter.

This cross-over length \(L\), that gives 100% power transfer is found with:

-
-(2)#\[\begin{align} +
+(2)#\[\begin{align} L_{\text{cross-over}} = \frac {\lambda}{2\Delta n} \nonumber \end{align}\]

This is found from determining what length when multiplied by the propagation constants makes the phase difference \(\pi\):

diff --git a/pages/mzi.html b/pages/mzi.html index 27c52a2..20f7e8b 100644 --- a/pages/mzi.html +++ b/pages/mzi.html @@ -448,7 +448,7 @@

ModelsFile: ~/git/simphony/simphony/libraries/siepic/models.py +File: ~/miniconda3/envs/photonics/lib/python3.11/site-packages/simphony/libraries/siepic/models.py Type: function

@@ -581,34 +581,22 @@

Simulation (using callables) -
{'gc_in': {'wl': Array(1.55, dtype=float64),
+
{'gc_in': {'wl': 1.55, 'pol': 'te', 'thickness': 220.0, 'dwidth': 0},
+ 'splitter': {'wl': 1.55, 'pol': 'te', 'thickness': 220.0, 'width': 500.0},
+ 'long_wg': {'wl': 1.55,
   'pol': 'te',
-  'thickness': Array(220., dtype=float64),
-  'dwidth': Array(0., dtype=float64)},
- 'splitter': {'wl': Array(1.55, dtype=float64),
+  'length': 0.0,
+  'width': 500.0,
+  'height': 220.0,
+  'loss': 0.0},
+ 'short_wg': {'wl': 1.55,
   'pol': 'te',
-  'thickness': Array(220., dtype=float64),
-  'width': Array(500., dtype=float64)},
- 'long_wg': {'wl': Array(1.55, dtype=float64),
-  'pol': 'te',
-  'length': Array(0., dtype=float64),
-  'width': Array(500., dtype=float64),
-  'height': Array(220., dtype=float64),
-  'loss': Array(0., dtype=float64)},
- 'short_wg': {'wl': Array(1.55, dtype=float64),
-  'pol': 'te',
-  'length': Array(0., dtype=float64),
-  'width': Array(500., dtype=float64),
-  'height': Array(220., dtype=float64),
-  'loss': Array(0., dtype=float64)},
- 'combiner': {'wl': Array(1.55, dtype=float64),
-  'pol': 'te',
-  'thickness': Array(220., dtype=float64),
-  'width': Array(500., dtype=float64)},
- 'gc_out': {'wl': Array(1.55, dtype=float64),
-  'pol': 'te',
-  'thickness': Array(220., dtype=float64),
-  'dwidth': Array(0., dtype=float64)}}
+  'length': 0.0,
+  'width': 500.0,
+  'height': 220.0,
+  'loss': 0.0},
+ 'combiner': {'wl': 1.55, 'pol': 'te', 'thickness': 220.0, 'width': 500.0},
+ 'gc_out': {'wl': 1.55, 'pol': 'te', 'thickness': 220.0, 'dwidth': 0}}
 
@@ -654,23 +642,16 @@

Analysis of a balanced MZI
import gdsfactory as gf
 
-PDK = gf.get_generic_pdk()
-PDK.activate()
-
 # The << is shorthand for c.add_ref()
 c = gf.Component("my_component")
 mzi = c << gf.components.mzi(delta_length=0)
 
-c.plot_matplotlib()
+c.plot()
 

-
2024-01-09 23:00:01.222 | INFO     | gdsfactory.technology.layer_views:__init__:785 - Importing LayerViews from YAML file: '/home/sequoia/git/Photonics-Bootcamp/env/lib/python3.11/site-packages/gdsfactory/generic_tech/layer_views.yaml'.
-2024-01-09 23:00:01.227 | INFO     | gdsfactory.pdk:activate:258 - 'generic' PDK is now active
-
-
-../_images/d30d68ddd43e49e0882b36f1269edec6dc7dbfabcadf0dd3dea898b99afe6fe2.png +../_images/6f55ba31bf0a482c807b04fc82cf7fc9711ae9df443b39ff96562fa47613df31.png

There are there three different relevant amplitudes:

@@ -738,22 +719,15 @@

Analysis of imblanced MZI’s
import gdsfactory as gf
 
-PDK = gf.get_generic_pdk()
-PDK.activate()
-
 c = gf.Component("my_component")
 mzi = c << gf.components.mzi(delta_length=15)
 
-c.plot_matplotlib()
+c.plot()
 
-
2024-01-09 22:59:50.499 | INFO     | gdsfactory.technology.layer_views:__init__:785 - Importing LayerViews from YAML file: '/home/sequoia/git/Photonics-Bootcamp/env/lib/python3.11/site-packages/gdsfactory/generic_tech/layer_views.yaml'.
-2024-01-09 22:59:50.508 | INFO     | gdsfactory.pdk:activate:258 - 'generic' PDK is now active
-
-
-../_images/9a415e85d0c43a7a40bed466a818eb08f4cae62e6a4b0a95e4be1e379298b378.png +../_images/1bf7001c97363cb5f3fb2601b97ec9d6273a66cee4a8621048021573cda77d12.png
diff --git a/searchindex.js b/searchindex.js index a46abb7..cc2d0fe 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index", "pages/adjoint_optimization", "pages/advanced_components", "pages/analyzing_circuits", "pages/compact_models", "pages/component_convenience", "pages/components", "pages/credits", "pages/directional_couplers", "pages/drc", "pages/edge_couplers", "pages/gds_to_meep", "pages/git_and_github", "pages/glossary", "pages/grating_couplers", "pages/introduction", "pages/klayout", "pages/laboratory_tools", "pages/layer_stack", "pages/meep_to_gds", "pages/mmis", "pages/mzi", "pages/open_source", "pages/optical_io", "pages/optimization", "pages/passive_components", "pages/pdks", "pages/phase_shifters", "pages/phase_shifters_heaters", "pages/phase_shifters_pn", "pages/photonic_devices", "pages/python", "pages/ray_optic_model", "pages/ring_resonators", "pages/scattering_parameters", "pages/shape_optimization", "pages/software", "pages/vscode", "pages/waveguides", "pages/waveguides_mode_solvers", "pages/waveguides_modelling", "pages/waveguides_polarization", "pages/waveguides_tir", "pages/wsl", "pages/y_branch"], "filenames": ["index.md", "pages/adjoint_optimization.ipynb", "pages/advanced_components.ipynb", "pages/analyzing_circuits.ipynb", "pages/compact_models.ipynb", "pages/component_convenience.ipynb", "pages/components.ipynb", "pages/credits.md", "pages/directional_couplers.ipynb", "pages/drc.ipynb", "pages/edge_couplers.ipynb", "pages/gds_to_meep.ipynb", "pages/git_and_github.md", "pages/glossary.md", "pages/grating_couplers.ipynb", "pages/introduction.md", "pages/klayout.md", "pages/laboratory_tools.ipynb", "pages/layer_stack.ipynb", "pages/meep_to_gds.ipynb", "pages/mmis.ipynb", "pages/mzi.ipynb", "pages/open_source.md", "pages/optical_io.md", "pages/optimization.ipynb", "pages/passive_components.md", "pages/pdks.ipynb", "pages/phase_shifters.ipynb", "pages/phase_shifters_heaters.ipynb", "pages/phase_shifters_pn.ipynb", "pages/photonic_devices.ipynb", "pages/python.md", "pages/ray_optic_model.ipynb", "pages/ring_resonators.ipynb", "pages/scattering_parameters.ipynb", "pages/shape_optimization.ipynb", "pages/software.md", "pages/vscode.md", "pages/waveguides.ipynb", "pages/waveguides_mode_solvers.ipynb", "pages/waveguides_modelling.ipynb", "pages/waveguides_polarization.ipynb", "pages/waveguides_tir.ipynb", "pages/wsl.md", "pages/y_branch.ipynb"], "titles": ["CamachoLab Photonics Bootcamp", "Adjoint optimization", "Advanced Components", "Analyzing circuits", "Compact models", "<no title>", "Components", "Credits", "Directional couplers", "Design rule checks", "Edge couplers", "GDS to Meep", "Git (and GitHub)", "Glossary", "Grating couplers", "Introduction", "KLayout", "Laboratory Tools", "Defining the layer stack", "Meep to GDS", "Multimode Interferometers (MMIs)", "Mach-Zehnder interferometers", "Open source software", "Optical I/O", "Optimization and inverse design", "Passive Components", "Process design kits", "Phase Shifters", "Heaters", "PN and PIN Junctions", "What are photonic devices?", "Python", "Improving the Ray-optic Model", "Ring Resonators", "Scattering parameters", "Shape optimization", "Software", "Visual Studio Code", "Waveguides", "Waveguide modes", "Modelling Wavegudies", "Polarization", "Total Internal Reflection", "WSL (Windows-only)", "Y-Branches"], "terms": {"sponsor": 0, "googl": [0, 7, 15, 22], "thi": [0, 3, 6, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 25, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44], "intend": [0, 11, 22], "those": [0, 6, 21, 22, 44], "experi": [0, 21, 29, 36, 42], "electr": [0, 6, 8, 13, 14, 15, 18, 20, 21, 25, 27, 28, 29, 30, 32, 33, 38, 39, 41, 42], "engin": [0, 15, 21, 22, 30], "ar": [0, 3, 6, 8, 9, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 25, 27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44], "interest": [0, 15, 21], "learn": [0, 3, 6, 31], "about": [0, 6, 8, 17, 21, 22, 31, 32, 33, 34, 36, 37, 40, 41], "integr": [0, 13, 15, 16, 18, 26, 30, 37], "applic": [0, 8, 13, 21, 22, 28, 29, 31, 34], "cours": [0, 8, 12, 13, 15, 22, 25, 31, 36, 37, 42], "wa": [0, 21, 34, 43], "creat": [0, 6, 8, 11, 12, 13, 14, 15, 17, 18, 20, 21, 30, 31, 32, 33, 34, 36, 39, 42, 43, 44], "collabor": [0, 12, 15, 22], "between": [0, 11, 13, 15, 20, 21, 27, 28, 29, 30, 32, 33, 34, 40, 42, 44], "brigham": 0, "young": 0, "univers": [0, 18], "s": [0, 3, 6, 12, 13, 14, 15, 16, 18, 22, 27, 28, 29, 30, 31, 33, 37, 39, 40, 41, 42, 43, 44], "skywat": 0, "project": [0, 12, 22], "introduct": [0, 21], "credit": 0, "open": [0, 6, 8, 12, 13, 14, 15, 16, 17, 20, 31, 33, 36, 37, 40, 43], "sourc": [0, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 30, 31, 33, 36, 37], "softwar": [0, 6, 12, 13, 15, 16, 17, 18, 26, 31, 34], "what": [0, 6, 8, 11, 12, 21, 22, 41, 42], "defin": [0, 3, 6, 8, 9, 11, 14, 20, 21, 33, 34, 39, 40, 42], "layer": [0, 6, 8, 13, 20, 26, 34, 38, 44], "stack": [0, 13, 26, 31], "compon": [0, 8, 11, 13, 14, 15, 18, 19, 20, 22, 23, 30, 32, 34, 39, 41, 44], "waveguid": [0, 6, 13, 14, 18, 20, 21, 25, 27, 28, 29, 30, 32, 33, 34, 41, 44], "optic": [0, 6, 14, 18, 20, 25, 28, 29, 30, 33, 41, 42, 44], "i": [0, 6, 8, 11, 14, 20, 21, 27, 31, 33, 34, 36, 42], "o": [0, 6], "optim": [0, 3, 14, 21, 30, 31, 34, 44], "invers": [0, 30, 42], "compact": [0, 13, 15, 26, 44], "model": [0, 3, 13, 15, 18, 26, 34, 39, 42], "rule": [0, 13, 26, 31], "check": [0, 11, 12, 13, 18, 30, 34], "process": [0, 6, 8, 11, 13, 18, 28, 31, 34, 40], "kit": [0, 13], "mach": [0, 20, 30], "zehnder": [0, 20, 30], "interferomet": [0, 6, 13, 25, 30], "advanc": 0, "phase": [0, 8, 20, 21, 30, 32, 34, 44], "shifter": [0, 21, 30], "analyz": [0, 15, 33], "glossari": 0, "repositori": [0, 12, 36], "pdk": [0, 6, 9, 13, 18, 21, 26, 30], "document": [0, 15, 17, 21, 33, 34], "In": [3, 6, 8, 11, 12, 14, 15, 18, 20, 21, 22, 25, 27, 28, 29, 30, 31, 33, 34, 36, 37, 39, 44], "section": [3, 6, 14, 16, 18, 23, 25, 30, 31, 32, 34, 36, 40, 41, 43], "we": [3, 6, 8, 12, 13, 14, 15, 17, 18, 21, 22, 23, 25, 27, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44], "how": [3, 6, 8, 11, 13, 15, 18, 20, 21, 25, 31, 32, 33, 36, 39, 40, 41, 42, 43], "interpret": [3, 31], "data": [3, 13, 18, 34, 41], "collect": [3, 21], "from": [3, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 27, 28, 29, 30, 31, 32, 33, 34, 37, 39, 41, 43, 44], "our": [3, 6, 17, 21, 29, 32, 33, 34, 36, 39], "whenev": 3, "obtain": [3, 28], "import": [3, 8, 11, 14, 18, 19, 20, 21, 22, 31, 32, 33, 39, 41, 42, 44], "rememb": [3, 33], "renspons": 3, "chang": [3, 6, 8, 12, 13, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 34, 39, 40, 42, 44], "wavelength": [3, 8, 14, 18, 20, 21, 30, 32, 33, 34, 39, 40], "well": [3, 6, 11, 12, 16, 29, 30, 31, 32, 41], "being": [3, 8, 14, 16, 20, 21, 22, 30, 32, 44], "test": [3, 11, 12, 15, 17, 18, 31, 34, 41], "order": [3, 6, 13, 14, 25, 28, 30, 32, 34, 36, 39, 44], "properli": 3, "must": [3, 6, 8, 11, 13, 18, 21, 22, 28, 33, 44], "first": [3, 8, 11, 12, 21, 25, 27, 33, 34, 39, 41, 42, 43], "deemb": 3, "depend": [3, 8, 18, 21, 22, 27, 28, 31, 39, 40, 41, 42], "can": [3, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44], "done": [3, 6, 19, 30, 31, 34, 37], "varieti": [3, 6, 14, 20], "wai": [3, 6, 15, 20, 21, 22, 27, 28, 30, 31, 32, 33, 34, 36, 37, 40, 42], "includ": [3, 6, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 26, 27, 28, 29, 30, 31, 37, 39, 40, 43], "consid": [3, 8, 14, 20, 21, 29, 32, 40, 41, 44], "follow": [3, 6, 13, 14, 19, 21, 25, 29, 31, 32, 33, 36, 40, 42, 43], "via": [3, 12, 17, 18, 31, 33, 38, 43], "sweep": 3, "numpi": [3, 6, 8, 12, 14, 21, 31, 33, 34, 39, 42], "np": [3, 6, 8, 14, 18, 33, 39, 42], "matplotlib": [3, 6, 12, 14, 18, 21, 31, 33, 34, 39, 42, 44], "pyplot": [3, 14, 21, 33, 34, 39, 42, 44], "plt": [3, 14, 21, 33, 34, 39, 42, 44], "poly_ord": 3, "4": [3, 6, 8, 20, 21, 31, 33, 34, 39], "load": [3, 11, 16, 33], "file": [3, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 30, 31, 33, 34, 36, 37, 43], "oscope_data": 3, "npz": 3, "power": [3, 8, 13, 16, 20, 21, 28, 30, 33, 34], "here": [3, 6, 8, 14, 16, 18, 22, 23, 25, 31, 33, 34, 36, 37, 40, 43, 44], "raw": 3, "oscilloscop": 3, "plot": [3, 6, 8, 11, 18, 21, 31, 34, 39, 42, 44], "titl": 3, "xlabel": [3, 8], "nm": [3, 14, 18, 21], "ylabel": [3, 8], "dbm": 3, "show": [3, 6, 11, 18, 20, 21, 33, 34, 39, 42, 44], "The": [3, 6, 8, 11, 13, 14, 15, 18, 19, 20, 22, 25, 27, 28, 29, 31, 32, 33, 34, 36, 39, 40, 41, 42, 43, 44], "parabol": 3, "shape": [3, 13, 23, 30, 34, 39, 40, 44], "graph": [3, 33, 41], "due": [3, 21, 25, 32, 44], "respons": [3, 21, 44], "which": [3, 6, 8, 11, 12, 13, 14, 20, 21, 22, 28, 29, 30, 31, 32, 33, 34, 36, 38, 39, 41, 42, 43, 44], "obfusc": 3, "try": 3, "remov": [3, 8, 14, 20, 28, 29, 30, 31, 33], "effect": [3, 8, 14, 28, 29, 39], "parabola": 3, "subtract": [3, 6], "function": [3, 6, 8, 11, 14, 19, 20, 21, 31, 33, 34, 39, 40, 42], "want": [3, 6, 11, 12, 19, 20, 21, 22, 31, 33, 34, 40, 43, 44], "case": [3, 8, 16, 18, 21, 27, 31, 42, 44], "def": [3, 6, 42, 44], "model_parabola": 3, "x": [3, 6, 8, 11, 20, 34, 39, 41, 42, 44], "b": [3, 6, 8, 42], "c": [3, 6, 8, 11, 21, 31], "d": [3, 7, 15, 31, 34, 40, 41, 42, 43], "e": [3, 6, 8, 11, 12, 18, 21, 27, 30, 33, 34, 36, 39, 40, 44], "return": [3, 6, 11, 19, 21, 34, 39, 42, 44], "3": [3, 8, 11, 14, 15, 18, 19, 20, 21, 22, 31, 33, 38, 39, 42, 44], "2": [3, 6, 8, 11, 14, 15, 18, 19, 20, 21, 31, 32, 33, 39, 42, 44], "now": [3, 6, 21, 23, 31, 32, 33, 34, 37, 39, 44], "just": [3, 6, 8, 11, 13, 14, 15, 17, 21, 27, 31, 34, 39, 44], "need": [3, 6, 11, 12, 21, 22, 31, 34, 36, 40, 41, 43, 44], "paramet": [3, 6, 8, 20, 21, 30, 33], "do": [3, 6, 15, 18, 19, 22, 34, 36, 37, 41], "curve_fit": 3, "scipi": [3, 12, 31], "take": [3, 6, 8, 11, 13, 19, 21, 28, 30, 33, 34, 41, 42, 43], "y": [3, 6, 8, 11, 20, 21, 25, 27, 34, 39, 41, 42], "an": [3, 6, 8, 9, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 28, 29, 30, 31, 32, 33, 39, 40, 41, 42, 44], "initi": [3, 6, 8, 21], "guess": 3, "It": [3, 6, 8, 11, 13, 14, 15, 16, 18, 19, 21, 22, 29, 31, 32, 33, 34, 37, 39, 40, 41, 43], "covari": 3, "matrix": [3, 21, 34], "start": [3, 6, 21, 31, 32, 33, 34, 43], "end": [3, 8, 13, 14, 21, 22, 31, 34, 40, 42, 44], "argmax": 3, "1560": 3, "1580": 3, "help": [3, 6, 9, 12, 13, 16, 18, 21, 29, 32], "term": [3, 8, 13, 21, 34], "speed": [3, 8, 28, 29, 30, 40], "accuraci": 3, "add": [3, 6, 8, 18, 19, 20, 31, 34, 40, 42], "especi": [3, 11, 22, 28, 29, 31], "true": [3, 8, 11, 14, 18, 20, 21, 33, 34, 39, 40, 42, 44], "more": [3, 6, 8, 11, 15, 16, 17, 18, 20, 21, 22, 27, 29, 30, 31, 32, 33, 34, 37, 39, 40, 41, 44], "complic": [3, 6, 32, 33, 40, 44], "initial_guess": 3, "1": [3, 6, 8, 11, 14, 15, 18, 19, 20, 21, 22, 31, 32, 33, 38, 39, 40, 42, 44], "optimal_paramet": 3, "covariance_matrix": 3, "label": [3, 11, 18, 21, 42], "legend": [3, 42], "simpli": [3, 6, 14, 21, 31, 32, 33, 34], "offset": [3, 29], "make": [3, 6, 8, 13, 19, 20, 21, 22, 23, 29, 30, 31, 34, 37, 44], "easier": [3, 6, 37, 44], "see": [3, 8, 11, 13, 14, 18, 20, 21, 22, 27, 29, 33, 34, 39, 41, 44], "power_correct": 3, "max": [3, 34], "correct": [3, 11], "ones": [3, 6, 31], "len": [3, 39], "averag": [3, 14, 40], "gdsfactori": [6, 8, 11, 13, 15, 19, 20, 21, 31, 33, 34, 39, 44], "them": [6, 8, 11, 15, 20, 21, 22, 25, 29, 30, 31, 34, 36], "togeth": [6, 8, 12, 18, 30, 31, 32], "larger": [6, 8, 13, 15, 21, 30, 44], "design": [6, 13, 14, 15, 16, 18, 19, 20, 22, 23, 25, 33, 34], "simpl": [6, 15, 18, 21, 28, 30, 31, 38, 40, 42], "complex": [6, 29, 30, 31, 34], "construct": [6, 13, 14, 20, 21, 27, 30, 32, 33, 34, 44], "exampl": [6, 11, 12, 13, 15, 18, 19, 20, 21, 22, 25, 27, 30, 31, 34, 39, 40], "contain": [6, 11, 13, 18, 19, 21, 30, 31, 32, 39], "other": [6, 11, 12, 13, 17, 18, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 37, 39, 40, 41, 44], "thei": [6, 9, 11, 12, 13, 15, 18, 20, 21, 22, 30, 31, 32, 34, 40, 43, 44], "usual": [6, 9, 13, 15, 18, 30], "have": [6, 8, 11, 12, 13, 14, 15, 18, 20, 21, 22, 27, 29, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 43, 44], "allow": [6, 8, 11, 12, 13, 15, 16, 21, 22, 30, 34, 37], "you": [6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 30, 31, 33, 34, 36, 37, 39, 42, 43, 44], "factori": 6, "when": [6, 8, 11, 14, 16, 18, 21, 22, 27, 29, 30, 31, 33, 34, 39, 40, 41, 42, 44], "align": [6, 8], "each": [6, 8, 11, 13, 14, 16, 17, 18, 20, 21, 28, 30, 31, 33, 39, 40, 42, 44], "taken": [6, 18, 34], "care": [6, 34, 40, 41], "automat": [6, 16, 17, 18], "made": [6, 13, 22, 23, 38, 39, 40], "up": [6, 8, 11, 12, 13, 14, 18, 20, 21, 22, 28, 30, 31, 33, 34, 37, 40, 43, 44], "option": [6, 11, 15, 37], "most": [6, 8, 11, 12, 14, 16, 18, 19, 22, 28, 31, 32, 33, 34, 36, 38, 40, 41, 44], "basic": [6, 14, 16, 20, 21, 31, 34, 42], "build": [6, 13, 21, 25, 30, 32, 33, 43], "object": [6, 8, 18, 19, 21, 32, 34, 39], "gf": [6, 11, 20, 21, 44], "seri": [6, 15, 31], "conveni": [6, 21], "visual": [6, 13, 14, 18, 19, 21, 32, 36, 39], "jupyt": [6, 15, 34, 37], "notebook": [6, 11, 15, 33], "For": [6, 11, 13, 17, 18, 20, 21, 27, 28, 29, 30, 31, 33, 34, 36, 40, 42], "plot_holoview": 6, "plot_jupyt": 6, "plot_klayout": 6, "plot_matplotlib": [6, 21], "plot_netlist": 6, "plot_netlist_flat": 6, "plot_widget": 6, "some": [6, 8, 11, 13, 14, 16, 17, 18, 21, 22, 25, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 41, 44], "alias": 6, "default": [6, 21, 34, 36, 37, 43, 44], "could": [6, 11, 13, 18, 20, 21, 32, 34, 41], "keyword": [6, 11, 21], "argument": [6, 11, 21, 42], "below": [6, 8, 11, 14, 18, 19, 20, 21, 22, 27, 32, 33, 34, 39, 41, 42], "format": [6, 8, 14, 15, 16, 17, 20, 21, 33, 34], "ll": [6, 12, 15, 21, 22, 31, 33, 34, 36, 39, 40, 41, 43], "explicit": [6, 21, 22], "But": [6, 22, 34], "recommend": [6, 8, 12, 17, 31, 36, 37, 43], "displai": [6, 16, 33, 42], "interact": [6, 8, 14, 25, 31, 32, 34, 36, 40], "klayout": [6, 18, 30, 34, 36, 43], "widget": 6, "lowest": [6, 13], "block": [6, 8, 13, 14, 19, 21, 25, 30, 33, 34, 43, 44], "list": [6, 11, 13, 19, 21, 30, 31, 34, 40], "vertic": [6, 19, 30, 39, 42], "adjac": 6, "pair": [6, 18], "line": [6, 8, 12, 13, 14, 17, 20, 30, 31, 32, 33, 34, 39, 41, 42, 43], "doe": [6, 8, 21, 22, 32, 41], "cross": [6, 8, 14, 15, 16, 18, 39, 40], "ani": [6, 8, 11, 13, 14, 18, 22, 29, 31, 32, 34, 36, 37, 39, 42, 44], "within": [6, 11, 13, 16, 20, 21, 27, 28, 29, 30, 32, 33, 34, 39, 40], "although": [6, 13, 18, 30, 36], "overlap": [6, 8, 33], "parallel": [6, 8, 11, 39, 41], "lie": 6, "upon": [6, 32, 42], "point": [6, 13, 32, 39], "exist": [6, 8, 13, 18, 22, 30, 31, 34, 39], "geometri": [6, 8, 11, 13, 14, 18, 19, 20, 32, 33, 39, 40, 44], "instead": [6, 11, 13, 14, 20, 21, 22, 29, 30, 31, 34, 40], "new": [6, 13, 15, 16, 18, 27, 30, 31, 43], "one": [6, 8, 11, 13, 14, 15, 18, 20, 21, 22, 27, 28, 29, 30, 31, 33, 36, 39, 40, 41, 44], "That": [6, 22, 41], "parameter": [6, 21, 30, 40], "call": [6, 8, 18, 20, 21, 28, 29, 30, 31, 32, 33, 34, 39, 41, 42], "even": [6, 8, 30, 31, 40], "hierarch": [6, 13], "nest": 6, "save": [6, 8, 11, 13, 14, 19, 20, 31, 33], "memori": [6, 13, 30], "becaus": [6, 8, 12, 14, 18, 20, 21, 22, 28, 29, 30, 33, 34, 40, 41, 42, 44], "core": [6, 8, 11, 18, 32, 38, 39, 40, 42], "onli": [6, 11, 12, 13, 15, 17, 20, 21, 22, 25, 31, 32, 33, 34, 36, 40, 41, 44], "onc": [6, 16, 30, 31, 34, 41], "referenc": 6, "mani": [6, 8, 11, 12, 13, 15, 17, 21, 22, 28, 30, 31, 33, 40, 44], "time": [6, 8, 11, 12, 13, 14, 16, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 34, 40, 42, 43, 44], "These": [6, 8, 11, 12, 13, 18, 21, 22, 30, 32, 34, 41, 42], "place": [6, 8, 13, 20, 28, 30, 36], "anywher": [6, 31], "independ": [6, 28], "all": [6, 8, 12, 13, 14, 15, 17, 18, 20, 21, 22, 30, 31, 32, 33, 34, 36, 37, 40, 41, 42, 44], "appli": [6, 16, 18, 29, 34], "base": [6, 8, 12, 17, 20, 22, 28, 29, 30, 31, 34, 42, 44], "instanc": [6, 11, 18, 21, 30, 31], "had": [6, 11, 21, 30], "same": [6, 8, 11, 14, 15, 17, 18, 20, 21, 22, 28, 29, 30, 31, 33, 44], "taper": [6, 14, 20, 32], "its": [6, 8, 11, 17, 18, 21, 22, 28, 30, 31, 33, 34, 40, 41], "input": [6, 8, 13, 20, 21, 30, 33, 34, 44], "output": [6, 8, 11, 13, 14, 20, 21, 30, 33, 34, 42, 44], "repeatedli": 6, "would": [6, 11, 13, 14, 18, 20, 21, 22, 30, 32, 34, 43], "good": [6, 21, 34], "requir": [6, 8, 18, 21, 22, 28, 29, 30, 31], "higher": [6, 18, 27, 28, 29, 32, 33, 34, 39, 40, 44], "level": [6, 14, 21, 31], "By": [6, 11, 14, 21, 29], "draw": 6, "bank": 6, "without": [6, 13, 21, 22, 28, 29, 30, 31, 32], "much": [6, 8, 11, 21, 32, 33, 34, 37], "pattern": [6, 14, 18, 21, 30, 32], "where": [6, 8, 11, 20, 21, 22, 28, 31, 33, 34, 41, 44], "across": [6, 13, 21], "compos": [6, 30], "interconnect": [6, 13], "compound": 6, "intermedi": 6, "specifi": [6, 8, 11, 13, 14, 19, 31, 34, 40], "direct": [6, 13, 19, 20, 25, 30, 32, 33, 34, 39, 41, 42, 44], "face": [6, 13], "either": [6, 11, 13, 30, 41, 44], "out": [6, 8, 11, 13, 14, 16, 20, 21, 31, 32, 33, 34, 39, 41, 44], "also": [6, 8, 11, 12, 13, 14, 15, 16, 20, 21, 22, 27, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44], "width": [6, 8, 13, 14, 18, 19, 20, 21, 29, 30, 33, 39, 40], "attach": [6, 11, 13], "your": [6, 8, 9, 11, 12, 13, 14, 16, 18, 19, 21, 22, 30, 31, 33, 34, 36, 37, 41, 43], "convei": 6, "inform": [6, 13, 15, 17, 18, 21, 22, 26, 27, 29, 30, 34, 37], "otherwis": [6, 21, 33], "seen": [6, 8, 11, 22, 33], "A": [6, 8, 13, 14, 18, 20, 21, 22, 26, 28, 29, 30, 31, 33, 36, 37, 38, 39, 40, 41, 44], "add_label": 6, "pass": [6, 11, 21, 27, 30, 31, 34], "text": [6, 8, 18, 21, 22, 31, 33, 37], "locat": [6, 14, 19, 43], "should": [6, 8, 11, 15, 18, 21, 34, 37, 44], "shown": [6, 8, 19, 33, 34], "posit": [6, 18, 21, 30, 33, 34, 39, 41], "center": [6, 8, 14, 19, 20, 21, 29, 33, 34, 44], "passiv": [6, 23], "sever": [6, 8, 11, 16, 27, 28, 29, 31, 37, 40], "lai": [6, 16], "than": [6, 8, 14, 18, 20, 22, 27, 29, 30, 32, 42, 44], "mai": [6, 8, 11, 12, 13, 18, 20, 21, 22, 27, 28, 29, 30, 34], "part": [6, 8, 9, 11, 21, 22, 34, 38, 39, 41, 44], "track": [6, 12, 31, 34], "number": [6, 8, 11, 13, 18, 20, 22, 31, 33, 34, 39], "As": [6, 8, 11, 14, 15, 18, 21, 22, 28, 29, 34, 41], "let": [6, 13, 21, 27, 32, 33, 34, 39, 40, 41, 42], "tupl": [6, 18, 21], "coordin": 6, "circular": 6, "fashion": [6, 13], "repeat": 6, "last": 6, "infer": 6, "close": [6, 8, 33], "script": [6, 8, 18, 20, 30, 31, 33, 43], "complet": [6, 8, 12, 13, 15, 18, 28, 33, 34, 36, 44], "run": [6, 8, 11, 12, 13, 14, 15, 16, 18, 20, 21, 22, 28, 31, 33, 39, 43, 44], "final": [6, 21, 34], "t_length": 6, "10": [6, 8, 18, 19, 21, 31, 33, 34, 39, 42, 44], "t_width_in": 6, "0": [6, 8, 11, 14, 18, 19, 20, 21, 31, 32, 33, 34, 39, 41, 42, 44], "5": [6, 8, 11, 14, 19, 20, 21, 33, 34, 39, 42, 44], "t_width_out": 6, "add_polygon": 6, "int": [6, 39], "assum": [6, 8, 14, 20, 21, 33, 36, 43, 44], "ve": [6, 15, 30, 31, 34], "provid": [6, 12, 21, 22, 31, 36, 37], "datatyp": [6, 18], "poli": 6, "45": [6, 8, 14, 18, 19, 20, 33, 44], "move": [6, 12, 33, 34, 43], "come": [6, 8, 11, 22, 29, 32, 34, 40, 44], "manipul": [6, 19, 30], "easili": [6, 11, 31, 43, 44], "differ": [6, 8, 11, 13, 15, 19, 20, 21, 22, 23, 27, 30, 31, 33, 38, 39, 40, 41, 42, 43, 44], "combin": [6, 8, 13, 20, 21, 27, 33], "mean": [6, 8, 11, 21, 22, 25, 30, 31, 33, 34, 41, 44], "merg": [6, 12], "xor": 6, "To": [6, 8, 11, 12, 14, 15, 20, 23, 28, 31, 33, 34, 37, 41, 43], "two": [6, 8, 11, 13, 18, 20, 21, 22, 27, 28, 29, 30, 32, 33, 38, 41, 42, 44], "group": [6, 18, 39], "piec": [6, 13], "involv": [6, 30], "itself": [6, 21, 22, 28, 31, 33, 34, 39, 40], "target": [6, 21], "result": [6, 8, 11, 13, 14, 15, 20, 21, 29, 30, 33, 42], "components_a": 6, "components_b": 6, "accept": 6, "equival": [6, 8], "t": [6, 8, 14, 15, 17, 18, 20, 21, 28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44], "linspac": [6, 21], "pi": [6, 8, 20, 21, 33], "100": [6, 8, 34], "co": [6, 21, 42], "sin": [6, 8, 42], "circl": [6, 33], "triangl": 6, "pacman": 6, "precis": [6, 13, 20, 21, 28], "1e": 6, "6": [6, 8, 21, 34], "origin": [6, 22, 31, 33], "boolean_subtract": 6, "add_ref": [6, 21, 44], "talk": [6, 33, 40], "later": [6, 21, 32], "dimens": [6, 13, 41], "redefin": 6, "everi": [6, 11, 21, 34, 44], "write": [6, 11, 22, 31, 37], "addit": [6, 11, 27], "calcul": [6, 21, 33, 34, 39, 40, 42], "cach": 6, "correspond": [6, 11, 18, 21, 28, 30, 32, 40, 42], "so": [6, 8, 11, 13, 18, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 34, 36, 40, 42, 44], "subsequ": 6, "rebuild": 6, "enabl": [6, 8, 17, 22, 27, 34], "decor": 6, "If": [6, 8, 12, 14, 19, 20, 21, 22, 30, 31, 33, 34, 36, 37, 41, 42, 43, 44], "re": [6, 13, 15, 18, 21, 22, 31, 34, 36, 37], "develop": [6, 12, 13, 22, 30, 37], "modifi": [6, 11, 21, 22, 30, 34], "content": [6, 22], "again": [6, 29, 31, 34], "code": [6, 11, 12, 13, 15, 16, 18, 19, 21, 22, 31, 33, 34, 36, 42, 43], "won": [6, 15, 18, 21, 31, 34], "clear": [6, 32], "clear_cach": 6, "librari": [6, 21, 22, 31, 40, 44], "reusabl": 6, "circuit": [6, 8, 13, 14, 15, 16, 17, 19, 20, 21, 25, 26, 33, 36, 38, 40, 44], "anoth": [6, 8, 11, 18, 20, 21, 22, 27, 29, 34, 41], "fantast": 6, "benefit": [6, 36], "type": [6, 18, 28, 29, 31, 34, 44], "hint": 6, "valid": [6, 9, 13, 34], "name": [6, 11, 18, 19, 21, 22, 29, 31, 34, 42], "abl": [6, 8, 12, 20, 30, 31], "taper_compon": 6, "length": [6, 13, 14, 20, 21, 27, 28, 30, 33, 44], "float": [6, 21], "width_in": 6, "width_out": 6, "like": [6, 8, 11, 13, 14, 15, 17, 18, 19, 21, 22, 27, 28, 29, 31, 34, 36, 37, 38, 39, 40, 42, 44], "quickli": 6, "rectangl": [6, 39], "ellips": [6, 14], "ring": [6, 13, 25], "bend_circular": 6, "bend_eul": 6, "know": [6, 15, 33, 34, 36, 41], "outward": 6, "awai": [6, 8, 28], "match": [6, 8, 11, 20, 33, 34], "respect": [6, 8, 33, 40, 41, 42], "expand": [6, 27, 28], "earlier": 6, "note": [6, 8, 14, 20, 21, 22, 33, 34, 43], "common": [6, 13, 16, 18, 20, 21, 25, 28, 29, 31, 40, 44], "toward": [6, 34], "o1": [6, 11, 20, 21, 44], "orient": [6, 41], "180": [6, 8], "port_typ": 6, "o2": [6, 11, 20, 21, 44], "add_port": [6, 19], "And": [6, 15, 21], "convent": [6, 13, 21, 29, 30, 41], "clock": 6, "wise": 6, "bottom": [6, 37], "left": [6, 8, 14, 18, 33, 34, 37, 42, 44], "corner": [6, 37], "prefix": 6, "index": [6, 8, 14, 18, 19, 20, 21, 25, 27, 28, 29, 31, 32, 33, 34, 36, 38, 39, 42, 44], "previous": [6, 18], "essenti": [6, 9, 16], "pointer": [6, 31], "There": [6, 8, 11, 13, 18, 21, 28, 31, 33, 34, 37, 40, 44], "limit": [6, 20], "gdsii": [6, 34], "specif": [6, 8, 11, 14, 17, 18, 22, 31, 34, 37, 42], "built": [6, 22, 31, 32, 39], "around": [6, 12, 31, 33, 34], "previou": [6, 21, 31], "2x2": [6, 11, 20, 34], "multimod": [6, 25, 44], "mmi": [6, 11, 13, 19, 25, 34], "wide": [6, 13], "therefor": [6, 21, 22, 28, 30, 31, 36, 44], "side": [6, 29, 33, 40, 44], "four": [6, 33, 34], "redraw": 6, "individu": [6, 43], "right": [6, 8, 14, 22, 33, 34, 42, 43, 44], "off": [6, 20, 30, 31, 34, 42, 44], "bat": 6, "mmi2x2": [6, 11, 20, 34], "gap": [6, 33, 44], "125": 6, "determin": [6, 8, 14, 20, 39, 40, 42, 44], "taper_length": [6, 19], "taper_width_in": 6, "taper_width_out": 6, "taper_c": 6, "bodi": [6, 20], "rect": 6, "size": [6, 8, 13, 14, 19, 20, 22, 30, 32, 33, 34, 44], "none": [6, 39, 42, 44], "port_width": 6, "port_cent": 6, "o3": [6, 11, 20, 44], "o4": [6, 11, 20], "mmi_ref": 6, "shift": [6, 21, 28], "shorthand": [6, 21], "taper_ref": 6, "_": 6, "rang": [6, 13, 14, 18, 28, 34], "enumer": [6, 42], "destin": [6, 44], "alon": [6, 21, 39], "expos": [6, 21, 30], "ref": 6, "f": [6, 8, 15, 34, 39, 42], "auto_rename_port": 6, "consist": [6, 18, 21, 33, 38], "simpler": 6, "find": [6, 8, 13, 20, 33, 37], "math": [6, 34], "fit": [6, 30], "yourself": 6, "often": [6, 11, 22, 30, 31, 33, 34, 40, 44], "swap": [6, 21, 32], "redo": 6, "inlin": [6, 15], "rect_ref": 6, "figur": [6, 27, 29, 34, 38, 42, 44], "put": [6, 8, 15, 19, 20, 32], "manufactur": [6, 9, 11, 13, 15, 20, 21, 28, 34, 38, 40, 44], "share": [6, 8, 14, 33], "tool": [6, 12, 13, 15, 16, 18, 26, 30, 31, 34, 36, 39, 43], "potenti": [6, 22, 30], "lumer": 6, "fix": [6, 22, 31], "write_gd": [6, 19], "suppli": [6, 28], "path": [6, 8, 12, 14, 16, 18, 21, 30, 33, 43], "current": [6, 28, 32], "directori": [6, 8, 14, 20, 33], "sometim": [6, 8, 11, 14, 31], "necessari": [6, 11, 13, 31, 32, 34, 39], "perhap": [6, 22], "meep": [6, 8, 13, 14, 15, 20, 31, 33, 39, 44], "Or": [6, 33], "were": [6, 11, 14, 30, 31, 32, 33, 41], "given": [6, 8, 11, 14, 21, 31, 34, 40, 42], "fab": [6, 18, 30, 44], "while": [6, 8, 12, 16, 18, 21, 22, 25, 29, 30, 31, 32, 33, 34, 36, 37, 41, 42, 44], "ha": [6, 8, 11, 14, 16, 18, 21, 22, 30, 31, 32, 33, 34, 38, 39, 41], "convert": [6, 11, 13, 30, 42], "step": [6, 8, 11, 15, 18, 23, 30, 33, 43], "after": [6, 19, 21, 31, 34], "convers": 6, "get": [6, 8, 11, 12, 18, 19, 20, 21, 30, 33, 34, 42, 43, 44], "branch": [6, 21, 25], "siepic": [6, 21], "ebeam": [6, 21], "ebeam_y_1550": 6, "github": [6, 15, 17, 21, 33], "import_gd": 6, "filenam": [6, 44], "splitter": [6, 11, 21, 30, 44], "read": [6, 8, 16, 18, 21, 22, 30, 31, 34], "manual": [6, 30, 40, 43], "hover": 6, "mous": 6, "examin": [6, 33], "themselv": 6, "midpoint": 6, "7": [6, 8, 31, 34], "75": [6, 8, 21, 39], "separ": [6, 21], "straight": [6, 32, 34, 41, 44], "bend": [6, 30], "radiu": [6, 33], "recal": [6, 21], "canva": 6, "straight_ref": 6, "bend_ref": 6, "pick": 6, "recreat": [6, 31], "racetrack": [6, 33], "coupler": [6, 11, 13, 18, 20, 21, 23, 25, 30, 32, 33, 44], "camacholab": [7, 15], "sequoia": [7, 15, 18, 21], "ploeg": [7, 15], "ph": 7, "candid": 7, "ryan": [7, 15], "camacho": [7, 15], "associ": [7, 13], "professor": 7, "elis": 7, "bangert": 7, "undergradu": 7, "research": 7, "joel": 7, "kartchner": 7, "chandler": 7, "parkin": 7, "noah": 7, "bailei": 7, "kevin": 7, "richin": 7, "small": [8, 13, 16, 28, 29, 37], "transfer": [8, 28, 30, 33], "light": [8, 11, 13, 14, 20, 21, 25, 27, 28, 30, 32, 33, 34, 38, 39, 40, 41], "multipl": [8, 11, 13, 15, 18, 33, 41], "eigenmod": [8, 20, 33], "mode": [8, 13, 20, 21, 30, 33, 34, 40, 41, 44], "field": [8, 11, 14, 20, 21, 30, 32, 34, 39, 41, 43, 44], "outsid": [8, 22, 25, 34, 39, 42], "evanesc": [8, 32, 39], "second": [8, 11, 21, 27, 28, 31, 39, 42, 44], "propag": [8, 21, 27, 32, 33, 34, 39, 41], "us": [8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44], "photon": [8, 11, 13, 14, 15, 16, 17, 18, 20, 21, 25, 26, 29, 31, 32, 33, 34, 38, 40, 41, 43, 44], "amount": [8, 14, 21, 28, 31, 34], "thing": [8, 15, 18, 31, 34, 36, 37, 39, 44], "region": [8, 18, 20, 27, 29, 30, 34, 44], "enough": [8, 30, 36, 42], "incid": [8, 11, 42], "distanc": [8, 20, 33, 38], "materi": [8, 14, 15, 18, 19, 20, 22, 25, 27, 28, 29, 30, 32, 33, 34, 38, 39, 40, 42, 44], "layout": [8, 11, 15, 16, 21, 30, 31, 33, 36], "produc": [8, 21], "g": [8, 12, 15, 18, 30, 40, 42, 44], "50": [8, 13, 21, 44], "25": [8, 14, 18, 19, 21, 34, 42], "fraction": [8, 20, 44], "geometr": [8, 13, 14, 20, 26, 30, 33], "describ": [8, 14, 21, 27, 29, 30, 32, 33, 34, 36, 41], "kappa": [8, 33], "frac": [8, 14, 21, 33, 40, 42], "p_": 8, "p_0": 8, "cl": 8, "coeffici": [8, 21, 42], "l": [8, 21, 33], "found": [8, 37, 39, 40], "analysi": [8, 13, 14], "system": [8, 12, 13, 14, 15, 18, 20, 26, 31, 33, 36, 37], "odd": 8, "antisymmetr": 8, "occur": [8, 20, 21, 33, 42], "circ": 8, "similarli": 8, "symmetr": [8, 11, 34, 44], "user": [8, 12, 22, 31, 43], "permitt": [8, 25], "clad": [8, 14, 18, 30, 32, 34, 38, 39, 40, 42, 44], "refract": [8, 14, 18, 21, 25, 27, 28, 29, 32, 38, 39, 40], "indic": [8, 14, 27, 33, 34, 40, 42], "valu": [8, 11, 18, 21, 31, 32, 34, 39, 42], "rel": [8, 19, 21, 27, 28, 30, 31, 44], "increas": [8, 14, 28, 29, 40], "decreas": [8, 14, 40], "notic": [8, 21, 22, 27, 32, 39, 40, 42], "intens": [8, 14, 20, 21, 33, 34, 44], "insid": [8, 33, 39], "gplugin": [8, 31, 39], "gm": [8, 11, 39], "find_modes_coupl": 8, "core_width": [8, 39], "core_materi": [8, 39], "clad_materi": [8, 39], "core_thick": [8, 39], "22": [8, 21, 34, 43], "resolut": [8, 11, 14, 19, 20, 33, 34, 39, 44], "40": [8, 18, 34, 39, 44], "sz": [8, 39], "nmode": [8, 39], "m1": [8, 18, 39], "m2": [8, 33, 39], "look": [8, 11, 22, 25, 31, 34, 37, 41, 44], "big": 8, "print": [8, 11, 13, 21, 34, 39], "neff": [8, 39], "dielectr": [8, 39, 44], "sidebar": 8, "plot_ep": 8, "plot_ei": [8, 39], "abov": [8, 11, 14, 18, 21, 28, 30, 33, 34, 39, 41, 42, 44], "happen": 8, "desir": [8, 12, 14, 27, 30, 34], "delta": [8, 21], "n": [8, 17, 18, 20, 21, 29, 30, 31, 33, 34, 42], "lambda": [8, 14, 21, 33, 40], "n_": [8, 33, 40, 42], "eff": [8, 14, 33, 40], "find_coupling_vs_gap": 8, "crossov": 8, "tabl": 8, "detail": [8, 14, 21, 34, 37], "ne": 8, "unit": [8, 27, 28, 34], "mu": [8, 21], "m": [8, 15, 20, 21, 31, 33], "lc": 8, "dn": 8, "exponenti": [8, 39], "relationship": [8, 11, 21, 28, 29, 34], "cdot": 8, "variou": [8, 21, 30, 34, 36], "oper": [8, 18, 20, 21, 28, 29, 30, 31, 32, 33, 34, 36], "mp": [8, 11, 14, 19, 20, 33, 34, 39, 44], "gap1": 8, "gap2": 8, "11": [8, 18, 21, 31, 39], "55": [8, 14, 19, 20, 21, 33, 34, 44], "pariti": [8, 39], "even_i": [8, 34], "463631": 8, "409798": 8, "14": 8, "396530": 8, "053832": 8, "460647": 8, "410682": 8, "15": [8, 11, 21, 33, 42], "510925": 8, "049965": 8, "12": [8, 14, 18, 34], "459734": 8, "411797": 8, "16": [8, 18, 39], "166968": 8, "047937": 8, "13": [8, 34], "452682": 8, "411449": 8, "18": [8, 18], "795515": 8, "041233": 8, "448745": 8, "412270": 8, "21": [8, 42], "247526": 8, "036475": 8, "447691": 8, "414688": 8, "23": [8, 15, 21], "482841": 8, "033003": 8, "447658": 8, "416929": 8, "220085": 8, "030729": 8, "17": [8, 42], "447685": 8, "418000": 8, "26": [8, 42], "107513": 8, "029685": 8, "8": [8, 11, 34, 44], "442283": 8, "416295": 8, "29": 8, "821729": 8, "025988": 8, "9": [8, 34, 42, 44], "19": [8, 18], "439496": 8, "416231": 8, "33": 8, "311196": 8, "023265": 8, "20": [8, 11, 19, 20, 21, 33, 42], "438256": 8, "417123": 8, "36": 8, "672851": 8, "021133": 8, "own": [8, 15, 17, 18, 21, 22, 30, 31, 36], "normal": [8, 34, 43], "constant": [8, 21, 29, 33], "beta": [8, 20, 21, 33, 44], "travel": [8, 14, 21, 27, 29, 33, 39, 40, 42], "down": [8, 21, 31, 34, 39], "oscil": [8, 27, 41], "beat": [8, 20], "One": [8, 22, 30, 32, 38], "over": [8, 12, 14, 20, 30, 33, 38], "smaller": [8, 32], "faster": [8, 29], "sinc": [8, 11, 13, 14, 21, 31, 33, 34, 36, 37, 39, 44], "shorter": [8, 21, 28, 40], "give": [8, 11, 15, 21, 31, 34, 36], "begin": [8, 20, 21, 40, 42], "l_": [8, 20, 21], "nonumb": 8, "multipli": 8, "_1": [8, 20], "l_x": 8, "_2": 8, "n_1": 8, "n_2": 8, "Of": [8, 22, 42], "don": [8, 17, 21, 28, 31, 36, 40, 43, 44], "oftentim": 8, "60": 8, "receiv": 8, "equat": [8, 13, 14, 20, 21, 28, 30, 33, 39, 40], "further": [8, 11, 21, 32, 34], "explor": [8, 32, 41, 43], "send": [8, 16, 32], "affect": [8, 20, 21, 28, 33, 40, 41, 44], "minut": 8, "setup": [8, 13, 30, 31, 36, 37, 43], "gif": [8, 14, 20, 33], "typic": [8, 13, 14, 22, 26, 28, 29, 30, 38, 40], "practic": [8, 15, 21, 31], "si": [8, 14, 19, 20, 33, 39], "medium": [8, 14, 19, 20, 33, 34, 44], "sio2": [8, 14, 18, 19, 20, 33, 34, 39], "um": [8, 14, 20, 21, 34], "wvl": [8, 14, 19, 20, 33], "cell": [8, 14, 20, 30, 33, 34], "wg_width": [8, 33], "dpml": [8, 20, 34], "pad": [8, 20, 33], "07": 8, "lx": 8, "30": [8, 14, 42, 44], "sx": [8, 19, 20, 33, 44], "sy": [8, 19, 20, 33, 39, 44], "wg_center_i": 8, "pml": [8, 14, 19, 20, 33, 34, 44], "perfectli": [8, 20, 21, 33, 34], "infinit": 8, "long": [8, 21, 31, 33, 34, 38, 43], "vector3": [8, 14, 19, 20, 33, 34, 44], "puls": [8, 14, 20, 33], "fcen": [8, 14, 19, 20, 33, 34], "fwidth": [8, 14, 19, 20, 33, 34], "src": [8, 19, 20, 33, 34], "gaussiansourc": [8, 14, 19, 20, 33, 34], "frequenc": [8, 11, 13, 14, 19, 20, 21, 27, 28, 29, 32, 33, 42, 44], "eigenmodesourc": [8, 19, 20, 33, 34, 44], "eig_band": [8, 19, 20, 33, 34, 44], "eig_kpoint": [8, 19, 20, 33, 34], "sim": [8, 11, 14, 19, 20, 33, 34, 44], "cell_siz": [8, 11, 14, 19, 20, 33, 34, 44], "boundary_lay": [8, 14, 19, 33, 34, 44], "default_materi": [8, 19, 33, 44], "set": [8, 11, 13, 14, 15, 18, 20, 21, 30, 31, 33, 34, 37, 39, 42, 43], "plot2d": [8, 11, 14, 19, 20, 33, 34, 44], "warn": [8, 42], "grid": 8, "volum": [8, 34, 40, 44], "integ": [8, 18, 33], "pixel": [8, 34], "round": [8, 30, 33], "nearest": 8, "ax": [8, 21, 39, 42], "pil": [8, 14, 20, 33], "imag": [8, 14, 21, 33, 34, 44], "glob": [8, 14, 20, 33], "os": [8, 14, 20, 33, 36], "reset_meep": [8, 34], "captur": [8, 14, 20, 33], "at_begin": [8, 14, 20, 33], "output_epsilon": [8, 14, 20, 33], "to_append": [8, 14, 20, 33], "ez": [8, 14, 20, 33, 44], "at_everi": [8, 14, 20, 33], "output_efield_z": [8, 14, 20, 33], "until": [8, 11, 14, 20, 33, 34, 44], "200": [8, 11, 14, 20, 34], "gener": [8, 11, 13, 14, 18, 20, 21, 22, 27, 28, 30, 31, 33, 39, 41], "png": [8, 14, 20, 21, 33], "colormap": [8, 14, 20, 33], "work": [8, 20, 22, 31, 33, 34, 41], "h5py": [8, 14, 20, 33], "instal": [8, 12, 13, 14, 16, 20, 31, 33, 36, 37, 39, 43], "problem": [8, 14, 15, 20, 28, 33], "h5util": [8, 14, 20, 33], "h5topng": [8, 14, 20, 33], "99": [8, 14], "r": [8, 14, 20, 31, 33, 42], "zc": [8, 14, 20, 33], "rdbu": [8, 14, 20, 33, 34, 44], "ep": [8, 14, 20, 33], "000000": [8, 14, 20, 33], "00": [8, 14, 20, 21, 33, 42], "h5": [8, 14, 20, 33], "grai": [8, 14, 20, 33, 39], "frame": [8, 14, 20, 33], "img": [8, 14, 20, 33], "sort": [8, 14, 20, 30, 33], "new_fram": [8, 14, 20, 33], "append": [8, 14, 20, 33, 34], "loop": [8, 14, 20, 33, 34], "forev": [8, 14, 20, 33], "append_imag": [8, 14, 20, 33], "save_al": [8, 14, 20, 33], "clean": [8, 14, 20, 33], "workspac": [8, 14, 20, 33], "delet": [8, 14, 20, 31, 33], "invalid": [8, 14, 42], "circumv": [8, 14], "issu": [8, 14], "chosen": [8, 14, 40, 42], "sensit": [8, 14, 20, 30], "fabric": [8, 9, 13, 15, 18, 26, 28, 30, 34], "variat": [8, 20, 33], "robust": [8, 20, 31], "element": [8, 13, 21, 28, 34, 40], "principl": [8, 13, 14, 15, 18, 20, 34, 42], "behind": [8, 21, 30], "interfer": [8, 13, 14, 20, 21, 27, 32, 33, 44], "nearbi": 8, "chip": [8, 13, 14, 16, 17, 18, 21, 25, 30, 31], "parasit": 8, "too": [8, 13, 18, 21, 31, 33, 36, 41], "lead": [8, 32, 33, 40], "leak": [8, 44], "far": [8, 11, 32, 33], "apart": 8, "silicon": [8, 13, 14, 21, 29, 30, 34, 38, 39, 42, 44], "answer": [8, 21, 31, 42], "approxim": [8, 13, 18, 28], "135": 8, "micron": [8, 14, 18, 21, 39], "luka": [8, 14, 44], "chrostowski": [8, 14, 44], "stefan": 8, "prebl": 8, "facil": [9, 15, 30], "simul": [11, 13, 14, 15, 18, 19, 23, 26, 30, 39, 42, 44], "devic": [11, 13, 15, 16, 18, 20, 21, 25, 26, 27, 29, 33, 44], "befor": [11, 21, 22, 30, 31, 34], "idea": [11, 31], "perform": [11, 13, 15, 30, 31, 34], "plugin": 11, "finit": [11, 13, 30, 31, 39], "domain": [11, 13, 31, 42], "algorithm": [11, 31], "fdtd": [11, 13, 15, 31], "turn": [11, 21, 28, 34, 39], "component_from_gd": 11, "py": [11, 21, 42], "func": 11, "get_simul": [11, 20], "get_meep_geometry_from_compon": [11, 20], "grate": [11, 13, 18, 21, 23, 30], "fiber": [11, 13, 14, 18, 21, 30, 32], "connect": [11, 15, 18, 21, 30, 44], "howev": [11, 15, 21, 22, 32, 33, 34, 36, 44], "suffic": 11, "tutori": [11, 21, 34], "tidy3d": [11, 20, 40], "implement": [11, 28, 33], "tpml": [11, 20], "port_source_offset": [11, 20], "port_monitor_offset": [11, 20], "distance_source_to_monitor": [11, 20], "32": 11, "scatter": [11, 21, 41], "tell": [11, 13, 31, 33, 34, 41], "port": [11, 13, 18, 19, 20, 21, 33, 44], "purpos": [11, 17, 22, 27, 40], "write_sparameters_meep": 11, "3d": [11, 18, 32, 34], "margin": 11, "account": [11, 12, 33, 43], "kwarg": 11, "fals": [11, 18, 34, 39, 42], "wast": 11, "incorrectli": 11, "2d": [11, 14, 19, 32, 34], "comprehens": [11, 34, 41], "dictionari": [11, 18, 20, 21], "kei": [11, 14, 21, 32], "form": [11, 21, 28], "refer": [11, 13, 15, 30, 33, 40, 41], "go": [11, 15, 16, 20, 22, 23, 27, 33, 34, 36, 43, 44], "symmetri": 11, "port_symmetri": 11, "assign": [11, 30], "1x2": [11, 13, 20], "comput": [11, 13, 15, 21, 31, 33, 34, 37, 43], "written": [11, 15], "thu": [11, 33, 44], "write_sparamters_meep_mpi": 11, "write_sparameters_meep_batch": 11, "per": [11, 13, 27], "total": [11, 18, 32, 34, 39], "write_sparameters_gr": 11, "batch": 11, "write_sparameters_grating_mpi": 11, "write_sparameters_grating_batch": 11, "adequ": 11, "xmargin_left": 11, "xmargin_right": 11, "sp": 11, "plot_sparamet": 11, "reflect": [11, 14, 18, 20, 25, 32, 34, 39, 44], "wave": [11, 13, 14, 20, 21, 27, 33, 34, 39, 40, 41, 42], "why": [11, 32, 41], "program": [12, 13, 16, 31, 37], "environ": [12, 15, 17, 22, 36, 37], "uncommon": 12, "roll": [12, 22], "back": [12, 14, 30, 33, 42, 44], "break": [12, 31], "someth": [12, 31], "product": [12, 42], "version": [12, 21, 22, 43], "control": [12, 17, 21, 22], "vc": 12, "extrem": [12, 22], "who": [12, 22], "simultan": [12, 41], "edit": [12, 30, 43], "rather": [12, 30, 33], "painlessli": 12, "predomin": 12, "programm": [12, 22], "todai": 12, "command": [12, 13, 17, 21, 31, 34, 39, 43], "entir": [12, 13, 15, 32, 34], "ecosystem": 12, "host": [12, 15, 31], "servic": 12, "gui": [12, 34, 36], "id": [12, 37], "sprung": 12, "alreadi": [12, 21, 30, 33, 34], "linux": [12, 13, 16, 31, 36, 37, 43], "temin": 12, "enter": [12, 21, 33, 34], "machin": [12, 13, 31, 36, 43], "window": [12, 13, 16, 31, 36, 42], "packag": [12, 15, 16, 17, 18, 21, 36, 39], "mac": [12, 16, 31, 36], "forc": [12, 22], "wsl": [12, 13, 31, 36], "still": [12, 29, 31, 32, 34, 44], "download": [12, 15, 16, 31, 37, 43], "link": [12, 29, 31], "maco": [12, 13, 31, 36, 37], "xcode": 12, "termin": [12, 31, 36, 37, 43], "select": [12, 16, 18, 43], "through": [12, 15, 21, 23, 25, 27, 28, 29, 30, 32, 34, 36, 37, 39, 40, 41, 43], "debian": 12, "distribut": [12, 13, 22, 31, 39], "ubuntu": [12, 31, 36, 43], "sudo": 12, "apt": 12, "rpm": 12, "fedora": 12, "rhel": 12, "cento": 12, "dnf": 12, "known": [12, 14, 21, 22, 31, 37, 38, 39, 41, 42], "free": [12, 13, 15, 16, 22, 28, 30, 31, 40], "privat": 12, "bootcamp": [12, 15, 18, 21, 33, 34], "along": [12, 33, 39, 41, 42], "popular": [12, 22, 31, 37, 38], "python": [12, 13, 15, 16, 18, 30, 34, 36, 37, 42], "keep": [12, 15, 31, 34], "definit": [13, 22], "throughout": [13, 21], "mathemat": [13, 21, 30, 33], "descript": 13, "behavior": [13, 21, 30, 32, 33, 41, 42, 44], "cutback": 13, "techniqu": 13, "measur": [13, 14, 20, 21, 28, 33, 40], "attenu": [13, 30, 33], "transmiss": [13, 21, 27, 33, 34, 42], "delai": [13, 30], "count": 13, "etc": [13, 18, 30, 31, 40], "drc": [13, 16, 18, 30], "verifi": [13, 31, 34], "ensur": [13, 21, 30, 31, 34, 44], "error": [13, 18, 20, 39], "caus": [13, 21, 29], "fail": [13, 34], "short": [13, 14, 16, 21, 22, 29], "featur": [13, 16, 30, 31, 37, 39, 40], "resolv": [13, 42], "drastic": 13, "foundri": 13, "minimum": [13, 20, 30], "space": [13, 28, 30, 33, 40], "numer": [13, 39], "electrodynam": 13, "solut": 13, "differenti": [13, 28, 39], "method": [13, 15, 17, 19, 21, 22, 30, 31, 34, 36], "cover": [13, 15], "singl": [13, 15, 20, 21, 30, 33, 36, 44], "primari": 13, "avail": [13, 15, 16, 18, 22, 30, 31, 36], "platform": [13, 15, 31], "yaml": [13, 21], "flow": [13, 26], "gd": [13, 14, 15, 16, 18, 30, 31, 34, 36, 44], "graphic": 13, "coupl": [13, 14, 21, 22, 30, 44], "reson": [13, 25], "instrument": [13, 17, 20], "util": [13, 14, 18, 20, 21, 22], "beam": [13, 14, 20, 21, 32], "multi": 13, "split": [13, 20, 21, 34], "ideal": [13, 14, 21, 32], "nearli": 13, "imposs": 13, "polygon": [13, 30], "electron": [13, 26, 32, 34], "digit": [13, 26], "dry": 13, "modif": 13, "replic": 13, "insul": [13, 38], "soi": [13, 18, 30, 38, 42], "technolog": [13, 21, 30], "substrat": [13, 14, 18, 30, 38, 39], "semiconductor": 13, "wafer": [13, 30, 38], "vscode": [13, 31], "studio": [13, 36], "commonli": [13, 22, 31, 40], "vs": [13, 37], "editor": [13, 15, 36, 37], "microsoft": [13, 36, 37], "support": [13, 15, 17, 18, 20, 29, 40, 41], "debug": [13, 31], "syntax": [13, 17, 31, 39], "highlight": 13, "intellig": 13, "snippet": 13, "refactor": [13, 31], "embed": [13, 15], "git": [13, 18, 21], "wikipedia": 13, "subsystem": [13, 36], "bash": [13, 31, 43], "directli": [13, 15, 18, 19, 34], "unmodifi": 13, "overhead": 13, "tradit": [13, 38], "virtual": [13, 17, 36], "dual": 13, "boot": 13, "diffract": 14, "cabl": [14, 30], "edg": [14, 23], "teeth": 14, "drawn": [14, 32], "onto": [14, 23, 30, 38, 43], "altern": [14, 43], "structur": 14, "propog": [14, 21, 30], "hyugen": 14, "fresnel": [14, 42], "bragg": 14, "law": [14, 39, 42], "depict": [14, 32, 40], "orthogon": [14, 32, 41], "arrai": [14, 21, 34, 42], "might": [14, 18, 21, 31, 44], "imagin": [14, 21], "hold": [14, 22, 34], "catch": 14, "cell_x": 14, "cell_i": 14, "x_offset": 14, "nanomet": 14, "num_teeth": 14, "waveguide_depth": 14, "220": [14, 18, 21], "etch_depth": 14, "068": 14, "grating_period": 14, "659": 14, "fill_factor": 14, "524": 14, "verbos": [14, 44], "inf": [14, 19], "epsilon": [14, 34], "cladding_depth": 14, "box_depth": 14, "box": [14, 18, 34, 37, 42], "substrate_depth": 14, "700": 14, "df": [14, 34], "pml_layer": [14, 19], "500": [14, 21], "savefig": 14, "grating_coupler_plot": 14, "encount": [14, 22, 42], "recogn": 14, "discuss": [14, 32], "page": [14, 18, 31, 32, 33, 34, 39, 43, 44], "demonstr": [14, 42], "been": [14, 30, 31, 32, 34], "1550": 14, "appropri": [14, 21, 31, 32], "three": [14, 18, 20, 21, 34, 41], "understand": [14, 33, 34, 41, 42], "simplifi": [14, 21, 32], "view": [14, 16, 18, 34, 36], "denot": [14, 20], "effici": [14, 21], "half": [14, 33, 39], "relat": [14, 18, 32, 39], "2n_": 14, "choos": [14, 19, 32, 39], "exactli": [14, 21, 34], "90": [14, 21, 44], "degre": [14, 21, 28, 42], "problemat": 14, "byproduct": [14, 29], "larg": [14, 31, 44], "zeroth": 14, "avoid": [14, 31], "slightli": [14, 20, 21, 29, 34, 40, 44], "less": [14, 22, 30, 32, 33, 44], "angl": [14, 21, 32], "area": [14, 30, 31, 42], "overal": 14, "weight": [14, 44], "unetch": 14, "ratio": [14, 20, 33, 34, 42, 44], "ff": 14, "w": 14, "welcom": 15, "present": [15, 18, 20, 32], "onlin": [15, 22], "freeli": [15, 22, 31], "resourc": [15, 29], "teach": 15, "student": 15, "curriculum": 15, "background": [15, 16, 21, 22], "motiv": 15, "full": [15, 22, 30, 31, 32, 33, 39], "learner": 15, "guid": [15, 30, 36, 38, 40, 42], "submit": [15, 22], "wish": [15, 22], "simphoni": [15, 21, 31], "submiss": [15, 30], "pic": 15, "post": 15, "instruct": [15, 31, 36, 37, 43], "contribut": [15, 22], "subject": 15, "matter": [15, 34], "expert": 15, "futur": [15, 31], "expans": 15, "fork": 15, "parti": 15, "custom": [15, 22], "train": 15, "websit": [15, 22], "explanatori": 15, "webpag": 15, "launch": [15, 34], "colab": 15, "local": [15, 17, 36], "immedi": [15, 31], "alwai": [15, 21, 31, 44], "workflow": 15, "approach": 15, "introduc": [15, 21, 22, 28, 31, 33, 44], "bother": 15, "mention": [15, 18, 22], "possibl": [15, 41], "configur": [15, 18, 36], "ahead": 15, "standard": [15, 36, 44], "ardavan": 15, "oskooi": 15, "david": 15, "roundi": 15, "mihai": 15, "ibanescu": 15, "peter": 15, "bermel": 15, "john": 15, "joannopoulo": 15, "steven": 15, "johnson": 15, "flexibl": [15, 30], "electromagnet": [15, 39, 41, 44], "physic": [15, 23, 29, 40], "commun": [15, 22, 31], "181": 15, "687": 15, "702": 15, "2010": 15, "hyrum": 15, "gunther": 15, "framework": [15, 17], "scienc": 15, "65": 15, "74": 15, "2020": 15, "joaquin": 15, "matr": 15, "2023": 15, "url": [15, 22], "http": [15, 21, 22, 32, 43], "io": 15, "verif": 16, "viewer": [16, 36], "trace": [16, 38], "net": 16, "detect": [16, 30], "scriptabl": 16, "languag": [16, 31], "rubi": 16, "extens": [16, 37], "extern": [16, 21], "json": 16, "request": 16, "server": [16, 17], "hot": 16, "reload": 16, "rerun": 16, "manag": [16, 36], "Then": [16, 34, 43, 44], "search": 16, "doubl": [16, 21, 33], "click": [16, 23, 37, 43], "pyro5": 17, "remot": 17, "access": [17, 18, 22, 31, 33], "equip": 17, "lab": 17, "favor": [17, 38], "usb": 17, "proprietari": [17, 22], "brand": 17, "unifi": 17, "intrument": 17, "easi": [17, 21, 28, 31, 34], "pip": [17, 31, 36], "conda": [17, 36, 43], "environment_nam": 17, "activ": [17, 21, 22, 25, 27, 31, 43], "updat": [17, 21], "pypi": [17, 31, 36], "upgrad": [17, 31], "visit": 17, "interrog": 17, "station": 17, "interfac": [17, 31, 36, 39, 41], "fore": 17, "whether": [18, 22, 30], "etch": [18, 30, 38, 40], "deposit": [18, 30, 38], "dope": [18, 29, 30], "metal": [18, 28, 30], "p": [18, 29, 30], "translat": [18, 30], "mask": [18, 30], "formal": 18, "state": [18, 22, 34], "255": 18, "modern": [18, 31, 36], "almost": [18, 34, 44], "dedic": [18, 22], "nitrid": 18, "lithium": [18, 42], "niobat": [18, 42], "whichev": 18, "decid": 18, "thin": 18, "top": [18, 21], "dioxid": [18, 38, 42], "thick": [18, 21, 33, 34, 39], "buri": 18, "oxid": [18, 34], "main": [18, 25, 30, 31], "intern": [18, 32, 39], "48": [18, 21], "excel": [18, 29, 31], "refractiveindex": 18, "info": [18, 21], "color": [18, 37, 40, 42], "fill": 18, "map": [18, 21], "human": [18, 21], "readabl": [18, 21, 34], "properti": [18, 27, 29, 30, 39, 40, 43], "lyp": 18, "migrat": 18, "few": [18, 22, 31, 36, 37, 40], "devrec": 18, "recognit": 18, "show_port": 18, "marker": 18, "label_inst": 18, "netlist": 18, "te": [18, 21, 32, 34, 39, 41, 42], "polar": [18, 20, 21, 27, 30, 32, 39], "tm": [18, 21, 41, 42], "pydant": 18, "class": [18, 22], "partial": [18, 29, 32, 41], "germanium": 18, "photodiod": 18, "vari": [18, 21], "concentr": 18, "pn": 18, "junction": 18, "capacitor": [18, 30, 40], "depth": 18, "exclud": 18, "dice": 18, "lane": 18, "reserv": 18, "violat": 18, "reader": 18, "basemodel": 18, "wg": 18, "slab150": 18, "68": 18, "201": 18, "206": 18, "203": 18, "204": 18, "66": 18, "41": 18, "43": 18, "config": [18, 21, 31], "frozen": 18, "extra": [18, 31, 40], "forbid": 18, "32m2023": 18, "06": 18, "227": [18, 21], "0m": [18, 21, 39], "1minfo": [18, 21, 39], "36mgdsfactori": [18, 21], "36m__init__": [18, 21], "36m204": 18, "1mloglevel": 18, "visibl": 18, "export": [18, 19], "hatch_pattern": 18, "dot": 18, "ff9d9d": 18, "layer_in_nam": 18, "coars": 18, "transpar": 18, "cyan": 18, "01ff6b": 18, "bright": 18, "hollow": 18, "cc4c00": 18, "label_optical_io": 18, "blue": [18, 32, 34, 39, 41, 42], "label_set": 18, "202": 18, "magenta": 18, "red": [18, 32, 34, 41, 42], "lightli": 18, "hatch": 18, "004080": 18, "pinrec": 18, "404040": 18, "xsection": 18, "group_memb": 18, "xs_box": 18, "300": [18, 34], "f3ff80": 18, "solid": 18, "xs_si": 18, "301": 18, "black": [18, 34, 42], "xs_si_slab": 18, "313": 18, "80a8ff": 18, "xs_overlai": 18, "311": 18, "xs_ox_si": 18, "302": 18, "xs_via": 18, "303": 18, "grei": 18, "xs_m1": 18, "304": 18, "green": [18, 42], "xs_oxide_m1": 18, "305": 18, "308": 18, "ff80a8": 18, "wg_pin": 18, "klayout_lyp": 18, "posixpath": 18, "home": [18, 21, 33, 34, 39], "env": [18, 21, 31, 33, 39], "lib": [18, 21, 39], "python3": [18, 21, 39], "site": [18, 21, 22, 39], "generic_tech": [18, 21], "tech": 18, "npp": 18, "pp": 18, "ppp": 18, "Be": [18, 21], "sure": [18, 19, 22, 34], "gmeep": [19, 20, 39], "meep_adjoint_optim": 19, "straightforward": 19, "get_component_from_sim": 19, "continu": [19, 31, 34, 39], "variabl": [19, 21, 29, 30, 34, 44], "waveguide_width": 19, "arm_separ": 19, "mmi_length": 19, "mmi_width": 19, "taper_width": 19, "pml_size": 19, "taper_x1": 19, "taper_x2": 19, "taper_y1": 19, "taper_y2": 19, "taper_y3": 19, "taper_y4": 19, "prism": 19, "height": [19, 21, 40], "source_center_x": 19, "source_s": 19, "kpoint": 19, "no_direct": [19, 34], "geometry_cent": 19, "gdspath": 19, "2x2mmi": 19, "predict": [20, 21, 30, 41], "certain": [20, 22, 32, 33, 41], "k": [20, 25, 42], "wider": 20, "gradual": 20, "widen": 20, "nxm": 20, "replica": 20, "period": [20, 21, 28], "_0": 20, "wall": [20, 31], "interf": 20, "destruct": [20, 21, 27, 32, 44], "forward": [20, 22, 29, 34], "backward": [20, 31, 34], "word": [20, 22, 27, 32, 44], "excit": 20, "goe": [20, 33, 34, 42, 44], "THE": 20, "TO": 20, "length_mmi": 20, "extend": [20, 22], "extend_port": 20, "port_nam": [20, 21], "299": [20, 33], "evenli": [20, 44], "advantag": [20, 22, 30], "veri": [20, 21, 22, 29, 31, 34, 36, 38, 44], "suscept": [20, 30], "fact": [20, 22, 34], "optimum": 20, "contrast": 20, "mimic": 20, "disadvantag": 20, "switch": [20, 21, 33, 34], "wdm": 20, "divis": 20, "multiplex": 20, "hybrid": 20, "divers": 20, "photodetector": [20, 25, 30], "extract": [21, 39], "doc": [21, 37, 39], "zender": 21, "concept": [21, 30, 31, 32, 33], "recombin": [21, 44], "accumul": 21, "quantum": 21, "piezo": 21, "transduc": 21, "sax": 21, "jax": 21, "nice": [21, 31, 36], "speedup": 21, "gpu": 21, "fine": 21, "cpu": 21, "awar": 21, "jax_enable_x64": 21, "drop": 21, "replac": 21, "jnp": 21, "broken": 21, "constitu": 21, "diagram": [21, 33, 41], "carri": [21, 22], "identifi": 21, "explain": [21, 29, 33, 34, 43], "formul": 21, "s_": 21, "ij": 21, "repres": [21, 32, 34, 40, 41, 42], "j": [21, 33, 34], "stimuli": 21, "signatur": 21, "grating_coupl": 21, "31msignatur": 21, "0msiepic": 21, "34m": 21, "0mgrating_coupl": 21, "0mwl": 21, "0munion": 21, "0mfloat": 21, "0mjax": 21, "0marrai": 21, "36m1": 21, "0mpol": 21, "0mliter": 21, "0mthick": 21, "36m220": 21, "0mdwidth": 21, "36m0": 21, "0mdict": 21, "0mtupl": 21, "0mstr": 21, "0mjaxtyp": 21, "0mcomplex": 21, "31mdocstr": 21, "1550nm": 21, "citat": 21, "_static": 21, "ebeam_gc_te1550": 21, "alt": 21, "ebeam_bdc_te1550": 21, "wl": 21, "evalu": 21, "pol": 21, "210": 21, "230": 21, "dwidth": 21, "nomin": 21, "rais": 21, "valueerror": 21, "com": [21, 22, 32], "siepic_ebeam_pdk": 21, "blob": 21, "master": 21, "20compon": 21, "20with": 21, "20model": 21, "docx": 21, "31mfile": 21, "31mtype": 21, "inspect": [21, 22], "o0": 21, "0307378": 21, "00345908j": 21, "dtype": 21, "complex128": 21, "75686856": 21, "02082852j": 21, "74360676": 21, "09760613j": 21, "0750638": 21, "02585451j": 21, "get_port": 21, "y_branch": 21, "strictli": 21, "enforc": 21, "rewrit": 21, "string": [21, 39], "instance_nam": 21, "whitespac": 21, "delimit": 21, "comma": 21, "composit": 21, "gc_in": 21, "gc": 21, "ybranch": [21, 44], "long_wg": 21, "short_wg": 21, "gc_out": 21, "act": 21, "whatev": 21, "invok": [21, 31], "gave": 21, "becom": [21, 22, 31, 34, 41], "instanti": 21, "unsur": 21, "get_set": 21, "float64": 21, "loss": [21, 28, 29, 33, 34, 44], "overkil": 21, "everyth": [21, 34, 43], "els": [21, 31, 34], "stai": 21, "global": 21, "toplevel": 21, "trickl": 21, "1000": 21, "150": 21, "transmit": [21, 33, 38, 41, 42], "magnitud": [21, 34, 39, 42], "squar": [21, 33], "renam": 21, "unconnect": 21, "realli": [21, 22, 34, 42], "meaning": 21, "both": [21, 28, 29, 31, 33, 34, 39, 44], "linear": [21, 28, 34, 44], "log": [21, 34], "scale": [21, 30, 44], "mag": 21, "ab": [21, 34], "fig": [21, 39, 42], "subplot": [21, 39, 42], "sharex": [21, 39], "set_ylabel": 21, "log10": [21, 34], "db": [21, 34], "set_xlabel": [21, 42], "suptitl": 21, "dip": 21, "opposit": 21, "peak": [21, 32, 33], "maximum": [21, 33], "better": [21, 40, 41], "think": [21, 30, 31], "equal": [21, 27, 33, 40, 42, 44], "condit": [21, 22, 39], "get_generic_pdk": 21, "my_compon": 21, "delta_length": 21, "32m2024": [21, 39], "01": [21, 39, 44], "09": 21, "222": 21, "layer_view": 21, "36m785": 21, "1mimport": 21, "layerview": 21, "36mactiv": 21, "36m258": 21, "1m": 21, "relev": 21, "amplitud": [21, 27, 28, 29, 30, 32, 44], "i_": 21, "e_": [21, 33], "sqrt": 21, "hspace": 21, "2mm": 21, "whose": 21, "undergon": 21, "mw": [21, 28], "lossless": 21, "plane": [21, 41], "e_0": 21, "omega": 21, "z": [21, 34, 39, 41], "beta_": 21, "alpha_": 21, "\u03b1": 21, "appear": 21, "expon": 21, "zero": [21, 39], "lvert": 21, "express": [21, 28], "59": 21, "499": 21, "508": 21, "1450": 21, "longer": [21, 28, 40], "102": 21, "491": 21, "phasa": 21, "heat": [21, 25, 28], "static": 21, "\u03b2": 21, "100\u00b5m": 21, "1500nm": 21, "ouptput": 21, "9mw": 21, "heater": 21, "constitut": [22, 29], "legal": 22, "advic": 22, "date": 22, "corpor": 22, "contact": 22, "attornei": 22, "absolut": 22, "implic": 22, "organ": [22, 34, 39], "particularli": 22, "question": 22, "compani": 22, "incorpor": 22, "inherit": 22, "foss": 22, "availbl": 22, "portion": [22, 32, 42], "anyon": [22, 31], "enhanc": 22, "methodolog": 22, "creation": 22, "peopl": 22, "skill": 22, "context": [22, 32], "monetarili": 22, "under": 22, "restrict": [22, 30], "freedom": 22, "copi": [22, 42, 43], "studi": 22, "improv": 22, "hood": 22, "actual": [22, 34, 44], "strong": 22, "focus": 22, "downsid": 22, "thanklessli": 22, "maintain": [22, 27], "spend": 22, "driven": 22, "psiquantum": 22, "natur": [22, 41], "mainten": 22, "bug": [22, 31], "slower": 22, "commerci": 22, "On": [22, 25, 41, 43], "hand": [22, 33, 37, 41], "garner": 22, "friendli": 22, "copor": 22, "scheme": 22, "confirm": 22, "team": 22, "abil": 22, "plan": 22, "releas": [22, 31], "permiss": 22, "162": 22, "copyright": 22, "remain": [22, 33], "stricter": 22, "deriv": [22, 40, 42], "warranti": 22, "world": [22, 31, 40], "statement": 22, "signific": [22, 44], "attribut": 22, "similar": [22, 33, 39], "rereleas": 22, "grant": 22, "patent": 22, "contributor": 22, "claim": 22, "codebas": 22, "cannot": [22, 42], "liabl": 22, "reason": [22, 32], "trademark": 22, "licensor": 22, "belong": 22, "copyleft": 22, "mandat": 22, "gpl": 22, "v3": 22, "unpopular": 22, "prohibit": 22, "inclus": 22, "prevent": 22, "contamin": 22, "witih": 22, "technic": 22, "offend": 22, "liabil": 22, "binari": [22, 30, 34, 44], "attempt": 22, "pai": [22, 32], "attitud": 22, "necessarili": [22, 31], "impress": 22, "gnu": 22, "notepad": 22, "wordpress": 22, "mysql": 22, "unabl": 22, "sale": 22, "fossa": 22, "editori": 22, "101": 22, "jan": 22, "2021": 22, "blog": 22, "feb": 22, "mar": 22, "walk": [23, 39], "skip": [23, 43], "explan": 23, "tune": [25, 27, 33], "scope": [25, 29], "thermo": [25, 28], "slow": 25, "stabl": 25, "electro": [25, 30], "modul": [25, 27, 28, 29, 30, 39], "fast": [25, 29], "laser": [25, 30], "signal": [27, 28, 29, 30, 31, 34, 38, 40, 41], "characterist": [27, 34, 40], "ac": 27, "encod": [27, 30], "adjust": [27, 28, 42, 44], "categor": 27, "tuner": [27, 29], "dure": 27, "sai": [27, 33, 37, 41], "bridg": 27, "todo": [27, 29, 40], "insert": [27, 28, 29, 33, 34], "illustr": [27, 40], "compress": 27, "accord": [27, 34], "lower": [27, 32, 34, 39, 40, 44], "fewer": 27, "temperatur": [28, 40], "molecul": [28, 41], "At": 28, "low": [28, 29, 30, 33, 38], "proport": 28, "compris": 28, "proxim": [28, 33], "resistor": [28, 30, 40], "dissip": 28, "besid": 28, "govern": [28, 39], "mostli": [28, 32, 39, 41], "unlik": [28, 29], "pin": [28, 31], "eas": [28, 38], "offer": [28, 29, 40], "tradeoff": [28, 29], "capac": 28, "applciat": 28, "constantli": 28, "360": 28, "fsr": 28, "spectral": 28, "maxima": 28, "achiev": [28, 32, 42], "consum": 28, "closer": 28, "rate": 28, "plasma": 29, "dispers": 29, "charg": 29, "carrier": 29, "inject": [29, 34], "refrac": 29, "voltag": 29, "revers": [29, 44], "bias": 29, "respond": 29, "induc": 29, "mechan": [29, 31], "quit": 29, "beyond": [29, 40], "resist": [29, 40], "capacit": [29, 40], "intrins": 29, "compar": [29, 40], "high": [29, 31, 32, 38], "cutoff": 29, "ten": 29, "ghz": 29, "suit": 29, "neglig": 29, "clariti": 29, "thermal": 29, "undop": 29, "copmris": 29, "ad": [29, 34], "experienc": [29, 36, 40], "cost": [29, 30, 31], "qualiti": 29, "deplet": 29, "moder": 29, "bia": 29, "analog": 30, "macro": 30, "lens": 30, "mirror": 30, "beamsplitt": 30, "analogu": 30, "micro": 30, "nano": 30, "discret": [30, 32], "inductor": 30, "cmo": 30, "classifi": 30, "mismatch": 30, "anisotropi": 30, "voa": 30, "photolithographi": 30, "photomask": 30, "photosensit": 30, "chemic": 30, "photoresist": 30, "lamp": 30, "ultraviolet": 30, "regim": 30, "stencil": 30, "alter": 30, "leav": 30, "underli": 30, "constraint": 30, "densiti": 30, "pcb": 30, "familiar": [30, 31, 33], "reject": 30, "didn": 30, "meet": 30, "undergo": 30, "compat": [30, 31, 36], "hous": 30, "matur": 30, "autom": 30, "store": [30, 34, 36, 43], "concret": 30, "conta": 30, "latter": 30, "regener": 30, "regress": 30, "mzm": 30, "least": 30, "arm": [30, 44], "rout": 30, "briefli": [30, 34], "touch": 30, "solv": [30, 33, 39, 40], "maxwel": [30, 39], "computation": [30, 34], "expens": 30, "volumetr": 30, "mesh": 30, "voxel": 30, "magnet": [30, 32, 39, 41, 42], "lot": [30, 41], "hour": 30, "pertin": 30, "abstract": [30, 32], "sequenc": 30, "yet": 30, "embrac": 31, "scientif": 31, "session": 31, "recompil": 31, "prototyp": 31, "rapidli": 31, "miniconda": [31, 36, 43], "bundl": 31, "though": 31, "frill": 31, "strip": 31, "anaconda": 31, "tend": 31, "pretti": 31, "latest": 31, "execut": 31, "easiest": [31, 37], "quick": 31, "best": [31, 33], "isol": [31, 33], "sandbox": 31, "destroi": 31, "mess": 31, "never": [31, 34], "worri": 31, "someon": 31, "venv": 31, "older": 31, "intel_env": 31, "subdir": 31, "osx": 31, "64": 31, "establish": 31, "hasn": 31, "promin": 31, "fundament": [31, 32, 34, 39, 44], "counterpart": 31, "matlab": 31, "defacto": 31, "databas": 31, "solver": [31, 39, 40], "forg": 31, "pymeep": 31, "grab": 31, "nlopt": 31, "aren": 31, "increment": 31, "api": 31, "contract": 31, "task": 31, "evolv": 31, "accomplish": 31, "old": 31, "immatur": 31, "frequent": 31, "guarante": 31, "reproduc": 31, "semant": 31, "major": 31, "minor": 31, "patch": [31, 39], "incompat": 31, "manner": 31, "txt": 31, "24": [31, 42], "great": 32, "intuit": [32, 33, 42, 44], "surround": [32, 38, 39], "flaw": 32, "assumpt": 32, "misconcept": 32, "compen": 32, "challeng": 32, "slab": [32, 40], "implicit": 32, "fulli": [32, 33], "crucial": 32, "addition": 32, "impli": 32, "greater": [32, 42], "critic": 32, "except": 32, "anim": 32, "white": 32, "sent": 32, "orthogan": 32, "wavefront": 32, "interv": 32, "trough": 32, "special": [32, 37], "attent": 32, "clarifi": 32, "incremental": 32, "With": [32, 33], "backdrop": 32, "consider": [32, 40], "lost": [32, 34, 42, 44], "interferr": 32, "minim": 32, "emerg": 32, "obvious": 32, "mit": 32, "s3": 32, "amazonaw": 32, "fip": 32, "html": [32, 43], "bu": 33, "theori": 33, "trip": 33, "particular": 33, "Such": 33, "circumfer": 33, "alpha": [33, 34, 42, 44], "cm": 33, "plug": 33, "b1": 33, "te_": 33, "a1": 33, "a2": 33, "b2": 33, "quantiti": 33, "opd": 33, "roundtrip": 33, "imped": [33, 34], "approx": 33, "fwhm": 33, "aka": 33, "bandwidth": 33, "finess": 33, "narrow": 33, "sharp": 33, "q": 33, "sharper": 33, "filter": [33, 41], "whisper": 33, "galleri": 33, "feel": 33, "ipython": 33, "video": 33, "10um": 33, "d_pml": 33, "d_pad": 33, "r_in": 33, "r_out": 33, "wg_length": 33, "cylind": 33, "600": 33, "ebang4": 33, "miniconda3": [33, 39], "book": [33, 34], "decai": [33, 39], "despit": 33, "wg_center": 33, "radio": 34, "rf": 34, "exit": 34, "nxn": 34, "ofen": 34, "notat": 34, "character": 34, "bechavior": 34, "metric": 34, "param": 34, "mind": 34, "accur": [34, 40], "life": 34, "detector": 34, "adapt": [34, 36], "pictur": [34, 42], "purpl": 34, "my": 34, "next": [34, 36, 39, 41, 43], "whole": 34, "bunch": 34, "three_d": 34, "reduc": 34, "gds_file": 34, "jkart": 34, "geometry_l": 34, "cell_l": 34, "port1_l": 34, "port2_l": 34, "port3_l": 34, "port4_l": 34, "source1_l": 34, "source2_l": 34, "source3_l": 34, "source4_l": 34, "lcen": 34, "diamet": 34, "t_oxid": 34, "t_si": 34, "t_air": 34, "78": 34, "cell_thick": 34, "min": 34, "cell_zmax": 34, "cell_zmin": 34, "si_zmax": 34, "si_zmin": 34, "numport": 34, "s_param": 34, "input_param": 34, "kernel": 34, "usabl": 34, "tab": 34, "href": 34, "viewoutput": 34, "gdsii_prism": 34, "zmax": 34, "zmin": 34, "gdsii_vol": 34, "fname": 34, "gdsii_prim": 34, "port1": 34, "port2": 34, "port3": 34, "port4": 34, "source1": 34, "source2": 34, "source3": 34, "source4": 34, "Not": 34, "oxide_cent": 34, "oxide_s": 34, "oxide_lay": 34, "eig_par": 34, "eig_match_freq": 34, "contructor": 34, "no_par": [34, 39], "odd_z": 34, "monitor": 34, "energi": 34, "modemonitor": 34, "add_mode_monitor": 34, "moderegion": 34, "No": 34, "correctli": [34, 43], "readi": [34, 43], "until_after_sourc": 34, "get_eigenmode_coeffici": 34, "nfreq": 34, "neg": [34, 39], "third": [34, 39], "spot": 34, "sour": 34, "5th": 34, "input_coeff": 34, "port1_coeff": 34, "port2_coeff": 34, "port3_coeff": 34, "port4_coeff": 34, "s11": 34, "6f": 34, "upper": [34, 39, 44], "s12": 34, "s13": 34, "s14": 34, "fun": 34, "transmitt": 34, "exercis": 34, "terribl": 34, "isn": [34, 42], "fortun": 34, "meant": 34, "port1_tran": 34, "port2_tran": 34, "port3_tran": 34, "port4_tran": 34, "percent": 34, "insertionloss": 34, "insertionloss_db": 34, "steadi": 34, "reset": 34, "visula": 34, "continuoussourc": [34, 44], "reach": 34, "eps_data": [34, 44], "get_epsilon": 34, "ez_data": 34, "real": 34, "get_efield_z": 34, "screen": 34, "dpi": 34, "imshow": [34, 44], "transpos": [34, 44], "interpol": [34, 44], "spline36": [34, 44], "cmap": [34, 39, 44], "flipud": 34, "axi": [34, 39, 41, 42, 44], "hopefulli": 34, "sens": 34, "sake": 34, "rest": [34, 42], "devi": 34, "ts": 34, "s1": 34, "ts2": 34, "ts3": 34, "ts4": 34, "input_pow": 34, "trans1": 34, "trans2": 34, "trans3": 34, "trans4": 34, "expect": [34, 44], "entri": 34, "breviti": 34, "paramt": 34, "mathwork": 34, "luceda": 34, "microwaves101": 34, "youtub": 34, "opinion": 36, "newcom": 36, "troubleshoot": 36, "disagre": 36, "primarili": 36, "nervou": 36, "navig": 36, "precompil": 36, "desig": 37, "boast": 37, "healthi": 37, "capabl": 37, "lighter": 37, "pylanc": 37, "tree": 37, "icon": 37, "ey": [37, 39], "candi": 37, "theme": 37, "doesn": [37, 39, 41], "menu": [37, 43], "pop": 37, "conduct": 38, "copper": 38, "47": [38, 39, 42], "44": [38, 39, 42], "confin": [39, 40], "newton": 39, "motion": [39, 41], "vibrat": 39, "violin": 39, "pipe": 39, "stationari": 39, "mpb": 39, "05": 39, "51": 39, "512": 39, "36mgplugin": 39, "36m": 39, "36m39": 39, "1mmeep": 39, "28": 39, "parkeraa": 39, "glass": 39, "find_modes_waveguid": 39, "core_w": 39, "core_t": 39, "m3": 39, "m4": 39, "elecgtr": 39, "wg1": 39, "linewidth": 39, "edgecolor": 39, "facecolor": 39, "wg4": 39, "ax1": 39, "ax2": 39, "islic": 39, "add_patch": 39, "tight_layout": 39, "0th": [39, 44], "1st": [39, 44], "spatial": 39, "sinusoid": 39, "non": [39, 40, 41], "slice": [39, 41], "discontinu": 39, "boundari": [39, 42], "perpindicular": 39, "discontin": 39, "contin": 39, "horizont": 39, "domin": 39, "transvers": [39, 41, 42], "wg2": 39, "wg3": 39, "plot_ez": 39, "slight": 39, "aris": 39, "mm": 39, "find_mode_dispers": 39, "mode_numb": 39, "ng": 39, "3f": 39, "106": 39, "892": 39, "ignor": [40, 44], "mass": 40, "induct": 40, "exhaust": 40, "400nm": 40, "950nm": 40, "220nm": 40, "rib": 40, "rectangular": 40, "resembl": 40, "ridg": 40, "difficult": 40, "veloc": 40, "somewhat": 40, "tediou": 40, "streamlin": 40, "wavelegnth": 40, "atom": 40, "gather": [40, 42], "n_g": 40, "dn_": 40, "lambda_0": 40, "minu": 40, "band": 40, "behav": 41, "vector": [41, 42], "pure": 41, "perpendicular": 41, "bit": 41, "tricki": 41, "dimension": 41, "arrow": 41, "bield": 41, "sun": 41, "unpolar": 41, "atmospher": 41, "sunlight": 41, "uniform": 41, "permit": 41, "unpredict": 41, "strike": 42, "snell": 42, "theta_i": 42, "theta_r": 42, "n_1sin": 42, "n_2sin": 42, "theta_t": 42, "gamma_": 42, "n_1co": 42, "n_2co": 42, "tau_": 42, "2n_1co": 42, "obliqu": 42, "observ": 42, "n1": 42, "n2": 42, "transmission_angl": 42, "arcsin": 42, "theta_i_deg": 42, "deg2rad": 42, "set_aspect": 42, "zip": 42, "p0": 42, "i1": 42, "rad2deg": 42, "0f": 42, "r1": 42, "t1": 42, "xlim": 42, "ylim": 42, "axvlin": 42, "axhlin": 42, "linestyl": 42, "xtick": 42, "ytick": 42, "tmp": 42, "ipykernel_19546": 42, "1351043342": 42, "runtimewarn": 42, "AND": 42, "simulate_reflect": 42, "radian": 42, "incident_angle_radian": 42, "reflected_angl": 42, "transmitted_angl": 42, "incident_wav": 42, "tan": 42, "reflected_wav": 42, "transmitted_wav": 42, "display_transmit": 42, "barrier": 42, "set_xlim": 42, "set_ylim": 42, "str": 42, "set_titl": 42, "var": 42, "folder": [42, 43], "9n": 42, "_g8r69x957zb59c09f92zznh0000gn": 42, "ipykernel_69883": 42, "921879874": 42, "runtim": 42, "sine": 42, "theta_c": 42, "critical_angl": 42, "crit_angl": 42, "51840906945382": 42, "air": 42, "progag": 42, "profit": 42, "understood": 42, "prompt": 43, "administr": 43, "restart": 43, "usernam": 43, "password": 43, "sh": 43, "git_and_github": 43, "wslpath": 43, "04": 43, "www": 43, "de": 43, "chapter": 43, "what_is_a_photonic_devic": 43, "arbitrari": 44, "focu": 44, "i_i": 44, "i_1": 44, "i_2": 44, "perfect": 44, "70": 44, "media": 44, "vice": 44, "versa": 44, "exact": 44, "perspect": 44, "inwg": 44, "outwg": 44, "mmi1x2_with_sbend": 44, "inwg_ref": 44, "splitter_ref": 44, "outwg_top_ref": 44, "outwg_bot_ref": 44, "make_geometry_from_gds_compon": 44, "core_mat": 44, "cladding_mat": 44, "component_point": 44, "to_np": 44, "1e3": 44, "pad_width": 44, "nx": 44, "ny": 44, "matgrid": 44, "materialgrid": 44, "do_averag": 44, "damp": 44, "dft": 44, "add_dft_field": 44, "get_arrai": 44, "e_data": 44, "choic": 44, "significantli": 44, "varianc": 44}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"camacholab": 0, "photon": [0, 27, 30], "bootcamp": 0, "tabl": 0, "content": 0, "front": 0, "matter": 0, "develop": 0, "environ": [0, 31], "passiv": [0, 25, 30], "devic": [0, 30, 34], "design": [0, 8, 9, 24, 26, 30, 44], "simul": [0, 8, 20, 21, 33, 34], "circuit": [0, 3, 27, 30, 34], "activ": [0, 30], "test": 0, "refer": [0, 3, 6, 22, 34], "adjoint": 1, "optim": [1, 24, 35], "advanc": 2, "compon": [2, 6, 21, 25], "cross": 2, "section": 2, "creat": 2, "us": [2, 3, 6, 21, 34], "componentspec": 2, "analyz": 3, "account": 3, "grate": [3, 14], "coupler": [3, 8, 10, 14], "curv": 3, "fit": 3, "extract": 3, "index": [3, 40], "refract": [3, 42], "compact": [4, 30], "model": [4, 21, 30, 32, 40], "element": 6, "polygon": 6, "port": [6, 34], "label": 6, "from": [6, 21], "translat": 6, "rotat": 6, "boolean": 6, "oper": 6, "parametr": 6, "cell": 6, "shape": [6, 35], "gener": 6, "ad": 6, "export": 6, "gd": [6, 11, 19], "file": 6, "import": [6, 34], "connect": [6, 37], "exercis": [6, 8, 18], "credit": 7, "sponsor": 7, "contributor": 7, "direct": 8, "supermod": 8, "visual": [8, 37], "coupl": [8, 33], "length": 8, "gap": 8, "between": 8, "waveguid": [8, 38, 39, 40, 42], "other": [8, 34], "split": [8, 44], "ratio": 8, "show": 8, "across": [8, 34], "dc": 8, "consider": [8, 41, 44], "sourc": [8, 14, 22, 34, 44], "rule": [9, 30], "check": [9, 21, 42], "edg": 10, "meep": [11, 19, 34], "find": [11, 34], "s": [11, 21, 34], "paramet": [11, 14, 34, 40], "through": [11, 42], "gmeep": 11, "git": 12, "github": 12, "glossari": 13, "how": [14, 27, 34], "doe": [14, 27], "work": [14, 27], "essenti": 14, "period": 14, "etch": 14, "depth": 14, "fill": 14, "factor": [14, 33], "introduct": 15, "klayout": 16, "klive": 16, "laboratori": 17, "tool": 17, "pyrolab": 17, "instal": 17, "autog": 17, "defin": [18, 30], "layer": [18, 30], "stack": [18, 30], "silicon": 18, "insul": 18, "gdsfactori": 18, "layermap": 18, "layerview": 18, "layerstack": 18, "multimod": 20, "interferomet": [20, 21], "mmi": 20, "self": 20, "imag": 20, "applic": [20, 27, 33], "mach": 21, "zehnder": 21, "The": [21, 30], "mzi": 21, "write": 21, "netlist": 21, "callabl": 21, "analysi": 21, "balanc": 21, "quick": [21, 42], "definit": 21, "imblanc": 21, "thermo": 21, "optic": [21, 23, 32], "effect": [21, 40], "open": 22, "softwar": [22, 36], "common": 22, "licens": 22, "mit": 22, "apach": 22, "2": [22, 34], "0": 22, "gplv3": 22, "agpl": 22, "i": 23, "o": 23, "invers": 24, "process": [26, 30], "kit": 26, "phase": [27, 28, 29], "shifter": [27, 28, 29], "what": [27, 30, 34, 38], "shift": 27, "A": 27, "simpl": 27, "heater": 28, "advantag": [28, 29], "thermal": 28, "disadvantag": [28, 29], "tune": 28, "effici": 28, "pn": 29, "pin": 29, "junction": 29, "ar": [30, 34], "compar": 30, "electron": 30, "vs": 30, "manufactur": 30, "geometri": [30, 34], "digit": 30, "python": 31, "conda": 31, "virtual": 31, "packag": 31, "manag": 31, "version": 31, "improv": 32, "rai": 32, "support": 32, "mode": [32, 39], "ring": 33, "reson": 33, "critic": [33, 42], "fsr": 33, "free": 33, "spectral": 33, "rang": 33, "qualiti": 33, "field": 33, "scatter": 34, "todo": 34, "why": 34, "demonstr": 34, "simphoni": 34, "quickli": 34, "an": 34, "arbitrari": 34, "step": 34, "1": 34, "run": 34, "singl": 34, "3": 34, "same": 34, "each": 34, "differ": 34, "frequenc": 34, "studio": 37, "code": 37, "configur": 37, "vscode": 37, "wsl": [37, 43], "window": [37, 43], "machin": 37, "wavegudi": 40, "spatial": 40, "dimens": 40, "group": 40, "polar": 41, "total": 42, "intern": 42, "reflect": 42, "kei": 42, "equat": 42, "demo": 42, "angl": 42, "propag": 42, "light": [42, 44], "onli": 43, "y": 44, "branch": 44, "combin": 44}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index", "pages/adjoint_optimization", "pages/advanced_components", "pages/analyzing_circuits", "pages/compact_models", "pages/component_convenience", "pages/components", "pages/credits", "pages/directional_couplers", "pages/drc", "pages/edge_couplers", "pages/gds_to_meep", "pages/git_and_github", "pages/glossary", "pages/grating_couplers", "pages/introduction", "pages/klayout", "pages/laboratory_tools", "pages/layer_stack", "pages/meep_to_gds", "pages/mmis", "pages/mzi", "pages/open_source", "pages/optical_io", "pages/optimization", "pages/passive_components", "pages/pdks", "pages/phase_shifters", "pages/phase_shifters_heaters", "pages/phase_shifters_pn", "pages/photonic_devices", "pages/python", "pages/ray_optic_model", "pages/ring_resonators", "pages/scattering_parameters", "pages/shape_optimization", "pages/software", "pages/vscode", "pages/waveguides", "pages/waveguides_mode_solvers", "pages/waveguides_modelling", "pages/waveguides_polarization", "pages/waveguides_tir", "pages/wsl", "pages/y_branch"], "filenames": ["index.md", "pages/adjoint_optimization.ipynb", "pages/advanced_components.ipynb", "pages/analyzing_circuits.ipynb", "pages/compact_models.ipynb", "pages/component_convenience.ipynb", "pages/components.ipynb", "pages/credits.md", "pages/directional_couplers.ipynb", "pages/drc.ipynb", "pages/edge_couplers.ipynb", "pages/gds_to_meep.ipynb", "pages/git_and_github.md", "pages/glossary.md", "pages/grating_couplers.ipynb", "pages/introduction.md", "pages/klayout.md", "pages/laboratory_tools.ipynb", "pages/layer_stack.ipynb", "pages/meep_to_gds.ipynb", "pages/mmis.ipynb", "pages/mzi.ipynb", "pages/open_source.md", "pages/optical_io.md", "pages/optimization.ipynb", "pages/passive_components.md", "pages/pdks.ipynb", "pages/phase_shifters.ipynb", "pages/phase_shifters_heaters.ipynb", "pages/phase_shifters_pn.ipynb", "pages/photonic_devices.ipynb", "pages/python.md", "pages/ray_optic_model.ipynb", "pages/ring_resonators.ipynb", "pages/scattering_parameters.ipynb", "pages/shape_optimization.ipynb", "pages/software.md", "pages/vscode.md", "pages/waveguides.ipynb", "pages/waveguides_mode_solvers.ipynb", "pages/waveguides_modelling.ipynb", "pages/waveguides_polarization.ipynb", "pages/waveguides_tir.ipynb", "pages/wsl.md", "pages/y_branch.ipynb"], "titles": ["CamachoLab Photonics Bootcamp", "Adjoint optimization", "Advanced Components", "Analyzing circuits", "Compact models", "<no title>", "Components", "Credits", "Directional couplers", "Design rule checks", "Edge couplers", "GDS to Meep", "Git (and GitHub)", "Glossary", "Grating couplers", "Introduction", "KLayout", "Laboratory Tools", "Defining the layer stack", "Meep to GDS", "Multimode Interferometers (MMIs)", "Mach-Zehnder interferometers", "Open source software", "Optical I/O", "Optimization and inverse design", "Passive Components", "Process design kits", "Phase Shifters", "Heaters", "PN and PIN Junctions", "What are photonic devices?", "Python", "Improving the Ray-optic Model", "Ring Resonators", "Scattering parameters", "Shape optimization", "Software", "Visual Studio Code", "Waveguides", "Waveguide modes", "Modelling Wavegudies", "Polarization", "Total Internal Reflection", "WSL (Windows-only)", "Y-Branches"], "terms": {"sponsor": 0, "googl": [0, 7, 15, 22], "thi": [0, 3, 6, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 25, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44], "intend": [0, 11, 22], "those": [0, 6, 21, 22, 44], "experi": [0, 21, 29, 36, 42], "electr": [0, 6, 8, 13, 14, 15, 18, 20, 21, 25, 27, 28, 29, 30, 32, 33, 38, 39, 41, 42], "engin": [0, 15, 21, 22, 30], "ar": [0, 3, 6, 8, 9, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 25, 27, 28, 29, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44], "interest": [0, 15, 21], "learn": [0, 3, 6, 31], "about": [0, 6, 8, 17, 21, 22, 31, 32, 33, 34, 36, 37, 40, 41], "integr": [0, 13, 15, 16, 18, 26, 30, 37], "applic": [0, 8, 13, 21, 22, 28, 29, 31, 34], "cours": [0, 8, 12, 13, 15, 22, 25, 31, 36, 37, 42], "wa": [0, 21, 34, 43], "creat": [0, 6, 8, 11, 12, 13, 14, 15, 17, 18, 20, 21, 30, 31, 32, 33, 34, 36, 39, 42, 43, 44], "collabor": [0, 12, 15, 22], "between": [0, 11, 13, 15, 20, 21, 27, 28, 29, 30, 32, 33, 34, 40, 42, 44], "brigham": 0, "young": 0, "univers": [0, 18], "s": [0, 3, 6, 12, 13, 14, 15, 16, 18, 22, 27, 28, 29, 30, 31, 33, 37, 39, 40, 41, 42, 43, 44], "skywat": 0, "project": [0, 12, 22], "introduct": [0, 21], "credit": 0, "open": [0, 6, 8, 12, 13, 14, 15, 16, 17, 20, 31, 33, 36, 37, 40, 43], "sourc": [0, 6, 11, 12, 13, 15, 16, 17, 18, 19, 20, 30, 31, 33, 36, 37], "softwar": [0, 6, 12, 13, 15, 16, 17, 18, 26, 31, 34], "what": [0, 6, 8, 11, 12, 21, 22, 41, 42], "defin": [0, 3, 6, 8, 9, 11, 14, 20, 21, 33, 34, 39, 40, 42], "layer": [0, 6, 8, 13, 20, 26, 34, 38, 44], "stack": [0, 13, 26, 31], "compon": [0, 8, 11, 13, 14, 15, 18, 19, 20, 22, 23, 30, 32, 34, 39, 41, 44], "waveguid": [0, 6, 13, 14, 18, 20, 21, 25, 27, 28, 29, 30, 32, 33, 34, 41, 44], "optic": [0, 6, 14, 18, 20, 25, 28, 29, 30, 33, 41, 42, 44], "i": [0, 6, 8, 11, 14, 20, 21, 27, 31, 33, 34, 36, 42], "o": [0, 6], "optim": [0, 3, 14, 21, 30, 31, 34, 44], "invers": [0, 30, 42], "compact": [0, 13, 15, 26, 44], "model": [0, 3, 13, 15, 18, 26, 34, 39, 42], "rule": [0, 13, 26, 31], "check": [0, 11, 12, 13, 18, 30, 34], "process": [0, 6, 8, 11, 13, 18, 28, 31, 34, 40], "kit": [0, 13], "mach": [0, 20, 30], "zehnder": [0, 20, 30], "interferomet": [0, 6, 13, 25, 30], "advanc": 0, "phase": [0, 8, 20, 21, 30, 32, 34, 44], "shifter": [0, 21, 30], "analyz": [0, 15, 33], "glossari": 0, "repositori": [0, 12, 36], "pdk": [0, 6, 9, 13, 18, 21, 26, 30], "document": [0, 15, 17, 21, 33, 34], "In": [3, 6, 8, 11, 12, 14, 15, 18, 20, 21, 22, 25, 27, 28, 29, 30, 31, 33, 34, 36, 37, 39, 44], "section": [3, 6, 14, 16, 18, 23, 25, 30, 31, 32, 34, 36, 40, 41, 43], "we": [3, 6, 8, 12, 13, 14, 15, 17, 18, 21, 22, 23, 25, 27, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44], "how": [3, 6, 8, 11, 13, 15, 18, 20, 21, 25, 31, 32, 33, 36, 39, 40, 41, 42, 43], "interpret": [3, 31], "data": [3, 13, 18, 34, 41], "collect": [3, 21], "from": [3, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 27, 28, 29, 30, 31, 32, 33, 34, 37, 39, 41, 43, 44], "our": [3, 6, 17, 21, 29, 32, 33, 34, 36, 39], "whenev": 3, "obtain": [3, 28], "import": [3, 8, 11, 14, 18, 19, 20, 21, 22, 31, 32, 33, 39, 41, 42, 44], "rememb": [3, 33], "renspons": 3, "chang": [3, 6, 8, 12, 13, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 34, 39, 40, 42, 44], "wavelength": [3, 8, 14, 18, 20, 21, 30, 32, 33, 34, 39, 40], "well": [3, 6, 11, 12, 16, 29, 30, 31, 32, 41], "being": [3, 8, 14, 16, 20, 21, 22, 30, 32, 44], "test": [3, 11, 12, 15, 17, 18, 31, 34, 41], "order": [3, 6, 13, 14, 25, 28, 30, 32, 34, 36, 39, 44], "properli": 3, "must": [3, 6, 8, 11, 13, 18, 21, 22, 28, 33, 44], "first": [3, 8, 11, 12, 21, 25, 27, 33, 34, 39, 41, 42, 43], "deemb": 3, "depend": [3, 8, 18, 21, 22, 27, 28, 31, 39, 40, 41, 42], "can": [3, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44], "done": [3, 6, 19, 30, 31, 34, 37], "varieti": [3, 6, 14, 20], "wai": [3, 6, 15, 20, 21, 22, 27, 28, 30, 31, 32, 33, 34, 36, 37, 40, 42], "includ": [3, 6, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 26, 27, 28, 29, 30, 31, 37, 39, 40, 43], "consid": [3, 8, 14, 20, 21, 29, 32, 40, 41, 44], "follow": [3, 6, 13, 14, 19, 21, 25, 29, 31, 32, 33, 36, 40, 42, 43], "via": [3, 12, 17, 18, 31, 33, 38, 43], "sweep": 3, "numpi": [3, 6, 8, 12, 14, 21, 31, 33, 34, 39, 42], "np": [3, 6, 8, 14, 18, 33, 39, 42], "matplotlib": [3, 6, 12, 14, 18, 21, 31, 33, 34, 39, 42, 44], "pyplot": [3, 14, 21, 33, 34, 39, 42, 44], "plt": [3, 14, 21, 33, 34, 39, 42, 44], "poly_ord": 3, "4": [3, 6, 8, 20, 21, 31, 33, 34, 39], "load": [3, 11, 16, 33], "file": [3, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 30, 31, 33, 34, 36, 37, 43], "oscope_data": 3, "npz": 3, "power": [3, 8, 13, 16, 20, 21, 28, 30, 33, 34], "here": [3, 6, 8, 14, 16, 18, 22, 23, 25, 31, 33, 34, 36, 37, 40, 43, 44], "raw": 3, "oscilloscop": 3, "plot": [3, 6, 8, 11, 18, 21, 31, 34, 39, 42, 44], "titl": 3, "xlabel": [3, 8], "nm": [3, 14, 18, 21], "ylabel": [3, 8], "dbm": 3, "show": [3, 6, 11, 18, 20, 21, 33, 34, 39, 42, 44], "The": [3, 6, 8, 11, 13, 14, 15, 18, 19, 20, 22, 25, 27, 28, 29, 31, 32, 33, 34, 36, 39, 40, 41, 42, 43, 44], "parabol": 3, "shape": [3, 13, 23, 30, 34, 39, 40, 44], "graph": [3, 33, 41], "due": [3, 21, 25, 32, 44], "respons": [3, 21, 44], "which": [3, 6, 8, 11, 12, 13, 14, 20, 21, 22, 28, 29, 30, 31, 32, 33, 34, 36, 38, 39, 41, 42, 43, 44], "obfusc": 3, "try": 3, "remov": [3, 8, 14, 20, 28, 29, 30, 31, 33], "effect": [3, 8, 14, 28, 29, 39], "parabola": 3, "subtract": [3, 6], "function": [3, 6, 8, 11, 14, 19, 20, 21, 31, 33, 34, 39, 40, 42], "want": [3, 6, 11, 12, 19, 20, 21, 22, 31, 33, 34, 40, 43, 44], "case": [3, 8, 16, 18, 21, 27, 31, 42, 44], "def": [3, 6, 42, 44], "model_parabola": 3, "x": [3, 6, 8, 11, 20, 34, 39, 41, 42, 44], "b": [3, 6, 8, 42], "c": [3, 6, 8, 11, 21, 31], "d": [3, 7, 15, 31, 34, 40, 41, 42, 43], "e": [3, 6, 8, 11, 12, 18, 21, 27, 30, 33, 34, 36, 39, 40, 44], "return": [3, 6, 11, 19, 21, 34, 39, 42, 44], "3": [3, 8, 11, 14, 15, 18, 19, 20, 21, 22, 31, 33, 38, 39, 42, 44], "2": [3, 6, 8, 11, 14, 15, 18, 19, 20, 21, 31, 32, 33, 39, 42, 44], "now": [3, 6, 21, 23, 31, 32, 33, 34, 37, 39, 44], "just": [3, 6, 8, 11, 13, 14, 15, 17, 21, 27, 31, 34, 39, 44], "need": [3, 6, 11, 12, 21, 22, 31, 34, 36, 40, 41, 43, 44], "paramet": [3, 6, 8, 20, 21, 30, 33], "do": [3, 6, 15, 18, 19, 22, 34, 36, 37, 41], "curve_fit": 3, "scipi": [3, 12, 31], "take": [3, 6, 8, 11, 13, 19, 21, 28, 30, 33, 34, 41, 42, 43], "y": [3, 6, 8, 11, 20, 21, 25, 27, 34, 39, 41, 42], "an": [3, 6, 8, 9, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 28, 29, 30, 31, 32, 33, 39, 40, 41, 42, 44], "initi": [3, 6, 8, 21], "guess": 3, "It": [3, 6, 8, 11, 13, 14, 15, 16, 18, 19, 21, 22, 29, 31, 32, 33, 34, 37, 39, 40, 41, 43], "covari": 3, "matrix": [3, 21, 34], "start": [3, 6, 21, 31, 32, 33, 34, 43], "end": [3, 8, 13, 14, 21, 22, 31, 34, 40, 42, 44], "argmax": 3, "1560": 3, "1580": 3, "help": [3, 6, 9, 12, 13, 16, 18, 21, 29, 32], "term": [3, 8, 13, 21, 34], "speed": [3, 8, 28, 29, 30, 40], "accuraci": 3, "add": [3, 6, 8, 18, 19, 20, 31, 34, 40, 42], "especi": [3, 11, 22, 28, 29, 31], "true": [3, 8, 11, 14, 18, 20, 21, 33, 34, 39, 40, 42, 44], "more": [3, 6, 8, 11, 15, 16, 17, 18, 20, 21, 22, 27, 29, 30, 31, 32, 33, 34, 37, 39, 40, 41, 44], "complic": [3, 6, 32, 33, 40, 44], "initial_guess": 3, "1": [3, 6, 8, 11, 14, 15, 18, 19, 20, 21, 22, 31, 32, 33, 38, 39, 40, 42, 44], "optimal_paramet": 3, "covariance_matrix": 3, "label": [3, 11, 18, 21, 42], "legend": [3, 42], "simpli": [3, 6, 14, 21, 31, 32, 33, 34], "offset": [3, 29], "make": [3, 6, 8, 13, 19, 20, 21, 22, 23, 29, 30, 31, 34, 37, 44], "easier": [3, 6, 37, 44], "see": [3, 8, 11, 13, 14, 18, 20, 21, 22, 27, 29, 33, 34, 39, 41, 44], "power_correct": 3, "max": [3, 34], "correct": [3, 11], "ones": [3, 6, 31], "len": [3, 39], "averag": [3, 14, 40], "gdsfactori": [6, 8, 11, 13, 15, 19, 20, 21, 31, 33, 34, 39, 44], "them": [6, 8, 11, 15, 20, 21, 22, 25, 29, 30, 31, 34, 36], "togeth": [6, 8, 12, 18, 30, 31, 32], "larger": [6, 8, 13, 15, 21, 30, 44], "design": [6, 13, 14, 15, 16, 18, 19, 20, 22, 23, 25, 33, 34], "simpl": [6, 15, 18, 21, 28, 30, 31, 38, 40, 42], "complex": [6, 29, 30, 31, 34], "construct": [6, 13, 14, 20, 21, 27, 30, 32, 33, 34, 44], "exampl": [6, 11, 12, 13, 15, 18, 19, 20, 21, 22, 25, 27, 30, 31, 34, 39, 40], "contain": [6, 11, 13, 18, 19, 21, 30, 31, 32, 39], "other": [6, 11, 12, 13, 17, 18, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 37, 39, 40, 41, 44], "thei": [6, 9, 11, 12, 13, 15, 18, 20, 21, 22, 30, 31, 32, 34, 40, 43, 44], "usual": [6, 9, 13, 15, 18, 30], "have": [6, 8, 11, 12, 13, 14, 15, 18, 20, 21, 22, 27, 29, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 43, 44], "allow": [6, 8, 11, 12, 13, 15, 16, 21, 22, 30, 34, 37], "you": [6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 30, 31, 33, 34, 36, 37, 39, 42, 43, 44], "factori": 6, "when": [6, 8, 11, 14, 16, 18, 21, 22, 27, 29, 30, 31, 33, 34, 39, 40, 41, 42, 44], "align": [6, 8], "each": [6, 8, 11, 13, 14, 16, 17, 18, 20, 21, 28, 30, 31, 33, 39, 40, 42, 44], "taken": [6, 18, 34], "care": [6, 34, 40, 41], "automat": [6, 16, 17, 18], "made": [6, 13, 22, 23, 38, 39, 40], "up": [6, 8, 11, 12, 13, 14, 18, 20, 21, 22, 28, 30, 31, 33, 34, 37, 40, 43, 44], "option": [6, 11, 15, 37], "most": [6, 8, 11, 12, 14, 16, 18, 19, 22, 28, 31, 32, 33, 34, 36, 38, 40, 41, 44], "basic": [6, 14, 16, 20, 21, 31, 34, 42], "build": [6, 13, 21, 25, 30, 32, 33, 43], "object": [6, 8, 18, 19, 21, 32, 34, 39], "gf": [6, 11, 20, 21, 44], "seri": [6, 15, 31], "conveni": [6, 21], "visual": [6, 13, 14, 18, 19, 21, 32, 36, 39], "jupyt": [6, 15, 34, 37], "notebook": [6, 11, 15, 33], "For": [6, 11, 13, 17, 18, 20, 21, 27, 28, 29, 30, 31, 33, 34, 36, 40, 42], "plot_holoview": 6, "plot_jupyt": 6, "plot_klayout": 6, "plot_matplotlib": 6, "plot_netlist": 6, "plot_netlist_flat": 6, "plot_widget": 6, "some": [6, 8, 11, 13, 14, 16, 17, 18, 21, 22, 25, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 41, 44], "alias": 6, "default": [6, 21, 34, 36, 37, 43, 44], "could": [6, 11, 13, 18, 20, 21, 32, 34, 41], "keyword": [6, 11, 21], "argument": [6, 11, 21, 42], "below": [6, 8, 11, 14, 18, 19, 20, 21, 22, 27, 32, 33, 34, 39, 41, 42], "format": [6, 8, 14, 15, 16, 17, 20, 21, 33, 34], "ll": [6, 12, 15, 21, 22, 31, 33, 34, 36, 39, 40, 41, 43], "explicit": [6, 21, 22], "But": [6, 22, 34], "recommend": [6, 8, 12, 17, 31, 36, 37, 43], "displai": [6, 16, 33, 42], "interact": [6, 8, 14, 25, 31, 32, 34, 36, 40], "klayout": [6, 18, 30, 34, 36, 43], "widget": 6, "lowest": [6, 13], "block": [6, 8, 13, 14, 19, 21, 25, 30, 33, 34, 43, 44], "list": [6, 11, 13, 19, 21, 30, 31, 34, 40], "vertic": [6, 19, 30, 39, 42], "adjac": 6, "pair": [6, 18], "line": [6, 8, 12, 13, 14, 17, 20, 30, 31, 32, 33, 34, 39, 41, 42, 43], "doe": [6, 8, 21, 22, 32, 41], "cross": [6, 8, 14, 15, 16, 18, 39, 40], "ani": [6, 8, 11, 13, 14, 18, 22, 29, 31, 32, 34, 36, 37, 39, 42, 44], "within": [6, 11, 13, 16, 20, 21, 27, 28, 29, 30, 32, 33, 34, 39, 40], "although": [6, 13, 18, 30, 36], "overlap": [6, 8, 33], "parallel": [6, 8, 11, 39, 41], "lie": 6, "upon": [6, 32, 42], "point": [6, 13, 32, 39], "exist": [6, 8, 13, 18, 22, 30, 31, 34, 39], "geometri": [6, 8, 11, 13, 14, 18, 19, 20, 32, 33, 39, 40, 44], "instead": [6, 11, 13, 14, 20, 21, 22, 29, 30, 31, 34, 40], "new": [6, 13, 15, 16, 18, 27, 30, 31, 43], "one": [6, 8, 11, 13, 14, 15, 18, 20, 21, 22, 27, 28, 29, 30, 31, 33, 36, 39, 40, 41, 44], "That": [6, 22, 41], "parameter": [6, 21, 30, 40], "call": [6, 8, 18, 20, 21, 28, 29, 30, 31, 32, 33, 34, 39, 41, 42], "even": [6, 8, 30, 31, 40], "hierarch": [6, 13], "nest": 6, "save": [6, 8, 11, 13, 14, 19, 20, 31, 33], "memori": [6, 13, 30], "becaus": [6, 8, 12, 14, 18, 20, 21, 22, 28, 29, 30, 33, 34, 40, 41, 42, 44], "core": [6, 8, 11, 18, 32, 38, 39, 40, 42], "onli": [6, 11, 12, 13, 15, 17, 20, 21, 22, 25, 31, 32, 33, 34, 36, 40, 41, 44], "onc": [6, 16, 30, 31, 34, 41], "referenc": 6, "mani": [6, 8, 11, 12, 13, 15, 17, 21, 22, 28, 30, 31, 33, 40, 44], "time": [6, 8, 11, 12, 13, 14, 16, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 34, 40, 42, 43, 44], "These": [6, 8, 11, 12, 13, 18, 21, 22, 30, 32, 34, 41, 42], "place": [6, 8, 13, 20, 28, 30, 36], "anywher": [6, 31], "independ": [6, 28], "all": [6, 8, 12, 13, 14, 15, 17, 18, 20, 21, 22, 30, 31, 32, 33, 34, 36, 37, 40, 41, 42, 44], "appli": [6, 16, 18, 29, 34], "base": [6, 8, 12, 17, 20, 22, 28, 29, 30, 31, 34, 42, 44], "instanc": [6, 11, 18, 21, 30, 31], "had": [6, 11, 21, 30], "same": [6, 8, 11, 14, 15, 17, 18, 20, 21, 22, 28, 29, 30, 31, 33, 44], "taper": [6, 14, 20, 32], "its": [6, 8, 11, 17, 18, 21, 22, 28, 30, 31, 33, 34, 40, 41], "input": [6, 8, 13, 20, 21, 30, 33, 34, 44], "output": [6, 8, 11, 13, 14, 20, 21, 30, 33, 34, 42, 44], "repeatedli": 6, "would": [6, 11, 13, 14, 18, 20, 21, 22, 30, 32, 34, 43], "good": [6, 21, 34], "requir": [6, 8, 18, 21, 22, 28, 29, 30, 31], "higher": [6, 18, 27, 28, 29, 32, 33, 34, 39, 40, 44], "level": [6, 14, 21, 31], "By": [6, 11, 14, 21, 29], "draw": 6, "bank": 6, "without": [6, 13, 21, 22, 28, 29, 30, 31, 32], "much": [6, 8, 11, 21, 32, 33, 34, 37], "pattern": [6, 14, 18, 21, 30, 32], "where": [6, 8, 11, 20, 21, 22, 28, 31, 33, 34, 41, 44], "across": [6, 13, 21], "compos": [6, 30], "interconnect": [6, 13], "compound": 6, "intermedi": 6, "specifi": [6, 8, 11, 13, 14, 19, 31, 34, 40], "direct": [6, 13, 19, 20, 25, 30, 32, 33, 34, 39, 41, 42, 44], "face": [6, 13], "either": [6, 11, 13, 30, 41, 44], "out": [6, 8, 11, 13, 14, 16, 20, 21, 31, 32, 33, 34, 39, 41, 44], "also": [6, 8, 11, 12, 13, 14, 15, 16, 20, 21, 22, 27, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 41, 42, 43, 44], "width": [6, 8, 13, 14, 18, 19, 20, 21, 29, 30, 33, 39, 40], "attach": [6, 11, 13], "your": [6, 8, 9, 11, 12, 13, 14, 16, 18, 19, 21, 22, 30, 31, 33, 34, 36, 37, 41, 43], "convei": 6, "inform": [6, 13, 15, 17, 18, 21, 22, 26, 27, 29, 30, 34, 37], "otherwis": [6, 21, 33], "seen": [6, 8, 11, 22, 33], "A": [6, 8, 13, 14, 18, 20, 21, 22, 26, 28, 29, 30, 31, 33, 36, 37, 38, 39, 40, 41, 44], "add_label": 6, "pass": [6, 11, 21, 27, 30, 31, 34], "text": [6, 8, 18, 21, 22, 31, 33, 37], "locat": [6, 14, 19, 43], "should": [6, 8, 11, 15, 18, 21, 34, 37, 44], "shown": [6, 8, 19, 33, 34], "posit": [6, 18, 21, 30, 33, 34, 39, 41], "center": [6, 8, 14, 19, 20, 21, 29, 33, 34, 44], "passiv": [6, 23], "sever": [6, 8, 11, 16, 27, 28, 29, 31, 37, 40], "lai": [6, 16], "than": [6, 8, 14, 18, 20, 22, 27, 29, 30, 32, 42, 44], "mai": [6, 8, 11, 12, 13, 18, 20, 21, 22, 27, 28, 29, 30, 34], "part": [6, 8, 9, 11, 21, 22, 34, 38, 39, 41, 44], "track": [6, 12, 31, 34], "number": [6, 8, 11, 13, 18, 20, 22, 31, 33, 34, 39], "As": [6, 8, 11, 14, 15, 18, 21, 22, 28, 29, 34, 41], "let": [6, 13, 21, 27, 32, 33, 34, 39, 40, 41, 42], "tupl": [6, 18, 21], "coordin": 6, "circular": 6, "fashion": [6, 13], "repeat": 6, "last": 6, "infer": 6, "close": [6, 8, 33], "script": [6, 8, 18, 20, 30, 31, 33, 43], "complet": [6, 8, 12, 13, 15, 18, 28, 33, 34, 36, 44], "run": [6, 8, 11, 12, 13, 14, 15, 16, 18, 20, 21, 22, 28, 31, 33, 39, 43, 44], "final": [6, 21, 34], "t_length": 6, "10": [6, 8, 18, 19, 21, 31, 33, 34, 39, 42, 44], "t_width_in": 6, "0": [6, 8, 11, 14, 18, 19, 20, 21, 31, 32, 33, 34, 39, 41, 42, 44], "5": [6, 8, 11, 14, 19, 20, 21, 33, 34, 39, 42, 44], "t_width_out": 6, "add_polygon": 6, "int": [6, 39], "assum": [6, 8, 14, 20, 21, 33, 36, 43, 44], "ve": [6, 15, 30, 31, 34], "provid": [6, 12, 21, 22, 31, 36, 37], "datatyp": [6, 18], "poli": 6, "45": [6, 8, 14, 18, 19, 20, 33, 44], "move": [6, 12, 33, 34, 43], "come": [6, 8, 11, 22, 29, 32, 34, 40, 44], "manipul": [6, 19, 30], "easili": [6, 11, 31, 43, 44], "differ": [6, 8, 11, 13, 15, 19, 20, 21, 22, 23, 27, 30, 31, 33, 38, 39, 40, 41, 42, 43, 44], "combin": [6, 8, 13, 20, 21, 27, 33], "mean": [6, 8, 11, 21, 22, 25, 30, 31, 33, 34, 41, 44], "merg": [6, 12], "xor": 6, "To": [6, 8, 11, 12, 14, 15, 20, 23, 28, 31, 33, 34, 37, 41, 43], "two": [6, 8, 11, 13, 18, 20, 21, 22, 27, 28, 29, 30, 32, 33, 38, 41, 42, 44], "group": [6, 18, 39], "piec": [6, 13], "involv": [6, 30], "itself": [6, 21, 22, 28, 31, 33, 34, 39, 40], "target": [6, 21], "result": [6, 8, 11, 13, 14, 15, 20, 21, 29, 30, 33, 42], "components_a": 6, "components_b": 6, "accept": 6, "equival": [6, 8], "t": [6, 8, 14, 15, 17, 18, 20, 21, 28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44], "linspac": [6, 21], "pi": [6, 8, 20, 21, 33], "100": [6, 8, 34], "co": [6, 21, 42], "sin": [6, 8, 42], "circl": [6, 33], "triangl": 6, "pacman": 6, "precis": [6, 13, 20, 21, 28], "1e": 6, "6": [6, 8, 21, 34], "origin": [6, 22, 31, 33], "boolean_subtract": 6, "add_ref": [6, 21, 44], "talk": [6, 33, 40], "later": [6, 21, 32], "dimens": [6, 13, 41], "redefin": 6, "everi": [6, 11, 21, 34, 44], "write": [6, 11, 22, 31, 37], "addit": [6, 11, 27], "calcul": [6, 21, 33, 34, 39, 40, 42], "cach": 6, "correspond": [6, 11, 18, 21, 28, 30, 32, 40, 42], "so": [6, 8, 11, 13, 18, 20, 21, 22, 27, 28, 29, 30, 31, 32, 33, 34, 36, 40, 42, 44], "subsequ": 6, "rebuild": 6, "enabl": [6, 8, 17, 22, 27, 34], "decor": 6, "If": [6, 8, 12, 14, 19, 20, 21, 22, 30, 31, 33, 34, 36, 37, 41, 42, 43, 44], "re": [6, 13, 15, 18, 21, 22, 31, 34, 36, 37], "develop": [6, 12, 13, 22, 30, 37], "modifi": [6, 11, 21, 22, 30, 34], "content": [6, 22], "again": [6, 29, 31, 34], "code": [6, 11, 12, 13, 15, 16, 18, 19, 21, 22, 31, 33, 34, 36, 42, 43], "won": [6, 15, 18, 21, 31, 34], "clear": [6, 32], "clear_cach": 6, "librari": [6, 21, 22, 31, 40, 44], "reusabl": 6, "circuit": [6, 8, 13, 14, 15, 16, 17, 19, 20, 21, 25, 26, 33, 36, 38, 40, 44], "anoth": [6, 8, 11, 18, 20, 21, 22, 27, 29, 34, 41], "fantast": 6, "benefit": [6, 36], "type": [6, 18, 28, 29, 31, 34, 44], "hint": 6, "valid": [6, 9, 13, 34], "name": [6, 11, 18, 19, 21, 22, 29, 31, 34, 42], "abl": [6, 8, 12, 20, 30, 31], "taper_compon": 6, "length": [6, 13, 14, 20, 21, 27, 28, 30, 33, 44], "float": [6, 21], "width_in": 6, "width_out": 6, "like": [6, 8, 11, 13, 14, 15, 17, 18, 19, 21, 22, 27, 28, 29, 31, 34, 36, 37, 38, 39, 40, 42, 44], "quickli": 6, "rectangl": [6, 39], "ellips": [6, 14], "ring": [6, 13, 25], "bend_circular": 6, "bend_eul": 6, "know": [6, 15, 33, 34, 36, 41], "outward": 6, "awai": [6, 8, 28], "match": [6, 8, 11, 20, 33, 34], "respect": [6, 8, 33, 40, 41, 42], "expand": [6, 27, 28], "earlier": 6, "note": [6, 8, 14, 20, 21, 22, 33, 34, 43], "common": [6, 13, 16, 18, 20, 21, 25, 28, 29, 31, 40, 44], "toward": [6, 34], "o1": [6, 11, 20, 21, 44], "orient": [6, 41], "180": [6, 8], "port_typ": 6, "o2": [6, 11, 20, 21, 44], "add_port": [6, 19], "And": [6, 15, 21], "convent": [6, 13, 21, 29, 30, 41], "clock": 6, "wise": 6, "bottom": [6, 37], "left": [6, 8, 14, 18, 33, 34, 37, 42, 44], "corner": [6, 37], "prefix": 6, "index": [6, 8, 14, 18, 19, 20, 21, 25, 27, 28, 29, 31, 32, 33, 34, 36, 38, 39, 42, 44], "previous": [6, 18], "essenti": [6, 9, 16], "pointer": [6, 31], "There": [6, 8, 11, 13, 18, 21, 28, 31, 33, 34, 37, 40, 44], "limit": [6, 20], "gdsii": [6, 34], "specif": [6, 8, 11, 14, 17, 18, 22, 31, 34, 37, 42], "built": [6, 22, 31, 32, 39], "around": [6, 12, 31, 33, 34], "previou": [6, 21, 31], "2x2": [6, 11, 20, 34], "multimod": [6, 25, 44], "mmi": [6, 11, 13, 19, 25, 34], "wide": [6, 13], "therefor": [6, 21, 22, 28, 30, 31, 36, 44], "side": [6, 29, 33, 40, 44], "four": [6, 33, 34], "redraw": 6, "individu": [6, 43], "right": [6, 8, 14, 22, 33, 34, 42, 43, 44], "off": [6, 20, 30, 31, 34, 42, 44], "bat": 6, "mmi2x2": [6, 11, 20, 34], "gap": [6, 33, 44], "125": 6, "determin": [6, 8, 14, 20, 39, 40, 42, 44], "taper_length": [6, 19], "taper_width_in": 6, "taper_width_out": 6, "taper_c": 6, "bodi": [6, 20], "rect": 6, "size": [6, 8, 13, 14, 19, 20, 22, 30, 32, 33, 34, 44], "none": [6, 39, 42, 44], "port_width": 6, "port_cent": 6, "o3": [6, 11, 20, 44], "o4": [6, 11, 20], "mmi_ref": 6, "shift": [6, 21, 28], "shorthand": [6, 21], "taper_ref": 6, "_": 6, "rang": [6, 13, 14, 18, 28, 34], "enumer": [6, 42], "destin": [6, 44], "alon": [6, 21, 39], "expos": [6, 21, 30], "ref": 6, "f": [6, 8, 15, 34, 39, 42], "auto_rename_port": 6, "consist": [6, 18, 21, 33, 38], "simpler": 6, "find": [6, 8, 13, 20, 33, 37], "math": [6, 34], "fit": [6, 30], "yourself": 6, "often": [6, 11, 22, 30, 31, 33, 34, 40, 44], "swap": [6, 21, 32], "redo": 6, "inlin": [6, 15], "rect_ref": 6, "figur": [6, 27, 29, 34, 38, 42, 44], "put": [6, 8, 15, 19, 20, 32], "manufactur": [6, 9, 11, 13, 15, 20, 21, 28, 34, 38, 40, 44], "share": [6, 8, 14, 33], "tool": [6, 12, 13, 15, 16, 18, 26, 30, 31, 34, 36, 39, 43], "potenti": [6, 22, 30], "lumer": 6, "fix": [6, 22, 31], "write_gd": [6, 19], "suppli": [6, 28], "path": [6, 8, 12, 14, 16, 18, 21, 30, 33, 43], "current": [6, 28, 32], "directori": [6, 8, 14, 20, 33], "sometim": [6, 8, 11, 14, 31], "necessari": [6, 11, 13, 31, 32, 34, 39], "perhap": [6, 22], "meep": [6, 8, 13, 14, 15, 20, 31, 33, 39, 44], "Or": [6, 33], "were": [6, 11, 14, 30, 31, 32, 33, 41], "given": [6, 8, 11, 14, 21, 31, 34, 40, 42], "fab": [6, 18, 30, 44], "while": [6, 8, 12, 16, 18, 21, 22, 25, 29, 30, 31, 32, 33, 34, 36, 37, 41, 42, 44], "ha": [6, 8, 11, 14, 16, 18, 21, 22, 30, 31, 32, 33, 34, 38, 39, 41], "convert": [6, 11, 13, 30, 42], "step": [6, 8, 11, 15, 18, 23, 30, 33, 43], "after": [6, 19, 21, 31, 34], "convers": 6, "get": [6, 8, 11, 12, 18, 19, 20, 21, 30, 33, 34, 42, 43, 44], "branch": [6, 21, 25], "siepic": [6, 21], "ebeam": [6, 21], "ebeam_y_1550": 6, "github": [6, 15, 17, 21, 33], "import_gd": 6, "filenam": [6, 44], "splitter": [6, 11, 21, 30, 44], "read": [6, 8, 16, 18, 21, 22, 30, 31, 34], "manual": [6, 30, 40, 43], "hover": 6, "mous": 6, "examin": [6, 33], "themselv": 6, "midpoint": 6, "7": [6, 8, 31, 34], "75": [6, 8, 21, 39], "separ": [6, 21], "straight": [6, 32, 34, 41, 44], "bend": [6, 30], "radiu": [6, 33], "recal": [6, 21], "canva": 6, "straight_ref": 6, "bend_ref": 6, "pick": 6, "recreat": [6, 31], "racetrack": [6, 33], "coupler": [6, 11, 13, 18, 20, 21, 23, 25, 30, 32, 33, 44], "camacholab": [7, 15], "sequoia": [7, 15, 18], "ploeg": [7, 15], "ph": 7, "candid": 7, "ryan": [7, 15], "camacho": [7, 15], "associ": [7, 13], "professor": 7, "elis": 7, "bangert": 7, "undergradu": 7, "research": 7, "joel": 7, "kartchner": 7, "chandler": 7, "parkin": 7, "noah": 7, "bailei": 7, "kevin": 7, "richin": 7, "small": [8, 13, 16, 28, 29, 37], "transfer": [8, 28, 30, 33], "light": [8, 11, 13, 14, 20, 21, 25, 27, 28, 30, 32, 33, 34, 38, 39, 40, 41], "multipl": [8, 11, 13, 15, 18, 33, 41], "eigenmod": [8, 20, 33], "mode": [8, 13, 20, 21, 30, 33, 34, 40, 41, 44], "field": [8, 11, 14, 20, 21, 30, 32, 34, 39, 41, 43, 44], "outsid": [8, 22, 25, 34, 39, 42], "evanesc": [8, 32, 39], "second": [8, 11, 21, 27, 28, 31, 39, 42, 44], "propag": [8, 21, 27, 32, 33, 34, 39, 41], "us": [8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44], "photon": [8, 11, 13, 14, 15, 16, 17, 18, 20, 21, 25, 26, 29, 31, 32, 33, 34, 38, 40, 41, 43, 44], "amount": [8, 14, 21, 28, 31, 34], "thing": [8, 15, 18, 31, 34, 36, 37, 39, 44], "region": [8, 18, 20, 27, 29, 30, 34, 44], "enough": [8, 30, 36, 42], "incid": [8, 11, 42], "distanc": [8, 20, 33, 38], "materi": [8, 14, 15, 18, 19, 20, 22, 25, 27, 28, 29, 30, 32, 33, 34, 38, 39, 40, 42, 44], "layout": [8, 11, 15, 16, 21, 30, 31, 33, 36], "produc": [8, 21], "g": [8, 12, 15, 18, 30, 40, 42, 44], "50": [8, 13, 21, 44], "25": [8, 14, 18, 19, 21, 34, 42], "fraction": [8, 20, 44], "geometr": [8, 13, 14, 20, 26, 30, 33], "describ": [8, 14, 21, 27, 29, 30, 32, 33, 34, 36, 41], "kappa": [8, 33], "frac": [8, 14, 21, 33, 40, 42], "p_": 8, "p_0": 8, "cl": 8, "coeffici": [8, 21, 42], "l": [8, 21, 33], "found": [8, 37, 39, 40], "analysi": [8, 13, 14], "system": [8, 12, 13, 14, 15, 18, 20, 26, 31, 33, 36, 37], "odd": 8, "antisymmetr": 8, "occur": [8, 20, 21, 33, 42], "circ": 8, "similarli": 8, "symmetr": [8, 11, 34, 44], "user": [8, 12, 22, 31, 43], "permitt": [8, 25], "clad": [8, 14, 18, 30, 32, 34, 38, 39, 40, 42, 44], "refract": [8, 14, 18, 21, 25, 27, 28, 29, 32, 38, 39, 40], "indic": [8, 14, 27, 33, 34, 40, 42], "valu": [8, 11, 18, 21, 31, 32, 34, 39, 42], "rel": [8, 19, 21, 27, 28, 30, 31, 44], "increas": [8, 14, 28, 29, 40], "decreas": [8, 14, 40], "notic": [8, 21, 22, 27, 32, 39, 40, 42], "intens": [8, 14, 20, 21, 33, 34, 44], "insid": [8, 33, 39], "gplugin": [8, 31, 39], "gm": [8, 11, 39], "find_modes_coupl": 8, "core_width": [8, 39], "core_materi": [8, 39], "clad_materi": [8, 39], "core_thick": [8, 39], "22": [8, 34, 43], "resolut": [8, 11, 14, 19, 20, 33, 34, 39, 44], "40": [8, 18, 34, 39, 44], "sz": [8, 39], "nmode": [8, 39], "m1": [8, 18, 39], "m2": [8, 33, 39], "look": [8, 11, 22, 25, 31, 34, 37, 41, 44], "big": 8, "print": [8, 11, 13, 21, 34, 39], "neff": [8, 39], "dielectr": [8, 39, 44], "sidebar": 8, "plot_ep": 8, "plot_ei": [8, 39], "abov": [8, 11, 14, 18, 21, 28, 30, 33, 34, 39, 41, 42, 44], "happen": 8, "desir": [8, 12, 14, 27, 30, 34], "delta": [8, 21], "n": [8, 17, 18, 20, 21, 29, 30, 31, 33, 34, 42], "lambda": [8, 14, 21, 33, 40], "n_": [8, 33, 40, 42], "eff": [8, 14, 33, 40], "find_coupling_vs_gap": 8, "crossov": 8, "tabl": 8, "detail": [8, 14, 21, 34, 37], "ne": 8, "unit": [8, 27, 28, 34], "mu": [8, 21], "m": [8, 15, 20, 21, 31, 33], "lc": 8, "dn": 8, "exponenti": [8, 39], "relationship": [8, 11, 21, 28, 29, 34], "cdot": 8, "variou": [8, 21, 30, 34, 36], "oper": [8, 18, 20, 21, 28, 29, 30, 31, 32, 33, 34, 36], "mp": [8, 11, 14, 19, 20, 33, 34, 39, 44], "gap1": 8, "gap2": 8, "11": [8, 18, 21, 31, 39], "55": [8, 14, 19, 20, 21, 33, 34, 44], "pariti": [8, 39], "even_i": [8, 34], "463631": 8, "409798": 8, "14": 8, "396530": 8, "053832": 8, "460647": 8, "410682": 8, "15": [8, 11, 21, 33, 42], "510925": 8, "049965": 8, "12": [8, 14, 18, 34], "459734": 8, "411797": 8, "16": [8, 18, 39], "166968": 8, "047937": 8, "13": [8, 34], "452682": 8, "411449": 8, "18": [8, 18], "795515": 8, "041233": 8, "448745": 8, "412270": 8, "21": [8, 42], "247526": 8, "036475": 8, "447691": 8, "414688": 8, "23": [8, 15], "482841": 8, "033003": 8, "447658": 8, "416929": 8, "220085": 8, "030729": 8, "17": [8, 42], "447685": 8, "418000": 8, "26": [8, 42], "107513": 8, "029685": 8, "8": [8, 11, 34, 44], "442283": 8, "416295": 8, "29": 8, "821729": 8, "025988": 8, "9": [8, 34, 42, 44], "19": [8, 18], "439496": 8, "416231": 8, "33": 8, "311196": 8, "023265": 8, "20": [8, 11, 19, 20, 21, 33, 42], "438256": 8, "417123": 8, "36": 8, "672851": 8, "021133": 8, "own": [8, 15, 17, 18, 21, 22, 30, 31, 36], "normal": [8, 34, 43], "constant": [8, 21, 29, 33], "beta": [8, 20, 21, 33, 44], "travel": [8, 14, 21, 27, 29, 33, 39, 40, 42], "down": [8, 21, 31, 34, 39], "oscil": [8, 27, 41], "beat": [8, 20], "One": [8, 22, 30, 32, 38], "over": [8, 12, 14, 20, 30, 33, 38], "smaller": [8, 32], "faster": [8, 29], "sinc": [8, 11, 13, 14, 21, 31, 33, 34, 36, 37, 39, 44], "shorter": [8, 21, 28, 40], "give": [8, 11, 15, 21, 31, 34, 36], "begin": [8, 20, 21, 40, 42], "l_": [8, 20, 21], "nonumb": 8, "multipli": 8, "_1": [8, 20], "l_x": 8, "_2": 8, "n_1": 8, "n_2": 8, "Of": [8, 22, 42], "don": [8, 17, 21, 28, 31, 36, 40, 43, 44], "oftentim": 8, "60": 8, "receiv": 8, "equat": [8, 13, 14, 20, 21, 28, 30, 33, 39, 40], "further": [8, 11, 21, 32, 34], "explor": [8, 32, 41, 43], "send": [8, 16, 32], "affect": [8, 20, 21, 28, 33, 40, 41, 44], "minut": 8, "setup": [8, 13, 30, 31, 36, 37, 43], "gif": [8, 14, 20, 33], "typic": [8, 13, 14, 22, 26, 28, 29, 30, 38, 40], "practic": [8, 15, 21, 31], "si": [8, 14, 19, 20, 33, 39], "medium": [8, 14, 19, 20, 33, 34, 44], "sio2": [8, 14, 18, 19, 20, 33, 34, 39], "um": [8, 14, 20, 21, 34], "wvl": [8, 14, 19, 20, 33], "cell": [8, 14, 20, 30, 33, 34], "wg_width": [8, 33], "dpml": [8, 20, 34], "pad": [8, 20, 33], "07": 8, "lx": 8, "30": [8, 14, 42, 44], "sx": [8, 19, 20, 33, 44], "sy": [8, 19, 20, 33, 39, 44], "wg_center_i": 8, "pml": [8, 14, 19, 20, 33, 34, 44], "perfectli": [8, 20, 21, 33, 34], "infinit": 8, "long": [8, 21, 31, 33, 34, 38, 43], "vector3": [8, 14, 19, 20, 33, 34, 44], "puls": [8, 14, 20, 33], "fcen": [8, 14, 19, 20, 33, 34], "fwidth": [8, 14, 19, 20, 33, 34], "src": [8, 19, 20, 33, 34], "gaussiansourc": [8, 14, 19, 20, 33, 34], "frequenc": [8, 11, 13, 14, 19, 20, 21, 27, 28, 29, 32, 33, 42, 44], "eigenmodesourc": [8, 19, 20, 33, 34, 44], "eig_band": [8, 19, 20, 33, 34, 44], "eig_kpoint": [8, 19, 20, 33, 34], "sim": [8, 11, 14, 19, 20, 33, 34, 44], "cell_siz": [8, 11, 14, 19, 20, 33, 34, 44], "boundary_lay": [8, 14, 19, 33, 34, 44], "default_materi": [8, 19, 33, 44], "set": [8, 11, 13, 14, 15, 18, 20, 21, 30, 31, 33, 34, 37, 39, 42, 43], "plot2d": [8, 11, 14, 19, 20, 33, 34, 44], "warn": [8, 42], "grid": 8, "volum": [8, 34, 40, 44], "integ": [8, 18, 33], "pixel": [8, 34], "round": [8, 30, 33], "nearest": 8, "ax": [8, 21, 39, 42], "pil": [8, 14, 20, 33], "imag": [8, 14, 21, 33, 34, 44], "glob": [8, 14, 20, 33], "os": [8, 14, 20, 33, 36], "reset_meep": [8, 34], "captur": [8, 14, 20, 33], "at_begin": [8, 14, 20, 33], "output_epsilon": [8, 14, 20, 33], "to_append": [8, 14, 20, 33], "ez": [8, 14, 20, 33, 44], "at_everi": [8, 14, 20, 33], "output_efield_z": [8, 14, 20, 33], "until": [8, 11, 14, 20, 33, 34, 44], "200": [8, 11, 14, 20, 34], "gener": [8, 11, 13, 14, 18, 20, 21, 22, 27, 28, 30, 31, 33, 39, 41], "png": [8, 14, 20, 21, 33], "colormap": [8, 14, 20, 33], "work": [8, 20, 22, 31, 33, 34, 41], "h5py": [8, 14, 20, 33], "instal": [8, 12, 13, 14, 16, 20, 31, 33, 36, 37, 39, 43], "problem": [8, 14, 15, 20, 28, 33], "h5util": [8, 14, 20, 33], "h5topng": [8, 14, 20, 33], "99": [8, 14], "r": [8, 14, 20, 31, 33, 42], "zc": [8, 14, 20, 33], "rdbu": [8, 14, 20, 33, 34, 44], "ep": [8, 14, 20, 33], "000000": [8, 14, 20, 33], "00": [8, 14, 20, 33, 42], "h5": [8, 14, 20, 33], "grai": [8, 14, 20, 33, 39], "frame": [8, 14, 20, 33], "img": [8, 14, 20, 33], "sort": [8, 14, 20, 30, 33], "new_fram": [8, 14, 20, 33], "append": [8, 14, 20, 33, 34], "loop": [8, 14, 20, 33, 34], "forev": [8, 14, 20, 33], "append_imag": [8, 14, 20, 33], "save_al": [8, 14, 20, 33], "clean": [8, 14, 20, 33], "workspac": [8, 14, 20, 33], "delet": [8, 14, 20, 31, 33], "invalid": [8, 14, 42], "circumv": [8, 14], "issu": [8, 14], "chosen": [8, 14, 40, 42], "sensit": [8, 14, 20, 30], "fabric": [8, 9, 13, 15, 18, 26, 28, 30, 34], "variat": [8, 20, 33], "robust": [8, 20, 31], "element": [8, 13, 21, 28, 34, 40], "principl": [8, 13, 14, 15, 18, 20, 34, 42], "behind": [8, 21, 30], "interfer": [8, 13, 14, 20, 21, 27, 32, 33, 44], "nearbi": 8, "chip": [8, 13, 14, 16, 17, 18, 21, 25, 30, 31], "parasit": 8, "too": [8, 13, 18, 21, 31, 33, 36, 41], "lead": [8, 32, 33, 40], "leak": [8, 44], "far": [8, 11, 32, 33], "apart": 8, "silicon": [8, 13, 14, 21, 29, 30, 34, 38, 39, 42, 44], "answer": [8, 21, 31, 42], "approxim": [8, 13, 18, 28], "135": 8, "micron": [8, 14, 18, 21, 39], "luka": [8, 14, 44], "chrostowski": [8, 14, 44], "stefan": 8, "prebl": 8, "facil": [9, 15, 30], "simul": [11, 13, 14, 15, 18, 19, 23, 26, 30, 39, 42, 44], "devic": [11, 13, 15, 16, 18, 20, 21, 25, 26, 27, 29, 33, 44], "befor": [11, 21, 22, 30, 31, 34], "idea": [11, 31], "perform": [11, 13, 15, 30, 31, 34], "plugin": 11, "finit": [11, 13, 30, 31, 39], "domain": [11, 13, 31, 42], "algorithm": [11, 31], "fdtd": [11, 13, 15, 31], "turn": [11, 21, 28, 34, 39], "component_from_gd": 11, "py": [11, 21, 42], "func": 11, "get_simul": [11, 20], "get_meep_geometry_from_compon": [11, 20], "grate": [11, 13, 18, 21, 23, 30], "fiber": [11, 13, 14, 18, 21, 30, 32], "connect": [11, 15, 18, 21, 30, 44], "howev": [11, 15, 21, 22, 32, 33, 34, 36, 44], "suffic": 11, "tutori": [11, 21, 34], "tidy3d": [11, 20, 40], "implement": [11, 28, 33], "tpml": [11, 20], "port_source_offset": [11, 20], "port_monitor_offset": [11, 20], "distance_source_to_monitor": [11, 20], "32": 11, "scatter": [11, 21, 41], "tell": [11, 13, 31, 33, 34, 41], "port": [11, 13, 18, 19, 20, 21, 33, 44], "purpos": [11, 17, 22, 27, 40], "write_sparameters_meep": 11, "3d": [11, 18, 32, 34], "margin": 11, "account": [11, 12, 33, 43], "kwarg": 11, "fals": [11, 18, 34, 39, 42], "wast": 11, "incorrectli": 11, "2d": [11, 14, 19, 32, 34], "comprehens": [11, 34, 41], "dictionari": [11, 18, 20, 21], "kei": [11, 14, 21, 32], "form": [11, 21, 28], "refer": [11, 13, 15, 30, 33, 40, 41], "go": [11, 15, 16, 20, 22, 23, 27, 33, 34, 36, 43, 44], "symmetri": 11, "port_symmetri": 11, "assign": [11, 30], "1x2": [11, 13, 20], "comput": [11, 13, 15, 21, 31, 33, 34, 37, 43], "written": [11, 15], "thu": [11, 33, 44], "write_sparamters_meep_mpi": 11, "write_sparameters_meep_batch": 11, "per": [11, 13, 27], "total": [11, 18, 32, 34, 39], "write_sparameters_gr": 11, "batch": 11, "write_sparameters_grating_mpi": 11, "write_sparameters_grating_batch": 11, "adequ": 11, "xmargin_left": 11, "xmargin_right": 11, "sp": 11, "plot_sparamet": 11, "reflect": [11, 14, 18, 20, 25, 32, 34, 39, 44], "wave": [11, 13, 14, 20, 21, 27, 33, 34, 39, 40, 41, 42], "why": [11, 32, 41], "program": [12, 13, 16, 31, 37], "environ": [12, 15, 17, 22, 36, 37], "uncommon": 12, "roll": [12, 22], "back": [12, 14, 30, 33, 42, 44], "break": [12, 31], "someth": [12, 31], "product": [12, 42], "version": [12, 21, 22, 43], "control": [12, 17, 21, 22], "vc": 12, "extrem": [12, 22], "who": [12, 22], "simultan": [12, 41], "edit": [12, 30, 43], "rather": [12, 30, 33], "painlessli": 12, "predomin": 12, "programm": [12, 22], "todai": 12, "command": [12, 13, 17, 21, 31, 34, 39, 43], "entir": [12, 13, 15, 32, 34], "ecosystem": 12, "host": [12, 15, 31], "servic": 12, "gui": [12, 34, 36], "id": [12, 37], "sprung": 12, "alreadi": [12, 21, 30, 33, 34], "linux": [12, 13, 16, 31, 36, 37, 43], "temin": 12, "enter": [12, 21, 33, 34], "machin": [12, 13, 31, 36, 43], "window": [12, 13, 16, 31, 36, 42], "packag": [12, 15, 16, 17, 18, 21, 36, 39], "mac": [12, 16, 31, 36], "forc": [12, 22], "wsl": [12, 13, 31, 36], "still": [12, 29, 31, 32, 34, 44], "download": [12, 15, 16, 31, 37, 43], "link": [12, 29, 31], "maco": [12, 13, 31, 36, 37], "xcode": 12, "termin": [12, 31, 36, 37, 43], "select": [12, 16, 18, 43], "through": [12, 15, 21, 23, 25, 27, 28, 29, 30, 32, 34, 36, 37, 39, 40, 41, 43], "debian": 12, "distribut": [12, 13, 22, 31, 39], "ubuntu": [12, 31, 36, 43], "sudo": 12, "apt": 12, "rpm": 12, "fedora": 12, "rhel": 12, "cento": 12, "dnf": 12, "known": [12, 14, 21, 22, 31, 37, 38, 39, 41, 42], "free": [12, 13, 15, 16, 22, 28, 30, 31, 40], "privat": 12, "bootcamp": [12, 15, 18, 33, 34], "along": [12, 33, 39, 41, 42], "popular": [12, 22, 31, 37, 38], "python": [12, 13, 15, 16, 18, 30, 34, 36, 37, 42], "keep": [12, 15, 31, 34], "definit": [13, 22], "throughout": [13, 21], "mathemat": [13, 21, 30, 33], "descript": 13, "behavior": [13, 21, 30, 32, 33, 41, 42, 44], "cutback": 13, "techniqu": 13, "measur": [13, 14, 20, 21, 28, 33, 40], "attenu": [13, 30, 33], "transmiss": [13, 21, 27, 33, 34, 42], "delai": [13, 30], "count": 13, "etc": [13, 18, 30, 31, 40], "drc": [13, 16, 18, 30], "verifi": [13, 31, 34], "ensur": [13, 21, 30, 31, 34, 44], "error": [13, 18, 20, 39], "caus": [13, 21, 29], "fail": [13, 34], "short": [13, 14, 16, 21, 22, 29], "featur": [13, 16, 30, 31, 37, 39, 40], "resolv": [13, 42], "drastic": 13, "foundri": 13, "minimum": [13, 20, 30], "space": [13, 28, 30, 33, 40], "numer": [13, 39], "electrodynam": 13, "solut": 13, "differenti": [13, 28, 39], "method": [13, 15, 17, 19, 21, 22, 30, 31, 34, 36], "cover": [13, 15], "singl": [13, 15, 20, 21, 30, 33, 36, 44], "primari": 13, "avail": [13, 15, 16, 18, 22, 30, 31, 36], "platform": [13, 15, 31], "yaml": 13, "flow": [13, 26], "gd": [13, 14, 15, 16, 18, 30, 31, 34, 36, 44], "graphic": 13, "coupl": [13, 14, 21, 22, 30, 44], "reson": [13, 25], "instrument": [13, 17, 20], "util": [13, 14, 18, 20, 21, 22], "beam": [13, 14, 20, 21, 32], "multi": 13, "split": [13, 20, 21, 34], "ideal": [13, 14, 21, 32], "nearli": 13, "imposs": 13, "polygon": [13, 30], "electron": [13, 26, 32, 34], "digit": [13, 26], "dry": 13, "modif": 13, "replic": 13, "insul": [13, 38], "soi": [13, 18, 30, 38, 42], "technolog": [13, 30], "substrat": [13, 14, 18, 30, 38, 39], "semiconductor": 13, "wafer": [13, 30, 38], "vscode": [13, 31], "studio": [13, 36], "commonli": [13, 22, 31, 40], "vs": [13, 37], "editor": [13, 15, 36, 37], "microsoft": [13, 36, 37], "support": [13, 15, 17, 18, 20, 29, 40, 41], "debug": [13, 31], "syntax": [13, 17, 31, 39], "highlight": 13, "intellig": 13, "snippet": 13, "refactor": [13, 31], "embed": [13, 15], "git": [13, 18], "wikipedia": 13, "subsystem": [13, 36], "bash": [13, 31, 43], "directli": [13, 15, 18, 19, 34], "unmodifi": 13, "overhead": 13, "tradit": [13, 38], "virtual": [13, 17, 36], "dual": 13, "boot": 13, "diffract": 14, "cabl": [14, 30], "edg": [14, 23], "teeth": 14, "drawn": [14, 32], "onto": [14, 23, 30, 38, 43], "altern": [14, 43], "structur": 14, "propog": [14, 21, 30], "hyugen": 14, "fresnel": [14, 42], "bragg": 14, "law": [14, 39, 42], "depict": [14, 32, 40], "orthogon": [14, 32, 41], "arrai": [14, 21, 34, 42], "might": [14, 18, 21, 31, 44], "imagin": [14, 21], "hold": [14, 22, 34], "catch": 14, "cell_x": 14, "cell_i": 14, "x_offset": 14, "nanomet": 14, "num_teeth": 14, "waveguide_depth": 14, "220": [14, 18, 21], "etch_depth": 14, "068": 14, "grating_period": 14, "659": 14, "fill_factor": 14, "524": 14, "verbos": [14, 44], "inf": [14, 19], "epsilon": [14, 34], "cladding_depth": 14, "box_depth": 14, "box": [14, 18, 34, 37, 42], "substrate_depth": 14, "700": 14, "df": [14, 34], "pml_layer": [14, 19], "500": [14, 21], "savefig": 14, "grating_coupler_plot": 14, "encount": [14, 22, 42], "recogn": 14, "discuss": [14, 32], "page": [14, 18, 31, 32, 33, 34, 39, 43, 44], "demonstr": [14, 42], "been": [14, 30, 31, 32, 34], "1550": 14, "appropri": [14, 21, 31, 32], "three": [14, 18, 20, 21, 34, 41], "understand": [14, 33, 34, 41, 42], "simplifi": [14, 21, 32], "view": [14, 16, 18, 34, 36], "denot": [14, 20], "effici": [14, 21], "half": [14, 33, 39], "relat": [14, 18, 32, 39], "2n_": 14, "choos": [14, 19, 32, 39], "exactli": [14, 21, 34], "90": [14, 21, 44], "degre": [14, 21, 28, 42], "problemat": 14, "byproduct": [14, 29], "larg": [14, 31, 44], "zeroth": 14, "avoid": [14, 31], "slightli": [14, 20, 21, 29, 34, 40, 44], "less": [14, 22, 30, 32, 33, 44], "angl": [14, 21, 32], "area": [14, 30, 31, 42], "overal": 14, "weight": [14, 44], "unetch": 14, "ratio": [14, 20, 33, 34, 42, 44], "ff": 14, "w": 14, "welcom": 15, "present": [15, 18, 20, 32], "onlin": [15, 22], "freeli": [15, 22, 31], "resourc": [15, 29], "teach": 15, "student": 15, "curriculum": 15, "background": [15, 16, 21, 22], "motiv": 15, "full": [15, 22, 30, 31, 32, 33, 39], "learner": 15, "guid": [15, 30, 36, 38, 40, 42], "submit": [15, 22], "wish": [15, 22], "simphoni": [15, 21, 31], "submiss": [15, 30], "pic": 15, "post": 15, "instruct": [15, 31, 36, 37, 43], "contribut": [15, 22], "subject": 15, "matter": [15, 34], "expert": 15, "futur": [15, 31], "expans": 15, "fork": 15, "parti": 15, "custom": [15, 22], "train": 15, "websit": [15, 22], "explanatori": 15, "webpag": 15, "launch": [15, 34], "colab": 15, "local": [15, 17, 36], "immedi": [15, 31], "alwai": [15, 21, 31, 44], "workflow": 15, "approach": 15, "introduc": [15, 21, 22, 28, 31, 33, 44], "bother": 15, "mention": [15, 18, 22], "possibl": [15, 41], "configur": [15, 18, 36], "ahead": 15, "standard": [15, 36, 44], "ardavan": 15, "oskooi": 15, "david": 15, "roundi": 15, "mihai": 15, "ibanescu": 15, "peter": 15, "bermel": 15, "john": 15, "joannopoulo": 15, "steven": 15, "johnson": 15, "flexibl": [15, 30], "electromagnet": [15, 39, 41, 44], "physic": [15, 23, 29, 40], "commun": [15, 22, 31], "181": 15, "687": 15, "702": 15, "2010": 15, "hyrum": 15, "gunther": 15, "framework": [15, 17], "scienc": 15, "65": 15, "74": 15, "2020": 15, "joaquin": 15, "matr": 15, "2023": 15, "url": [15, 22], "http": [15, 21, 22, 32, 43], "io": 15, "verif": 16, "viewer": [16, 36], "trace": [16, 38], "net": 16, "detect": [16, 30], "scriptabl": 16, "languag": [16, 31], "rubi": 16, "extens": [16, 37], "extern": [16, 21], "json": 16, "request": 16, "server": [16, 17], "hot": 16, "reload": 16, "rerun": 16, "manag": [16, 36], "Then": [16, 34, 43, 44], "search": 16, "doubl": [16, 21, 33], "click": [16, 23, 37, 43], "pyro5": 17, "remot": 17, "access": [17, 18, 22, 31, 33], "equip": 17, "lab": 17, "favor": [17, 38], "usb": 17, "proprietari": [17, 22], "brand": 17, "unifi": 17, "intrument": 17, "easi": [17, 21, 28, 31, 34], "pip": [17, 31, 36], "conda": [17, 36, 43], "environment_nam": 17, "activ": [17, 22, 25, 27, 31, 43], "updat": [17, 21], "pypi": [17, 31, 36], "upgrad": [17, 31], "visit": 17, "interrog": 17, "station": 17, "interfac": [17, 31, 36, 39, 41], "fore": 17, "whether": [18, 22, 30], "etch": [18, 30, 38, 40], "deposit": [18, 30, 38], "dope": [18, 29, 30], "metal": [18, 28, 30], "p": [18, 29, 30], "translat": [18, 30], "mask": [18, 30], "formal": 18, "state": [18, 22, 34], "255": 18, "modern": [18, 31, 36], "almost": [18, 34, 44], "dedic": [18, 22], "nitrid": 18, "lithium": [18, 42], "niobat": [18, 42], "whichev": 18, "decid": 18, "thin": 18, "top": [18, 21], "dioxid": [18, 38, 42], "thick": [18, 21, 33, 34, 39], "buri": 18, "oxid": [18, 34], "main": [18, 25, 30, 31], "intern": [18, 32, 39], "48": [18, 21], "excel": [18, 29, 31], "refractiveindex": 18, "info": [18, 21], "color": [18, 37, 40, 42], "fill": 18, "map": [18, 21], "human": [18, 21], "readabl": [18, 21, 34], "properti": [18, 27, 29, 30, 39, 40, 43], "lyp": 18, "migrat": 18, "few": [18, 22, 31, 36, 37, 40], "devrec": 18, "recognit": 18, "show_port": 18, "marker": 18, "label_inst": 18, "netlist": 18, "te": [18, 21, 32, 34, 39, 41, 42], "polar": [18, 20, 21, 27, 30, 32, 39], "tm": [18, 21, 41, 42], "pydant": 18, "class": [18, 22], "partial": [18, 29, 32, 41], "germanium": 18, "photodiod": 18, "vari": [18, 21], "concentr": 18, "pn": 18, "junction": 18, "capacitor": [18, 30, 40], "depth": 18, "exclud": 18, "dice": 18, "lane": 18, "reserv": 18, "violat": 18, "reader": 18, "basemodel": 18, "wg": 18, "slab150": 18, "68": 18, "201": 18, "206": 18, "203": 18, "204": 18, "66": 18, "41": 18, "43": 18, "config": [18, 21, 31], "frozen": 18, "extra": [18, 31, 40], "forbid": 18, "32m2023": 18, "06": 18, "227": 18, "0m": [18, 21, 39], "1minfo": [18, 39], "36mgdsfactori": 18, "36m__init__": 18, "36m204": 18, "1mloglevel": 18, "visibl": 18, "export": [18, 19], "hatch_pattern": 18, "dot": 18, "ff9d9d": 18, "layer_in_nam": 18, "coars": 18, "transpar": 18, "cyan": 18, "01ff6b": 18, "bright": 18, "hollow": 18, "cc4c00": 18, "label_optical_io": 18, "blue": [18, 32, 34, 39, 41, 42], "label_set": 18, "202": 18, "magenta": 18, "red": [18, 32, 34, 41, 42], "lightli": 18, "hatch": 18, "004080": 18, "pinrec": 18, "404040": 18, "xsection": 18, "group_memb": 18, "xs_box": 18, "300": [18, 34], "f3ff80": 18, "solid": 18, "xs_si": 18, "301": 18, "black": [18, 34, 42], "xs_si_slab": 18, "313": 18, "80a8ff": 18, "xs_overlai": 18, "311": 18, "xs_ox_si": 18, "302": 18, "xs_via": 18, "303": 18, "grei": 18, "xs_m1": 18, "304": 18, "green": [18, 42], "xs_oxide_m1": 18, "305": 18, "308": 18, "ff80a8": 18, "wg_pin": 18, "klayout_lyp": 18, "posixpath": 18, "home": [18, 33, 34, 39], "env": [18, 21, 31, 33, 39], "lib": [18, 21, 39], "python3": [18, 21, 39], "site": [18, 21, 22, 39], "generic_tech": 18, "tech": 18, "npp": 18, "pp": 18, "ppp": 18, "Be": [18, 21], "sure": [18, 19, 22, 34], "gmeep": [19, 20, 39], "meep_adjoint_optim": 19, "straightforward": 19, "get_component_from_sim": 19, "continu": [19, 31, 34, 39], "variabl": [19, 21, 29, 30, 34, 44], "waveguide_width": 19, "arm_separ": 19, "mmi_length": 19, "mmi_width": 19, "taper_width": 19, "pml_size": 19, "taper_x1": 19, "taper_x2": 19, "taper_y1": 19, "taper_y2": 19, "taper_y3": 19, "taper_y4": 19, "prism": 19, "height": [19, 21, 40], "source_center_x": 19, "source_s": 19, "kpoint": 19, "no_direct": [19, 34], "geometry_cent": 19, "gdspath": 19, "2x2mmi": 19, "predict": [20, 21, 30, 41], "certain": [20, 22, 32, 33, 41], "k": [20, 25, 42], "wider": 20, "gradual": 20, "widen": 20, "nxm": 20, "replica": 20, "period": [20, 21, 28], "_0": 20, "wall": [20, 31], "interf": 20, "destruct": [20, 21, 27, 32, 44], "forward": [20, 22, 29, 34], "backward": [20, 31, 34], "word": [20, 22, 27, 32, 44], "excit": 20, "goe": [20, 33, 34, 42, 44], "THE": 20, "TO": 20, "length_mmi": 20, "extend": [20, 22], "extend_port": 20, "port_nam": [20, 21], "299": [20, 33], "evenli": [20, 44], "advantag": [20, 22, 30], "veri": [20, 21, 22, 29, 31, 34, 36, 38, 44], "suscept": [20, 30], "fact": [20, 22, 34], "optimum": 20, "contrast": 20, "mimic": 20, "disadvantag": 20, "switch": [20, 21, 33, 34], "wdm": 20, "divis": 20, "multiplex": 20, "hybrid": 20, "divers": 20, "photodetector": [20, 25, 30], "extract": [21, 39], "doc": [21, 37, 39], "zender": 21, "concept": [21, 30, 31, 32, 33], "recombin": [21, 44], "accumul": 21, "quantum": 21, "piezo": 21, "transduc": 21, "sax": 21, "jax": 21, "nice": [21, 31, 36], "speedup": 21, "gpu": 21, "fine": 21, "cpu": 21, "awar": 21, "jax_enable_x64": 21, "drop": 21, "replac": 21, "jnp": 21, "broken": 21, "constitu": 21, "diagram": [21, 33, 41], "carri": [21, 22], "identifi": 21, "explain": [21, 29, 33, 34, 43], "formul": 21, "s_": 21, "ij": 21, "repres": [21, 32, 34, 40, 41, 42], "j": [21, 33, 34], "stimuli": 21, "signatur": 21, "grating_coupl": 21, "31msignatur": 21, "0msiepic": 21, "34m": 21, "0mgrating_coupl": 21, "0mwl": 21, "0munion": 21, "0mfloat": 21, "0mjax": 21, "0marrai": 21, "36m1": 21, "0mpol": 21, "0mliter": 21, "0mthick": 21, "36m220": 21, "0mdwidth": 21, "36m0": 21, "0mdict": 21, "0mtupl": 21, "0mstr": 21, "0mjaxtyp": 21, "0mcomplex": 21, "31mdocstr": 21, "1550nm": 21, "citat": 21, "_static": 21, "ebeam_gc_te1550": 21, "alt": 21, "ebeam_bdc_te1550": 21, "wl": 21, "evalu": 21, "pol": 21, "210": 21, "230": 21, "dwidth": 21, "nomin": 21, "rais": 21, "valueerror": 21, "com": [21, 22, 32], "siepic_ebeam_pdk": 21, "blob": 21, "master": 21, "20compon": 21, "20with": 21, "20model": 21, "docx": 21, "31mfile": 21, "miniconda3": [21, 33, 39], "31mtype": 21, "inspect": [21, 22], "o0": 21, "0307378": 21, "00345908j": 21, "dtype": 21, "complex128": 21, "75686856": 21, "02082852j": 21, "74360676": 21, "09760613j": 21, "0750638": 21, "02585451j": 21, "get_port": 21, "y_branch": 21, "strictli": 21, "enforc": 21, "rewrit": 21, "string": [21, 39], "instance_nam": 21, "whitespac": 21, "delimit": 21, "comma": 21, "composit": 21, "gc_in": 21, "gc": 21, "ybranch": [21, 44], "long_wg": 21, "short_wg": 21, "gc_out": 21, "act": 21, "whatev": 21, "invok": [21, 31], "gave": 21, "becom": [21, 22, 31, 34, 41], "instanti": 21, "unsur": 21, "get_set": 21, "loss": [21, 28, 29, 33, 34, 44], "overkil": 21, "everyth": [21, 34, 43], "els": [21, 31, 34], "stai": 21, "global": 21, "toplevel": 21, "trickl": 21, "1000": 21, "150": 21, "transmit": [21, 33, 38, 41, 42], "magnitud": [21, 34, 39, 42], "squar": [21, 33], "renam": 21, "unconnect": 21, "realli": [21, 22, 34, 42], "meaning": 21, "both": [21, 28, 29, 31, 33, 34, 39, 44], "linear": [21, 28, 34, 44], "log": [21, 34], "scale": [21, 30, 44], "mag": 21, "ab": [21, 34], "fig": [21, 39, 42], "subplot": [21, 39, 42], "sharex": [21, 39], "set_ylabel": 21, "log10": [21, 34], "db": [21, 34], "set_xlabel": [21, 42], "suptitl": 21, "dip": 21, "opposit": 21, "peak": [21, 32, 33], "maximum": [21, 33], "better": [21, 40, 41], "think": [21, 30, 31], "equal": [21, 27, 33, 40, 42, 44], "condit": [21, 22, 39], "my_compon": 21, "delta_length": 21, "relev": 21, "amplitud": [21, 27, 28, 29, 30, 32, 44], "i_": 21, "e_": [21, 33], "sqrt": 21, "hspace": 21, "2mm": 21, "whose": 21, "undergon": 21, "mw": [21, 28], "lossless": 21, "plane": [21, 41], "e_0": 21, "omega": 21, "z": [21, 34, 39, 41], "beta_": 21, "alpha_": 21, "\u03b1": 21, "appear": 21, "expon": 21, "zero": [21, 39], "lvert": 21, "express": [21, 28], "1450": 21, "longer": [21, 28, 40], "102": 21, "491": 21, "phasa": 21, "heat": [21, 25, 28], "static": 21, "\u03b2": 21, "100\u00b5m": 21, "1500nm": 21, "ouptput": 21, "9mw": 21, "heater": 21, "constitut": [22, 29], "legal": 22, "advic": 22, "date": 22, "corpor": 22, "contact": 22, "attornei": 22, "absolut": 22, "implic": 22, "organ": [22, 34, 39], "particularli": 22, "question": 22, "compani": 22, "incorpor": 22, "inherit": 22, "foss": 22, "availbl": 22, "portion": [22, 32, 42], "anyon": [22, 31], "enhanc": 22, "methodolog": 22, "creation": 22, "peopl": 22, "skill": 22, "context": [22, 32], "monetarili": 22, "under": 22, "restrict": [22, 30], "freedom": 22, "copi": [22, 42, 43], "studi": 22, "improv": 22, "hood": 22, "actual": [22, 34, 44], "strong": 22, "focus": 22, "downsid": 22, "thanklessli": 22, "maintain": [22, 27], "spend": 22, "driven": 22, "psiquantum": 22, "natur": [22, 41], "mainten": 22, "bug": [22, 31], "slower": 22, "commerci": 22, "On": [22, 25, 41, 43], "hand": [22, 33, 37, 41], "garner": 22, "friendli": 22, "copor": 22, "scheme": 22, "confirm": 22, "team": 22, "abil": 22, "plan": 22, "releas": [22, 31], "permiss": 22, "162": 22, "copyright": 22, "remain": [22, 33], "stricter": 22, "deriv": [22, 40, 42], "warranti": 22, "world": [22, 31, 40], "statement": 22, "signific": [22, 44], "attribut": 22, "similar": [22, 33, 39], "rereleas": 22, "grant": 22, "patent": 22, "contributor": 22, "claim": 22, "codebas": 22, "cannot": [22, 42], "liabl": 22, "reason": [22, 32], "trademark": 22, "licensor": 22, "belong": 22, "copyleft": 22, "mandat": 22, "gpl": 22, "v3": 22, "unpopular": 22, "prohibit": 22, "inclus": 22, "prevent": 22, "contamin": 22, "witih": 22, "technic": 22, "offend": 22, "liabil": 22, "binari": [22, 30, 34, 44], "attempt": 22, "pai": [22, 32], "attitud": 22, "necessarili": [22, 31], "impress": 22, "gnu": 22, "notepad": 22, "wordpress": 22, "mysql": 22, "unabl": 22, "sale": 22, "fossa": 22, "editori": 22, "101": 22, "jan": 22, "2021": 22, "blog": 22, "feb": 22, "mar": 22, "walk": [23, 39], "skip": [23, 43], "explan": 23, "tune": [25, 27, 33], "scope": [25, 29], "thermo": [25, 28], "slow": 25, "stabl": 25, "electro": [25, 30], "modul": [25, 27, 28, 29, 30, 39], "fast": [25, 29], "laser": [25, 30], "signal": [27, 28, 29, 30, 31, 34, 38, 40, 41], "characterist": [27, 34, 40], "ac": 27, "encod": [27, 30], "adjust": [27, 28, 42, 44], "categor": 27, "tuner": [27, 29], "dure": 27, "sai": [27, 33, 37, 41], "bridg": 27, "todo": [27, 29, 40], "insert": [27, 28, 29, 33, 34], "illustr": [27, 40], "compress": 27, "accord": [27, 34], "lower": [27, 32, 34, 39, 40, 44], "fewer": 27, "temperatur": [28, 40], "molecul": [28, 41], "At": 28, "low": [28, 29, 30, 33, 38], "proport": 28, "compris": 28, "proxim": [28, 33], "resistor": [28, 30, 40], "dissip": 28, "besid": 28, "govern": [28, 39], "mostli": [28, 32, 39, 41], "unlik": [28, 29], "pin": [28, 31], "eas": [28, 38], "offer": [28, 29, 40], "tradeoff": [28, 29], "capac": 28, "applciat": 28, "constantli": 28, "360": 28, "fsr": 28, "spectral": 28, "maxima": 28, "achiev": [28, 32, 42], "consum": 28, "closer": 28, "rate": 28, "plasma": 29, "dispers": 29, "charg": 29, "carrier": 29, "inject": [29, 34], "refrac": 29, "voltag": 29, "revers": [29, 44], "bias": 29, "respond": 29, "induc": 29, "mechan": [29, 31], "quit": 29, "beyond": [29, 40], "resist": [29, 40], "capacit": [29, 40], "intrins": 29, "compar": [29, 40], "high": [29, 31, 32, 38], "cutoff": 29, "ten": 29, "ghz": 29, "suit": 29, "neglig": 29, "clariti": 29, "thermal": 29, "undop": 29, "copmris": 29, "ad": [29, 34], "experienc": [29, 36, 40], "cost": [29, 30, 31], "qualiti": 29, "deplet": 29, "moder": 29, "bia": 29, "analog": 30, "macro": 30, "lens": 30, "mirror": 30, "beamsplitt": 30, "analogu": 30, "micro": 30, "nano": 30, "discret": [30, 32], "inductor": 30, "cmo": 30, "classifi": 30, "mismatch": 30, "anisotropi": 30, "voa": 30, "photolithographi": 30, "photomask": 30, "photosensit": 30, "chemic": 30, "photoresist": 30, "lamp": 30, "ultraviolet": 30, "regim": 30, "stencil": 30, "alter": 30, "leav": 30, "underli": 30, "constraint": 30, "densiti": 30, "pcb": 30, "familiar": [30, 31, 33], "reject": 30, "didn": 30, "meet": 30, "undergo": 30, "compat": [30, 31, 36], "hous": 30, "matur": 30, "autom": 30, "store": [30, 34, 36, 43], "concret": 30, "conta": 30, "latter": 30, "regener": 30, "regress": 30, "mzm": 30, "least": 30, "arm": [30, 44], "rout": 30, "briefli": [30, 34], "touch": 30, "solv": [30, 33, 39, 40], "maxwel": [30, 39], "computation": [30, 34], "expens": 30, "volumetr": 30, "mesh": 30, "voxel": 30, "magnet": [30, 32, 39, 41, 42], "lot": [30, 41], "hour": 30, "pertin": 30, "abstract": [30, 32], "sequenc": 30, "yet": 30, "embrac": 31, "scientif": 31, "session": 31, "recompil": 31, "prototyp": 31, "rapidli": 31, "miniconda": [31, 36, 43], "bundl": 31, "though": 31, "frill": 31, "strip": 31, "anaconda": 31, "tend": 31, "pretti": 31, "latest": 31, "execut": 31, "easiest": [31, 37], "quick": 31, "best": [31, 33], "isol": [31, 33], "sandbox": 31, "destroi": 31, "mess": 31, "never": [31, 34], "worri": 31, "someon": 31, "venv": 31, "older": 31, "intel_env": 31, "subdir": 31, "osx": 31, "64": 31, "establish": 31, "hasn": 31, "promin": 31, "fundament": [31, 32, 34, 39, 44], "counterpart": 31, "matlab": 31, "defacto": 31, "databas": 31, "solver": [31, 39, 40], "forg": 31, "pymeep": 31, "grab": 31, "nlopt": 31, "aren": 31, "increment": 31, "api": 31, "contract": 31, "task": 31, "evolv": 31, "accomplish": 31, "old": 31, "immatur": 31, "frequent": 31, "guarante": 31, "reproduc": 31, "semant": 31, "major": 31, "minor": 31, "patch": [31, 39], "incompat": 31, "manner": 31, "txt": 31, "24": [31, 42], "great": 32, "intuit": [32, 33, 42, 44], "surround": [32, 38, 39], "flaw": 32, "assumpt": 32, "misconcept": 32, "compen": 32, "challeng": 32, "slab": [32, 40], "implicit": 32, "fulli": [32, 33], "crucial": 32, "addition": 32, "impli": 32, "greater": [32, 42], "critic": 32, "except": 32, "anim": 32, "white": 32, "sent": 32, "orthogan": 32, "wavefront": 32, "interv": 32, "trough": 32, "special": [32, 37], "attent": 32, "clarifi": 32, "incremental": 32, "With": [32, 33], "backdrop": 32, "consider": [32, 40], "lost": [32, 34, 42, 44], "interferr": 32, "minim": 32, "emerg": 32, "obvious": 32, "mit": 32, "s3": 32, "amazonaw": 32, "fip": 32, "html": [32, 43], "bu": 33, "theori": 33, "trip": 33, "particular": 33, "Such": 33, "circumfer": 33, "alpha": [33, 34, 42, 44], "cm": 33, "plug": 33, "b1": 33, "te_": 33, "a1": 33, "a2": 33, "b2": 33, "quantiti": 33, "opd": 33, "roundtrip": 33, "imped": [33, 34], "approx": 33, "fwhm": 33, "aka": 33, "bandwidth": 33, "finess": 33, "narrow": 33, "sharp": 33, "q": 33, "sharper": 33, "filter": [33, 41], "whisper": 33, "galleri": 33, "feel": 33, "ipython": 33, "video": 33, "10um": 33, "d_pml": 33, "d_pad": 33, "r_in": 33, "r_out": 33, "wg_length": 33, "cylind": 33, "600": 33, "ebang4": 33, "book": [33, 34], "decai": [33, 39], "despit": 33, "wg_center": 33, "radio": 34, "rf": 34, "exit": 34, "nxn": 34, "ofen": 34, "notat": 34, "character": 34, "bechavior": 34, "metric": 34, "param": 34, "mind": 34, "accur": [34, 40], "life": 34, "detector": 34, "adapt": [34, 36], "pictur": [34, 42], "purpl": 34, "my": 34, "next": [34, 36, 39, 41, 43], "whole": 34, "bunch": 34, "three_d": 34, "reduc": 34, "gds_file": 34, "jkart": 34, "geometry_l": 34, "cell_l": 34, "port1_l": 34, "port2_l": 34, "port3_l": 34, "port4_l": 34, "source1_l": 34, "source2_l": 34, "source3_l": 34, "source4_l": 34, "lcen": 34, "diamet": 34, "t_oxid": 34, "t_si": 34, "t_air": 34, "78": 34, "cell_thick": 34, "min": 34, "cell_zmax": 34, "cell_zmin": 34, "si_zmax": 34, "si_zmin": 34, "numport": 34, "s_param": 34, "input_param": 34, "kernel": 34, "usabl": 34, "tab": 34, "href": 34, "viewoutput": 34, "gdsii_prism": 34, "zmax": 34, "zmin": 34, "gdsii_vol": 34, "fname": 34, "gdsii_prim": 34, "port1": 34, "port2": 34, "port3": 34, "port4": 34, "source1": 34, "source2": 34, "source3": 34, "source4": 34, "Not": 34, "oxide_cent": 34, "oxide_s": 34, "oxide_lay": 34, "eig_par": 34, "eig_match_freq": 34, "contructor": 34, "no_par": [34, 39], "odd_z": 34, "monitor": 34, "energi": 34, "modemonitor": 34, "add_mode_monitor": 34, "moderegion": 34, "No": 34, "correctli": [34, 43], "readi": [34, 43], "until_after_sourc": 34, "get_eigenmode_coeffici": 34, "nfreq": 34, "neg": [34, 39], "third": [34, 39], "spot": 34, "sour": 34, "5th": 34, "input_coeff": 34, "port1_coeff": 34, "port2_coeff": 34, "port3_coeff": 34, "port4_coeff": 34, "s11": 34, "6f": 34, "upper": [34, 39, 44], "s12": 34, "s13": 34, "s14": 34, "fun": 34, "transmitt": 34, "exercis": 34, "terribl": 34, "isn": [34, 42], "fortun": 34, "meant": 34, "port1_tran": 34, "port2_tran": 34, "port3_tran": 34, "port4_tran": 34, "percent": 34, "insertionloss": 34, "insertionloss_db": 34, "steadi": 34, "reset": 34, "visula": 34, "continuoussourc": [34, 44], "reach": 34, "eps_data": [34, 44], "get_epsilon": 34, "ez_data": 34, "real": 34, "get_efield_z": 34, "screen": 34, "dpi": 34, "imshow": [34, 44], "transpos": [34, 44], "interpol": [34, 44], "spline36": [34, 44], "cmap": [34, 39, 44], "flipud": 34, "axi": [34, 39, 41, 42, 44], "hopefulli": 34, "sens": 34, "sake": 34, "rest": [34, 42], "devi": 34, "ts": 34, "s1": 34, "ts2": 34, "ts3": 34, "ts4": 34, "input_pow": 34, "trans1": 34, "trans2": 34, "trans3": 34, "trans4": 34, "expect": [34, 44], "entri": 34, "breviti": 34, "paramt": 34, "mathwork": 34, "luceda": 34, "microwaves101": 34, "youtub": 34, "opinion": 36, "newcom": 36, "troubleshoot": 36, "disagre": 36, "primarili": 36, "nervou": 36, "navig": 36, "precompil": 36, "desig": 37, "boast": 37, "healthi": 37, "capabl": 37, "lighter": 37, "pylanc": 37, "tree": 37, "icon": 37, "ey": [37, 39], "candi": 37, "theme": 37, "doesn": [37, 39, 41], "menu": [37, 43], "pop": 37, "conduct": 38, "copper": 38, "47": [38, 39, 42], "44": [38, 39, 42], "confin": [39, 40], "newton": 39, "motion": [39, 41], "vibrat": 39, "violin": 39, "pipe": 39, "stationari": 39, "mpb": 39, "32m2024": 39, "01": [39, 44], "05": 39, "51": 39, "512": 39, "36mgplugin": 39, "36m": 39, "36m39": 39, "1mmeep": 39, "28": 39, "parkeraa": 39, "glass": 39, "find_modes_waveguid": 39, "core_w": 39, "core_t": 39, "m3": 39, "m4": 39, "elecgtr": 39, "wg1": 39, "linewidth": 39, "edgecolor": 39, "facecolor": 39, "wg4": 39, "ax1": 39, "ax2": 39, "islic": 39, "add_patch": 39, "tight_layout": 39, "0th": [39, 44], "1st": [39, 44], "spatial": 39, "sinusoid": 39, "non": [39, 40, 41], "slice": [39, 41], "discontinu": 39, "boundari": [39, 42], "perpindicular": 39, "discontin": 39, "contin": 39, "horizont": 39, "domin": 39, "transvers": [39, 41, 42], "wg2": 39, "wg3": 39, "plot_ez": 39, "slight": 39, "aris": 39, "mm": 39, "find_mode_dispers": 39, "mode_numb": 39, "ng": 39, "3f": 39, "106": 39, "892": 39, "ignor": [40, 44], "mass": 40, "induct": 40, "exhaust": 40, "400nm": 40, "950nm": 40, "220nm": 40, "rib": 40, "rectangular": 40, "resembl": 40, "ridg": 40, "difficult": 40, "veloc": 40, "somewhat": 40, "tediou": 40, "streamlin": 40, "wavelegnth": 40, "atom": 40, "gather": [40, 42], "n_g": 40, "dn_": 40, "lambda_0": 40, "minu": 40, "band": 40, "behav": 41, "vector": [41, 42], "pure": 41, "perpendicular": 41, "bit": 41, "tricki": 41, "dimension": 41, "arrow": 41, "bield": 41, "sun": 41, "unpolar": 41, "atmospher": 41, "sunlight": 41, "uniform": 41, "permit": 41, "unpredict": 41, "strike": 42, "snell": 42, "theta_i": 42, "theta_r": 42, "n_1sin": 42, "n_2sin": 42, "theta_t": 42, "gamma_": 42, "n_1co": 42, "n_2co": 42, "tau_": 42, "2n_1co": 42, "obliqu": 42, "observ": 42, "n1": 42, "n2": 42, "transmission_angl": 42, "arcsin": 42, "theta_i_deg": 42, "deg2rad": 42, "set_aspect": 42, "zip": 42, "p0": 42, "i1": 42, "rad2deg": 42, "0f": 42, "r1": 42, "t1": 42, "xlim": 42, "ylim": 42, "axvlin": 42, "axhlin": 42, "linestyl": 42, "xtick": 42, "ytick": 42, "tmp": 42, "ipykernel_19546": 42, "1351043342": 42, "runtimewarn": 42, "AND": 42, "simulate_reflect": 42, "radian": 42, "incident_angle_radian": 42, "reflected_angl": 42, "transmitted_angl": 42, "incident_wav": 42, "tan": 42, "reflected_wav": 42, "transmitted_wav": 42, "display_transmit": 42, "barrier": 42, "set_xlim": 42, "set_ylim": 42, "str": 42, "set_titl": 42, "var": 42, "folder": [42, 43], "9n": 42, "_g8r69x957zb59c09f92zznh0000gn": 42, "ipykernel_69883": 42, "921879874": 42, "runtim": 42, "sine": 42, "theta_c": 42, "critical_angl": 42, "crit_angl": 42, "51840906945382": 42, "air": 42, "progag": 42, "profit": 42, "understood": 42, "prompt": 43, "administr": 43, "restart": 43, "usernam": 43, "password": 43, "sh": 43, "git_and_github": 43, "wslpath": 43, "04": 43, "www": 43, "de": 43, "chapter": 43, "what_is_a_photonic_devic": 43, "arbitrari": 44, "focu": 44, "i_i": 44, "i_1": 44, "i_2": 44, "perfect": 44, "70": 44, "media": 44, "vice": 44, "versa": 44, "exact": 44, "perspect": 44, "inwg": 44, "outwg": 44, "mmi1x2_with_sbend": 44, "inwg_ref": 44, "splitter_ref": 44, "outwg_top_ref": 44, "outwg_bot_ref": 44, "make_geometry_from_gds_compon": 44, "core_mat": 44, "cladding_mat": 44, "component_point": 44, "to_np": 44, "1e3": 44, "pad_width": 44, "nx": 44, "ny": 44, "matgrid": 44, "materialgrid": 44, "do_averag": 44, "damp": 44, "dft": 44, "add_dft_field": 44, "get_arrai": 44, "e_data": 44, "choic": 44, "significantli": 44, "varianc": 44}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"camacholab": 0, "photon": [0, 27, 30], "bootcamp": 0, "tabl": 0, "content": 0, "front": 0, "matter": 0, "develop": 0, "environ": [0, 31], "passiv": [0, 25, 30], "devic": [0, 30, 34], "design": [0, 8, 9, 24, 26, 30, 44], "simul": [0, 8, 20, 21, 33, 34], "circuit": [0, 3, 27, 30, 34], "activ": [0, 30], "test": 0, "refer": [0, 3, 6, 22, 34], "adjoint": 1, "optim": [1, 24, 35], "advanc": 2, "compon": [2, 6, 21, 25], "cross": 2, "section": 2, "creat": 2, "us": [2, 3, 6, 21, 34], "componentspec": 2, "analyz": 3, "account": 3, "grate": [3, 14], "coupler": [3, 8, 10, 14], "curv": 3, "fit": 3, "extract": 3, "index": [3, 40], "refract": [3, 42], "compact": [4, 30], "model": [4, 21, 30, 32, 40], "element": 6, "polygon": 6, "port": [6, 34], "label": 6, "from": [6, 21], "translat": 6, "rotat": 6, "boolean": 6, "oper": 6, "parametr": 6, "cell": 6, "shape": [6, 35], "gener": 6, "ad": 6, "export": 6, "gd": [6, 11, 19], "file": 6, "import": [6, 34], "connect": [6, 37], "exercis": [6, 8, 18], "credit": 7, "sponsor": 7, "contributor": 7, "direct": 8, "supermod": 8, "visual": [8, 37], "coupl": [8, 33], "length": 8, "gap": 8, "between": 8, "waveguid": [8, 38, 39, 40, 42], "other": [8, 34], "split": [8, 44], "ratio": 8, "show": 8, "across": [8, 34], "dc": 8, "consider": [8, 41, 44], "sourc": [8, 14, 22, 34, 44], "rule": [9, 30], "check": [9, 21, 42], "edg": 10, "meep": [11, 19, 34], "find": [11, 34], "s": [11, 21, 34], "paramet": [11, 14, 34, 40], "through": [11, 42], "gmeep": 11, "git": 12, "github": 12, "glossari": 13, "how": [14, 27, 34], "doe": [14, 27], "work": [14, 27], "essenti": 14, "period": 14, "etch": 14, "depth": 14, "fill": 14, "factor": [14, 33], "introduct": 15, "klayout": 16, "klive": 16, "laboratori": 17, "tool": 17, "pyrolab": 17, "instal": 17, "autog": 17, "defin": [18, 30], "layer": [18, 30], "stack": [18, 30], "silicon": 18, "insul": 18, "gdsfactori": 18, "layermap": 18, "layerview": 18, "layerstack": 18, "multimod": 20, "interferomet": [20, 21], "mmi": 20, "self": 20, "imag": 20, "applic": [20, 27, 33], "mach": 21, "zehnder": 21, "The": [21, 30], "mzi": 21, "write": 21, "netlist": 21, "callabl": 21, "analysi": 21, "balanc": 21, "quick": [21, 42], "definit": 21, "imblanc": 21, "thermo": 21, "optic": [21, 23, 32], "effect": [21, 40], "open": 22, "softwar": [22, 36], "common": 22, "licens": 22, "mit": 22, "apach": 22, "2": [22, 34], "0": 22, "gplv3": 22, "agpl": 22, "i": 23, "o": 23, "invers": 24, "process": [26, 30], "kit": 26, "phase": [27, 28, 29], "shifter": [27, 28, 29], "what": [27, 30, 34, 38], "shift": 27, "A": 27, "simpl": 27, "heater": 28, "advantag": [28, 29], "thermal": 28, "disadvantag": [28, 29], "tune": 28, "effici": 28, "pn": 29, "pin": 29, "junction": 29, "ar": [30, 34], "compar": 30, "electron": 30, "vs": 30, "manufactur": 30, "geometri": [30, 34], "digit": 30, "python": 31, "conda": 31, "virtual": 31, "packag": 31, "manag": 31, "version": 31, "improv": 32, "rai": 32, "support": 32, "mode": [32, 39], "ring": 33, "reson": 33, "critic": [33, 42], "fsr": 33, "free": 33, "spectral": 33, "rang": 33, "qualiti": 33, "field": 33, "scatter": 34, "todo": 34, "why": 34, "demonstr": 34, "simphoni": 34, "quickli": 34, "an": 34, "arbitrari": 34, "step": 34, "1": 34, "run": 34, "singl": 34, "3": 34, "same": 34, "each": 34, "differ": 34, "frequenc": 34, "studio": 37, "code": 37, "configur": 37, "vscode": 37, "wsl": [37, 43], "window": [37, 43], "machin": 37, "wavegudi": 40, "spatial": 40, "dimens": 40, "group": 40, "polar": 41, "total": 42, "intern": 42, "reflect": 42, "kei": 42, "equat": 42, "demo": 42, "angl": 42, "propag": 42, "light": [42, 44], "onli": 43, "y": 44, "branch": 44, "combin": 44}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 56}}) \ No newline at end of file