diff --git a/_images/53579cfbce97dff92e8655f428a25885f458eb7131ed783ee0c90c708a3e218d.png b/_images/53579cfbce97dff92e8655f428a25885f458eb7131ed783ee0c90c708a3e218d.png new file mode 100644 index 0000000..bb1fd09 Binary files /dev/null and b/_images/53579cfbce97dff92e8655f428a25885f458eb7131ed783ee0c90c708a3e218d.png differ diff --git a/_images/5bd0fbe20a6b31b7cccb02b191c9e663f21cd22721364d0c126027609c24afcc.png b/_images/5bd0fbe20a6b31b7cccb02b191c9e663f21cd22721364d0c126027609c24afcc.png deleted file mode 100644 index 3b4cd42..0000000 Binary files a/_images/5bd0fbe20a6b31b7cccb02b191c9e663f21cd22721364d0c126027609c24afcc.png and /dev/null differ diff --git a/_images/62fa2a534bc712557bf1c70de7b7345c1a2db001d5ff2d61cfc69cd9dbccc0cf.png b/_images/62fa2a534bc712557bf1c70de7b7345c1a2db001d5ff2d61cfc69cd9dbccc0cf.png new file mode 100644 index 0000000..ff34b03 Binary files /dev/null and b/_images/62fa2a534bc712557bf1c70de7b7345c1a2db001d5ff2d61cfc69cd9dbccc0cf.png differ diff --git a/_images/ceef6e8f28233ab9522122a4f4571bbb52466070e4f18e6cfca9bcd2fb1f9c1a.png b/_images/ceef6e8f28233ab9522122a4f4571bbb52466070e4f18e6cfca9bcd2fb1f9c1a.png new file mode 100644 index 0000000..984532a Binary files /dev/null and b/_images/ceef6e8f28233ab9522122a4f4571bbb52466070e4f18e6cfca9bcd2fb1f9c1a.png differ diff --git a/_images/d1a7e1df664b1e3e5992fa8e01f6c15ac021cc6a21fcf72f064132afdadd001c.png b/_images/d1a7e1df664b1e3e5992fa8e01f6c15ac021cc6a21fcf72f064132afdadd001c.png new file mode 100644 index 0000000..d899e07 Binary files /dev/null and b/_images/d1a7e1df664b1e3e5992fa8e01f6c15ac021cc6a21fcf72f064132afdadd001c.png differ diff --git a/_images/efbbb472dff7ad7c42e717dba2e137bbf0c821309c1986cea80ced3ebea94445.png b/_images/efbbb472dff7ad7c42e717dba2e137bbf0c821309c1986cea80ced3ebea94445.png deleted file mode 100644 index 810e63c..0000000 Binary files a/_images/efbbb472dff7ad7c42e717dba2e137bbf0c821309c1986cea80ced3ebea94445.png and /dev/null differ diff --git a/_sources/pages/mzi_layout.ipynb b/_sources/pages/mzi_layout.ipynb index fc254aa..ec76b8f 100644 --- a/_sources/pages/mzi_layout.ipynb +++ b/_sources/pages/mzi_layout.ipynb @@ -25,10 +25,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "\u001b[32m2024-01-26 14:59:56.805\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.technology.layer_views\u001b[0m:\u001b[36m__init__\u001b[0m:\u001b[36m790\u001b[0m - \u001b[1mImporting LayerViews from YAML file: '/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/ubcpdk/layers.yaml'.\u001b[0m\n", - "\u001b[32m2024-01-26 14:59:57.403\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mubcpdk\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m30\u001b[0m - \u001b[1mFound UBCpdk '2.3.4' installed at PosixPath('/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/ubcpdk')\u001b[0m\n", - "\u001b[32m2024-01-26 14:59:57.478\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.technology.layer_views\u001b[0m:\u001b[36m__init__\u001b[0m:\u001b[36m790\u001b[0m - \u001b[1mImporting LayerViews from YAML file: '/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/gdsfactory/generic_tech/layer_views.yaml'.\u001b[0m\n", - "\u001b[32m2024-01-26 14:59:57.482\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mactivate\u001b[0m:\u001b[36m307\u001b[0m - \u001b[1m'ubcpdk' PDK is now active\u001b[0m\n" + "\u001b[32m2024-01-29 08:27:51.562\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.technology.layer_views\u001b[0m:\u001b[36m__init__\u001b[0m:\u001b[36m790\u001b[0m - \u001b[1mImporting LayerViews from YAML file: '/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/ubcpdk/layers.yaml'.\u001b[0m\n", + "\u001b[32m2024-01-29 08:27:52.715\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mubcpdk\u001b[0m:\u001b[36m\u001b[0m:\u001b[36m30\u001b[0m - \u001b[1mFound UBCpdk '2.3.4' installed at PosixPath('/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/ubcpdk')\u001b[0m\n", + "\u001b[32m2024-01-29 08:27:52.806\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.technology.layer_views\u001b[0m:\u001b[36m__init__\u001b[0m:\u001b[36m790\u001b[0m - \u001b[1mImporting LayerViews from YAML file: '/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/gdsfactory/generic_tech/layer_views.yaml'.\u001b[0m\n", + "\u001b[32m2024-01-29 08:27:52.813\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mactivate\u001b[0m:\u001b[36m307\u001b[0m - \u001b[1m'ubcpdk' PDK is now active\u001b[0m\n" ] } ], @@ -139,7 +139,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzAAAAJoCAYAAAC5ogQ1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAAxOAAAMTgF/d4wjAAA0eElEQVR4nO3dXXbbRtMu0NK7Mo0zF2YgucpE+A3EVxlIPJcMxOcipgNBAPHXRRBde6/1LNmybKjElswC0MWPHz9+/AgAAIAL+N/ZnwAAAMBaGhgAAOAyNDAAAMBlaGAAAIDL0MAAAACXoYEBAAAuQwMDAABcxm9LH/Dx8fGKzwMAACCWXqbSFRgAAOAyNDAAAMBldNHA3O/3sz+FU6i7FnXXou5aqtYdUbd2ddei7rY+fizcZGYPDAAA8Cr2wAAAAN3QwAAAAJehgQEAAC5DAwMAAFyGBgYAALiMLhoYo+lqUXct6q5F3fVUrV3dtai7LWOUAQCAt2GMMgAA0I3fzv4EAHgDt/vZn8E23+9nfwYAnEQDA1DFsyalVUNwu0//W3PvP3KcKRobgO5pYAB6NX6S39OT+7laphqbnuoGoI9N/Pf7veR0B3XXou5adtc9fAK/8Yn7j2/fth9v5Pe//oq///hj9fv3+Pjzz/UffJEmruo6j6hbu7prUfc2S5v448eCiBARkXfO7f5fFj72x7dvs3n8+ZG3t9tt0/v3vF2qYdXX6uzHTEREZrPYn2hgREQumhVPxjOalGdvb7fbpve3fru6odnQ9ImIyGuzpItbyABKedwWNXM71PhWsI8//4wf376tfntE5i1kW+sY1zN769nC1xOA11q6hUwDA3AVT55ob21antm0x2Tqc0yaQvbs8z7czGhiAN6GBgagBzNPsMdPytc0K4calDWf5yvGKI/M1bnUzGhkAN5PiQbGZIda1F1L+boXGpc1TcuuhuWkF7a83//NFzsaii3N3dmNTNV1HlG3dnXXou5tSjQwAF2auGrx7En50GLTstSgvNsViIOf79pm5tPXzdUYgFNoYACu5slVl023Q43/vaHenpRveL2XpSbw7KsxANVpYACu5MlVl03TtS7yAo5pVryg56ava/IeHgD+o4EBuIqJM/3PnmQ/bVw82f7Pk2Zmbnrb8Pdf/h1fW4BUGhiAd/ekcYmY3rOx5t9gZGUjs/j1djUGINVSA7P4UpfxBq/GuZT7/X7656Budatb3bsz8Wrww1eSf/rK8p29mvxLHu/H12zF1334dukxe/u63zRVa1d3rah7W5a4AgNwptHZ/KkrAcPff/p7Ea4EHDFzRebZiOovf9/XH6A5t5ABvKuVzYsnzsn27j3SRAKkKHELmYjI5TK6BWnqtqUvty51drvY22XmlrKpt0t/T0RE9sctZADvZnTmftWVF2f7X2NmjLUrMQCvs3QF5n8v+jwAiPjvCfLEk13Nyxv4fv/36z3YH7O4F8bjAvBabiETEXlhBrcbjaeLzd42dvbnXDETt+st3k7msRIRaZIlm67A3O/3zX+W/f5ejuHYfR7Dsfs8xu5jz2y+n7ryMvfxl6z7Isf49P7H1/3nlZj7/T55JWb8QpjDj2/xObX8t97ma+vY3RzDsfs8xrsee8geGIBXGDUj4ylXj1/PfTwn+dmQjPcrzY649rgBHGYPDMCb0bxcyOhxeDxOk3thHh9/u399PwDNaGAAsk00JJO3Hz0+lvcyakqmmpjJxxKAFBoYgBeammZlHO8FbGliXIUBSKWBAcg0uPoytQHcSN4LmWlMZm8n08QApOiigVk7saA36q5F3Rc0cevY0+lVg4+9dN0HXKLun43J8Aral8d1YyN6ibqTVK1d3bWouzGvAyMikpQnryPiNUQuHI+riEhqmr4ODAD7zF55iTB17IpGt4fZ0A/wOhoYgAxP9r5EeN2QS9s6WhmApjQwAC/w9AoM1zOxoX92L4zN/ABNaWAAXmDyRStdfenGZPMCQIouGhiTHWpRdy2XrHvh9rE1Lll3A5eqe+Lqyt6Rypequ7Gqtau7FnU3ZgqZiEjjDCZPDSdTmVDVYUaP9dRbj7WIyLaYQgbwShO3ha153Reuz21kAK+hgQFIsvf2MS5k7W1kNvMDNKOBAUikianHlRiAXBoYgERuH6tF8wKQr4sGxmSHWtRdy6XqnmhM9l55uVTdDV2y7i3TyGZcsu5Gqtau7lrU3ZgpZCIijWL6WN3MTCMziUxEZHtMIQM4iduI6hpegfm1BmzkB2hCAwOQZPI2IvtfujdsXAxuAGhPAwOQxBWYQiaurnj8AXJoYABaaLiBnz54/AFydNHAmOxQi7pruXLdR87AX7nuI3qqe8vj31PdW1WtXd21qLsxU8hERBpkzRSq0cdJZ1kzhc7jLyKyGFPIAE5gAz+TV2BMIgM4TAMDkMAGbiZHKQNwmAYGIIEN3ERYBwAZNDAACVyBKern7WGPpsU6AGhPAwOQwJn3gib2N1kHAO110cAYTVeLumu5at1Hz7xfte6jeqt77Trore4tqtau7lrU3ZgxyiIiDWKErlgHIiJNYowywAnsfSDCOgDIoIEBSGDvAxHWAUAGDQxAAmfeibAOADJoYACOut2/TKBy5p0I6wAgQxcNjMkOtai7lqvWbQrZPr3VbQrZsqq1q7sWdTdmCpmIyMGMpkqZPlU4ppCJiByOKWQAJ7D3gQjrACCDBgYggb0PRFgHABk0MAAJnHknwjoAyKCBAUjgzDsR1gFAhi4aGJMdalF3LVet2xSyfXqr2xSyZVVrV3ct6m7MFDIRkYMxhUwmHmPrQERkX5Z8/GxSZn18fDz7YwBu98+/je+ffv89boPffP5YOjNYC9YBwD4L7Un89qLPA6Bvgyekf/+8Zehx+9CvPRCjRodO/VwL1gFAji72wAC8G9OniLAOADJoYAASmD5FhHUAkKGLBsZkh1rUXctV6zaFbJ/e6jaFbFnV2tVdi7obM4VMRORgTCGTicfYOhAR2ZclXVyBAXg39j4QYR0AZNDAACSw94EI6wAggwYGIIEz70RYBwAZNDAACZx5J8I6AMjQRQNjskMt6q7lqnWbQrZPb3WbQrasau3qrkXdjZlCJiJyMKaQycRjbB2IiOyLKWQAJ7D3gQjrACCDBgYggb0PRFgHABk0MAAJnHknwjoAyKCBAUjgzDsR1gFABg0MQAJn3omwDgAybGpgno1Cm/uz7Pf3cgzH7vMYjt3nMdYce3zmvUrdVz5GxrGProMjx36nYzh2n8dw7D6P8a7H/sQYZRGRg5kYo/x4a3xusYzGKFsHIiLbY4wywAnsfSDCOgDIoIEBSGDvAxHWAUAGDQxAAmfeibAOADJoYAASOPNOhHUAkKGLBmb1xILOqLsWdV/L0TPvV637qN7qXrsOeqt7i6q1q7sWdTdmCpmIyMGYQiYTj7F1ICKyL6aQAZzA3gcirAOADBoYgAT2PhBhHQBk0MAAJHDmnQjrACCDBgYggTPvRFgHABm6aGBMdqhF3bVctW5TyPbprW5TyJZVrV3dtai7MVPIREQOxhQymXiMrQMRkX0xhQzgBPY+EGEdAGTQwAAksPeBCOsAIIMGBiCBM+9EWAcAGTQwAAmceSfCOgDI0EUDY7JDLequ5ap1m0K2T291m0K2rGrt6q5F3Y2ZQiYicjCmkMnEY2wdiIjsiylkACew94EI6wAggwYGIIG9D0RYBwAZNDAACZx5J8I6AMiggQFI4Mw7EdYBQAYNDEACZ96JsA4AMnTRwBhNV4u6a7lq3UfPvF+17qN6q3vtOuit7i2q1q7uWtTdmDHKIiIHMzFGeThCd+7jpMOMxihbByIi22OMMsAJ7H0gwjoAyKCBAUhg7wMR1gFABg0MQAJn3omwDgAyaGAAEjjzToR1AJChiwbGZIda1F3LVes2hWyf3uo2hWxZ1drVXYu6GzOFTETkYEwhk4nH2DoQEdkXU8gATmDvAxHWAUAGDQxAAnsfiLAOADJoYAASOPNOhHUAkEEDA5DAmXcirAOADF00MCY71KLuWq5atylk+/RWtylky6rWru5a1N2YKWQiIgdjCplMPMbWgYjIvphCBnACex+IsA4AMmhgABLY+0CEdQCQQQMDkMCZdyKsA4AMGhiABM68E2EdAGToooEx2aEWdddy1bpNIdunt7pNIVtWtXZ116LuxkwhExE5GFPIZOIxtg5ERPbFFDKAE9j7QIR1AJBBAwOQwN4HIqwDgAwaGIAEzrwTYR0AZNDAACRw5p0I6wAgQxcNjMkOtai7lqvWbQrZPr3VbQrZsqq1q7sWdTdmCpmIyMGYQiYTj7F1ICKyL6aQAZzA3gcirAOADBoYgAT2PhBhHQBk0MAAJHDmnQjrACCDBgYggTPvRFgHABk0MAAJnHknwjoAyNBFA2M0XS3qruWqdR89837Vuo/qre6166C3ureoWru6a1F3Y8Yoi4gczMQY5cdb43OLZTRG2ToQEdkeY5QBTmDvAxHWAUAGDQxAAnsfiLAOADJoYAASOPNOhHUAkEEDA5DAmXcirAOADJsamGeTBOb+LPv9vRzDsfs8hmP3eYw1xx6fea9S95WPkXHso+vgyLHf6RiO3ecxHLvPY7zrsT8xhUxE5GBMIZOJx9g6EBHZF1PIAE5g7wMR1gFABg0MQAJ7H4iwDgAyaGAAEjjzToR1AJBBAwOQwJl3IqwDgAxdNDCrJxZ0Rt21qPtajp55v2rdR/VW99p10FvdW1StXd21qLsxU8hERA7GFDKZeIytAxGRfTGFDOAE9j4QYR0AZNDAACSw94EI6wAggwYGIIEz70RYBwAZNDAACZx5J8I6AMjQRQNjskMt6q7lqnWbQrZPb3WbQrasau3qrkXdjZlCJiJyMKaQycRjbB2IiOyLKWQAJ7D3gQjrACCDBgYggb0PRFgHABk0MAAJnHknwjoAyKCBAUjgzDsR1gFAhi4aGJMdalF3LVet2xSyfXqr2xSyZVVrV3ct6m7MFDIRkYMxhUwmHmPrQERkX0whAziBvQ9EWAcAGTQwAAnsfSDCOgDIoIEBSODMOxHWAUAGDQxAAmfeibAOADJoYAASOPNOhHUAkKGLBsZoulrUXctV6z565v2qdR/VW91r10FvdW9RtXZ116LuxoxRFhE5mIkxysMRunMfJx1mNEbZOhAR2R5jlAFOYO8DEdYBQAYNDEACex+IsA4AMmhgABI4806EdQCQQQMDkMCZdyKsA4AMXTQwJjvUou5arlq3KWT79Fa3KWTLqtau7lrU3ZgpZCIiB2MKmUw8xtaBiMi+mEIGcAJ7H4iwDgAyaGAAEtj7QIR1AJBBAwOQwJl3IqwDgAwaGIAEzrwTYR0AZOiigTHZoRZ113LVuk0h26e3uk0hW1a1dnXXou7GTCETETkYU8hk4jG2DkRE9sUUMoAT2PtAhHUAkEEDA5DA3gcirAOADBoYgATOvBNhHQBk0MAAJHDmnQjrACBDFw2MyQ61qLuWq9ZtCtk+vdVtCtmyqrWruxZ1N2YKmYjIwZhCJhOPsXUgIrIvSz5+NimzPj4+nv0xALf759/G90+//x63wW8+fyydGawF6wBgn4X2JH570ecB0LfBE9K/f94y9Lh96NceiFGjQ6d+rgXrACBHF3tgAN6N6VNEWAcAGTQwAAlMnyLCOgDI0EUDY7JDLequ5ap1m0K2T291m0K2rGrt6q5F3Y2ZQiYicjCmkMnEY2wdiIjsy5IursAAvIsfo43b1GYdALSngQFo7MvUKcqyDgDa08AANPZ40urMO9YBQHsaGIDGXIHhwToAaE8DA9CYKzA8WAcA7XXRwBhNV4u6a7li3cMnrXvPvl+x7hZ6q3vtFZje6t6iau3qrkXdjRmjLCJyMGtG544+TjrNaC2M14R1ICKyHGOUAV5s8rah2z3i+/2MT4cTTV6B+X7/dz0AsIsGBqAxG7d5sAcGoD0NDEBjnrTyMGxmrQmANjQwAI25AkNEfGpcrAeAdjY1MM8mCcz9Wfb7ezmGY/d5DMfu8xhLU1WmrsDM/ZVe6u7hGM2Ofbt/ev9wPbxj3a84hmP3eQzH7vMY73rsT0whExE5mDVTyEyeqhPrQUTkUEwhA3gxe2AYsh4A2tLAABxxu38Zj2zPA0PWA0BbGhiARh5n2Z1xZ8h6AGhLAwPQkCerjHkxS4C2umhgVk8s6Iy6a1H3NQyfrP560jpxm9mSq9XdSo91P5raZ81tj3WvVbV2ddei7sZMIRMROZDRxKnHWxOnCmf0eFsXIiLbYgoZQBYb+JkycXuYdQHQjgYGoAEb+HnGugBoRwMD0MjwSaqz7QzZyA/QjgYGoJHJJ6k7NvDTp6WN/ACs00UDY7JDLequ5W3rnmhMWj45fdu6k3VT9+DqynAqnSlkX1WtXd21qLsxU8hERHZkZvrY8O3446RYRmtkcn2MPk5EREwhA3iJ4e1B9r8wZc3rwQCwTAMDsNXg9rGn08fsf+EnzQtAOxoYgIM8KWXS2teDMY0MYBMNDMAWCy9e6fYx5jzWhisxAMdoYAB2cvsYewzXy6914yoMwGpdNDBG09Wi7lrequ6F0cktr768Vd0v1F3dK28j667uDarWru5a1N2YMcoiIitjdLLsjZHKIiKrY4wyQAtP9r7Yy8Aek+vHrWQAizQwAEsmbgGKmLl9zN4XFgwHPmiCAbbTwACs8eR1X0weY9GTvTBfmhdXYQCe0sAAPLOwcX/pY+GTn43JeKTy49dTHwvAZ100MCY71KLuWk6te9SQDM+Yf3ndl8bNi8e7QxONcMS/6+r//vnn168/fWyBJqbrx/wJddei7sZMIRMRmchoGtTTqWMTHy8ym7XT7EYfKyJSJaaQAWw1s2l/ds+CW8fYabyR31QygGUaGIChx5PFiYZkduoYbDFqSjQxANtoYAAeJpqXVVPHXH1hq4WpZLNNjEYGID5+7nOZ/4CPj1d9LgDnGTUvwyePs82LW8c4YuHFUccDI379nQjrDujaQnvSxxUYkx1qUXctL6n78URy7W1jj7+TyONdwOCqyrDuxSsxEV1diSn1mA+ouxZ1t+UKDFDbzFnwCFdeeJGJcd0RX19v6Muti9Yh0KkSV2AANnvsJxg9cZx78ghpJjb1R8Sn28cm16N9MUBRrsAAtczsIVi952Xi70ITC1ding6ScDUG6MjSFRgvZCkiNXK7/5fRn029mOCXFxR8/Btn1yF95+j6tEZFpIMscQUG6Nf41pqJs9sRK85wu/LCK224EvN4/5e//2DNAhdU4grM/X4//XNQt7rV/SZ1D6+0zJyNfpzBXnVm+6Sz2h7vWvlS98S627Rux//OG1+Z8ZjXirprZW/drsAA/XtypWVo7kz25OttPP5dZ7A5y5MXVo3YcEVm/O89WNvAm1q6AqOBAa5jbtrSwhOxXU/6NC+8g4WhE3PN+OPPVv3bY9Y9cDINDHCuliNeVz6xGo+b3fQkz34X3tHC1ZiI+eb88WebjtOK7yNgBw0McK4XXcnY0rQ8/vzL5xnhCRfv68kaXXNFZmh1Q3OEq5jAThoY4FyNn8Q8e3HJZ3tbnt5Wo3nhSla8llHE+mZm+PHNP0/fU8AOJRqY+/0e9/v97E/j5dS900Vftfp+/zfv4se3/7fq437/86/4+48/mh9/TbMy/vgv3rhx8f1dy666V1yReVj6fllqbvb4/a+/4u9v6773P/78p+mxryDlZ/ob/iwb8z1ey966S4xRFtmUNx4n+k4Zjmydy/jjHr8fvr3dbpPvz3g7/lyergHrQHrIijHJc9+32W9vt9vm79tnP2tkxVo4+3MQaZTF/kQDI+Xih/yXPGtO1r6d+3trn8TsPd7mpsXjL71m5Rpfc1Kixdupkxd7j6epWfn4n/05iDTKki5uIYNN3Je9+faSpY975ve/2t9CtmuiUvHHnEJ2rPul7+M9lr739/68OTRlrWf+b6MjJfbAwCaFf8hveXKw5Z74p08eXv311rTAf8588con3/tbGybNzAqF/2+jP0sNzG8v+jyAk2w9ozl8+9ZPBLwIHywbfz+8yffN2p8tcz+Xnr0d/8wD+uMKDPUUOEu197avlP/s1369t06H6/wxhJfZM5lx7fd0wvfp1M+vt3jdm7MV+L+NOpauwHSxif9+v5/+Oaj7QnVfdKPjmrrnNsaeugl2uLH4WbIe74tG3bVyuboPfl+3rH3tYIB32/zf/DG/yP9tl1vr6j6lbpv4Yayzs1RrN+QP//ylOvt6Ayud8L3/9j8PM/lZS0fsgYFOrb1N7O33sgA0MvxZN9wPs7T3z89IuBYNDFyIpgVgnalmZmnjv5+bcA0aGHhzW5qWx8cA8J/Hz8W1V2TGfw94LxoYeENrp+xoWgDWG1+VebydexHNbvfLwMX97+xPoIX7/X72p3AKdffj8R/l3H+Yc03LIz3r8fFeQ921VK074rzahz8/5650D839nN6r6mOu7lqy6jaFjHpOntTy7DVY1tzWcLmGxWQcqOmC3/tbp5iNnfrz+YJfb5hjChk00uKM28OaZsVtYgCvNbVX5vF2y8/tVp8HMK2LW8gg29xtXXvfrvnPb3iLmP/MAF5n6mfvUjPz+Htr3g6PM/W25Qkz6JFbyCjndrvF33/8senvbLm9a+2ZuqljdMltDVBTx9/7awat7H271+9//RXfv38/UBW8j6VbyDQwlHK73SIi4u8//tj9n0qL/3S6bVamdPwkBnii2Pf+nuaj1f8/H3/+GbfbTQNDN5YamPixICJ+5X6/f/r9mj/Lfn8vx3Ds/GPcbrdPb398+/bjfr//+PHt26/fP94+Mn7/s48/u763Pfbt/tJjl/raFjp27/V1+bUdfO9X/drOvb/l/z+P999ut1//v51dn2Nf+xjvcOwlrsBQiiswJyh2Fhb4qdj3visw0I5byGDEHpgXK/YkBvip4+99e2AgV9NbyES6yOiWpjV5dlm/1dtxTv86nfj1FpEO0sn3/tzP5xY/75/9edWvt0iEW8jgq51nBY+cGRsrdYWm47OwwBMX/t7fc4WlpV0/7y/89YaxpSswXsgSVmrVQPz49m3Xi6Q9PvayjQzAmxs3Imtet2t8GzGQr4sXsrzf72d/CqdQ9zWNX6By/MJlc03Nw7CZqeDqj/de6q6lat0R59f++Jk6Pkm0plk58oLDZ9d9FnXXklW3W8io5wKX2dfcvjD+s7d1ga83kODNv/enBrDM/f7xvrf25l9v2MItZHBB4ysuj7dLt5eN/y4A/1k7Et8tu/DeNDDw5vY2M/7jBfjX8OeipgWuTwMDF7K1mZn6ewAVbNmQ72ckXIsGBi5quPlfMwOwfYqYn4dwTaaQXZi6a5mre2qa2dR/2g/jiTsvcbsvZ4bHuxZ1X8SB7+mxo7UvTRGbalr2TA1r7XKPeSPqrsUUMmilwKSWrVPMhh/T3Jqv94YnO790/hjCy2R9/yX9rN3yIpPDP+9egf/bqMMUMiho616ZqWlm438n1Z7/dOeedPkPHOZd7Pvm2ZViG/KhLg0MdG5vM/PsSs2zY7zM1BOu8a0rb/qkDF5m3LC88HviFt/j+8yfbb2Fdc3PKU0L1OEWMupxmX31Rte5F3fb0uT8/tdf8fcffzT9/Fc/QdHMUNVj7W9Y9633xS197+/9eXPJF5l8Bf+30ZGlW8jix4KIEOkrt/v5n8Ob5ce3b1/yeP/at3N/73a77fr31h5vfOynj/sjb/A1F2melWt87vun9ffp7Xb78v69x9v8/V4xfrZJR1nsTzQwUi5+yK/Ksyc54ycfz56MTD2JyXq7uZl5g6+zyKGsaFoym5Rnb9eevFj7s0ZWrIWzPweRRlnSxS1k9/u95Hg6de+0Z+LOG7jf/827+PHt/636uN//bH8LWcS220seH//FjttsXsX3dy276n6yfsffAy33vK31+19/xd/f1n3vf/z5T9NjX0HKz/Q3/Fk25nu8lr11L91C1kUDA7yxxvdlP3uStfte+TduZOCLmfW6tmmZ03wfiT0ZwE4aGOBcL3oSs/XJ25cna5oY3t2KKy6Hrki2poEBdtLAAOdqecveyidDW5oZjQyXMLEul9b5+M82HacV30fADhoYoB87X4RvfOVl9RUZT74428LtYpua87l/e8y6B06mgQH6t/LF+pae9GlieDujNbirGR/+W0PWNvCmlhqYLsYo3+/30z8Hdatb3W9S93Cs7MxY0WcjZb+MbD1p5LLHu1a+1D2x7jat2/G/88Yjdj3mtaLuWtlbd4kxygCTnpxxXjqT/ekstn0xvNLMVZfNAykirFngktxCBhDx9Endpg3+nhCSaWKNbR5AEWGdApemgQEYWvEaGq7EcIoNV15MzwN6poEBmLIwlvbpbTquxNDayuZF4wJUsNTA/O9FnwfAe3k84RvcdvPx55+/niBOPlmEDAvNy+N9s7c0al6AYrpoYO73+9mfwinUXYu6Ezye/I02+081MZ9eGPDxd1q/6N+Ax7uIn2voUffUlZfH7z/9nY6uApZ7zH9Sdy3qbsstZAARX27FWb0nppMnkZxg5YZ9+7CAauyBAVjryb4YTQzNDdbOqj0vmhegCHtgANaa2RcT8eR2stHHwyoTje9i82K/C0BEaGAAPptoYh4mmxhPKNlqYtP+quYFgH/9WBARIiL1crt/+v2Pb98m3859vMhsBmvFuhIR+ZolXVyBMdmhFnXXclrdo+lkU2fIv9xK1pDHu1MzG/f/759/yt6a2P1jPkPdtai7LZv4AZ55crvPw6/bfdzqwzMzk+4mB0TYsA8UZhM/wBETrxMz+yKXEx8Ln6xpXkYfC8BnGhiANX42JqumksHYwtSxpY8F4D8aGIAlE088I2aaGFdhWPBYK7NTxwB4SgMDsMZEY+LJJ0cYmQywTxcNjMkOtai7lnet++k0sgZXYd617mxd1j1oSqb2vkT8rLto89LlY76CumtRd1umkAFssfBk1EQyPjHFDmAzU8gAkkzthfnFXhhmDNeL5gVgOw0MwBZP9sJEmEjGvPEVO3unAPbRwAAc5Mkok56MTl76OADmaWAAthpchXEbGWsYmQzQjgYGoIGnU8kgNDEArXTRwBhNV4u6a7lC3RnNyxXqztBz3c9uH+u57iVVa1d3Lepu7MeCiBARkanc7r9+/ePbtx8/vn379eupj5FCmVgb1oeIyLos6eIKDMA7yHpRS/rg9jGANjQwAI0Mn5zaB8OQ6WMA7WhgABp4Oo2M8qwLgHY0MAB7LbyoJUWtff0XAHbpooEx2aEWdddytbpbnWm/Wt2t9Fb32tHJvdW9RdXa1V2LuhszhUxE5EBG06Yeb4dTp8YfJ51nzXQ6a0JEZDamkAG8kL0OjNnAD9CWBgagERv5mWI9ALSlgQE4wkZ+FlgPAG1pYAAac8adIesBoK1NDcyzSQJzf5b9/l6O4dh9HsOx+zzG0lSVqTPuc3+ll7p7OEaTY/+8Gjd8/3A9vGPdrziGY/d5DMfu8xjveuxPTCETETmYNVOnTJyqkdHjbD2IiGyPKWQAL2bPAxHxaw1YDwBtaWAAGrPngYdh82JNALShgQFozBl3HjSzAO1pYAAam3zS+v3+Zdwy/fMilgDtddHArJ5Y0Bl116Lu62hxBeaKdbfQW91rr8D0VvcWVWtXdy3qbswUMhGRg3kyhczkqWIZrQXrQERke0whA3ixxxUYex+wDgDa08AANPZ40mojP9YBQHsaGIDGXIHhwToAaE8DA9CYKzA8WAcA7WlgABp6nG135p0I6wAgQxcNjNF0tai7lqvWffTM+1XrPqq3uteug97q3qJq7equRd2NGaMsInIwo7G441HKcx8nHebJSG3rQERkXYxRBjiBvQ9EWAcAGTQwAAnsfSDCOgDI8PHzNrH5D/j4eNXnAnBNt/vn38b3T7//HrfBbz5/LJ0ZrAXrAGCfhfYkfnvR5wHQt8ET0r9/3jL05fVgRo0Onfq5FqwDgBxd3EJmskMt6q7lqnWbQrZPb3WbQrasau3qrkXdjZlCJiJyMKaQycRjbB2IiOyLKWQAJzB9igjrACCDBgYggelTRFgHABk0MAAJnHknwjoAyKCBAUjgzDsR1gFAhi4aGJMdalF3LVet2xSyfXqr2xSyZVVrV3ct6m7MFDIRkYMxhUwmHmPrQERkX0whAziBvQ9EWAcAGTQwAAnsfSDCOgDIoIEBSODMOxHWAUAGDQxAAmfeibAOADJ00cCY7FCLumu5at2mkO3TW92mkC2rWru6a1F3Y6aQiYgcjClkMvEYWwciIvtiChnACex9IMI6AMiggQFIYO8DEdYBQAYNDEACZ96JsA4AMmhgABI4806EdQCQoYsGxmSHWtRdy1XrNoVsn97qNoVsWdXa1V2LuhszhUxE5GBMIZOJx9g6EBHZF1PIAE5g7wMR1gFABg0MQAJ7H4iwDgAyaGAAEjjzToR1AJBBAwOQwJl3IqwDgAwaGIAEzrwTYR0AZOiigTGarhZ113LVuo+eeb9q3Uf1VvfaddBb3VtUrV3dtai7MWOURUQOZmKM8uOt8bnFMhqjbB2IiGyPMcoAJ7D3gQjrACCDBgYggb0PRFgHABk0MAAJnHknwjoAyKCBAUjgzDsR1gFAhi4aGJMdalF3LVet2xSyfXqr2xSyZVVrV3ct6m7MFDIRkYMxhUwmHmPrQERkX0whAziBvQ9EWAcAGTQwAAnsfSDCOgDIoIEBSODMOxHWAUAGDQxAAmfeibAOADJ00cCY7FCLumu5at2mkO3TW92mkC2rWru6a1F3Y6aQiYgcjClkMvEYWwciIvtiChnACex9IMI6AMiggQFIYO8DEdYBQAYNDEACZ96JsA4AMmhgABI4806EdQCQYVMD82ySwNyfZb+/l2M4dp/HcOw+j7Hm2OMz71XqvvIxMo59dB0cOfY7HcOx+zyGY/d5jHc99iemkImIHIwpZDLxGFsHIiL7YgoZwAnsfSDCOgDIoIEBSGDvAxHWAUAGDQxAAmfeibAOADJoYAASOPNOhHUAkKGLBmb1xILOqLsWdV/L0TPvV637qN7qXrsOeqt7i6q1q7sWdTdmCpmIyMGYQiYTj7F1ICKyL6aQAZzA3gcirAOADBoYgAT2PhBhHQBk0MAAJHDmnQjrACCDBgYggTPvRFgHABk0MAAJnHknwjoAyNBFA2M0XS3qruWqdR89837Vuo/qre6166C3ureoWru6a1F3Y8Yoi4gczMQY5eEI3bmPkw4zGqNsHYiIbI8xygAnsPeBCOsAIIMGBiCBvQ9EWAcAGTQwAAmceSfCOgDIoIEBSODMOxHWAUCGLhoYkx1qUXctV63bFLJ9eqvbFLJlVWtXdy3qbswUMhGRgzGFTCYeY+tARGRfTCEDOIG9D0RYBwAZNDAACex9IMI6AMiggQFI4Mw7EdYBQAYNDEACZ96JsA4AMnTRwJjsUIu6a7lq3aaQ7dNb3aaQLatau7prUXdjppCJiByMKWQy8RhbByIi+2IKGcAJ7H0gwjoAyKCBAUhg7wMR1gFABg0MQAJn3omwDgAyaGAAEjjzToR1AJChiwbGZIda1F3LVes2hWyf3uo2hWxZ1drVXYu6GzOFTETkYEwhk4nH2DoQEdkXU8gATmDvAxHWAUAGDQxAAnsfiLAOADJoYAASOPNOhHUAkEEDA5DAmXcirAOADF00MCY71KLuWq5atylk+/RWtylky6rWru5a1N2YKWQiIgdjCplMPMbWgYjIvphCBnACex+IsA4AMmhgABLY+0CEdQCQQQMDkMCZdyKsA4AMGhiABM68E2EdAGTQwAAkcOadCOsAIEMXDYzRdLWou5ar1n30zPtV6z6qt7rXroPe6t6iau3qrkXdjRmjLCJyMBNjlB9vjc8tltEYZetARGR7jFEGOIG9D0RYBwAZNDAACex9IMI6AMiggQFI4Mw7EdYBQAYNDEACZ96JsA4AMnTRwJjsUIu6a7lq3aaQ7dNb3aaQLatau7prUXdjppCJiByMKWQy8RhbByIi+2IKGcAJ7H0gwjoAyKCBAUhg7wMR1gFABg0MQAJn3omwDgAyaGAAEjjzToR1AJChiwbGZIda1F3LVes2hWyf3uo2hWxZ1drVXYu6GzOFTETkYEwhk4nH2DoQEdkXU8gATmDvAxHWAUAGDQxAAnsfiLAOADJoYAASOPNOhHUAkEEDA5DAmXcirAOADJsamGeTBOb+LPv9vRzDsfs8hmP3eYw1xx6fea9S95WPkXHso+vgyLHf6RiO3ecxHLvPY7zrsT8xhUxE5GBMIZOJx9g6EBHZF1PIAE5g7wMR1gFABg0MQAJ7H4iwDgAyaGAAEjjzToR1AJBBAwOQwJl3IqwDgAwaGIAEzrwTYR0AZOiigVk9cq0z6q5F3ddy9Mz7Ves+qre6166D3ureomrt6q5F3Y0ZoywicjATY5SHI3TnPk46zGiMsnUgIrI9xigDnMDeByKsA4AMGhiABPY+EGEdAGTQwAAkcOadCOsAIIMGBiCBM+9EWAcAGbpoYEx2qEXdtVy1blPI9umtblPIllWtXd21qLsxU8hERA7GFDKZeIytAxGRfTGFDOAE9j4QYR0AZNDAACSw94EI6wAggwYGIIEz70RYBwAZNDAACZx5J8I6AMjQRQNjskMt6q7lqnWbQrZPb3WbQrasau3qrkXdjZlCJiJyMKaQycRjbB2IiOyLKWQAJ7D3gQjrACCDBgYggb0PRFgHABk0MAAJnHknwjoAyKCBAUjgzDsR1gFAhi4aGJMdalF3LVet2xSyfXqr2xSyZVVrV3ct6m7MFDIRkYMxhUwmHmPrQERkX0whAziBvQ9EWAcAGTQwAAnsfSDCOgDIoIEBSODMOxHWAUAGDQxAAmfeibAOADJ00cCY7FCLumu5at2mkO3TW92mkC2rWru6a1F3Y6aQiYgcjClkMvEYWwciIvtiChnACex9IMI6AMiggQFIYO8DEdYBQAYNDEACZ96JsA4AMmhgABI4806EdQCQQQMDkMCZdyKsA4AMXTQwRtPVou5arlr30TPvV637qN7qXrsOeqt7i6q1q7sWdTdmjLKIyMFMjFF+vDU+t1hGY5StAxGR7TFGGeAE9j4QYR0AZNDAACSw94EI6wAggwYGIIEz70RYBwAZNDAACZx5J8I6AMjQRQNjskMt6q7lqnWbQrZPb3WbQrasau3qrkXdjZlCJiJyMKaQycRjbB2IiOyLKWQAJ7D3gQjrACCDBgYggb0PRFgHABk+ft4mNv8BHx+v+lwArul2//zb+P7p99/jNvjN54+lM4O1YB0A7LPQnsRvL/o8APo2eEL698/bhh5n3n/dQjRqdOjUz7VgHQDk6OIWMpMdalF3LVet2xSyfXqr2xSyZVVrV3ct6m7MFDIRkYMxhUwmHmPrQERkX0whAziB6VNEWAcAGTQwAAlMnyLCOgDIoIEBSODMOxHWAUAGDQxAAmfeibAOADJ00cCY7FCLumu5at2mkO3TW92mkC2rWru6a1F3Y6aQiYgcjClkMvEYWwciIvtiChlAtu/3Ly9OaO8DEdYBQAYNDEACex+IsA4AMmhgABI4806EdQCQQQMDkMCZdyKsA4AMmxqYZ5ME5v4s+/29HMOx+zyGY/d5jDXHHp95r1L3lY+Rceyj6+DIsd/pGI7d5zEcu89jvOuxPzGFTESkQUyfEutARKRJTCEDOIG9DwXd7l/eZR0AtKeBAUhg70NR3++ffmsdALSngQFI4Mx7bY/H3zoAaE8DA5DAmXc0MQA5NDAACSaftH6/T+6ToE+TTezt/uU2MwC26aKBWT1yrTPqrkXd1/FoXIZn4Le6Yt0t9FT3lisvPdW9VdXa1V2LuhszRllEpEFGo3GN0C0YI5RFRJrEGGWAV5i4Pczeh9o8/gA5NDAASWzkL2Rib4vHHyCHBgYgiY38NZk+BpBLAwOQxBn4uiabGBPIAJroooEx2aEWdddy5bqHT163NjJXrvuIXure2rz2UvceVWtXdy3qbswUMhGRhhlNohpOo5r6GOkgExPoPO4iIvtjChnAiSbPxNsH063HY+32QYA8GhiAREduI+Oahs2LTfwA7WlgAJIMGxdPZDs1sTF/8vG2gR+gGQ0MQEsTt4e5jawGt48BvEYXDYzJDrWou5Ye6t5zG1kPde9x9br33j529bqPqFq7umtRd2OmkImINM7tbhpZhZg+JiKSElPIAF5tYq/D8Mz8r6swbiPrhtvHAF5HAwPwAjbyd2ZiU/7k7WM27wM0p4EByDC4uvJ0GpmrMNczerwej6srLwCvoYEBeIFxE/Ppya4m5nqejE52pQ0gVxcNjMkOtai7lt7qfjQvS2fse6t7rbeve+LqS8TM3pcNt4+9fd2Jqtau7lrU3dbHz0lj8x/w8ZFyYIASBk9ip57sfjpbb7/E+1v7eD4aHY8nwGYL7UkfV2AA3tbCXpjJs/a8p4WN+19oXgBSaGAAXuhpE/N4wquJeT+j5mV4G+CXvS+upAGk0sAAZJvYpD9+8vvpY3kvC82LEdkAr6WBAXixqSe/ppK9qZlN+7ODGFx9AUhnE38nxlMepqY+PN5XdRIGnG7rmXxPhs81sRHfxn2AfEub+OPHgoh4+9zv99M/hzPrnqp//L7h76/+9br656/u4nXf/qvnx7dvP358+/bp14/f/6p78PEV8jaP9+3+5Ws/9XjNPbaXrbvyY65udav7bepe7E96aGDk+YJZ0+Cs/bfm/v1Hhr8/+2sg8paZeJI7fFI8fPvp7xRrZE5/jF7YvIiIyOcssQeGJu73+2SAkcf+lom9FcPbkr7siYmwL+YVHrftLdw29uXvAPAyGpgOzTUPGgp4ExOvJRIRX/bAaGJebGLP0dyeF9PjAM6jgenI0pUPDQy8kdGksakmZnI6mQll7T2uiI2uuixeeXn8Xc0LwEv9dvYnQBtu2YKLGjwBfjxRnhux/Ous/7CJ8eR5v2EjOHHLWMTMtLHh3/f1B3i5Lq7AVH3iPhyL/OxrMP7zo83O2V/vs49/FnV3aOKKyvhKzPCKzOzVmI6uyLzs8R42gBOjrSNee+Wl63W+oGrt6q5F3W15HZgOrL1lbO/rwEz9O8MmaM2vgSdWvN7I4pWAB1cEnpu5crX56+3rDJBm6XVgNDAs0ojAi8w0MlNPqiM0MqstfF1WNy9u2wN4CQ0Mh2lg4IWeTMKKmL6t6Usj8/h3Hio+4V5R/9TXVfMCcD4NDIdpYODFdtzm9Hj/039vqLcn4uMan9S3+euoeQF4KQ0MwFWteF2SVXs25v7tOe/4RH1pUMHC5zx11WqxedG4AJyiRANT9QqBumtRdy2/6l64GhMx/2R8+OebnDjV7H7/N5M2NhJrm5bHn33y4ual6jqPqFu7umtR9zYlGhiArj3Zz7HmiszY5oZmi7kJXS+Y3DXXvO0ahOCqC8Bp3q6Bqdh9Vucxh0aePLl+dkVmTVMz/LuHP8fEBubZ57+lbhPcAN6XBuaNVKy96iVTSLWykYlYflK/pblZ4/e//oq///hj9fu3OlrP04ltGheAt7DUwPzvRZ8HAK18v/+b2/3LfpWPP//8lMeT+OHbZ0/6H//Gu75d27QMb60b5pfH1+5xZUjzAnAZrsC8UMXaXYGBF9hw+9OaW8i2XOEYv31caVn7/r1vn33+rb5WAJzDLWRvpHXtV2gOMj7HK9SdQd217K77wBP0K9xCFnFwqtqbNi1V13lE3drVXYu6t9HAvJGKtVf9hoW3sOHFHZse86QpZL+OM/amTQsA05YamN9e9HkQNRsY4ETjJ+5Xe/HKZ+ZquVodAGzmdWAAOPXFK3fRqAB06+1uIQMAAJhjjDIAANCNLhqYqntL1F2LumtRdy1V646oW7u6a1F3W24hAwAA3oZbyAAAgG5oYAAAgMvQwAAAAJehgQEAAC5DAwMAAFzGpgbm2Si0uT/Lfn8vx3DsPo/h2H0ew7H7PEbVY7/iGI7d5zEcu89jvOuxh4xRBgAA3oYxygAAQDc0MAAAwGVoYAAAgMvQwAAAAJfx29IHLG2iAQAAeBVXYAAAgMvQwAAAAJehgQEAAC5DAwMAAFyGBgYAALgMDQwAAHAZGhgAAOAy/j9WdHdd5diz+QAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ "
" ] @@ -149,7 +149,7 @@ } ], "source": [ - "mzi = uc.mzi(delta_length=10, length_x=1, length_y=20)\n", + "mzi = uc.mzi(delta_length=100, length_x=1, length_y=20)\n", "mzi.plot()" ] }, @@ -178,6 +178,34 @@ ":::" ] }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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wAAAnGDs52/xfDBwGTMwJVq7kt621q6kt621K+lta+1Kettau5LettaupLfNZZQv4/N5vta21q7EDAwAwG2ZgYFZmYEBABiBGRjoYAEDAADcDTMwJVq7kt621q6kt621K+lta+1Kettau5LettaupLdtzq6P1x+b/z7l9LFT2oYfZ/jxp+bzeb7WttauxAwMAMBNffzvNXn7899jXjlscwrZc/L0H1ckgzUzMAAAwGJYwAAAAHfDDEyJ1q6kt621K+lta+1Kettau5LettaupLettSvpbZu765xTx85pm/vJLH0+z9fa1tqVmIEBALid51We1wMwSd7yPN6H3v24ngsGkhyfgflnpg4AgLv078+f209i+by6brHx+ff/3X0yS+AkZmAAAI6Y6kknPZklnM8MTInWrqS3rbUr6W1r7Up621q7kt621q6kt621K+ltMwNzGZ/P87W2tXYlZmAAAG7neZWPnztPZDnSKWTD3Zen3+9mYOCT54EBALjEYKEy1U7J5uO+rf7cHnCUBQwAwBFmYKCHGZgSrV1Jb1trV9Lb1tqV9La1diW9ba1dSW9ba1fS22YG5jI+n+drbWvtSszAAADcxr5ZlalmYMb4uLAQZmAAAK40+QwMcDILGACAI8zAQI+TFzC757J99/o573vt6/f6sZd6W0u5H3Pe1lLux1Jvayn3Y87bWsr9mPO2lnI/5rytOe9Hsr1TsvOmCz72/o87RmfLY7iU+zHnbS3lfox9W/uYgQEA2Od5ZQYGbsAMDADAlczAQI9JFjCnbP3cSmtba1fS29balfS2tXYlvW2tXUlvW2tX0tvW2pX0ts3ddc6syjltc8/A+Hyer7WttSuZvs0pZAAA++yc6jXqaV5Tfmy4c04hAwA412CBMfVpXk8vL38WMm+rP7cLfMsCBgDgG1Of5uVSynAeMzAlWruS3rbWrqS3rbUr6W1r7Up621q7kt621q6kt23OrnN3YM5tm3OQ3+fzfK1trV2JGRgAgHl9nsb18fPH1h8//X7/8x9jzcBMfRtwp8zAAACca2cBsdklGWth8flxvuy+WLjAURYwAAAHzHV6l+eDgdOZgSnR2pX0trV2Jb1trV1Jb1trV9Lb1tqV9La1diW9bZN17Vze+JIB+0vatm5vwquRPdzncwStba1diRkYAIB5rBcNgwVMMvFztOwsmLZu77MFHo0ZGACAU+0sJm5hswsD7GUBAwCwc8rWeiZl0t2XZHO62NbtfdMFmIGp0dqV9La1diW9ba1dSW9ba1fS29balfS2tXYlvW2TdH3uvjy9vPzdhblgAXFR2/qyysPbn2DR9FCfz5G0trV2JWZgAACmtWcOJZlh96WtAUqYgQEAOOTYwmHmlt1TyKa+KhncIwsYAOAxHVi8bJlr5+Ob27GIgW1mYEq0diW9ba1dSW9ba1fS29balfS2tXYlvW2tXUlv21Vdz6tvFy/XnrZ1cdvOQP/Q1iLmioXMIj+fE2tta+1KzMAAAIznwHO9rFXMnJyyuErMxbBYZmAAAIY7F6csDm7t2E7M5/vU9MKM7MAAAMs1/AH/m3mXip2XXUdmdL4suJra4Qo32YF55HPyLtXalfS2tXYlvW2tXUlvW2tX0tvW2pX0trV2Jb1tR7t2d1x+/tgsBHZ3NsbeeRn1MduzE7N+/eP1NR8/f5y1I3O3n88bam1r7UrMwAAAfG/fD+2D3YjhDsbwSSrvZp5kz6lvW0+2mZ1F2ZHHA9od24GxgAHO43xroM2eH84PLVrWrye5j8XL2k7rSfdv39+nxz38u7uRYwuYfByR5OxjtVpd9PfmOFrbWrua21q7mtvO6npeHT7O+RiP9Jhpq+5qbmvtuknbiV83hl0fr69fjvWfD9++dRvnfC1resx22r+7v7uPx1ltEz4+Ff/Opmg79zG78nvsIh6zA8cxdmCAv3Z/Q3fkt5rH/Pf37/z78+d1TcBDueTrxnoHYvfl8O1JljPwvud+7NuROfR4nMLX7/Od+5jt3SlLTvpevHQuowwcN3hSt/WxHnjdPZK/X3SPvVw79f299NJLL9fOef/116bhy6eXl82xO9B/9z8QDu/D530b3t99j8faVJ8HL89/ue977OYy2Xs+x/xlBwYe2TfnVK+tv8gOvymeym/wgHNN8lvse1+wnOKE+2sHfVqXPmbffZ/d/Pt+sH/PZmDupK21q7mttau5bdN14TnUW+eQn3Is4Fze1q7mttau5rbWrpu0nTMDM8as3hIes32P4YHDDMyEbRc8Zt99r937/Xfw73sRj9mhx8UMDLDlwDNRf/ubn92/C9DiAX4bPRpfw/ucMGs6/P78ZUdmof/+j+3AWMDAoziwcNm1d7t6baFfKAHgJk58DqPdXzJuZrt23n8pLGCA058EzZVPAOC2TrzK3Pq/l7iQuclVyFar1RQfdhStba1dSW9ba1dS1vZ5dbH1VcWSr1/8nn6/f71Cz8xfCKses4HWrqS3rbUr6W1r7Up621q7Em2XaO1KbtB24Cpza+uB//V/b71viakfMzswsGTrSyPn6zb0o5xHCwB378iZFEvbiXEKGTyq9c7LgUsjL+kLHQAs3gMtYjyRJTyiwc7LriV9gQOAhzE4Vezp9/uXMyq2TidbuJMXMLvnsn33+jnve+3r9/qxl3pbS7kfc97W6B978MVrd/fl1/v2rMtd3a+lfH4e4LaWcj/mvK2l3I85b2sp92Opt7WU+zHnbZ30vm+rzSJl9bY6vIh5Xi3mMdvHKWSwNM+rvaeO2XkBgAUZfE9fL2I2p5P9ft+87R45hQweyc7iZf0bGYsXAFiY9ffzz+/vWxfoWfj3egsYWIr1AuXT1rayxQsALM/n9/WtU8iyfSrZEk2ygDnl3LVbaW1r7Up621q7khu27dlGHr7NY3a+1q6kt621K+lta+1KettauxJtl2jtSnrbtrqet58rZssNFjFTP2ZmYGAJds6DXdvsvth5AYDlOjb/emc/B5iBgUex5wvXUreOAYCBz9PFtmZfhxb284AFDCzMly9ed/ZbFwDgQs/bl1Ze6nPDmIEp0dqV9La1diUzt+1sG292Yfb8tsVjdr7WrqS3rbUr6W1r7Up621q7Em2XaO1Ketu+dO0sVL6clTEjMzDA9/ac93qv57wCAFdYX1L554+tP76354UxAwMP5OAVSACA5du5rPJSTye3gIF7Nth9+fK8Lwv7YgUAnOeWp5FNyQxMidaupLettSu5TdspX6Q8Zudr7Up621q7kt621q6kt621K9F2idaupLftlK5bnZlhBgY4zA4MALDrebV/DuZOfjYwAwMPYqnbxADA+b7svnw+V8wSOIWsRGtX0tvW2pXcuO2bL04es/O1diW9ba1dSW9ba1fS29balWi7RGtX0tt2atctTiNzChmw355LJTp9DAC496dYcAoZLNkdfBECAG5niU+xYAEDC7DEL04AwPWWOCNrBqZEa1fS29balczfduoXJ4/Z+Vq7kt621q6kt621K+lta+1KtF2itSvpbTMD8907mIGBTi6hDAAcsnMp5Xv6GcEMDDyAJW4PAwDXWeop5hYwsABL/QIFALDLDEyJ1q6kt621KzEDc4nWttaupLettSvpbWvtSnrbWrsSbZdo7Up6287tmvNsjckfs48jkjgcjsbjefWR5OPj9XXr5frPHQ6Hw+FwPPCx7+eEO/kZ4RinkMECmIEBAA5Z2s8JFjCwAGZgAIBDlvZzghmYEq1dSW9ba1diBuYSrW2tXUlvW2tX0tvW2pX0trV2Jdou0dqV9Lad07X5OeFt9edSyhMzA+NwOPYfZmAcDofD4XAcOu7454RjPJEl3KvP36A8523zR295/vyP1dw1AECTO/45wRNZwpK9rfLvz595e3vLvz9/1n9BAgBmtNCfE8zAlGjtSnrbWrsSMzCXaG1r7Up621q7kt621q6kt621K9F2idaupLftohmYmUz9mDmFDO7VHW8NAwATu+OfE46dQvbPTB3AFN5W+XfwW5Wnl5dZri4CANyBhf6cYAYGFmBp13cHAMaztJ8TzMCUaO1KettauxIzMJdobWvtSnrbWruS3rbWrqS3rbUr0XaJ1q6kt+2iGZjn1Synj3keGIfDsf+44+u7OxwOh8PhmPjY93PCnfyMcIxTyGAB5r66CABwP5b2c4IFDCzA0s5tBQDGs7SfE05ewOyey/bd6+e877Wv3+vHXuptLeV+zHlb136sZPs3K7tvXuJjNudtLeV+zHlbS7kfc97WUu7HnLe1lPux1Ntayv2Y87bG/9h///vj9TW/3t8nvK3Dr1/7sfYyA+Nw3OlhBsbhcDgcDsehY/Bzwr39jGAGBh7A0s5tBQCu9/H6urjTxxKXUa7R2pX0trV2JfO3nfrFyWN2vtaupLettSvpbWvtSnrbWrsSbZdo7Up6277tel5tLpd8i19yTv6YOYXM4bjTY2dr+N62hx0Oh8PhcEx03Plp5k4hgwewxO1hAOB6SzzN3AIG7tXb6s8WcZb5xQkAuN4Sf8lpBqZEa1fS29balczbNvzCtFnIPO+/fY/Z+Vq7kt621q6kt621K+lta+1KtF2itSvpbTu1ywyMw+HoOu78HFeHw+FwOBwTHHf+84EZGHgQTiMDANbWPxdsLqU8uDLZvbOAgYVY4jmuAMCZFrRQOcQMTInWrqS3rbUruU3bKTswHrPztXYlvW2tXUlvW2tX0tvW2pVou0RrV9LbdkrXrX65OfVj9vQ553L4HZ6eJg0ArvT5m5bhAmZpW8UAwIkW8HPBkeWJU8hgSZxGBgAPbM/iZfPnC2IBA0uw83wwxy6nDAAs2/qXmptfbt7J7sspzMCUaO1Kettau5KZ2z6/IH3Zfdnzhcpjdr7WrqS3rbUr6W1r7Up621q7Em2XaO1Ketu+dB36ZeYNmIEBjhtsGT+9vGy+aN3bOa8AwIW+m31J7upnATMw8CieV5vFi1kYAHggO4uXU87KuGcWMLAEO1+YtraP31ZmYQBgqXa+x2/9MnOh3//NwJRo7Up621q7khu2fe7CDA0H+j1m52vtSnrbWruS3rbWrqS3rbUr0XaJ1q6kt22ra7D78mX25Qa7L2ZggNMduHzivZ4DCwB849j3/Tv9nm8GBh7J5+lie3dh1l/EFrqdDAAPZeeqY/vetlQWMLBEg0XM+qVFDAAsxIGzKp5eXhb5vC+7zMCUaO1Kettau5Ibtw2+YO1elax5EdP6+WztSnrbWruS3rbWrqS3rbUr0XaJ1q6krO15tfn+vXr+ZvflxosXMzDAZdZbyz9/JMn+54dJbv5FDgA4weD79r6Fy5K+tx+bgbGAgSUb/BZm75Ncrt8nufsvdgCwSMMzJo4tXhbyvfwmQ/xVW207Wttau5LettaupKht8Bwww8VL8mdBszmlbP1+NzytrOYx29HalfS2tXYlvW2tXUlvW2tXou0SrV3JbZ8aYWvX5eeP4zsvJZxCBlzvyLZzsmdH5vP9AYCZ7C5EBmdRJHtOBx/+nQV9z3YKGfDHzhe4fV8M169/+TtDC/oCCQA3c2jXZOf79NojzbJawADb9uzGDK9WdnAxM/y7AC0W+MPbZHwN77Pz7/e7Rcv69SSLXrwkxxcw+TgiydnHarW66O/NcbS2tXY1t7V2Nbdtup5Xf47PP/94fd0c69d3/3z3fU46Brdx949Z4dHa1trV3NbadZO2E79ufPl6tns80mO27zE88Jic3DbzY3jzx2yMtjMfs+++xx783nvJ57L5MTv02BxhBwYe2Z7f4Oz+pme4M7P7m6Bj/vv7d/79+XOkWOARXPJ148tucfJ483xH7u85X7sTX78vcem/3e++vz7qfOpNrkIG3IndK5A9rzbP4jv8Yrr7Mvn7RdVLL7308tYv11dVHB6br287X+MWZXi/Bvd37+OR23+elv5y7Zz3P/T9dX3sXonsERYvp7ADA/x14Oonu079TZ7f4AHnuvTrxtPL4d9kb/2AuYTZgSO758n3j8cpfP0+37mP2e7CJ8nJ34eXzgzMnbS1djW3tXY1t53ddeg86lPP8zUD85BtrV3Nba1dN2k7dwYm580SbG5jwlmZyR6zne5TZyeGs4tmYCZsO+d747XfX5fymB04zMAA01jaqRjAfTvjak6b33zf027MiZfCX//Z3r9Lj3v4N3dDx3ZgLGAAgPt25Dmrjj7v1XqGpNWgb9+FVtb/vfX+u5rvH+ywgAEAHs+eqzZ9+8N/427MN8/btfZlN+nz/eGejXYVstVqdfLr57zvta/f68de6m0t5X7MeVtLuR9Lva2l3I85b2sp92PO21rK/Zjzto6+73P+/iD/vMrqbfX3yk7JZsB9/d+r52z//ZbH7Hn/DtL6vqzeVlsLne/ux9HbupPP/VJvayn3Y+zb2scODACwfOsf8pODOxo1OzGDhqOdn+8HS+J5YAAA3lZbOzKHdmJqFgOnLrJaemFGdmAAgMfzvDq+SLjF4qC1C2Z0kx2YU85du5XWttaupLettSvpbWvtSnrbWruS3rbWrqS3rbUr6W27uutzduTbnZjhaVpztM2weFns53NCrW2tXcn0bXZgAIDHdWDRMPs8zM7ci50XHpkZGACAQw7sxNxkHsbiBU5iBwYAYGcnZu3p9/uf/5hyAfG5+/Lx88f2bVu88KDMwOxobWvtSnrbWruS3rbWrqS3rbUr6W1r7Up621q7kt62SboGOzEbFyweLmrbuZ0vl0oeyUN9PkfS2tbalZiBAQCYx6FdmCl3Qm5xm1DODAwAwKkGuzBfdmMmtnW7E+y+wFJYwAAAJF92O9a7ItdeVvmgnd2X3V0Yuy+wnxmYEq1dSW9ba1fS29balfS2tXYlvW2tXUlvW2tX0ts2WdfOVckucU3b1KeOPdzncwStba1dyQxtH0ckcTgcDofD4Xic43n1keTj4/V16+X6z+/udhyOOzuOMcQPADB06LLGY15SeY7bgDvlMso7Wttau5LettaupLettSvpbWvtSnrbWruS3rbWrqS3bdKuz8XDpZdUPrlt36WTz7idSzzk5/NKrW2tXYlTyBwOh8PhcDjmP6Y+vcvpYw7HweMYVyEDAPjGl6uD3dnHh6WxgAEA2LXnamRjLzSGH88TV8LpzMCUaO1Kettau5LettaupLettSvpbWvtSnrbWruS3ra5u7bmU448H8zRtsFCZe4ny/T5PF9rW2tXMn2bq5ABAOyz80STyUg7JVN9XFiIm1yFDABgSabaKZl7BwaWwAIGAOCIqQbtDfDD+czAlGjtSnrbWruS3rbWrqS3rbUr6W1r7Up621q7kt62m83AnOCcNjMwf7R2Jb1trV2JGRgAgNswAwM3YQYGAOBKZmCghwUMAMARZmCghxmYEq1dSW9ba1fS29balfS2tXYlvW2tXUlvW2tX0ttmBuYyPp/na21r7UrMwAAA3IYZGLgJMzAAAJd4W/1ZVGSGGRiLFziZBQwAwBFmYKCHGZgSrV1Jb1trV9Lb1tqV9La1diW9ba1dSW9ba1fS22YG5jI+n+drbWvtSszAAADczvMqz3nbvPqW5/E+9O7HdQoZJDk+A2MBAwDwjY//vebpPy/5eH0ddcdk/fHWHx/4wxA/AMCVzMBADzMwJVq7kt621q6kt621K+lta+1Kettau5LettaupLfNDMxlfD7P19rW2pWYgQEAuKmP/71mPa4y9ilkSZLnOIUMBpxCBgAALIYFDAAAcDdOXsDsnsv23evnvO+1r9/rx17qbS3lfsx5W0u5H0u9raXcjzlvayn3Y87bWsr9mPO25rwfv97fN//98fo6ysceDu8PP77Pz+Pe1lLux9i3tY8ZGACA7zyv8vHzx59LHo90KeXNJZRfX/P0+91zwMCAGRgAgBGMfcljl1CGy0yygDll6+dWWttau5LettaupLettSvpbWvtSnrbWruS3rbWrqS3rbUr0XaJ1q6kt621K5m+zSlkAADf+TyFbG2sU8g2H88pZLDFKWQAACMY+0kn534SS1gKCxgAgBOYgYEOZmBKtHYlvW2tXUlvW2tX0tvW2pX0trV2Jb1trV1Jb9vcXcPdkmMLj2NtW6ePzbwL4/N5vta21q5khraPI5I4HA6Hw+FwPO7xvPpI8vHx+rr18tLjy8f5/PgOh+PPcYxTyAAATjTWaV9OH4PLWcAAAJxofcrXpQuQ9d8zwA+XMwNTorUr6W1r7Up621q7kt621q6kt621K+lta+1Kettu0fX08pKP19eji49jbad+nCn4fJ6vta21K/E8MAAAt/W82jxPy7UD+Hv//uDjA/E8MAAAwHJYwAAAnGi9a7I+Dewcw9PGzMDA5czAlGjtSnrbWruS3rbWrqS3rbUr6W1r7Up621q7kt62W3etFyP7FjH72r57/znd+nE7pLUr6W1r7UrMwAAA3NaeGZVzZ2G+fX8zMLDFDAwAwATOPQ3MaWMwDgsYAIAzDS+FfOy0sOH7WcTA9czAlGjtSnrbWruS3rbWrqS3rbUr6W1r7Up621q7kt62lq5zZmAatDxuu1q7kt621q5khraPI5I4HA6Hw+FwPO7xvNr75x+vr1svDx1H3+/Ax3c4HvU4xilkAAAXGJ4+dmiHZfh2p4/BOCxgAACAu2EGpkRrV9Lb1tqV9La1diW9ba1dSW9ba1fS29balfS2NXXt7qzstjXtvDQ9bkOtXUlvW2tX4nlgAABu68jztBx6jpeTnyvG88DAFs8DAwAALIZTyEq0diW9ba1dSW9ba1fS29balfS2tXYlvW2tXUlvW1vXcIdl2NZ0+ljS97ittXYlvW2tXYlTyAAAbsspZDArp5ABAExo36Ll5MULcDYLGACAEewuVCxcYBpmYEq0diW9ba1dSW9ba1fS29balfS2tXYlvW2tXUlvW2PXetdl3XboyS1vqfFxS3q7kt621q5khraPI5I4HA6Hw+FwPO7xvDr6Ph+vr9++vPbjOxyPdBzjFDIAgBHs7rg07sDAEljAAAAAd8MMTInWrqS3rbUr6W1r7Up621q7kt621q6kt621K+lta+u66PLJN9D2uK21diW9ba1dieeBAQC4rROfp2XfKWMnLWA8Dwxs8TwwAAAzWS9Y2nZeYEksYAAARrLviSyBcZ28gNk9l+27189532tfv9ePvdTbWsr9mPO2lnI/lnpbS7kfc97WUu7HnLe1lPsx523Nez9y8G27r+/bgTl+W+N0nvv6vX7spd7WUu7H2Le1jxkYAIDvPK+OzqjsDu6fNch/wseHR2IGBgBgJuvFixkYmI4FDADACIaLF4sYmM4kC5hTzl27lda21q6kt621K+lta+1Kettau5LettaupLettSvpbWvs2h3gbxzkb3zckt6upLettSuZvs0MDADAd06cUVkvWIYzMJ4HBs5nBgYAYAbrxcpZixfgbBYwAADA3TADU6K1K+lta+1Kettau5LettaupLettSvpbWvtSnrbWrvatT5urV1Jb1trV2IGBgDgts6YUbnoKmRmYGCLGRgAgBk1Xn0MlsQCBgBgRIb3YVpmYEq0diW9ba1dSW9ba1fS29balfS2tXYlvW2tXUlv2+xdz6uTjv/+/p3n5+f89/fvk//OnHw+z9fa1tqVmIEBAOj3OcfyZQbGfAuczQwMAMCMzMDAtJxCVqK1K+lta+1Kettau5LettaupLettSvpbWvtSnrbWruS5Nf7+60TDmp93Fq7kt621q7EKWQAAP0Gp5CtOYUMLuMUMgCAGbkKGUzLAgYAYERmYGBaZmBKtHYlvW2tXUlvW2tX0tvW2pX0trV2Jb1trV1Jb1trV2IG5hKtXUlvW2tXYgYGAKCfGRgYjRkYAIAZmYGBaVnAAACMyAwMTMsMTInWrqS3rbUr6W1r7Up621q7kt621q6kt621K+lta+1KzMBcorUr6W1r7UrMwAAA9DMDA6MxAwMAMCMzMDAtCxgAgBGZgYFpmYEp0dqV9La1diW9ba1dSW9ba1fS29balfS2tXYlvW2tXYkZmEu0diW9ba1diRkYAIB+ZmBgNGZgAABmZAYGpmUBAwAwIjMwMC0zMCVau5LettaupLettSvpbWvtSnrbWruS3rbWrqS3rbUrMQNzidaupLettSsxAwMA0M8MDIzGDAwAwIzMwMC0LGAAAEZkBgamZQamRGtX0tvW2pX0trV2Jb1trV1Jb1trV9Lb1tqV9La1diVmYC7R2pX0trV2JWZgAAD6mYGB0ZiBAQCYkRkYmJYFDADAiMzAwLROXsDsnsv23evnvO+1r9/rx17qbS3lfsx5W0u5H0u9raXcjzlvayn3Y87bWsr9mPO2mu/H7gzMUu5Xy8de6m0t5X6MfVv7mIEBALjW88oMDIzEDAwAwIzMwMC0JlnAnLL1cyutba1dSW9ba1fS29balfS2tXYlvW2tXUlvW2tX0tvW2pV0z8C0Pm6tXUlvW2tXMn2bU8gAAK41OIXs6eVl89IpZHA+p5ABAMyoeQcGlsACBgBgRGZgYFpmYEq0diW9ba1dSW9ba1fS29balfS2tXYlvW2tXUlvW2tX0r0D0/q4tXYlvW2tXYkZGACAfmZgYDRmYAAAZtS8AwNLYAEDADAiMzAwLTMwJVq7kt621q6kt621K+lta+1Kettau5LettaupLettSvp3oFpfdxau5LettauxAwMAEA/MzAwGjMwAAAzat6BgSWwgAEAGJEZGJiWGZgSrV1Jb1trV9Lb1tqV9La1diW9ba1dSW9ba1fS29balXTvwLQ+bq1dSW9ba1diBgYAoJ8ZGBiNGRgAgBk178DAEljAAACMyAwMTMsMTInWrqS3rbUr6W1r7Up621q7kt621q6kt621K+lta+1KundgWh+31q6kt621KzEDAwDQzwwMjMYMDADAjJp3YGAJLGAAAEZkBgamZQamRGtX0tvW2pX0trV2Jb1trV1Jb1trV9Lb1tqV9La1diXdOzCtj1trV9Lb1tqVmIEBAOhnBgZGYwYGAGBGzTswsAROISvR2pX0trV2Jb1trV1Jb1trV9Lb1tqV9La1diW9ba1dSfLr/f3WCQe1Pm6tXUlvW2tX4hQyAIB+g1PI1pxCBpdxChkAwIxchQymZQEDADAiMzAwLTMwJVq7kt621q6kt621K+lta+1Kettau5LettaupLettSsxA3OJ1q6kt621KzEDAwDQzwwMjMYMDADAjMzAwLQsYAAARmQGBqZlBqZEa1fS29balfS2tXYlvW2tXUlvW2tX0tvW2pX0trV2JWZgLtHalfS2tXYlZmAAAPqZgYHRmIEBAJiRGRiYlgUMAMCIzMDAtE5ewOyey/bd6+e877Wv3+vHXuptLeV+zHlbS7kfS72tpdyPOW9rKfdjzttayv2Y87aa78fuDMxS7lfLx17qbS3lfox9W/uYgQEAuNbzygwMjMQMDADAjMzAwLT+uXXA5J5Xf//bb0AAgImZgYFpTbIDc8q5a7NYb9uuj+dVVp8v29Q8Znu0trV2Jb1trV1Jb1trV9Lb1tqV9La1diW9ba1dieeBuURrV9Lb1tqVTN+27BmYwXmn69+GbLZ17cwAAGP5/LniOW+bP3rL8+d/rOaugbt2bAZm+aeQZXsr98twXWIxAwBc722Vf19f8/Tyko/Pl41nfcC9W+4C5oSrfljMAABjMwMD01r2DMwZPl5f/xw/f2zNzGyOiTU/Zq1trV1Jb1trV9Lb1tqV9La1diW9ba1dSW9ba1diBuYSrV1Jb1trV2IG5nJ7rsd+CTszAMBRngcGRmMG5kpOMwMAzrGegQGmYQFzBosZAOAYixeY1jJnYGbYrh17Zubmj9k3Wttau5LettaupLettSvpbWvtSnrbWruS3rbWrsQMzCVau5LettauxAzMZUaaf7nUl8sm2pkBgGUzAwOjMQNzA540EwAelxkYmNYyTyErMTzNbHOq2YHTzJofs9a21q6kt621K+lta+1Kettau5LettaupLettSvpnoFpfdxau5Lettau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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "TE_MZI = uc.add_fiber_array(component=mzi, component_name='MyCoolMZI1')\n", + "TE_MZI.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also change the grating coupler to a TM coupler by passing in a TM coupler. We also can flip the direction of the mzi. This isn't really useful for the MZI but can help us make sure the right port is the input in other cases. " + ] + }, { "cell_type": "code", "execution_count": 6, @@ -185,7 +213,7 @@ "outputs": [ { "data": { - "image/png": "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RtbalfS2tXYlvW2tXUlvW2tX0tvW2pX0trV2Jd1nYFoft9aupLettSvpbWvtSnrazMAAwKswAwPMgBkYAOBA8xkYgHMsYADgBZmBAebKDMzIWruS3rbWrqS3rbUr6W1r7Up621q7kt621q6k+wxM6+PW2pX0trV2Jb1trV1JT5sZGAB4FWZggBkwAwMAHGg+AwNwjgUMALwgMzDAXJmBGVlrV9Lb1tqV9La1diW9ba1dSW9ba1fS29balXSfgWl93Fq7kt621q6kt621K+lpMwMDAK/CDAwwA2ZgAIADzWdgAM6xgAGAF2QGBpgrMzAja+1Kettau5LettaupLettSvpbWvtSnrbWruS7jMwrY9ba1fS29balfS2tXYlPW1mYADgVZiBAWbADAwAcKD5DAzAORcXMMNTRfunjcZ8f65fe6m3tZT7sdTbWsr9mPK2lnI/prytpdyPKW+r+X78/fv3ZLfV+hgu5X5MeVtLuR9T3tZS7sfUt3WOLWQA8CpW6+0Wsg1byIA2tpABAAdchQyYKwsYAHhBZmCAubppAXPL3rSptba1diW9ba1dSW9ba1fS29balfS2tXYlvW2tXcnhDEyT1settSvpbWvtSnrbWruSnjYzMADwKszAADNgBgYAOGAGBpgrCxgAeEFmYIC5MgMzstaupLettSvpbWvtSnrbWruS3rbWrqS3rbUrMQNzj9aupLettSvpbWvtSnrazMAAwKswAwPMgBkYAOCAGRhgrpyBAYAlWK2v/9T82v73r6yuvw1naYAJXDoDk88LkmyP9Xq9837T0drW2tXc1trV3Nba1dzW2tXc1trV3DZp1+r62/r8+Phcr9efnx8fo3z9WT1uC+hqbmvtam5r7Zqy7RJnYABgCW6YYzmYgXnw1wf4DjMwAMABMzDAXFnAAMAL8jowwFx5HZiRtXYlvW2tXUlvW2tX0tvW2pX0trV2Jb1trV3tWh+31q6kt621K+lta+1KetrMwADAEpiBARbCDAwAsLVZvGwWLraSAXNjAQMAL2K4WDn13wDtzMCMrLUr6W1r7Up621q7kt621q6kt621K+lta+zanHn5+/fvnfebND5uSW9X0tvW2pX0trV2JT1tZmAAYAmumFEZbh/7/PjYvt382ne/PsAjmIEBAHbsL14A5sQCBgBexOYsy/AMzPDXAebADMzIWruS3rbW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AwMAr8IMDDADZmAAgANmYIC5soABgBdkBgaYKzMwI2vtSnrbWruS3rbWrqS3rbUr6W1r7Up621q7EjMw92jtSnrbWruS3rbWrqSnzQwMALwKMzDADJiBAQAOmIEB5soCBgBekBkYYK7MwIystSvpbWvtSnrbWruS3rbWrqS3rbUr6W1r7UrMwNyjtSvpbWvtSnrbWruSnjYzMADwKszAADNgBgYAOGAGBpgrCxgAeEFmYIC5MgMzstaupLettSvpbWvtSnrbWruS3rbWrqS3rbUrMQNzj9aupLettSvpbWvtSnrazMAAwKswAwPMgBkYAOCAGRhgrixgAOAFmYEB5soMzMhau5LettaupLettSvpbWvtSnrbWruS3rbWrsQMzD1au5LettaupLettSvpaTMDAwCvwgwMMANmYACAA2ZggLmyhWxkrV1Jb1trV9Lb1tqV9La1diW9ba1dSW9ba1fSPQPT+ri1diW9ba1dSW9ba1fS02YLGQC8isEWsrf39+1bW8iAJraQAQAHms/AAJxjAQMAL8gMDDBXZmBG1tqV9La1diW9ba1dSW9ba1fS29balfS2tXYl3WdgWh+31q6kt621K+lta+1KetrMwADAqzADA8yAGRgA4EDzGRiAcyxgAOAFmYEB5soMzMhau5LettaupLettSvpbWvtSnrbWruS3rbWrqT7DEzr49balfS2tXYlvW2tXUlPmxkYAHgVZmCAGTADAwAcaD4DA3COBQwAvCAzMMBcXVzADPe67e97G/P9uX7tpd7WUu7HUm9rKfdjyttayv2Y8raWcj+mvK3m+7F/BmYp96vlay/1tpZyP6a8raXcj6lv6xwzMADwKlZrMzBAPTMwAMABMzDAXFnAcJ/V+s8BwOyYgQHm6qYFzC1706bW2tbalXyjbbPVYHM8eDGzyMdsZK1dSW9ba1fS29balfS2tXYl3WdgWh+31q6kt621K+lta+1KetrMwHC7wV7pzV+A25/kDRcx9lMDdPl6jl7l1/aXfmX19R/rqWsAjro0A/OviTpYoOFP74b/bTEDUOzXOv/df862HRiYEQsYHm5/W8LBX44WMwBPt7kKGcDcmIEZWWtXcmfbHZfa/Pz4yOePv66emVncYzaB1q6kt621K+lta+1KettauxIzMPdo7Up621q7kt621q6kp80MDLc5Mv9yL2dmACbm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", + "image/png": "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", "text/plain": [ "
" ] @@ -195,8 +223,49 @@ } ], "source": [ - "component_fiber_array = uc.add_fiber_array(component=mzi, component_name='MyCoolMZI1')\n", - "component_fiber_array.plot()" + "TM_MZI = uc.add_fiber_array(component=mzi.rotate(180), grating_coupler=uc.gc_tm1550, component_name='MyCoolMZITM')\n", + "TM_MZI.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we should put them together to make our 'final' design. We can use the [distribute](https://gdsfactory.github.io/gdsfactory/notebooks/04_components_pack.html#distribute) and [align](https://gdsfactory.github.io/gdsfactory/notebooks/04_components_pack.html#align) functions." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/gdsfactory/component.py:1569: UserWarning: Unnamed cells, 1 in 'Unnamed_b83043de'\n", + " gdspath = component.write_gds(logging=False)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mzi_together = gf.Component()\n", + "mzi_together.add_ref(TE_MZI)\n", + "mzi_together.add_ref(TM_MZI)\n", + "\n", + "mzi_together.distribute(direction='x', spacing=10)\n", + "mzu_together = mzi_together.align(alignment='ymax')\n", + "mzi_together.plot()" ] }, { @@ -212,14 +281,16 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "\u001b[32m2024-01-26 16:12:00.066\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.component\u001b[0m:\u001b[36m_write_library\u001b[0m:\u001b[36m1913\u001b[0m - \u001b[1mWrote to 'mzi.gds'\u001b[0m\n" + "/tmp/ipykernel_305404/1677396279.py:1: UserWarning: Unnamed cells, 1 in 'Unnamed_b83043de'\n", + " mzi_together.write_gds(\"mzi.gds\")\n", + "\u001b[32m2024-01-29 08:37:46.359\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.component\u001b[0m:\u001b[36m_write_library\u001b[0m:\u001b[36m1913\u001b[0m - \u001b[1mWrote to 'mzi.gds'\u001b[0m\n" ] }, { @@ -228,13 +299,14 @@ "PosixPath('mzi.gds')" ] }, - "execution_count": 7, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "component_fiber_array.write_gds(\"mzi.gds\")" + "\n", + "mzi_together.write_gds(\"mzi.gds\")" ] } ], diff --git a/pages/directional_couplers.html b/pages/directional_couplers.html index d0046ea..2310de9 100644 --- a/pages/directional_couplers.html +++ b/pages/directional_couplers.html @@ -565,8 +565,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_layout.html b/pages/mzi_layout.html index 0023939..11adab5 100644 --- a/pages/mzi_layout.html +++ b/pages/mzi_layout.html @@ -324,10 +324,10 @@

Laying out a Mach-Zehnder Interferometer -
2024-01-26 14:59:56.805 | INFO     | gdsfactory.technology.layer_views:__init__:790 - Importing LayerViews from YAML file: '/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/ubcpdk/layers.yaml'.
-2024-01-26 14:59:57.403 | INFO     | ubcpdk:<module>:30 - Found UBCpdk '2.3.4' installed at PosixPath('/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/ubcpdk')
-2024-01-26 14:59:57.478 | INFO     | gdsfactory.technology.layer_views:__init__:790 - Importing LayerViews from YAML file: '/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/gdsfactory/generic_tech/layer_views.yaml'.
-2024-01-26 14:59:57.482 | INFO     | gdsfactory.pdk:activate:307 - 'ubcpdk' PDK is now active
+
2024-01-29 08:27:51.562 | INFO     | gdsfactory.technology.layer_views:__init__:790 - Importing LayerViews from YAML file: '/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/ubcpdk/layers.yaml'.
+2024-01-29 08:27:52.715 | INFO     | ubcpdk:<module>:30 - Found UBCpdk '2.3.4' installed at PosixPath('/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/ubcpdk')
+2024-01-29 08:27:52.806 | INFO     | gdsfactory.technology.layer_views:__init__:790 - Importing LayerViews from YAML file: '/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/gdsfactory/generic_tech/layer_views.yaml'.
+2024-01-29 08:27:52.813 | INFO     | gdsfactory.pdk:activate:307 - 'ubcpdk' PDK is now active
 
@@ -371,13 +371,13 @@

Laying out a Mach-Zehnder Interferometerdocs. There is an ASCII drawing there that is helpful to understand what the different length parameters do.

-
mzi = uc.mzi(delta_length=10, length_x=1, length_y=20)
+
mzi = uc.mzi(delta_length=100, length_x=1, length_y=20)
 mzi.plot()
 
-../_images/5bd0fbe20a6b31b7cccb02b191c9e663f21cd22721364d0c126027609c24afcc.png +../_images/62fa2a534bc712557bf1c70de7b7345c1a2db001d5ff2d61cfc69cd9dbccc0cf.png

Finally, we can easily add a grating array to any component. Note that the component we want to add gratings to will be rotated so that its ports are oriented vertically. Also, though we can’t see it in the plot, adding the grating couplers also adds a label to one of the gratings, marking it as the input.

@@ -396,13 +396,46 @@

Laying out a Mach-Zehnder Interferometer
-
component_fiber_array = uc.add_fiber_array(component=mzi, component_name='MyCoolMZI1')
-component_fiber_array.plot()
+
TE_MZI = uc.add_fiber_array(component=mzi, component_name='MyCoolMZI1')
+TE_MZI.plot()
 
-../_images/efbbb472dff7ad7c42e717dba2e137bbf0c821309c1986cea80ced3ebea94445.png +../_images/ceef6e8f28233ab9522122a4f4571bbb52466070e4f18e6cfca9bcd2fb1f9c1a.png +
+
+

We can also change the grating coupler to a TM coupler by passing in a TM coupler. We also can flip the direction of the mzi. This isn’t really useful for the MZI but can help us make sure the right port is the input in other cases.

+
+
+
TM_MZI = uc.add_fiber_array(component=mzi.rotate(180), grating_coupler=uc.gc_tm1550, component_name='MyCoolMZITM')
+TM_MZI.plot()
+
+
+
+
+../_images/d1a7e1df664b1e3e5992fa8e01f6c15ac021cc6a21fcf72f064132afdadd001c.png +
+
+

Now we should put them together to make our ‘final’ design. We can use the distribute and align functions.

+
+
+
mzi_together = gf.Component()
+mzi_together.add_ref(TE_MZI)
+mzi_together.add_ref(TM_MZI)
+
+mzi_together.distribute(direction='x', spacing=10)
+mzu_together = mzi_together.align(alignment='ymax')
+mzi_together.plot()
+
+
+
+
+
/home/parkeraa/miniconda3/envs/mp/lib/python3.11/site-packages/gdsfactory/component.py:1569: UserWarning: Unnamed cells, 1 in 'Unnamed_b83043de'
+  gdspath = component.write_gds(logging=False)
+
+
+../_images/53579cfbce97dff92e8655f428a25885f458eb7131ed783ee0c90c708a3e218d.png

We can export our design using the write_gds function. If you zoom in on where the lower coupler meets the waveguide, you can see the text label. It should say:

@@ -411,12 +444,14 @@

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