{
"cells": [
{
"cell_type": "markdown",
"id": "223695de",
"metadata": {},
"source": [
"# 90 degree optical hybrid"
]
},
{
"cell_type": "markdown",
"id": "29d2491d",
"metadata": {},
"source": [
"Note: The cost of running the entire notebook is higher than 1 FlexCredit.\n",
"\n",
"90 degree optical hybrids (also known as quadrature optical hybrids) are essential components in coherent transmission systems. A 90 degree optical hybrid is a six-port device consisting of two inputs and four outputs. In the ideal case, the outputs are the mixed signals of the inputs with 0, $\\pi$/2, $\\pi$, and 3$\\pi$/2 relative phase shifts. \n",
"\n",
"This notebook demonstrates the simulation of a compact and low-loss 90 degree optical hybrid based on a silicon-on-insulator platform. The device consists of a Y-branch, three 2x2 MMIs, and four 90 degree waveguide bends. Building those structures natively in `Tidy3D` is certainly doable but time consuming. Here, we build the device structures in a separate CAD editor and import the stl file into `Tidy3D` for simulation. \n",
"\n",
"The device design is adapted from [Hang Guan et al., \"Compact and low loss 90\u00b0 optical hybrid on a silicon-on-insulator platform,\" Opt. Express 25, 28957-28968 (2017)](https://opg.optica.org/oe/fulltext.cfm?uri=oe-25-23-28957&id=376719).\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "0c653ce0",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:52:10.326340Z",
"iopub.status.busy": "2023-03-27T23:52:10.326160Z",
"iopub.status.idle": "2023-03-27T23:52:11.520338Z",
"shell.execute_reply": "2023-03-27T23:52:11.519748Z"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import tidy3d as td\n",
"import tidy3d.web as web\n"
]
},
{
"cell_type": "markdown",
"id": "a604f3ef",
"metadata": {},
"source": [
"## Simulation of the 2x2 MMI "
]
},
{
"cell_type": "markdown",
"id": "97cb0b02",
"metadata": {},
"source": [
"To design the optical hybrid, we first design each component individually. For the Y-branch, we will use the same low-loss design demonstrated in the [reference](https://opg.optica.org/oe/fulltext.cfm?uri=oe-21-1-1310&id=248418) and our Y-branch [notebook](../notebooks/YJunction.html). The waveguide bends can be Euler bends or circular bands, which is also demonstrated in another [notebook](../notebooks/EulerWaveguideBend.html). \n",
"\n",
"For the 2x2 MMIs, an optimized design is demonstrated here. The design aims to have equal power splitting and a 90 degree phase difference in the through port and cross port. To simulate the MMI, we also built the structure as a stl file and only import it here.\n",
"\n",
"First, define some basic simulation parameters. We simulate at a relatively narrow wavelength band of 1530 nm to 1560 nm."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "145c702f",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:52:11.523003Z",
"iopub.status.busy": "2023-03-27T23:52:11.522711Z",
"iopub.status.idle": "2023-03-27T23:52:11.541265Z",
"shell.execute_reply": "2023-03-27T23:52:11.540696Z"
}
},
"outputs": [],
"source": [
"lda0 = 1.55 # central wavelength\n",
"freq0 = td.C_0 / lda0 # central frequency\n",
"ldas = np.linspace(1.53, 1.56, 101) # wavelength range\n",
"freqs = td.C_0 / ldas # frequency range\n",
"fwidth = 0.5 * (np.max(freqs) - np.min(freqs))\n"
]
},
{
"cell_type": "markdown",
"id": "5103bb83",
"metadata": {},
"source": [
"Define material properties. For simplicity, we only use non-dispersive materials in this simulation. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e3439f1c",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:52:11.543327Z",
"iopub.status.busy": "2023-03-27T23:52:11.543150Z",
"iopub.status.idle": "2023-03-27T23:52:11.560593Z",
"shell.execute_reply": "2023-03-27T23:52:11.560026Z"
}
},
"outputs": [],
"source": [
"n_si = 3.47 # silicon refractive index\n",
"si = td.Medium(permittivity=n_si**2)\n",
"\n",
"n_sio2 = 1.45 # silicon oxide refractive index\n",
"sio2 = td.Medium(permittivity=n_sio2**2)\n"
]
},
{
"cell_type": "markdown",
"id": "5d4136ea",
"metadata": {},
"source": [
"The structures will be imported from stl files, but it is good to define some geometric parameters to help set up the source, monitors, and simulation domains."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "db0b8467",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:52:11.562606Z",
"iopub.status.busy": "2023-03-27T23:52:11.562428Z",
"iopub.status.idle": "2023-03-27T23:52:11.579465Z",
"shell.execute_reply": "2023-03-27T23:52:11.578963Z"
}
},
"outputs": [],
"source": [
"thickness = 0.22 # si layer thickness\n",
"width = 0.5 # waveguide width\n"
]
},
{
"cell_type": "markdown",
"id": "01374e67",
"metadata": {},
"source": [
"Import the MMI geometry from the stl file and define the MMI structure."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "0c2bd24e",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:52:11.581529Z",
"iopub.status.busy": "2023-03-27T23:52:11.581364Z",
"iopub.status.idle": "2023-03-27T23:52:11.604743Z",
"shell.execute_reply": "2023-03-27T23:52:11.604163Z"
}
},
"outputs": [],
"source": [
"# import mmi geometry from a stl file\n",
"mmi_geometry = td.TriangleMesh.from_stl(\n",
" filename=\"misc/mmi_stl.stl\",\n",
")\n",
"\n",
"# define mmi structure\n",
"mmi = td.Structure(geometry=mmi_geometry, medium=si)\n"
]
},
{
"cell_type": "markdown",
"id": "92f94448",
"metadata": {},
"source": [
"Define a [ModeSource](../_autosummary/tidy3d.ModeSource.html) launching the TE0 mode at the top left waveguide. Two [ModeMonitors](../_autosummary/tidy3d.ModeMonitor.html) are added to the waveguides on the right to measure the power and phase of the outputs. To visualize the field distribution within the MMI region, we also add a [FieldMonitor](../_autosummary/tidy3d.FieldSource.html) in the xy plane. Finally, define a [Simulation](../_autosummary/tidy3d.Simulation.html)."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "9a9eacde",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:52:11.607029Z",
"iopub.status.busy": "2023-03-27T23:52:11.606830Z",
"iopub.status.idle": "2023-03-27T23:52:11.634134Z",
"shell.execute_reply": "2023-03-27T23:52:11.632475Z"
}
},
"outputs": [],
"source": [
"mode_spec = td.ModeSpec(\n",
" num_modes=1, target_neff=n_si\n",
") # define a ModeSpec used in mode source and monitors\n",
"\n",
"# define a mode source\n",
"mode_source = td.ModeSource(\n",
" center=(-5, 0.45, 0),\n",
" size=(0, 2 * width, 6 * thickness),\n",
" source_time=td.GaussianPulse(freq0=freq0, fwidth=fwidth),\n",
" direction=\"+\",\n",
" mode_spec=td.ModeSpec(num_modes=1, target_neff=n_si),\n",
" mode_index=0,\n",
")\n",
"\n",
"# define a mode monitor at the through port\n",
"mode_monitor_through = td.ModeMonitor(\n",
" center=(6, 0.45, 0),\n",
" size=(0, 2 * width, 6 * thickness),\n",
" freqs=freqs,\n",
" name=\"through\",\n",
" mode_spec=mode_spec,\n",
")\n",
"\n",
"# define a mode monitor at the cross port\n",
"mode_monitor_cross = td.ModeMonitor(\n",
" center=(6, -0.45, 0),\n",
" size=(0, 2 * width, 6 * thickness),\n",
" freqs=freqs,\n",
" name=\"cross\",\n",
" mode_spec=mode_spec,\n",
")\n",
"\n",
"# define a field monitor at the xp plane\n",
"field_monitor = td.FieldMonitor(\n",
" center=(0, 0, 0), size=(td.inf, td.inf, 0), freqs=[freq0], name=\"field\"\n",
")\n",
"\n",
"run_time = 1e-12 # simulation run time\n",
"\n",
"sim = td.Simulation(\n",
" size=(13, 5, 10 * thickness),\n",
" grid_spec=td.GridSpec.auto(min_steps_per_wvl=30, wavelength=lda0),\n",
" structures=[mmi],\n",
" sources=[mode_source],\n",
" monitors=[field_monitor, mode_monitor_through, mode_monitor_cross],\n",
" run_time=run_time,\n",
" boundary_spec=td.BoundarySpec.all_sides(boundary=td.PML()),\n",
" medium=sio2,\n",
" symmetry=(0, 0, 1),\n",
")\n"
]
},