{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Edge coupler"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note: The cost of running the entire notebook is higher than 1 FlexCredit.\n",
"\n",
"Fiber-to-chip couplers are essential components in photonic integrated circuits (PICs) that need to couple in/out light using optical fibers. However, the huge mismatch between the mode sizes of a single mode fiber ($\\approx 10\\mu m$ in diameter) and a silicon wire waveguide (220 x 500 nm) can cause significant coupling loss if they are coupled directly. For this reason, the design of the fiber-to-chip coupling devices is critical for the whole system's performance and needs to be carefully accomplished. There are two main categories of fiber-to-chip optical coupling devices: [grating couplers](../notebooks/GratingCoupler.html), where the optical fiber is positioned perpendicularly to the chip plane; and edge couplers, which allow in-plane light coupling by the direct alignment between the fiber and the integrated waveguide facets. \n",
"\n",
"In this notebook, we will show an example of using Tidy3D to evaluate the performance of edge couplers built using inverted taper mode transformers of linear, quadratic, and exponential profiles. We will also see how to set up a [Gaussian beam](../_autosummary/tidy3d.GaussianBeam.html) to simulate the field launched by a lensed fiber and the use of [Batch](../_autosummary/tidy3d.web.container.Batch.html) simulations to perform parameter sweeps."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We start by importing the necessary modules:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# standard python imports\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Tidy3D imports\n",
"import tidy3d as td\n",
"import tidy3d.web as web\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Simulation Setup\n",
"\n",
"The inverted taper structure is made using an SOI platform consisting of a silicon (Si) substrate, a 3 $\\mu m$ thick silicon dioxide (SiO2) layer, and a 220 nm thick silicon layer covered by 3 $\\mu m$ thick silicon dioxide. As shown in the image below, the inverted taper is defined at the 220 nm thick Si layer, and its main geometric parameters are also defined in the figure. An optical fiber mode with a Gaussian profile (2.5 $\\mu m$ spot-size) is focused at the taper tip and coupled into the output waveguide. \n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definition of the simulation wavelength and materials."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"wl_c = 1.55 # Central wavelength.\n",
"wl_bw = 0.100 # Wavelength bandwidth.\n",
"wl_n = 101 # Number of wavelength points to compute the output data.\n",
"\n",
"mat_si = td.Medium(permittivity=3.48**2) # Taper and substrate material.\n",
"mat_sio2 = td.Medium(permittivity=1.44**2) # Box and cladding material.\n",
"mat_air = td.Medium(permittivity=1.00) # External medium material.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Definition of the taper size, lensed fiber parameters, and SOI structure."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"taper_l = 25 # Taper length.\n",
"taper_w_in = 0.19 # Taper tip width.\n",
"taper_w_out = 0.50 # Taper output width.\n",
"taper_t = 0.22 # Taper thickness.\n",
"\n",
"# Spot size of the gaussian mode launched by the lensed fiber at the taper tip.\n",
"spot_size = 2.5\n",
"\n",
"box_thick = 3.0 # Silicon dioxide box layer.\n",
"clad_thick = 3.0 # Silicon dioxide layer covering the taper.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calculated parameters and constants used in the simulation set up."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Extra space around the taper at x,y directions.\n",
"pad_x = 1 * wl_c\n",
"pad_y = 1.5 * wl_c\n",
"\n",
"# Wavelength and frequency values.\n",
"wl_range = np.linspace(wl_c - wl_bw / 2, wl_c + wl_bw / 2, wl_n)\n",
"freq_c = td.C_0 / wl_c\n",
"freq_range = td.C_0 / wl_range\n",
"freq_width = 0.5 * (np.max(freq_range) - np.min(freq_range))\n",
"run_time = 30 / freq_width\n",
"\n",
"# Large number to be used in replacement of td.inf when necessary.\n",
"_inf = 1e3\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Function to create the inverted taper geometry based on the work of [G. Ren et al. (2013)](https://www.sciencedirect.com/science/article/abs/pii/S0030401811006389)."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# List of inverted tapers names.\n",
"tap_names = [\"linear\", \"quadratic\", \"exponential\"]\n",
"\n",
"\n",
"def get_taper(\n",
" taper_shape=\"linear\",\n",
" init_coord=[pad_x, taper_w_in / 2],\n",
" end_coord=[pad_x + taper_l, taper_w_out / 2],\n",
"):\n",
" \"\"\"Return a polygon composed of the taper vertices given the desired shape.\"\"\"\n",
"\n",
" x0 = init_coord[0]\n",
" x1 = end_coord[0]\n",
" y0 = init_coord[1]\n",
" y1 = end_coord[1]\n",
" x = np.linspace(x0, x1, 41)\n",
"\n",
" tap_name = \"linear_tap\"\n",
" if taper_shape == \"quadratic\":\n",
" alpha = ((x - x0) / (x1 - x0)) ** 2\n",
" tap_name = \"quadratic_tap\"\n",
" elif taper_shape == \"exponential\":\n",
" alpha = np.expm1((x - x0) / (x1 - x0)) / np.expm1(1)\n",
" tap_name = \"exponential_tap\"\n",
" elif taper_shape == \"linear\":\n",
" alpha = (x - x0) / (x1 - x0)\n",
" else:\n",
" print(\n",
" \"taper_shape is neither 'linear', 'quadratic', or 'exponential'!\\n\"\n",
" + \"Linear taper shape returned!\"\n",
" )\n",
" alpha = (x - x0) / (x1 - x0)\n",
"\n",
" y = y0 + alpha * (y1 - y0)\n",
" upper_bound = [[xv, yv] for xv, yv in zip(x, y)] + [[_inf, y1]]\n",
" lower_bound = [[_inf, -y1]] + [[xv, -yv] for xv, yv in zip(x[::-1], y[::-1])]\n",
" taper_polygon = upper_bound + lower_bound\n",
"\n",
" # Inverted taper structure using a PolySlab.\n",
" taper = td.Structure(\n",
" geometry=td.PolySlab(\n",
" vertices=taper_polygon, axis=2, slab_bounds=(-taper_t / 2, taper_t / 2)\n",
" ),\n",
" medium=mat_si,\n",
" name=tap_name,\n",
" )\n",
" return taper\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Function to create the simulation object. Since the box and cladding oxide layers are considerably thick, the silicon substrate and the upper air layer will be removed from the simulation, so being possible to take advantage of the symmetry along the z-axis. In addition, we will insert the Gaussian source directly into the taper tip to reduce the simulation cost further."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def get_simulations(\n",
" tap_length=taper_l,\n",
" tap_w_in=taper_w_in,\n",
" tap_w_out=taper_w_out,\n",
" tap_t=taper_t,\n",
" tap_names=tap_names,\n",
"):\n",
" \"\"\"Return a dict of simulation objects for the content of 'tap_names'.\"\"\"\n",
"\n",
" size_x = tap_length + 2 * pad_x\n",
" size_y = tap_w_out + 2 * pad_y\n",
" size_z = box_thick + clad_thick + tap_t\n",
"\n",
" # Gaussian source focused at the taper tip.\n",
" # The Gaussian source must be placed at a plane within a uniform medium.\n",
" gauss_source = td.GaussianBeam(\n",
" center=(0.99 * pad_x, 0, 0),\n",
" size=(0, size_y, size_z),\n",
" source_time=td.GaussianPulse(freq0=freq_c, fwidth=freq_width),\n",
" pol_angle=0,\n",
" direction=\"+\",\n",
" num_freqs=7,\n",
" waist_radius=spot_size / 2,\n",
" )\n",
"\n",
" # Field monitor to visualize the fields throughout the length of the taper.\n",
" field_monitor_xy = td.FieldMonitor(\n",
" center=(size_x / 2, 0, 0),\n",
" size=(size_x, size_y, 0),\n",
" freqs=[freq_c],\n",
" name=\"field_xy\",\n",
" )\n",
"\n",
" # Field monitor to visualize the Gaussian input fields.\n",
" field_input = td.FieldMonitor(\n",
" center=(pad_x, 0, 0),\n",
" size=(0, size_y, size_z),\n",
" freqs=[freq_c],\n",
" name=\"field_input\",\n",
" )\n",
"\n",
" # Field monitor to visualize the fields at the output waveguide.\n",
" field_output = td.FieldMonitor(\n",
" center=(size_x - pad_x / 2, 0, 0),\n",
" size=(0, size_y, size_z),\n",
" freqs=[freq_c],\n",
" name=\"field_output\",\n",
" )\n",
"\n",
" # Mode monitor to get the power coupled into the fundamental TE mode.\n",
" mode_spec = td.ModeSpec(num_modes=1)\n",
" mode_monitor = td.ModeMonitor(\n",
" center=(size_x - pad_x / 2, 0, 0),\n",
" size=(0, size_y, size_z),\n",
" freqs=freq_range,\n",
" mode_spec=mode_spec,\n",
" name=\"mode_0\",\n",
" )\n",
"\n",
" # Silicon dioxide box + cladding layers\n",
" sio2_medium = td.Structure(\n",
" geometry=td.Box.from_bounds(\n",
" rmin=(pad_x, -_inf, -_inf), rmax=(_inf, _inf, _inf)\n",
" ),\n",
" medium=mat_sio2,\n",
" )\n",
"\n",
" # Simulation definition\n",
" sim_tap = []\n",
" for t_name in tap_names:\n",
" taper_poly = get_taper(\n",
" t_name,\n",
" init_coord=[pad_x, tap_w_in / 2],\n",
" end_coord=[size_x - pad_x, tap_w_out / 2],\n",
" )\n",
"\n",
" sim_tap.append(\n",
" td.Simulation(\n",
" center=(size_x / 2, 0, 0),\n",
" size=(size_x, size_y, size_z),\n",
" medium=mat_air,\n",
" grid_spec=td.GridSpec.auto(min_steps_per_wvl=15, wavelength=wl_c),\n",
" structures=[sio2_medium, taper_poly],\n",
" sources=[gauss_source],\n",
" normalize_index=0,\n",
" monitors=[field_monitor_xy, field_input, field_output, mode_monitor],\n",
" boundary_spec=td.BoundarySpec.all_sides(boundary=td.PML(num_layers=20)),\n",
" symmetry=(0, -1, 1),\n",
" run_time=run_time,\n",
" )\n",
" )\n",
" sims = {sim_name: sim for sim_name, sim in zip(tap_names, sim_tap)}\n",
" return sims\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Comparison between inverted tapers with different shapes.\n",
"\n",
"We start our analysis by comparing the response of inverted tapers with 3 different geometries: linear, quadratic, and exponential. Then, before running the simulations, we will visualize the shapes of the inverted tapers and examine the simulation set up to see if everything is correct."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Get the list of simulation objects.\n",
"sim_tap = get_simulations(tap_length=taper_l)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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rzp06GB3eWgCOTk5khTw2C97D61TcnKybrnlFvXp00cHDhzQgw8+qHHjxikzM1Mul8vu8mCR1+vVnDlzdM0112jw4MGSSo73kJAQdezY0a8tx3vrEWi/S9JPfvIT9erVSzExMfr88891//33a9++ffrzn/9sY7WtA8ECKDVu3Djf86FDhyohIUG9evXSm2++qenTp9tYGYDGNnnyZN/zIUOGaOjQoerbt6+2bt2qMWPG2FgZGsLMmTO1d+9e5s21MdXt9zvvvNP3fMiQIerWrZvGjBmjAwcOqG/fvk1dZqvCqVABdOnSRS6Xq8qVIY4dO6bo6GibqkJT69ixo37wgx/o66+/trsUNJGy45tjH5dddpm6dOnC8d8KzJo1S++++662bNmiHj16+JZHR0ersLBQp0+f9mvP8d46VLffA0lISJAkjvcGQLAIICQkRHFxccrIyPAt83q9ysjI0MiRI22sDE3p7NmzOnDggLp162Z3KWgiffr0UXR0tN+xn5eXp507d3LstzHfffedTp06xfHfghljNGvWLL399tv68MMP1adPH7/34+LiFBwc7He879u3T1lZWRzvLVht+z2QTz/9VJI43hsAp0JVIy0tTampqRoxYoTi4+O1bNky5efna9q0aXaXhkZy3333acKECerVq5eys7OVnp4ul8ulKVOm2F0aGtDZs2f9fpU6ePCgPv30U0VERKhnz56aM2eOHnvsMfXv3199+vTRww8/rJiYGKWkpNhXNCyrab9HRERo0aJFmjhxoqKjo3XgwAH9+te/Vr9+/ZSUlGRj1bBi5syZWrNmjf7yl7+oQ4cOvnkT4eHhateuncLDwzV9+nSlpaUpIiJCYWFhmj17tkaOHKmrrrrK5upxsWrb7wcOHNCaNWs0fvx4de7cWZ9//rnmzp2r6667TkOHDrW5+lbA7stSNWcvvPCC6dmzpwkJCTHx8fHmo48+srskNKJJkyaZbt26mZCQENO9e3czadIk8/XXX9tdFhrYli1bjKQqj9TUVGNMySVnH374YRMVFWXcbrcZM2aM2bdvn71Fw7Ka9ntBQYEZO3asiYyMNMHBwaZXr15mxowZJicnx+6yYUGg/S3JrF692tfm3Llz5p577jGdOnUyl1xyibn55pvN0aNH7SsaltW237Oyssx1111nIiIijNvtNv369TPz5s0zubm59hbe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pI4dO2ZmzpxpYmNjTXBwsImOjjZjxowxL774otm1a5cJCgryu4SsMcYUFxebK6+80sTExJh///vfxpiSy81eeuml5sCBA2bs2LHmkksuMVFRUSY9Pd14PB6/9c+cOWPmzp1rYmJiTHBwsOnfv7958sknjdfr9WsnycycObNKzb169TKpqal1/h5lyi43u27dOr91A11C9uzZs+YnP/mJ6dixo5Hku/RsoLbfffedufnmm03Hjh1NeHi4ue2220x2draRZNLT033tuNwsgLbIYcxFzmADALRJU6dO1fr163X27Fm7SwEANCPMsQAAAABgGcECAAAAgGUECwAAAACWMccCAAAAgGWMWAAAAACwjGABAAAAwDJukFcLr9er7OxsdejQQQ6Hw+5yAAAAgCZjjNGZM2cUExMjp7PmMQmCRS2ys7MVGxtrdxkAAACAbQ4fPqwePXrU2IZgUYsOHTpIKvljhoWF2VxNVXNf3Wp3CQAAAGilCs8V6E/zpvj6xDUhWNSi7PSnsLCwZhksQtpdancJAAAAaOXqMiWAydsAAAAALCNYAAAAALCMYAEAAADAMoIFAAAAAMsIFgAAAAAsI1gAAAAAsIxgAQAAAMAyggUAAAAAywgWAAAAACwjWAAAAACwjGABAAAAwDKCBQAAAADLCBYAAAAALCNYAAAAALCMYAEAAADAMoIFAAAAAMuC7C4AAAAAaK2CPB65PV6FeDylj4rPy1+7vMbuUgMquHBOL9WxLcECAAAAqMyYSiHg4p639NODzhaer3NbggUAAABaD2MU7PX6OvbBfh3+0mXeqgEgOEAbh93fpYUhWAAAAMB2DmOqhIBgb+COf6DlZWEh2ONt8aMELVWLCxYrVqzQk08+qZycHA0bNkwvvPCC4uPjA7b9/e9/r1deeUV79+6VJMXFxenxxx+vtj0AAADqofR0obKOfqBOfqDXJeuULwv2ehTcTOcYoO5aVLBYu3at0tLStGrVKiUkJGjZsmVKSkrSvn371LVr1yrtt27dqilTpujqq69WaGionnjiCY0dO1ZffPGFunfvbsM3AAAAsJfL6/V15svCQOXn/oHA6xtJCPZWfE4YgD+HMabF/BeRkJCgK6+8UsuXL5ckeb1excbGavbs2XrggQdqXd/j8ahTp05avny57rjjjjp9Zl5ensLDw5Wbm6uwsDBL9TeGu1/K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\n",
"text/plain": [
"