diff --git a/_sources/pages/scattering_parameters.ipynb b/_sources/pages/scattering_parameters.ipynb index 7ae9760..a51a69d 100644 --- a/_sources/pages/scattering_parameters.ipynb +++ b/_sources/pages/scattering_parameters.ipynb @@ -42,14 +42,6 @@ "S-Parameters are used in circuit-level simulation software, e.g. simphony, sax, Lumerical Interconnect, etc." ] }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## TODO: Demonstration of using simphony to simulate a circuit quickly using s-parameters\n" - ] - }, { "attachments": {}, "cell_type": "markdown", @@ -57,7 +49,9 @@ "source": [ "## How to find S-Parameters for an arbitrary device using a meep simulation\n", "\n", - "In this section we'll demonstrate how to find the s-params for any device using a meep simulation. We'll show both 2D and 3D simulations, but keep in mind that 2D s-params are not very accurate. We'll run through the steps using gdsfactory's default 2x2 mmi, and explain on the way how the principles can be applied to any component. There are other ways to find s-parameters, and another method is shown on the [Gds To Meep](/pages/gds_to_meep) page" + "In this section we'll demonstrate how to find the s-params for any device using a meep simulation. We'll show both 2D and 3D simulations, but keep in mind that 2D s-params are not very accurate, but the simulations run much faster. It is often recommended to set up the simulation in 2D to ensure everything works, then extend the simulation into 3D to run the final simulations. This can save us a lot of debugging time since the 2D simulations run faster.\n", + "\n", + "We'll run through the steps using gdsfactory's default 2x2 mmi, and explain on the way how the principles can be applied to any component. There are other ways to find s-parameters, and another method is shown on the [Gds To Meep](/pages/gds_to_meep) page" ] }, { @@ -67,7 +61,7 @@ "source": [ "### Step 1 - Import Geometry\n", "\n", - "For our simulation, it makes life easy if we add all of our sources and detectors into our gds before we import it into meep. For this tutorial I have already done this. For your simulations, you can modify your gds file directly in Klayout if you like a GUI, or you can use gdsfactory itself. If you like, you can also use meep to do the same thing, but I won't be showing how to do that here. This tutorial is adapted from the [GDSII Import](https://meep.readthedocs.io/en/latest/Python_Tutorials/GDSII_Import/) tutorial on the meep documentation\n", + "If we have a gds of the device t can make life easy if we add all of our sources and detectors into our gds before we import it into meep. For this tutorial I have already done this. For your simulations, you can modify your gds file directly in Klayout if you like a GUI, or you can use gdsfactory itself. If you like, you can also use meep to do the same thing, but I won't be showing how to do that here. This tutorial is adapted from the [GDSII Import](https://meep.readthedocs.io/en/latest/Python_Tutorials/GDSII_Import/) tutorial on the meep documentation\n", "\n", "Here is a picture of the gds we will be using. \n", "\n", @@ -684,23 +678,10 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "ename": "", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31mFailed to start the Kernel. \n", - "\u001b[1;31mKernel Python 3.9.6 is not usable. Check the Jupyter output tab for more information. \n", - "\u001b[1;31mView Jupyter log for further details." - ] - } - ], "source": [ - "\n" + "## Import the generated s-matrix to be used in simphony" ] }, { diff --git a/pages/directional_couplers.html b/pages/directional_couplers.html index 76be82a..f204110 100644 --- a/pages/directional_couplers.html +++ b/pages/directional_couplers.html @@ -566,8 +566,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/scattering_parameters.html b/pages/scattering_parameters.html index ffcc229..af72e0e 100644 --- a/pages/scattering_parameters.html +++ b/pages/scattering_parameters.html @@ -315,7 +315,6 @@

Contents

  • Why are S-Parameters useful?
  • -
  • TODO: Demonstration of using simphony to simulate a circuit quickly using s-parameters
  • How to find S-Parameters for an arbitrary device using a meep simulation
  • +
  • Import the generated s-matrix to be used in simphony
  • References
  • @@ -352,15 +352,13 @@

    Why are S-Parameters useful? -

    TODO: Demonstration of using simphony to simulate a circuit quickly using s-parameters#

    -

    How to find S-Parameters for an arbitrary device using a meep simulation#

    -

    In this section we’ll demonstrate how to find the s-params for any device using a meep simulation. We’ll show both 2D and 3D simulations, but keep in mind that 2D s-params are not very accurate. We’ll run through the steps using gdsfactory’s default 2x2 mmi, and explain on the way how the principles can be applied to any component. There are other ways to find s-parameters, and another method is shown on the Gds To Meep page

    +

    In this section we’ll demonstrate how to find the s-params for any device using a meep simulation. We’ll show both 2D and 3D simulations, but keep in mind that 2D s-params are not very accurate, but the simulations run much faster. It is often recommended to set up the simulation in 2D to ensure everything works, then extend the simulation into 3D to run the final simulations. This can save us a lot of debugging time since the 2D simulations run faster.

    +

    We’ll run through the steps using gdsfactory’s default 2x2 mmi, and explain on the way how the principles can be applied to any component. There are other ways to find s-parameters, and another method is shown on the Gds To Meep page

    Step 1 - Import Geometry#

    -

    For our simulation, it makes life easy if we add all of our sources and detectors into our gds before we import it into meep. For this tutorial I have already done this. For your simulations, you can modify your gds file directly in Klayout if you like a GUI, or you can use gdsfactory itself. If you like, you can also use meep to do the same thing, but I won’t be showing how to do that here. This tutorial is adapted from the GDSII Import tutorial on the meep documentation

    +

    If we have a gds of the device t can make life easy if we add all of our sources and detectors into our gds before we import it into meep. For this tutorial I have already done this. For your simulations, you can modify your gds file directly in Klayout if you like a GUI, or you can use gdsfactory itself. If you like, you can also use meep to do the same thing, but I won’t be showing how to do that here. This tutorial is adapted from the GDSII Import tutorial on the meep documentation

    Here is a picture of the gds we will be using.

    Image of splitter file

    I’ve added a box around the entire component (in purple) which will become the simulation region, and 8 lines, 2 on each end that will become the sources and detectors. I also added straight waveguides on the ports of the gdsfactory mmi so that my ports could be exactly where the light would enter and exit the component in an actual circuit. My sources are then slightly outside the mmi, in the waveguides.

    @@ -843,6 +841,9 @@

    S-Parameters across different Frequencies +

    Import the generated s-matrix to be used in simphony#

    +

    References#

    MathWorks: What are S-Parameters

    @@ -902,7 +903,6 @@

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