diff --git a/DirectionalCoupler.ipynb b/DirectionalCoupler.ipynb index 331a448f..934ed7f1 100644 --- a/DirectionalCoupler.ipynb +++ b/DirectionalCoupler.ipynb @@ -8,7 +8,7 @@ } }, "source": [ - "# Directional Coupler\n", + "# Directional coupler\n", "\n", "Directional couplers are fundamental components in photonic integrated circuits, enabling efficient splitting and combining of optical signals. By placing two parallel waveguides in close proximity, these passive devices exploit evanescent field coupling to control how light is distributed between channels. It is also possible to control the output by adjusting the relative phase between the inputs, enabling flexible power splitting ratios and switching behavior. Their design and compatibility with silicon-on-insulator technology have made them a popular choice for applications ranging from wavelength-division multiplexing to optical switching and signal processing.\n", "\n", @@ -1597,7 +1597,7 @@ "description": "This notebook demonstrates how to import geometries from a gds file to Tidy3D for FDTD simulations.", "feature_image": "./img/DirectionalCoupler.png", "kernelspec": { - "display_name": "base", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1612,7 +1612,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.0" }, "title": "GDS File Import in Tidy3D | Flexcompute" }, diff --git a/PINMachZenhder.ipynb b/PINMachZehnder.ipynb similarity index 99% rename from PINMachZenhder.ipynb rename to PINMachZehnder.ipynb index f035062c..b46b00e5 100644 --- a/PINMachZenhder.ipynb +++ b/PINMachZehnder.ipynb @@ -14,6 +14,9 @@ "The electrical current flowing through the device during the operation of the PIN diode generates heat, which is most significant during the 'ON' state of the modulation cycle. This heat can significantly affect the performance of the phase shifter. In particular, the carrier mobility (electrons and holes) in the semiconductor is temperature-dependent, which ultimately affects the speed and efficiency of the device.\n", "\n", "By including the thermal effects in the simulation, we can accurately predict the phase shifter's performance under realistic operating conditions and optimize its design for thermal stability.\n", + "\n", + "
\n", + "\n", "## Scope\n", "This notebook demonstrates how to use our multiphysics simulation capabilities to assess the thermal and electric characteristics of a forward-bias PIN phase shifter, which is essential for the operation of devices like the Mach-Zehnder modulator. This notebook will guide the user through setting up the geometry, defining the materials and their physical models, running the simulation, and analyzing the results. For this notebook we use different models for the effective Density of States (DOS) model with temperature dependence.\n", "\n", @@ -370,7 +373,14 @@ "\n", "\n", "def createStructure(pad, rib):\n", - " structures = [contact_bottom, soxbox_structure, cathode_structure, anode_structure, pad, rib]\n", + " structures = [\n", + " contact_bottom,\n", + " soxbox_structure,\n", + " cathode_structure,\n", + " anode_structure,\n", + " pad,\n", + " rib,\n", + " ]\n", " return structures\n", "\n", "\n", @@ -541,11 +551,17 @@ "source": [ "# monitors\n", "charge_global_mnt = td.SteadyFreeCarrierMonitor(\n", - " center=(0, 0, 0), size=(td.inf, td.inf, td.inf), name=\"charge_global_mnt\", unstructured=True\n", + " center=(0, 0, 0),\n", + " size=(td.inf, td.inf, td.inf),\n", + " name=\"charge_global_mnt\",\n", + " unstructured=True,\n", ")\n", "\n", "potential_global_mnt = td.SteadyPotentialMonitor(\n", - " center=(0, 0, 0), size=(td.inf, td.inf, td.inf), name=\"potential_global_mnt\", unstructured=True\n", + " center=(0, 0, 0),\n", + " size=(td.inf, td.inf, td.inf),\n", + " name=\"potential_global_mnt\",\n", + " unstructured=True,\n", ")\n", "\n", "capacitance_global_mnt = td.SteadyCapacitanceMonitor(\n", @@ -589,7 +605,10 @@ " rel_tol=1e-4, abs_tol=1e16, max_iters=400, ramp_up_iters=5\n", ")\n", "analysis_type_iso = td.IsothermalSteadyChargeDCAnalysis(\n", - " tolerance_settings=charge_tolerance, convergence_dv=0.1, fermi_dirac=False, temperature=300\n", + " tolerance_settings=charge_tolerance,\n", + " convergence_dv=0.1,\n", + " fermi_dirac=False,\n", + " temperature=300,\n", ")\n", "analysis_type = td.SteadyChargeDCAnalysis(\n", " tolerance_settings=charge_tolerance, convergence_dv=0.1, fermi_dirac=False\n", @@ -1475,7 +1494,11 @@ "fig, (ax) = plt.subplots(1, 1, figsize=(10, 4))\n", "\n", "contour1 = ax.contourf(\n", - " xi_grid1, yi_grid1, 100 * np.abs((ti_grid_cst - ti_grid1) / ti_grid1), levels=250, cmap=\"turbo\"\n", + " xi_grid1,\n", + " yi_grid1,\n", + " 100 * np.abs((ti_grid_cst - ti_grid1) / ti_grid1),\n", + " levels=250,\n", + " cmap=\"turbo\",\n", ")\n", "ax.set_xlabel(\"x (um)\")\n", "ax.set_ylabel(\"y (um)\")\n", @@ -1544,7 +1567,11 @@ "ax.set_ylabel(\"Current (A)\")\n", "ax.set_title(\"Current-Voltage (IV) Curve\")\n", "ax.legend(\n", - " [\"Non-isothermal - Effective DOS\", \"Non-isothermal - Constant DOS\", \"Isothermal - isothermal\"]\n", + " [\n", + " \"Non-isothermal - Effective DOS\",\n", + " \"Non-isothermal - Constant DOS\",\n", + " \"Isothermal - isothermal\",\n", + " ]\n", ")\n", "ax.grid(True, which=\"both\", ls=\"-\")\n", "plt.show()" @@ -1565,7 +1592,7 @@ ], "metadata": { "applications": [ - "Nanophotonics" + "Active photonic integrated circuit components" ], "description": "This notebook focuses on the forward-bias PIN phase shifter, which is the active component of the Mach-Zehnder modulator.", "feature_image": "./img/pin_phase_shifter.png", @@ -1589,7 +1616,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.11" + "version": "3.11.0" }, "title": "Forward-bias PIN phase shifter with thermal analysis" }, diff --git a/PhaseChangeAntennas.ipynb b/PhaseChangeAntennas.ipynb index b03e55ff..fff6818f 100644 --- a/PhaseChangeAntennas.ipynb +++ b/PhaseChangeAntennas.ipynb @@ -5,7 +5,7 @@ "id": "91b83404", "metadata": {}, "source": [ - "# Phase Change Antennas\n", + "# Phase change plasmonic antennas\n", "\n", "This notebook reproduces the phase behavior of cross-polarized scattering from gold V-shaped antennas on a silicon substrate, as demonstrated in the following paper: \n", "`Yu, N., Genevet, P., Kats, M. A., Aieta, F., Tetienne, J.-P., Capasso, F., & Gaburro, Z. (n.d.). Light Propagation with Phase Discontinuities: Generalized Laws of Reflection and Refraction.` [DOI: 10.1126/science.1210713](https://projects.iq.harvard.edu/files/capasso/files/2011_yu_et_al._science.pdf).\n", @@ -1230,6 +1230,7 @@ ], "metadata": { "applications": [ + "Metamaterials, gratings, and other periodic structures", "Plasmonics" ], "description": "This notebook demonstrates how to simulate phase change behavior in plasmonic V-shaped antennas using Tidy3D.", @@ -1238,7 +1239,7 @@ "Total-field scattered-field" ], "kernelspec": { - "display_name": "base", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -1253,7 +1254,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.0" }, "title": "How to model phase change antennas using Tidy3D | Flexcompute" }, diff --git a/PhotoThermalWaveguides.ipynb b/PhotoThermalWaveguides.ipynb index c2b96123..9bd43f5b 100644 --- a/PhotoThermalWaveguides.ipynb +++ b/PhotoThermalWaveguides.ipynb @@ -171,7 +171,8 @@ " rmin=(wg_signal_x_min, 0.0, -td.inf), rmax=(wg_signal_x_max, wg_height, td.inf)\n", " )\n", " wg_control_box = td.Box.from_bounds(\n", - " rmin=(wg_control_x_min, 0.0, -td.inf), rmax=(wg_control_x_max, wg_height, td.inf)\n", + " rmin=(wg_control_x_min, 0.0, -td.inf),\n", + " rmax=(wg_control_x_max, wg_height, td.inf),\n", " )\n", "\n", " # Slab (below guides)\n", @@ -183,7 +184,11 @@ " )\n", "\n", " # Triangular prism: hypotenuse aligned with z (length) direction\n", - " tri_vertices = [(wg_control_x_min, z_max), (wg_control_x_min, z_min), (wg_control_x_max, z_min)]\n", + " tri_vertices = [\n", + " (wg_control_x_min, z_max),\n", + " (wg_control_x_min, z_min),\n", + " (wg_control_x_max, z_min),\n", + " ]\n", " tri_geom = td.PolySlab(vertices=tri_vertices, axis=1, slab_bounds=(0.0, wg_height))\n", "\n", " slab = td.Structure(geometry=slab_box, medium=Si, name=\"slab\")\n", @@ -195,7 +200,11 @@ " margin_x = max(0.5 * wvl0 + 0.1, 0.5)\n", "\n", " sim_center = (0.5 * (slab_x_max + slab_x_min), 0.5 * (wg_height + slab_y_min), 0.0)\n", - " sim_size = (slab_width + 2 * margin_x, wvl0 + (wg_height - slab_y_min), length + sim_buffer)\n", + " sim_size = (\n", + " slab_width + 2 * margin_x,\n", + " wvl0 + (wg_height - slab_y_min),\n", + " length + sim_buffer,\n", + " )\n", "\n", " tri_min, tri_max = tri.geometry.bounds\n", " tri_center = tuple(0.5 * (a + b) for a, b in zip(tri_min, tri_max))\n", @@ -2143,7 +2152,14 @@ "\n", "phase_shifts = [phase_shift_0p5, phase_shift_1p0, phase_shift_1p5]\n", "\n", - "plt.plot([0.5, 1.0, 1.5], phase_shifts, marker=\"o\", linestyle=\"-\", linewidth=2, color=\"tab:blue\")\n", + "plt.plot(\n", + " [0.5, 1.0, 1.5],\n", + " phase_shifts,\n", + " marker=\"o\",\n", + " linestyle=\"-\",\n", + " linewidth=2,\n", + " color=\"tab:blue\",\n", + ")\n", "plt.xticks([0.5, 1.0, 1.5])\n", "plt.xlabel(\"Gap (µm)\")\n", "plt.ylabel(\"Phase Shift (rad)\")\n", @@ -2165,7 +2181,7 @@ "Active photonic integrated circuit components" ], "description": "This example demonstrates the usage of the Tidy3D to calculate absorbed optical power, its resultant heating, and the corresponding optical heat perturbation on the silicon-on-insulator (SOI) platform.", - "feature_image": "./img/photothermal.png", + "feature_image": "./img/photothermal_waveguide.png", "features": [ "Heat", "Perturbation medium" @@ -2186,7 +2202,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.20" + "version": "3.11.0" }, "title": "Photo-thermal optical control in silicon waveguides" }, diff --git a/docs/case_studies/pic_active.rst b/docs/case_studies/pic_active.rst index beefe34e..601b1663 100644 --- a/docs/case_studies/pic_active.rst +++ b/docs/case_studies/pic_active.rst @@ -16,3 +16,4 @@ At the moment, Tidy3D’s heat solver can be used with the FDTD solver to model ../../TransientThermoOpticShifter ../../CPOHeat ../../PhotoThermalWaveguides + ../../PINMachZehnder diff --git a/img/DirectionalCoupler.png b/img/DirectionalCoupler.png index 70d8abdf..d417caa5 100644 Binary files a/img/DirectionalCoupler.png and b/img/DirectionalCoupler.png differ diff --git a/img/mmi_power_splitter_2x2.png b/img/mmi_power_splitter_2x2.png index 8ff19748..242639a0 100644 Binary files a/img/mmi_power_splitter_2x2.png and b/img/mmi_power_splitter_2x2.png differ diff --git a/img/pin_phase_shifter.png b/img/pin_phase_shifter.png index 0152b60d..d41ea9a7 100644 Binary files a/img/pin_phase_shifter.png and b/img/pin_phase_shifter.png differ