diff --git a/_images/d7a1ebc0245c1cd021c3b83c8290f8dc3a6930dd6487603fa3bce28f13f50f54.png b/_images/d7a1ebc0245c1cd021c3b83c8290f8dc3a6930dd6487603fa3bce28f13f50f54.png deleted file mode 100644 index 1afa30d..0000000 Binary files a/_images/d7a1ebc0245c1cd021c3b83c8290f8dc3a6930dd6487603fa3bce28f13f50f54.png and /dev/null differ diff --git a/_sources/pages/scattering_parameters.ipynb b/_sources/pages/scattering_parameters.ipynb index 41c17b4..2fd48d2 100644 --- a/_sources/pages/scattering_parameters.ipynb +++ b/_sources/pages/scattering_parameters.ipynb @@ -76,20 +76,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Imports\n", "import meep as mp \n", @@ -100,7 +89,7 @@ "from gplugins.gmeep.get_meep_geometry import get_meep_geometry_from_component\n", "from gdsfactory.read import import_gds\n", "import gdsfactory as gf\n", - "mp.verbosity(1)" + "mp.verbosity(0)" ] }, { @@ -113,11 +102,11 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "res = 20 # the resolution of the simulation in pixels/um\n", + "res = 40 # the resolution of the simulation in pixels/um\n", "sim_is_3D = False # Turn this to false for a 2D simulation\n", "\n", "pwd = Path(os.path.abspath(''))\n", @@ -161,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -181,12 +170,14 @@ "mmi_comp = import_gds(gds_file)\n", "geometry = get_meep_geometry_from_component(mmi_comp, is_3d=sim_is_3D, wavelength=lcen, layer_stack=layer_stack)\n", "# Use this to modify the material of the loaded geometry if needed.\n", - "# geometry = [mp.Prism(geom.vertices, geom.height, geom.axis, geom.center, material=mp.Medium(index=3.45)) for geom in geometry]" + "# geometry = [mp.Prism(geom.vertices, geom.height, geom.axis, geom.center, material=mp.Medium(index=3.45)) for geom in geometry]\n", + "mmi_comp.plot()\n", + "plt.show()" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -208,8 +199,8 @@ "\n", "port1 = mp.Volume(center=mp.Vector3(-port_xdisp,-port_ydisp,0), size=port_size)\n", "port2 = mp.Volume(center=mp.Vector3(-port_xdisp,port_ydisp,0), size=port_size)\n", - "port3 = mp.Volume(center=mp.Vector3(port_xdisp,port_ydisp,0), size=port_size)\n", - "port4 = mp.Volume(center=mp.Vector3(port_xdisp,-port_ydisp,0), size=port_size)\n", + "port3 = mp.Volume(center=mp.Vector3(port_xdisp,-port_ydisp,0), size=port_size)\n", + "port4 = mp.Volume(center=mp.Vector3(port_xdisp,port_ydisp,0), size=port_size)\n", "source1 = mp.Volume(center=port1.center-mp.Vector3(x=0.5),size=port_size)\n", "source2 = mp.Volume(center=port4.center+mp.Vector3(x=0.5), size=port_size)" ] @@ -228,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -251,8 +242,7 @@ " sources = sources, # The sources\n", " geometry = geometry, # The geometry\n", " default_material=SiO2\n", - ")\n", - "sim.init_sim()" + ")" ] }, { @@ -267,103 +257,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "tags": [ "hide-output" ] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " prism, center = (-7.75,-0.625,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (-2.75,-1.125,0)\n", - " (-12.75,-0.875,0)\n", - " (-12.75,-0.375,0)\n", - " (-2.75,-0.125,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n", - " prism, center = (-7.75,0.625,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (-2.75,0.125,0)\n", - " (-12.75,0.375,0)\n", - " (-12.75,0.875,0)\n", - " (-2.75,1.125,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n", - " prism, center = (7.75,0.625,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (2.75,0.125,0)\n", - " (2.75,1.125,0)\n", - " (12.75,0.875,0)\n", - " (12.75,0.375,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n", - " prism, center = (7.75,-0.625,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (2.75,-1.125,0)\n", - " (2.75,-0.125,0)\n", - " (12.75,-0.375,0)\n", - " (12.75,-0.875,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n", - " prism, center = (0,0,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (-2.75,-1.25,0)\n", - " (-2.75,1.25,0)\n", - " (2.75,1.25,0)\n", - " (2.75,-1.25,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n", - " prism, center = (15.25,-0.625,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (12.75,-0.875,0)\n", - " (12.75,-0.375,0)\n", - " (17.75,-0.375,0)\n", - " (17.75,-0.875,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n", - " prism, center = (15.25,0.625,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (12.75,0.375,0)\n", - " (12.75,0.875,0)\n", - " (17.75,0.875,0)\n", - " (17.75,0.375,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n", - " prism, center = (-15.25,0.625,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (-12.75,0.875,0)\n", - " (-12.75,0.375,0)\n", - " (-17.75,0.375,0)\n", - " (-17.75,0.875,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n", - " prism, center = (-15.25,-0.625,5e+19)\n", - " height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:\n", - " (-12.75,-0.375,0)\n", - " (-12.75,-0.875,0)\n", - " (-17.75,-0.875,0)\n", - " (-17.75,-0.375,0)\n", - " dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Adds mode monitors at each of the ports to track the energy that goes in or out\n", "\n", @@ -435,7 +335,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Just for fun, we'll also compute and print the transmittance through each port and the total insertion loss. We won't do this with the other ports as inputs, but it's a good exercise here. " + "We'll also compute and print the transmittance through each port and the total insertion loss. We won't do this with the other ports as inputs, but it's a good exercise here. " ] }, { @@ -445,10 +345,10 @@ "outputs": [], "source": [ "# Calculates the transmittance based off of the S parameters\n", - "port1_trans = abs(port1_coeff) ** 2 / abs(input_coeff) ** 2\n", - "port2_trans = abs(port2_coeff) ** 2 / abs(input_coeff) ** 2\n", - "port3_trans = abs(port3_coeff) ** 2 / abs(input_coeff) ** 2\n", - "port4_trans = abs(port4_coeff) ** 2 / abs(input_coeff) ** 2\n", + "port1_trans = abs(port1_coeff) ** 2\n", + "port2_trans = abs(port2_coeff) ** 2\n", + "port3_trans = abs(port3_coeff) ** 2\n", + "port4_trans = abs(port4_coeff) ** 2\n", "\n", "# Calculates the Insertion loss as a percent and in dB\n", "insertionLoss = 1-(port2_trans + port3_trans + port4_trans)\n", @@ -456,8 +356,8 @@ "\n", "# Prints the Transmittance\n", "print(\"\\n-----------------------------------------------------------------\\n\")\n", - "print(\"Transmittance/Reflectance: Port1: {:.6f}% Port2: {:.6f}%, Port3: {:.6f}%, Port4: {:.6f}%\".format(port1_trans*100, port2_trans*100, port3_trans*100, port4_trans*100))\n", - "print(\"Insertion Loss: {:.6f}% -> {:.6f}db\".format(insertionLoss*100, insertionLoss_dB))\n", + "print(f\"Transmittance/Reflectance: Port1: {port1_trans*100:.4f}% Port2: {port2_trans*100:.4f}%, Port3: {port3_trans*100:.4f}%, Port4: {port4_trans*100:.4f}%\")\n", + "print(f\"Insertion Loss: {insertionLoss*100:.4f}% = {insertionLoss_dB:.4f}db\")\n", "print(\"\\n-----------------------------------------------------------------\\n\")\n", "\n" ] @@ -467,7 +367,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We find that this component is actually terrible and would never be used in an actual photonic design. Almost a third of the light is lost, and the light that isn't lost is not split in any specific ratio. Fortunately, it was never meant to be used, and just exists as an example of the basic shape of an mmi.\n", + "We find that this component is actually terrible and would never be used in an actual photonic design. Over a third of the light is lost, and the light that isn't lost is not split in any specific ratio. Fortunately, it was never meant to be used, and just exists as an example of the basic shape of an mmi.\n", "\n", "Finally, before we move on to the next step, we'll run the simulation again and create a plot of the steady state of the mmi. " ] @@ -485,8 +385,7 @@ "sources = [\n", " mp.EigenModeSource(\n", " src=mp.ContinuousSource(fcen, fwidth=df),\n", - " size=port1.size,\n", - " center=port1.center,\n", + " volume=port1,\n", " eig_band=1,\n", " eig_parity=mp.EVEN_Y + mp.ODD_Z,\n", " eig_match_freq=True,\n", @@ -496,16 +395,14 @@ "# Sets up the simulation again\n", "sim = mp.Simulation(\n", " resolution=res,\n", - " cell_size=cell.size,\n", + " cell_size=cell,\n", " boundary_layers=[mp.PML(dpml)],\n", " sources=sources,\n", " geometry=geometry,\n", ")\n", "\n", "# Runs the simulation for a long time to ensure that the fields have reached a steady state\n", - "sim.run(\n", - " until=300\n", - ")\n", + "sim.run(until=300)\n", "\n", "# Gets data\n", "eps_data = sim.get_epsilon() # Epsilon Data / The Geometry / An array that holds what materials are where\n", @@ -529,7 +426,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3: Run the same simulation for each of the other ports\n", + "### Step 3: Run the same simulation for each port\n", "\n", "Now, all that's left to do is to run the simulation for each source. Here, I'll use a for loop to run the other three simulations. We could have done this for all four, but hopefully this makes the code make more sense. \n", "\n", @@ -547,37 +444,42 @@ "\n", "# Set up the rest of the sources for the simulation.\n", "sources = [\n", - " mp.EigenModeSource(\n", + " mp.EigenModeSource(\n", + " src = mp.GaussianSource(fcen, fwidth=df),\n", + " size=port1.size, # Here we input the geometry for our first source\n", + " center=port1.center + mp.Vector3(-0.5,0,0),\n", + " eig_band=1,\n", + " eig_parity = mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z,\n", + " eig_match_freq = True,\n", + " ),\n", + " mp.EigenModeSource(\n", " src = mp.GaussianSource(fcen, fwidth=df),\n", " size=port2.size, # Here we input the geometry for our first source\n", - " center=port2.center,\n", + " center=port2.center + mp.Vector3(-0.5,0,0),\n", " eig_band=1,\n", " eig_parity = mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z,\n", " eig_match_freq = True,\n", - "\n", - " ),\n", - " mp.EigenModeSource(\n", + " ),\n", + " mp.EigenModeSource(\n", " src = mp.GaussianSource(fcen, fwidth=df),\n", " size=port3.size, # Here we input the geometry for our first source\n", - " center=port3.center,\n", + " center=port3.center + mp.Vector3(0.5,0,0),\n", " eig_band=1,\n", " eig_parity = mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z,\n", " eig_match_freq = True,\n", " eig_kpoint = mp.Vector3(-1,0,0),\n", " direction = mp.NO_DIRECTION\n", - "\n", - " ),\n", - " mp.EigenModeSource(\n", + " ),\n", + " mp.EigenModeSource(\n", " src = mp.GaussianSource(fcen, fwidth=df),\n", " size=port4.size, # Here we input the geometry for our first source\n", - " center=port4.center,\n", + " center=port4.center + mp.Vector3(0.5,0,0),\n", " eig_band=1,\n", " eig_parity = mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z,\n", " eig_match_freq = True,\n", " eig_kpoint = mp.Vector3(-1,0,0),\n", " direction = mp.NO_DIRECTION\n", - "\n", - " )\n", + " )\n", "]" ] }, @@ -587,45 +489,43 @@ "metadata": {}, "outputs": [], "source": [ + "for i in range(n_ports) :\n", "\n", - "\n", - "for i in range(n_ports-1) :\n", - "\n", - " source = sources[i:i+1]\n", + " source = sources[i]\n", "\n", " sim.reset_meep() # resets everything\n", "\n", " # Create Simulation\n", " sim = mp.Simulation(\n", " resolution=res, # The resolution, defined further up\n", - " cell_size=cell.size, # The cell size, taken from the gds\n", + " cell_size=cell, # The cell size, taken from the gds\n", " boundary_layers=[mp.PML(dpml)], # the perfectly matched layers, with a diameter as defined above\n", - " sources = source, # The source(s) we just defined\n", + " sources = [source], # The source(s) we just defined\n", " geometry = geometry # The geometry, from above\n", " )\n", " \n", " # Adds mode monitors at each of the ports to track the energy that goes in or out\n", - " mode_monitors = []\n", - " mode_monitors.append(sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port1)))\n", - " mode_monitors.append(sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port2)))\n", - " mode_monitors.append(sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port3)))\n", - " mode_monitors.append(sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port4)))\n", + " mode_monitor_1 = sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port1))\n", + " mode_monitor_2 = sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port2))\n", + " mode_monitor_3 = sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port3))\n", + " mode_monitor_4 = sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port4))\n", "\n", " # Runs the simulation\n", - " sim.run(until_after_sources=100)\n", + " sim.run(until_after_sources=mp.stop_when_dft_decayed)\n", "\n", " #############################################################\n", " # Finds the S parameters\n", - " port1_coeff = sim.get_eigenmode_coefficients(mode_monitors[0], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][0]]\n", - " port2_coeff = sim.get_eigenmode_coefficients(mode_monitors[1], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][1]]\n", - " port3_coeff = sim.get_eigenmode_coefficients(mode_monitors[2], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][2]]\n", - " port4_coeff = sim.get_eigenmode_coefficients(mode_monitors[3], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][3]]\n", - " input_coeff = sim.get_eigenmode_coefficients(mode_monitors[i+1], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][4]] # This is the total amount of light that entered the devie\n", + " mode_monitors = [mode_monitor_1, mode_monitor_2, mode_monitor_3, mode_monitor_4]\n", + " norm_mode = sim.get_eigenmode_coefficients(mode_monitors[i], [1], eig_parity=mode_parity)\n", + " norm_mode_coeff = norm_mode.alpha[0,0,0] if i < 2 else norm_mode.alpha[0,0,1]\n", + " port1_coeff = sim.get_eigenmode_coefficients(mode_monitor_1, [1], eig_parity=mode_parity).alpha[0, 0, 1] / norm_mode_coeff\n", + " port2_coeff = sim.get_eigenmode_coefficients(mode_monitor_2, [1], eig_parity=mode_parity).alpha[0, 0, 1] / norm_mode_coeff\n", + " port3_coeff = sim.get_eigenmode_coefficients(mode_monitor_3, [1], eig_parity=mode_parity).alpha[0, 0, 0] / norm_mode_coeff\n", + " port4_coeff = sim.get_eigenmode_coefficients(mode_monitor_4, [1], eig_parity=mode_parity).alpha[0, 0, 0] / norm_mode_coeff # This is the total amount of light that entered the devie\n", "\n", " # Store the S parameters in s_params\n", - " index = 1+i \n", - " s_params[index] = [port1_coeff, port2_coeff, port3_coeff, port4_coeff]\n", - " input_params[index] = input_coeff" + " index = i\n", + " s_params[index] = [port1_coeff, port2_coeff, port3_coeff, port4_coeff]" ] }, { @@ -636,23 +536,15 @@ "source": [ "print(\"S-Params:\")\n", "for i in range(n_ports):\n", - " print(f\"S{i+1}1: {s_params[i][0]}\\tS{i+1}2: {s_params[i][1]}\\tS{i+1}3: {s_params[i][2]}\\tS{i+1}4: {s_params[i][3]}\")\n", - "\n", - "print(\"Input S-Params\")\n", - "print(f\"S1: {input_params[0]}\\tS2: {input_params[1]}\\tS3: {input_params[2]}\\tS4: {input_params[3]}\")\n", - "\n", - "\n", + " print(f\"S{i+1}1: {s_params[i][0]:.4f}\\tS{i+1}2: {s_params[i][1]:.4f}\\tS{i+1}3: {s_params[i][2]:.4f}\\tS{i+1}4: {s_params[i][3]:.4f}\")\n", "\n", "print(\"Transmission:\")\n", "for i in range(n_ports):\n", - " input_power = abs(input_params[i])**2\n", - " trans1 = abs(s_params[i][0])**2 / input_power * 100\n", - " trans2 = abs(s_params[i][1])**2 / input_power * 100\n", - " trans3 = abs(s_params[i][2])**2 / input_power * 100\n", - " trans4 = abs(s_params[i][3])**2 / input_power * 100\n", - " print(\"{:.6f}\\t{:.6f}\\t{:.6f}\\t{:.6f}\".format(trans1, trans2, trans3, trans4))\n", - "\n", - "\n" + " trans1 = abs(s_params[i][0])**2 * 100\n", + " trans2 = abs(s_params[i][1])**2 * 100\n", + " trans3 = abs(s_params[i][2])**2 * 100\n", + " trans4 = abs(s_params[i][3])**2 * 100\n", + " print(f\"{trans1:.6} %\\t{trans2:.6} %\\t{trans3:.6} %\\t{trans4:.6} %\")\n" ] }, { @@ -670,14 +562,58 @@ "source": [ "### S-Parameters across different Frequencies\n", "\n", - "For most applications, you'll want to know the S-parameters across a range of frequencies. This can be done using the simulations created here. When we get the S-parameters using the sim.get_eigenmode_coefficients().alpha[] we get a matrix. The first entry in the matrix specifies the wavelength. For brevities sake, we won't show that here, but a good exercise would be to find and plot the s-paramters across a range of frequencies for the component shown here. " + "For most applications, you'll want to know the S-parameters across a range of frequencies. This can be done using the simulations created here. When we get the S-parameters using the sim.get_eigenmode_coefficients().alpha[] we get a matrix. The first entry in the matrix specifies the wavelength. For brevity's sake, we won't show that here, but a good exercise would be to find and plot the s-paramters across a range of frequencies for the component shown here.\n", + "\n", + "Multiple frequencies can be simulated at once by setting the second and third arguments in the mode monitors to the desired frequency width and number of points, e.g.\n", + "\n", + "```\n", + "sim.add_mode_monitor(fcen, df, n_freq_points, mp.ModeRegion(volume=port))\n", + "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Import the generated s-matrix to be used in simphony" + "## Using `gplugins.gmeep.write_sparameters_meep`\n", + "\n", + "An alternative method to the one outlined above is using the gplugins package. The `write_sparameters_meep` function can automate the entire process that we outlined above, but it is less customizable in exchange for its ease of use. This is how we could use it to find the s-parameters for the 2x2 mmi.\n", + "\n", + "NOTE: Currently bugged, will be fixed soon." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from gplugins.gmeep import write_sparameters_meep\n", + "\n", + "port_xpos = 17.75\n", + "port_ypos = (0.75 + 0.5) / 2\n", + "\n", + "mmi_comp = import_gds(gds_file)\n", + "mmi_comp.add_port(name=\"o1\", center=[-port_xpos, -port_ypos], width=port_ysize, orientation=0, cross_section=gf.cross_section.cross_section(width=port_ysize, layer='WG'))\n", + "mmi_comp.add_port(name=\"o2\", center=[-port_xpos, port_ypos], width=port_ysize, orientation=0, cross_section=gf.cross_section.cross_section(width=port_ysize, layer='WG'))\n", + "mmi_comp.add_port(name=\"o3\", center=[port_xpos, -port_ypos], width=port_ysize, orientation=180, cross_section=gf.cross_section.cross_section(width=port_ysize, layer='WG'))\n", + "mmi_comp.add_port(name=\"o4\", center=[port_xpos, port_ypos], width=port_ysize, orientation=180, cross_section=gf.cross_section.cross_section(width=port_ysize, layer='WG'))\n", + "\n", + "sparams = write_sparameters_meep(\n", + " component=mmi_comp,\n", + " port_margin=2,\n", + " port_source_offset=0.5,\n", + " run=False,\n", + " xmargin=2,\n", + " ymargin=2,\n", + " zmargin=2 if sim_is_3D else 0,\n", + " is_3d=sim_is_3D,\n", + " tpml=1,\n", + " clad_material=\"SiO2\",\n", + " wavelength_start=1.5,\n", + " wavelength_stop=1.6,\n", + " wavelength_points=100\n", + ")" ] }, { diff --git a/pages/directional_couplers.html b/pages/directional_couplers.html index aa30939..cf89c42 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 5b42710..19fcf33 100644 --- a/pages/scattering_parameters.html +++ b/pages/scattering_parameters.html @@ -318,11 +318,11 @@

Contents

  • How to find S-Parameters for an arbitrary device using a meep simulation
  • -
  • Import the generated s-matrix to be used in simphony
  • +
  • Using gplugins.gmeep.write_sparameters_meep
  • References
  • @@ -375,12 +375,7 @@

    Step 1 - Import Geometryfrom gplugins.gmeep.get_meep_geometry import get_meep_geometry_from_component from gdsfactory.read import import_gds import gdsfactory as gf -mp.verbosity(1) -

    - - -
    -
    3
    +mp.verbosity(0)
     
    @@ -388,7 +383,7 @@

    Step 1 - Import GeometryNext we’ll define a whole bunch of variables so our code is more readable down the line.

    @@ -511,7 +507,7 @@

    Step 2: Run simulation for a single source -
    +
    # Adds mode monitors at each of the ports to track the energy that goes in or out
     
     mode_monitor_1 = sim.add_mode_monitor(fcen, 0, 1, mp.ModeRegion(volume=port1))
    @@ -525,83 +521,6 @@ 

    Step 2: Run simulation for a single source - - -Hide code cell output - -
    -
         prism, center = (-7.75,-0.625,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (-2.75,-1.125,0)
    -          (-12.75,-0.875,0)
    -          (-12.75,-0.375,0)
    -          (-2.75,-0.125,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -     prism, center = (-7.75,0.625,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (-2.75,0.125,0)
    -          (-12.75,0.375,0)
    -          (-12.75,0.875,0)
    -          (-2.75,1.125,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -     prism, center = (7.75,0.625,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (2.75,0.125,0)
    -          (2.75,1.125,0)
    -          (12.75,0.875,0)
    -          (12.75,0.375,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -     prism, center = (7.75,-0.625,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (2.75,-1.125,0)
    -          (2.75,-0.125,0)
    -          (12.75,-0.375,0)
    -          (12.75,-0.875,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -     prism, center = (0,0,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (-2.75,-1.25,0)
    -          (-2.75,1.25,0)
    -          (2.75,1.25,0)
    -          (2.75,-1.25,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -     prism, center = (15.25,-0.625,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (12.75,-0.875,0)
    -          (12.75,-0.375,0)
    -          (17.75,-0.375,0)
    -          (17.75,-0.875,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -     prism, center = (15.25,0.625,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (12.75,0.375,0)
    -          (12.75,0.875,0)
    -          (17.75,0.875,0)
    -          (17.75,0.375,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -     prism, center = (-15.25,0.625,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (-12.75,0.875,0)
    -          (-12.75,0.375,0)
    -          (-17.75,0.375,0)
    -          (-17.75,0.875,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -     prism, center = (-15.25,-0.625,5e+19)
    -          height 1e+20, axis (0,0,1), sidewall angle: 0 radians, 4 vertices:
    -          (-12.75,-0.375,0)
    -          (-12.75,-0.875,0)
    -          (-17.75,-0.875,0)
    -          (-17.75,-0.375,0)
    -          dielectric constant epsilon diagonal = (12.0946,12.0946,12.0946)
    -
    -
    -
    <Axes: xlabel='X', ylabel='Y'>
    -
    -
    -../_images/d7a1ebc0245c1cd021c3b83c8290f8dc3a6930dd6487603fa3bce28f13f50f54.png -
    -

    As we see from the output of sim.plot2D, our simulation is set up correctly. The red line is our source, the blue are our 4 monitors. We are ready to run the simulation! Actually running the simulation is the most computationally intense part of this, so it may take some time if you have a high resolution and are running a 3D simulation. The until_after_sources=mp.stop_when_dft_decayed parameter for sim.run() means meep will start checking how much the cumulative Fourier Transform of all the fields in the simulation changes only after the sources have turned off. Then, it will wait until the DFT’s change over one time step is below a certain threshold (1e-11 relative change by default), at which point it will stop the simulation

    -

    We find that this component is actually terrible and would never be used in an actual photonic design. Almost a third of the light is lost, and the light that isn’t lost is not split in any specific ratio. Fortunately, it was never meant to be used, and just exists as an example of the basic shape of an mmi.

    +

    We find that this component is actually terrible and would never be used in an actual photonic design. Over a third of the light is lost, and the light that isn’t lost is not split in any specific ratio. Fortunately, it was never meant to be used, and just exists as an example of the basic shape of an mmi.

    Finally, before we move on to the next step, we’ll run the simulation again and create a plot of the steady state of the mmi.

    @@ -666,8 +585,7 @@

    Step 2: Run simulation for a single sourcesources = [ mp.EigenModeSource( src=mp.ContinuousSource(fcen, fwidth=df), - size=port1.size, - center=port1.center, + volume=port1, eig_band=1, eig_parity=mp.EVEN_Y + mp.ODD_Z, eig_match_freq=True, @@ -677,16 +595,14 @@

    Step 2: Run simulation for a single source# Sets up the simulation again sim = mp.Simulation( resolution=res, - cell_size=cell.size, + cell_size=cell, boundary_layers=[mp.PML(dpml)], sources=sources, geometry=geometry, ) # Runs the simulation for a long time to ensure that the fields have reached a steady state -sim.run( - until=300 -) +sim.run(until=300) # Gets data eps_data = sim.get_epsilon() # Epsilon Data / The Geometry / An array that holds what materials are where @@ -708,8 +624,8 @@

    Step 2: Run simulation for a single source -

    Step 3: Run the same simulation for each of the other ports#

    +
    +

    Step 3: Run the same simulation for each port#

    Now, all that’s left to do is to run the simulation for each source. Here, I’ll use a for loop to run the other three simulations. We could have done this for all four, but hopefully this makes the code make more sense.

    For the sources going into port 3 and 4, we have to specify that the light will be propagating backwards. Below, I’ve done this by setting the direction to mp.NO_DIRECTION and using the eig_kpoint parameter to specify the direction. You can use this same method to launch sources in any direction.

    It should be noted, that since the 2x2 mmi we are using is symmetrical across both the x and y axies, the S-parameters should be the same for all of the other ports. But for the sake of demonstration, we’ll simulate all of them. Then at then end we can check to see the the S-parameters are actually the same.

    @@ -717,37 +633,42 @@

    Step 3: Run the same simulation for each of the other ports
    # Set up the rest of the sources for the simulation.
     sources = [
    -    mp.EigenModeSource(
    +        mp.EigenModeSource(
    +            src = mp.GaussianSource(fcen, fwidth=df),
    +            size=port1.size, # Here we input the geometry for our first source
    +            center=port1.center + mp.Vector3(-0.5,0,0),
    +            eig_band=1,
    +            eig_parity = mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z,
    +            eig_match_freq = True,
    +        ),
    +        mp.EigenModeSource(
                 src = mp.GaussianSource(fcen, fwidth=df),
                 size=port2.size, # Here we input the geometry for our first source
    -            center=port2.center,
    +            center=port2.center + mp.Vector3(-0.5,0,0),
                 eig_band=1,
                 eig_parity = mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z,
                 eig_match_freq = True,
    -
    -    ),
    -    mp.EigenModeSource(
    +        ),
    +        mp.EigenModeSource(
                 src = mp.GaussianSource(fcen, fwidth=df),
                 size=port3.size, # Here we input the geometry for our first source
    -            center=port3.center,
    +            center=port3.center + mp.Vector3(0.5,0,0),
                 eig_band=1,
                 eig_parity = mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z,
                 eig_match_freq = True,
                 eig_kpoint = mp.Vector3(-1,0,0),
                 direction = mp.NO_DIRECTION
    -
    -    ),
    -    mp.EigenModeSource(
    +        ),
    +        mp.EigenModeSource(
                 src = mp.GaussianSource(fcen, fwidth=df),
                 size=port4.size, # Here we input the geometry for our first source
    -            center=port4.center,
    +            center=port4.center + mp.Vector3(0.5,0,0),
                 eig_band=1,
                 eig_parity = mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z,
                 eig_match_freq = True,
                 eig_kpoint = mp.Vector3(-1,0,0),
                 direction = mp.NO_DIRECTION
    -
    -    )
    +        )
     ]
     
    @@ -755,43 +676,43 @@

    Step 3: Run the same simulation for each of the other ports
    -
    for i in range(n_ports-1) :
    +
    for i in range(n_ports) :
     
    -    source = sources[i:i+1]
    +    source = sources[i]
     
         sim.reset_meep() # resets everything
     
         # Create Simulation
         sim = mp.Simulation(
         resolution=res, # The resolution, defined further up
    -    cell_size=cell.size, # The cell size, taken from the gds
    +    cell_size=cell, # The cell size, taken from the gds
         boundary_layers=[mp.PML(dpml)], # the perfectly matched layers, with a diameter as defined above
    -    sources = source, # The source(s) we just defined
    +    sources = [source], # The source(s) we just defined
         geometry = geometry # The geometry, from above
         )
         
         # Adds mode monitors at each of the ports to track the energy that goes in or out
    -    mode_monitors = []
    -    mode_monitors.append(sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port1)))
    -    mode_monitors.append(sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port2)))
    -    mode_monitors.append(sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port3)))
    -    mode_monitors.append(sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port4)))
    +    mode_monitor_1 = sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port1))
    +    mode_monitor_2 = sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port2))
    +    mode_monitor_3 = sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port3))
    +    mode_monitor_4 = sim.add_mode_monitor(fcen, 0,1, mp.ModeRegion(volume=port4))
     
         # Runs the simulation
    -    sim.run(until_after_sources=100)
    +    sim.run(until_after_sources=mp.stop_when_dft_decayed)
     
         #############################################################
         # Finds the S parameters
    -    port1_coeff = sim.get_eigenmode_coefficients(mode_monitors[0], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][0]]
    -    port2_coeff = sim.get_eigenmode_coefficients(mode_monitors[1], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][1]]
    -    port3_coeff = sim.get_eigenmode_coefficients(mode_monitors[2], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][2]]
    -    port4_coeff = sim.get_eigenmode_coefficients(mode_monitors[3], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][3]]
    -    input_coeff = sim.get_eigenmode_coefficients(mode_monitors[i+1], [1], eig_parity=mp.NO_PARITY if sim_is_3D else mp.EVEN_Y + mp.ODD_Z).alpha[0, 0, alphas[i+1][4]] # This is the total amount of light that entered the devie
    +    mode_monitors = [mode_monitor_1, mode_monitor_2, mode_monitor_3, mode_monitor_4]
    +    norm_mode = sim.get_eigenmode_coefficients(mode_monitors[i], [1], eig_parity=mode_parity)
    +    norm_mode_coeff = norm_mode.alpha[0,0,0] if i < 2 else norm_mode.alpha[0,0,1]
    +    port1_coeff = sim.get_eigenmode_coefficients(mode_monitor_1, [1], eig_parity=mode_parity).alpha[0, 0, 1] / norm_mode_coeff
    +    port2_coeff = sim.get_eigenmode_coefficients(mode_monitor_2, [1], eig_parity=mode_parity).alpha[0, 0, 1] / norm_mode_coeff
    +    port3_coeff = sim.get_eigenmode_coefficients(mode_monitor_3, [1], eig_parity=mode_parity).alpha[0, 0, 0] / norm_mode_coeff
    +    port4_coeff = sim.get_eigenmode_coefficients(mode_monitor_4, [1], eig_parity=mode_parity).alpha[0, 0, 0] / norm_mode_coeff # This is the total amount of light that entered the devie
     
         # Store the S parameters in s_params
    -    index = 1+i 
    +    index = i
         s_params[index] = [port1_coeff, port2_coeff, port3_coeff, port4_coeff]
    -    input_params[index] = input_coeff
     
    @@ -800,21 +721,15 @@

    Step 3: Run the same simulation for each of the other ports
    print("S-Params:")
     for i in range(n_ports):
    -    print(f"S{i+1}1: {s_params[i][0]}\tS{i+1}2: {s_params[i][1]}\tS{i+1}3: {s_params[i][2]}\tS{i+1}4: {s_params[i][3]}")
    -
    -print("Input S-Params")
    -print(f"S1: {input_params[0]}\tS2: {input_params[1]}\tS3: {input_params[2]}\tS4: {input_params[3]}")
    -
    -
    +    print(f"S{i+1}1: {s_params[i][0]:.4f}\tS{i+1}2: {s_params[i][1]:.4f}\tS{i+1}3: {s_params[i][2]:.4f}\tS{i+1}4: {s_params[i][3]:.4f}")
     
     print("Transmission:")
     for i in range(n_ports):
    -    input_power = abs(input_params[i])**2
    -    trans1 = abs(s_params[i][0])**2 / input_power * 100
    -    trans2 = abs(s_params[i][1])**2 / input_power * 100
    -    trans3 = abs(s_params[i][2])**2 / input_power * 100
    -    trans4 = abs(s_params[i][3])**2 / input_power * 100
    -    print("{:.6f}\t{:.6f}\t{:.6f}\t{:.6f}".format(trans1, trans2, trans3, trans4))
    +    trans1 = abs(s_params[i][0])**2 * 100
    +    trans2 = abs(s_params[i][1])**2 * 100
    +    trans3 = abs(s_params[i][2])**2 * 100
    +    trans4 = abs(s_params[i][3])**2 * 100
    +    print(f"{trans1:.6} %\t{trans2:.6} %\t{trans3:.6} %\t{trans4:.6} %")
     

    @@ -823,11 +738,49 @@

    Step 3: Run the same simulation for each of the other ports

    S-Parameters across different Frequencies#

    -

    For most applications, you’ll want to know the S-parameters across a range of frequencies. This can be done using the simulations created here. When we get the S-parameters using the sim.get_eigenmode_coefficients().alpha[] we get a matrix. The first entry in the matrix specifies the wavelength. For brevities sake, we won’t show that here, but a good exercise would be to find and plot the s-paramters across a range of frequencies for the component shown here.

    +

    For most applications, you’ll want to know the S-parameters across a range of frequencies. This can be done using the simulations created here. When we get the S-parameters using the sim.get_eigenmode_coefficients().alpha[] we get a matrix. The first entry in the matrix specifies the wavelength. For brevity’s sake, we won’t show that here, but a good exercise would be to find and plot the s-paramters across a range of frequencies for the component shown here.

    +

    Multiple frequencies can be simulated at once by setting the second and third arguments in the mode monitors to the desired frequency width and number of points, e.g.

    +
    sim.add_mode_monitor(fcen, df, n_freq_points, mp.ModeRegion(volume=port))
    +
    +

    -
    -

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

    +
    +

    Using gplugins.gmeep.write_sparameters_meep#

    +

    An alternative method to the one outlined above is using the gplugins package. The write_sparameters_meep function can automate the entire process that we outlined above, but it is less customizable in exchange for its ease of use. This is how we could use it to find the s-parameters for the 2x2 mmi.

    +

    NOTE: Currently bugged, will be fixed soon.

    +
    +
    +
    from gplugins.gmeep import write_sparameters_meep
    +
    +port_xpos = 17.75
    +port_ypos = (0.75 + 0.5) / 2
    +
    +mmi_comp = import_gds(gds_file)
    +mmi_comp.add_port(name="o1", center=[-port_xpos, -port_ypos], width=port_ysize, orientation=0, cross_section=gf.cross_section.cross_section(width=port_ysize, layer='WG'))
    +mmi_comp.add_port(name="o2", center=[-port_xpos, port_ypos], width=port_ysize, orientation=0, cross_section=gf.cross_section.cross_section(width=port_ysize, layer='WG'))
    +mmi_comp.add_port(name="o3", center=[port_xpos, -port_ypos], width=port_ysize, orientation=180, cross_section=gf.cross_section.cross_section(width=port_ysize, layer='WG'))
    +mmi_comp.add_port(name="o4", center=[port_xpos, port_ypos], width=port_ysize, orientation=180, cross_section=gf.cross_section.cross_section(width=port_ysize, layer='WG'))
    +
    +sparams = write_sparameters_meep(
    +        component=mmi_comp,
    +        port_margin=2,
    +        port_source_offset=0.5,
    +        run=False,
    +        xmargin=2,
    +        ymargin=2,
    +        zmargin=2 if sim_is_3D else 0,
    +        is_3d=sim_is_3D,
    +        tpml=1,
    +        clad_material="SiO2",
    +        wavelength_start=1.5,
    +        wavelength_stop=1.6,
    +        wavelength_points=100
    +)
    +
    +
    +
    +

    References#

    @@ -891,11 +844,11 @@

    ReferencesHow to find S-Parameters for an arbitrary device using a meep simulation -
  • Import the generated s-matrix to be used in simphony
  • +
  • Using gplugins.gmeep.write_sparameters_meep
  • References
  • diff --git a/searchindex.js b/searchindex.js index 9937a62..85b476e 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], "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, 36, 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, 36], "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, 36], "nm": [3, 14, 18, 22], "ylabel": [3, 8, 36], "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, 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, 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, 36, 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, 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, 41], "gf": [6, 11, 19, 21, 22, 23, 36, 46], "seri": [6, 15, 33], "conveni": [6, 22, 28], "visual": [6, 13, 14, 18, 20, 22, 34, 38, 41], "jupyt": [6, 15, 39], "notebook": [6, 11, 15, 36], "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, 36, 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, 38, 45], "widget": 6, "lowest": [6, 13], "block": [6, 8, 13, 14, 20, 22, 27, 32, 35, 45, 46], "list": [6, 11, 13, 20, 22, 23, 32, 33, 42], "vertic": [6, 20, 23, 32, 36, 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, 36, 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, 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, 36, 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, 42, 43, 44, 46], "core": [6, 8, 11, 18, 34, 36, 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, 36, 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, 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], "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, 36, 46], "move": [6, 12, 19, 36, 45], "come": [6, 8, 11, 24, 31, 34, 35, 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, 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, 36], "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, 43], "fantast": 6, "benefit": [6, 38], "type": [6, 18, 30, 31, 33, 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, 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, 36, 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, 36, 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, 36], "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, 36, 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, "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, 36, 45], "current": [6, 30, 34], "directori": [6, 8, 14, 21, 23, 35], "sometim": [6, 8, 11, 14, 33], "necessari": [6, 11, 13, 33, 34, 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, 36], "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, 36, 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, 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, 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, 40, 41, 42, 44, 46], "refract": [8, 14, 18, 22, 27, 29, 30, 31, 34, 40, 41, 42], "indic": [8, 14, 29, 35, 42, 44], "valu": [8, 11, 18, 22, 23, 33, 34, 36, 41, 44], "rel": [8, 20, 22, 28, 29, 30, 32, 33, 36, 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, 36, 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, 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, 36, 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, 39], "ne": 8, "unit": [8, 29, 30, 35], "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, 36, 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, 36, 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, 36, 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, 36], "439496": 8, "416231": 8, "33": 8, "311196": 8, "023265": 8, "20": [8, 11, 19, 20, 21, 22, 23, 35, 36, 44], "438256": 8, "417123": 8, "36": 8, "672851": 8, "021133": 8, "own": [8, 15, 17, 18, 22, 24, 32, 33, 38], "normal": [8, 14, 36, 45], "constant": [8, 22, 31, 35, 36], "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, 36, 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, 36, 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, 36, 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, 36, 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, 36, 41, 44], "pil": [8, 14, 21, 35], "imag": [8, 14, 22, 35, 46], "glob": [8, 14, 21, 35], "os": [8, 14, 21, 35, 36, 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, 36, 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, 36], "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, 36], "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, 36], "port_symmetri": 11, "assign": [11, 32, 36], "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, 41, 45], "entir": [12, 13, 15, 34, 36], "ecosystem": 12, "host": [12, 15, 33], "servic": 12, "gui": [12, 38], "id": [12, 39], "sprung": 12, "alreadi": [12, 22, 28, 32], "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, 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], "along": [12, 14, 41, 43, 44], "popular": [12, 24, 33, 39, 40], "python": [12, 13, 15, 16, 18, 32, 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, "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, 36], "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], "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, 36], "cell_i": [14, 36], "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, 36, 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, 38], "denot": [14, 21], "effici": [14, 22], "relat": [14, 18, 34, 41], "angl": [14, 22, 34, 36], "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, 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], "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, "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, 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, 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, 36, 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, "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, 36], "height": [20, 22, 36, 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, 36, 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], "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], "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, 36], "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, 36, 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, 36], "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, "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, 36, 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, "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, 36, 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, 36], "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, 36], "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, "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], "adapt": [36, 38], "detector": 36, "monitor": 36, "pictur": [36, 44], "purpl": 36, "pathlib": 36, "get_meep_geometri": 36, "whole": 36, "bunch": 36, "sim_is_3d": 36, "pwd": 36, "abspath": 36, "gds_file": 36, "parent": 36, "lcen": 36, "diamet": 36, "t_oxid": 36, "t_si": 36, "t_air": 36, "78": 36, "cell_thick": 36, "444": 36, "min": 36, "cell_zmax": 36, "cell_zmin": 36, "n_port": 36, "s_param": 36, "mode_par": 36, "no_par": [36, 41], "odd_z": 36, "layerlevel": 36, "layerstack": 36, "dict": 36, "zmin": 36, "mesh_ord": 36, "sidewall_angl": 36, "width_to_z": 36, "layer_stack": 36, "mmi_comp": 36, "is_3d": 36, "geom": 36, "axi": [36, 41, 43, 44, 46], "cell_z": 36, "port_xsiz": 36, "port_ys": 36, "port_zsiz": 36, "port_xdisp": 36, "port_ydisp": 36, "port_siz": 36, "port1": 36, "port2": 36, "port3": 36, "port4": 36, "source1": 36, "source2": 36, "record": 36, "trick": 36, "eig_par": 36, "eig_match_freq": 36, "boundari": [36, 41, 44], "absorb": 36, "init_sim": 36, "fourier": 36, "transform": 36, "energi": 36, "mode_monitor_1": 36, "add_mode_monitor": 36, "moderegion": 36, "mode_monitor_2": 36, "mode_monitor_3": 36, "mode_monitor_4": 36, "plot_plan": 36, "output_plan": 36, "No": 36, "625": 36, "5e": 36, "sidewal": 36, "radian": [36, 44], "875": 36, "diagon": 36, "0946": 36, "correctli": [36, 45], "until_after_sourc": 36, "stop_when_dft_decai": 36, "cumul": 36, "wait": 36, "dft": [36, 46], "threshold": 36, "stop": 36, "retriev": 36, "get_eigenmode_coeffici": 36, "nfreq": 36, "neg": [36, 41], "norm_mode_coeff": 36, "port1_coeff": 36, "port2_coeff": 36, "port3_coeff": 36, "port4_coeff": 36, "nport1": 36, "s11": 36, "6f": 36, "deg": 36, "nport2": 36, "upper": [36, 41, 46], "s12": 36, "nport3": 36, "s13": 36, "nport4": 36, "s14": 36, "fun": 36, "transmitt": 36, "exercis": 36, "port1_tran": 36, "input_coeff": 36, "port2_tran": 36, "port3_tran": 36, "port4_tran": 36, "percent": 36, "insertionloss": 36, "insertionloss_db": 36, "terribl": 36, "third": [36, 41], "fortun": 36, "meant": 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, "hopefulli": 36, "sens": 36, "sake": 36, "rest": [36, 44], "mode_monitor": 36, "devi": 36, "input_param": 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, "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, "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, "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 +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, 36, 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], "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, 36, 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, 36], "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, 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, 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, 36, 41], "other": [6, 11, 12, 13, 17, 18, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 36, 39, 41, 42, 43, 46], "thei": [6, 9, 11, 12, 13, 15, 18, 21, 22, 24, 32, 33, 34, 35, 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, 41], "gf": [6, 11, 19, 21, 22, 23, 36, 46], "seri": [6, 15, 33], "conveni": [6, 22, 28], "visual": [6, 13, 14, 18, 20, 22, 34, 38, 41], "jupyt": [6, 15, 39], "notebook": [6, 11, 15, 36], "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, 36, 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], "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, 38, 45], "widget": 6, "lowest": [6, 13], "block": [6, 8, 13, 14, 20, 22, 27, 32, 35, 45, 46], "list": [6, 11, 13, 20, 22, 23, 32, 33, 42], "vertic": [6, 20, 23, 32, 36, 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, 36, 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, 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, 36, 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, 42, 43, 44, 46], "core": [6, 8, 11, 18, 34, 36, 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, 36, 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, 36, 41, 42], "attach": [6, 11, 13], "your": [6, 8, 9, 11, 12, 13, 14, 16, 18, 20, 22, 23, 24, 28, 32, 33, 35, 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], "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, 36, 46], "move": [6, 12, 19, 36, 45], "come": [6, 8, 11, 24, 31, 34, 35, 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, 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, 36], "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, 43], "fantast": 6, "benefit": [6, 38], "type": [6, 18, 30, 31, 33, 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, 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, 36, 46], "orient": [6, 23, 36, 43], "180": [6, 8, 23, 36], "port_typ": 6, "o2": [6, 11, 19, 21, 22, 36, 46], "add_port": [6, 19, 20, 36], "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, 36, 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, 36, 41, 44, 46], "port_width": 6, "port_cent": 6, "o3": [6, 11, 19, 21, 36, 46], "o4": [6, 11, 19, 21, 36], "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, "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, 36], "write_gd": [6, 19, 20, 23], "suppli": [6, 30], "path": [6, 8, 12, 14, 16, 18, 22, 32, 36, 45], "current": [6, 30, 34, 36], "directori": [6, 8, 14, 21, 23, 35], "sometim": [6, 8, 11, 14, 33], "necessari": [6, 11, 13, 33, 34, 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, 36], "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], "75": [6, 8, 22, 36, 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, 36, 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, 41, 44], "evanesc": [8, 34, 41], "second": [8, 11, 14, 22, 29, 30, 33, 36, 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, 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, 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, 40, 41, 42, 44, 46], "refract": [8, 14, 18, 22, 27, 29, 30, 31, 34, 40, 41, 42], "indic": [8, 14, 29, 35, 42, 44], "valu": [8, 11, 18, 22, 23, 33, 34, 36, 41, 44], "rel": [8, 20, 22, 28, 29, 30, 32, 33, 36, 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, 36, 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, 36], "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, 39], "ne": 8, "unit": [8, 29, 30, 35], "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, 36, 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], "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, 36, 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, 36, 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, 36, 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, 36, 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, 36, 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, 36, 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, 36, 41, 44], "pil": [8, 14, 21, 35], "imag": [8, 14, 22, 35, 46], "glob": [8, 14, 21, 35], "os": [8, 14, 21, 35, 36, 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], "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, 36, 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, 36], "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, 36], "port_source_offset": [11, 21, 36], "port_monitor_offset": [11, 21], "distance_source_to_monitor": [11, 21], "32": [11, 19, 36], "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, 36], "port_symmetri": 11, "assign": [11, 32, 36], "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, 41, 45], "entir": [12, 13, 15, 34, 36], "ecosystem": 12, "host": [12, 15, 33], "servic": 12, "gui": [12, 38], "id": [12, 39], "sprung": 12, "alreadi": [12, 22, 28, 32], "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, 36, 38, 41], "mac": [12, 16, 33, 38], "forc": [12, 24], "wsl": [12, 13, 33, 38], "still": [12, 31, 33, 34, 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], "along": [12, 14, 41, 43, 44], "popular": [12, 24, 33, 39, 40], "python": [12, 13, 15, 16, 18, 32, 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, "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, 36], "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], "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, 36, 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, 36], "cell_i": [14, 36], "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, 36, 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, 38], "denot": [14, 21], "effici": [14, 22], "relat": [14, 18, 34, 41], "angl": [14, 22, 34, 36], "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, 42, 46], "less": [14, 24, 32, 34, 35, 36, 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, 36], "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], "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, 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, "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, 36], "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, 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, 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, "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, 36], "height": [20, 22, 36, 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, 36, 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], "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], "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, 36], "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, 36, 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, 36], "openebl": [23, 28], "tester": 23, "usig": 23, "usernam": [23, 35, 45], "yml": 23, "yournam": 23, "restart": [23, 45], "kernel": 23, "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, 36, 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, 36], "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, 36, 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, "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, 36, 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, 36], "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, 36], "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, "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], "adapt": [36, 38], "detector": 36, "monitor": 36, "pictur": [36, 44], "purpl": 36, "pathlib": 36, "get_meep_geometri": 36, "whole": 36, "bunch": 36, "sim_is_3d": 36, "pwd": 36, "abspath": 36, "gds_file": 36, "parent": 36, "lcen": 36, "diamet": 36, "t_oxid": 36, "t_si": 36, "t_air": 36, "78": 36, "cell_thick": 36, "444": 36, "min": 36, "cell_zmax": 36, "cell_zmin": 36, "n_port": 36, "s_param": 36, "mode_par": 36, "no_par": [36, 41], "odd_z": 36, "layerlevel": 36, "layerstack": 36, "dict": 36, "zmin": 36, "mesh_ord": 36, "sidewall_angl": 36, "width_to_z": 36, "layer_stack": 36, "mmi_comp": 36, "is_3d": 36, "geom": 36, "axi": [36, 41, 43, 44, 46], "cell_z": 36, "port_xsiz": 36, "port_ys": 36, "port_zsiz": 36, "port_xdisp": 36, "port_ydisp": 36, "port_siz": 36, "port1": 36, "port2": 36, "port3": 36, "port4": 36, "source1": 36, "source2": 36, "record": 36, "trick": 36, "eig_par": 36, "eig_match_freq": 36, "boundari": [36, 41, 44], "absorb": 36, "fourier": 36, "transform": 36, "energi": 36, "mode_monitor_1": 36, "add_mode_monitor": 36, "moderegion": 36, "mode_monitor_2": 36, "mode_monitor_3": 36, "mode_monitor_4": 36, "plot_plan": 36, "output_plan": 36, "No": 36, "correctli": [36, 45], "until_after_sourc": 36, "stop_when_dft_decai": 36, "cumul": 36, "wait": 36, "dft": [36, 46], "threshold": 36, "stop": 36, "retriev": 36, "get_eigenmode_coeffici": 36, "nfreq": 36, "neg": [36, 41], "norm_mode_coeff": 36, "port1_coeff": 36, "port2_coeff": 36, "port3_coeff": 36, "port4_coeff": 36, "nport1": 36, "s11": 36, "6f": 36, "deg": 36, "nport2": 36, "upper": [36, 41, 46], "s12": 36, "nport3": 36, "s13": 36, "nport4": 36, "s14": 36, "transmitt": 36, "exercis": 36, "port1_tran": 36, "port2_tran": 36, "port3_tran": 36, "port4_tran": 36, "percent": 36, "insertionloss": 36, "insertionloss_db": 36, "4f": 36, "terribl": 36, "third": [36, 41], "fortun": 36, "meant": 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, "hopefulli": 36, "sens": 36, "sake": 36, "rest": [36, 44], "mode_monitor": 36, "norm_mod": 36, "devi": 36, "ts": 36, "trans1": 36, "trans2": 36, "trans3": 36, "trans4": 36, "expect": [36, 46], "entri": 36, "breviti": 36, "paramt": 36, "n_freq_point": 36, "outlin": 36, "customiz": 36, "exchang": 36, "soon": 36, "port_xpo": 36, "port_ypo": 36, "cross_sect": 36, "sparam": 36, "port_margin": 36, "xmargin": 36, "ymargin": 36, "zmargin": 36, "wavelength_start": 36, "wavelength_stop": 36, "wavelength_point": 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, "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, "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, "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, "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, 36], "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, "gplugin": 36, "write_sparameters_meep": 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