
{
"cell_type": "markdown",
"id": "4e664e13",
"metadata": {},
"source": [
"Visualize the simulation."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "e6dcdfa3",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:52:11.639677Z",
"iopub.status.busy": "2023-03-27T23:52:11.639304Z",
"iopub.status.idle": "2023-03-27T23:52:11.961362Z",
"shell.execute_reply": "2023-03-27T23:52:11.960853Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAFLCAYAAABbWMEXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFB0lEQVR4nO3deXxU1d0/8M+5d/bJCiRASIAEUBRQlEVfqAUqj8tDtbR1qVUr1KIiapG2VqovUdpCW6zaumBtn0pf1oVqH7U/rQsKiqXWDesjIsgqIWELkIXJZObOPef3x2RmMskkmUkmme3zfr3GJHfuPXNyv/fKJ+duQimlQEREREQZT0t1B4iIiIgoORjsiIiIiLIEgx0RERFRlmCwIyIiIsoSDHZEREREWYLBjoiIiChLMNgRERERZQkGOyIiIqIswWBHRERElCUY7IiI2nnrrbcghMBbb72V6q4QESWEwY6IctYjjzyC1atXp7obPfLUU0/hgQceSHU3AABSSvz6179GZWUlHA4HTjnlFDz99NNxL19fX4/rrrsOJSUlcLvdmDlzJjZt2hRz3r///e84/fTT4XA4MHz4cCxduhSBQCBZvwpRxhN8ViwR5arx48dj0KBBHUbmpJTw+/2w2WzQtPT8+/drX/saNm/ejD179qS6K1iyZAl++ctfYv78+ZgyZQpefPFFvPzyy3j66afx7W9/u8tlpZQ455xz8Mknn+DHP/4xBg0ahEceeQTV1dX46KOPMGbMmPC8r7zyCmbPno0ZM2bgiiuuwKeffoqHH34Y1113HVatWtXXvyZRRmCwI8pxHo8Hbrc71d1Iic6CXSZIl2BXU1ODyspKXHfddXjooYcAAEopTJ8+Hbt378aePXug63qny//1r3/F5ZdfjmeffRaXXHIJAODw4cM44YQTcOGFF+Kpp54Kzztu3DhYrVZ8+OGHsFgsAIA777wTy5cvx5YtWzB27Ng+/E2JMkN6/ilKRD1SU1ODa6+9FmVlZbDb7aisrMSCBQvg9/sBAKtXr4YQAm+//TZuvPFGlJaWory8PLz8I488gnHjxsFut6OsrAwLFy5EfX191Gds374d3/rWtzBkyBA4HA6Ul5fj29/+NhoaGsLzrF27FmeffTaKioqQl5eHE088ET/96U+77X88y/l8PixduhSjR4+G3W5HRUUFbrvtNvh8vg7t/eUvf8HUqVPhcrlQXFyMr3zlK3j99dcBACNHjsRnn32Gt99+G0IICCEwY8YMAJ2fY/fss89i0qRJcDqdGDRoEK666irU1NREzTN37lzk5eWhpqYGc+bMQV5eHkpKSvCjH/0Ipml2uw5efPFFzJ49O1zDUaNG4Wc/+1nUsjNmzMDLL7+ML7/8Mtz3kSNHdtrm3Llzw/O1f919993d9qm7/hqGgRtvvDE8TQiBBQsWYN++fXj33Xe7XP65557D4MGD8c1vfjM8raSkBJdddhlefPHFcF23bNmCLVu24LrrrguHOgC48cYboZTCc88916vfgyhbWLqfhYgyQW1tLaZOnRo+X2ns2LGoqanBc889h+bmZthstvC8N954I0pKSnDXXXfB4/EAAO6++27cc889mDVrFhYsWIBt27Zh1apV+OCDD7Bx40ZYrVb4/X6cf/758Pl8uPnmmzFkyBDU1NTgpZdeQn19PQoLC/HZZ5/ha1/7Gk455RQsW7YMdrsdO3bswMaNG7vsfzzLSSlx8cUX45///Ceuu+46nHTSSfj0009x//3344svvsALL7wQnveee+7B3XffjWnTpmHZsmWw2Wx47733sG7dOpx33nl44IEHcPPNNyMvLw933HEHAGDw4MGd9m/16tWYN28epkyZghUrVuDgwYP47W9/i40bN+Ljjz9GUVFReF7TNHH++efjjDPOwL333os33ngDv/nNbzBq1CgsWLCgy/WwevVq5OXlYfHixcjLy8O6detw1113obGxEStXrgQA3HHHHWhoaMC+fftw//33AwDy8vI6bfP666/HrFmzoqa9+uqrePLJJ1FaWhqeVldX12XfQvLz82G32wEAH3/8MdxuN0466aSoeaZOnRp+/+yzz+60rY8//hinn356h0PeU6dOxWOPPYYvvvgCEyZMwMcffwwAmDx5ctR8ZWVlKC8vD79PlPMUEWWF7373u0rTNPXBBx90eE9KqZRS6vHHH1cA1Nlnn60CgUD4/UOHDimbzabOO+88ZZpmePpDDz2kAKg//elPSimlPv74YwVAPfvss5324/7771cA1OHDhxPqfzzLPfHEE0rTNPXOO+9ETX/00UcVALVx40allFLbt29Xmqapb3zjG1G/j1KRdaGUUuPGjVPTp0/v8Dnr169XANT69euVUkr5/X5VWlqqxo8fr7xeb3i+l156SQFQ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cw0mT56MqVOn4oEHHoDH48G8efNS3bWMs3DhQjz11FN48cUXkZ+fHz5PsbCwEE6nM8W9yzz5+fkdzk90u90YOHAgz1vsgVtvvRXTpk3D8uXLcdlll+H999/HY489lnZHOBjs+snKlSthsVhw9dVXw+v14owzzsC6devS7/43lHPWrl2LHTt2YMeOHR2CsVIqRb3KHJdffjkOHz6Mu+66CwcOHMDEiRPx6quvdriggrq3atUqAMCMGTOipj/++OPdnlZA1NemTJmC559/HkuWLMGyZctQWVmJBx54AFdeeWWquxZFKP6fm4iIiCgr8EQaIiIioizBYEdERESUJRjsiIiIiLIEgx0RERFRlmCwIyIiIsoSDHZEREREWYLBjoiIiChLMNgRERERZQkGOyIiIqIswWBHRERElCUY7IiIeujw4cMYMmQIli9fHp72r3/9CzabDW+++WYKe0ZEuYrPiiUi6oV//OMfmDNnDv71r3/hxBNPxMSJE/H1r38d9913X6q7RkQ5iMGOiKiXFi5ciDfeeAOTJ0/Gp59+ig8++AB2uz3V3SKiHMRgR0TUS16vF+PHj0d1dTU++ugjTJgwIdVdIqIcxXPsiIh6aefOnaitrYWUEnv27El1d4goh3HEjoioF/x+P6ZOnYqJEyfixBNPxAMPPIBPP/0UpaWlqe4aEeUgBjsiol748Y9/jOeeew6ffPIJ8vLyMH36dBQWFuKll15KddeIKAfxUCwRUQ+99dZbeOCBB/DEE0+goKAAmqbhiSeewDvvvINVq1aluntElIM4YkdERESUJThiR0RERJQlGOyIiIiIsgSDHREREVGWYLAjIiIiyhIMdkRERERZgsGOiIiIKEsw2BERERFlCQY7IiIioizBYEdERESUJRjsiIiIiLIEgx0RERFRlmCwIyIiIsoS/x+cTHSmnfCagQAAAABJRU5ErkJggg==\n",
"text/plain": [
"