{
"cells": [
{
"cell_type": "markdown",
"id": "d4962fd2",
"metadata": {},
"source": [
"# Waveguide crossing based on cosine tapers"
]
},
{
"cell_type": "markdown",
"id": "5e5b9158",
"metadata": {},
"source": [
"To achieve a high integration density on a photonic chip, efficient routing of light with low loss using compact junctions is necessary. Therefore, waveguide crossings are crucial building blocks in high performance integrated circuits. \n",
"\n",
"This example model demonstrates the simulation of a waveguide crossing based on cosine tapers. The convex cosine taper focuses the guided mode at the center of the crossing junction. This ensures the light is efficiently transmitted into the through port instead of scattered into the cross ports. The device achieves an insertion loss of ~0.2 dB and crosstalk ~-30 dB in the O-band (1260 nm -1360 nm). The design is adapted from [Sujith Chandran, et al. \"Beam shaping for ultra-compact waveguide crossings on monolithic silicon photonics platform,\" Opt. Lett. 45, 6230-6233 (2020)](https://opg.optica.org/ol/abstract.cfm?uri=ol-45-22-6230).\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "2eaed87d",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-28T01:32:53.848848Z",
"iopub.status.busy": "2023-03-28T01:32:53.848581Z",
"iopub.status.idle": "2023-03-28T01:32:55.051605Z",
"shell.execute_reply": "2023-03-28T01:32:55.050997Z"
}
},
"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",
"from scipy.optimize import fsolve\n"
]
},
{
"cell_type": "markdown",
"id": "290a838f",
"metadata": {},
"source": [
"## Simulation Setup"
]
},
{
"cell_type": "markdown",
"id": "85200028",
"metadata": {},
"source": [
"Define geometric parameters and materials. In this device, the Si waveguide has a thickness of 161 nm and a width of 350 nm. "
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "2f5c50ea",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-28T01:32:55.054178Z",
"iopub.status.busy": "2023-03-28T01:32:55.053896Z",
"iopub.status.idle": "2023-03-28T01:32:55.071995Z",
"shell.execute_reply": "2023-03-28T01:32:55.071524Z"
}
},
"outputs": [],
"source": [
"h = 0.161 # waveguide thickness\n",
"w_in = 0.35 # input taper width\n",
"w_out = 1.1 # output taper width\n",
"w_m = 0.75 # amplitude of the cos function\n",
"l_t = 5.3 # taper length\n",
"inf_eff = (\n",
" 1000 # effective infinity used to make sure the waveguides extend into the pml\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4b92b8e9",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-28T01:32:55.074009Z",
"iopub.status.busy": "2023-03-28T01:32:55.073842Z",
"iopub.status.idle": "2023-03-28T01:32:55.091203Z",
"shell.execute_reply": "2023-03-28T01:32:55.090747Z"
}
},
"outputs": [],
"source": [
"si = td.Medium(permittivity=3.67**2)\n",
"sio2 = td.Medium(permittivity=1.45**2)\n"
]
},
{
"cell_type": "markdown",
"id": "718becc3",
"metadata": {},
"source": [
"The taper width is described by a cosine function $w(x)=w_m cos(ax+b)$. To determine the parameters $a$ and $b$, we solve a system of equations to ensure $w(x)=w_{in}/2$ at the beginning of the taper and $w(x)=w_{out}/2$ at the end of the taper. This can be easily done using fsolve from Scipy.\n",
"\n",
"After we obtain $w(x)$, vertices can be generated and the taper can be made using PolySlab. Once the first taper is made, the rest three tapers can be made by manipulating the vertices with the symmetry relation."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "0e2ef818",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-28T01:32:55.093256Z",
"iopub.status.busy": "2023-03-28T01:32:55.093090Z",
"iopub.status.idle": "2023-03-28T01:32:55.117139Z",
"shell.execute_reply": "2023-03-28T01:32:55.116585Z"
}
},
"outputs": [],
"source": [
"# numerically solve for the cos function that describes the taper shape\n",
"def equations(x0):\n",
" a, b = x0\n",
" return (\n",
" w_m * np.cos(a * (-w_out / 2) + b) - w_out / 2,\n",
" w_m * np.cos(a * (-w_out / 2 - l_t) + b) - w_in / 2,\n",
" )\n",
"\n",
"\n",
"a, b = fsolve(equations, (0.5, 2))\n",
"\n",
"x = np.linspace(-w_out / 2 - l_t, -w_out / 2, 30)\n",
"w = w_m * np.cos(a * x + b)\n",
"\n",
"# using the calculated taper shape to construct the taper as a PolySlab\n",
"vertices = np.zeros((2 * len(x), 2))\n",
"vertices[:, 0] = np.concatenate((x, np.flipud(x)))\n",
"vertices[:, 1] = np.concatenate((w, -np.flipud(w)))\n",
"taper_1 = td.Structure(\n",
" geometry=td.PolySlab(vertices=vertices, axis=2, slab_bounds=(-h / 2, h / 2)),\n",
" medium=si,\n",
")\n",
"\n",
"# creating the other four tapers by manipulating the vertices of the first taper\n",
"vertices[:, 0] = -vertices[:, 0]\n",
"taper_2 = td.Structure(\n",
" geometry=td.PolySlab(vertices=vertices, axis=2, slab_bounds=(-h / 2, h / 2)),\n",
" medium=si,\n",
")\n",
"\n",
"vertices[:, [1, 0]] = vertices[:, [0, 1]]\n",
"taper_3 = td.Structure(\n",
" geometry=td.PolySlab(vertices=vertices, axis=2, slab_bounds=(-h / 2, h / 2)),\n",
" medium=si,\n",
")\n",
"\n",
"vertices[:, 1] = -vertices[:, 1]\n",
"taper_4 = td.Structure(\n",
" geometry=td.PolySlab(vertices=vertices, axis=2, slab_bounds=(-h / 2, h / 2)),\n",
" medium=si,\n",
")\n",
"\n",
"# creating the center crossing junction using a Box\n",
"corner = 0\n",
"center = td.Structure(\n",
" geometry=td.Box.from_bounds(\n",
" rmin=(-w_out / 2 - corner, -w_out / 2 - corner, -h / 2),\n",
" rmax=(w_out / 2 + corner, w_out / 2 + corner, h / 2),\n",
" ),\n",
" medium=si,\n",
")\n",
"\n",
"# creating the input port and through port\n",
"horizontal_wg = td.Structure(\n",
" geometry=td.Box.from_bounds(\n",
" rmin=(-inf_eff, -w_in / 2, -h / 2), rmax=(inf_eff, w_in / 2, h / 2)\n",
" ),\n",
" medium=si,\n",
")\n",
"\n",
"# creating the cross ports\n",
"vertical_wg = td.Structure(\n",
" geometry=td.Box.from_bounds(\n",
" rmin=(-w_in / 2, -inf_eff, -h / 2), rmax=(w_in / 2, inf_eff, h / 2)\n",
" ),\n",
" medium=si,\n",
")\n"
]
},
{
"cell_type": "markdown",
"id": "074d7cde",
"metadata": {},
"source": [
"Set up simulation domain, source, and monitors. A mode source is used to excite the input waveguide. A field monitor at $z=0$ plane is added to monitor the field propagation. Two flux monitors are added at the through port and cross port to monitor the transmission and crosstalk levels.\n",
"\n",
"Before running the simulation, we can use the plot method to ensure the geometry, source, and monitors are set up correctly."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "54a54758",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-28T01:32:55.119164Z",
"iopub.status.busy": "2023-03-28T01:32:55.118996Z",
"iopub.status.idle": "2023-03-28T01:32:55.443420Z",
"shell.execute_reply": "2023-03-28T01:32:55.442908Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcYAAAHWCAYAAADttCmyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABR7klEQVR4nO3deXgb5YE/8O9cumVZie3EISEkoTSkgYacfTg2pGSBlpaybWmXUhZSNhQayhF2KVl4uNol20KBLVdKdxv4UQop7UIplCMlXKWFUkL7ECDhbnMnTmxJ1jWjmff3hyJZjh1bkiVrRvP9PI8e2/LM6JVmpK/eY96RhBACREREBACQG10AIiIiO2EwEhERlWAwEhERlWAwEhERlWAwEhERlWAwEhERlWAwEhERlWAwEhERlWAwEhERlWAwEjnUc889B0mS8NxzzzW6KERNhcFIZHN33nkn7rnnnkYXoyo///nPceuttza6GAAAy7Lwgx/8AFOmTIHP58ORRx6JBx54oOz1e3p6cN5556G9vR3BYBCLFi3C+vXrB1320UcfxezZs+Hz+XDwwQfjmmuuQS6Xq9VToXoTRGRrn/jEJ8TChQsH3G+apkin08I0zdEvVJlOOeUUMXny5EYXQwghxBVXXCEAiKVLl4q7775bnHLKKQKAeOCBB4Zd1zRNcfTRR4tgMCiuvfZacfvtt4sZM2aIcDgs3nnnnX7L/va3vxWSJIlFixaJu+++W3z7298WsiyL888/v15PjWqMwUiO0Nvb2+giNMyBgtEJ7BKMW7ZsEZqmiWXLlhXvsyxLHHfccWLixIkil8sNuf6aNWsEAPHQQw8V79u1a5dobW0VZ5xxRr9lZ8yYIT75yU8KwzCK91155ZVCkiTx9ttv1+gZUT0xGGnUbdmyRXzjG98QnZ2dwuPxiEMOOUScf/75IpvNCiGEWL16tQAgnnvuOXHBBReI9vZ20draWlz/jjvuEDNmzBAej0d0dnaKb33rW6K7u7vfY7zzzjvii1/8ohg3bpzwer3ioIMOEl/96ldFT09PcZmnn35aHHPMMSISiYhgMCgOO+wwsWLFimHLX856mUxGXH311WLatGnC4/GIiRMnin//938XmUxmwPbuu+8+MW/ePOH3+0Vra6s47rjjxFNPPSWEEGLy5MkCQL9bISSfffZZAUA8++yz/bb3i1/8QsyePVv4fD4xduxYceaZZ4otW7b0W+bss88WwWBQbNmyRXzhC18QwWBQtLW1icsuu2zYkBBCiEceeUR89rOfLe7DqVOniuuvv77fugsXLhxQ9qFC8uyzzx6wfOF2zTXXDFumodxxxx0CgHjzzTf73f/zn/9cABAvvvjikOuffvrpYty4cQNq5+edd54IBALF/frmm28KAOKOO+7ot9zWrVsFAPHd7353RM+DRoc6iq22RNi2bRvmz59f7K+ZPn06tm7dil/+8pdIpVLweDzFZb/1rW+hvb0dV199NZLJJADg2muvxXXXXYfFixfjggsuwKZNm3DXXXfh1VdfxUsvvQRN06DrOk466SRks1l8+9vfxvjx47F161Y89thj6OnpQSQSwZtvvonPfe5zOPLII3H99dfD6/Xivffew0svvTRk+ctZz7IsnHrqqfj973+P8847D4cffjjeeOMN3HLLLXjnnXfwyCOPFJe97rrrcO211+Loo4/G9ddfD4/Hg1deeQXr1q3DiSeeiFtvvRXf/va3EQqFcOWVVwIAxo0bd8Dy3XPPPViyZAnmzZuHlStXYufOnfjv//5vvPTSS3j99dfR2tpaXNY0TZx00klYsGABbrrpJvzud7/DD3/4Q0ybNg0XXHDBkK/DPffcg1AohOXLlyMUCmHdunW4+uqrEY/HceONNwIArrzySsRiMWzZsgW33HILACAUCh1wm9/85jexePHifvc9+eSTuP/++9HR0VG8r6ura8iyFYTDYXi9XgDA66+/jmAwiMMPP7zfMvPnzy/+/9hjjz3gtl5//XXMnj0bstx/WMb8+fNx991345133sERRxyB119/HQAwd+7cfstNmDABEydOLP6fbK7RyUzu8i//8i9ClmXx6quvDvifZVlCiL4a47HHHtuvBrJr1y7h8XjEiSee2O+b++233y4AiJ/+9KdCCCFef/31Ac1e+7vlllsEALF79+6Kyl/Oevfdd5+QZXlALWTVqlUCgHjppZeEEEK8++67QpZl8U//9E8DaiKF10KIAzel7l9j1HVddHR0iJkzZ4p0Ol1c7rHHHhMAxNVXX128r1A7u/766/tt86ijjhJz5swZ+kUQQqRSqQH3ffOb3+xXexJiZE2p7777rohEIuIf//Ef+x0HOECtcv/b6tWr+5Vj6tSpAx4jmUwKAOKKK64YsizBYFB84xvfGHD/448/LgCIJ598UgghxI033igAiL///e8Dlp03b5741Kc+Ve7TpwbiqFQaNZZl4ZFHHsHnP//5Ad+oAUCSpH5/L126FIqiFP/+3e9+B13Xcckll/T75r506VK0tLTg8ccfBwBEIhEAwFNPPYVUKjVoWQo1p1//+tewLKvs51DOeg899BAOP/xwTJ8+HV1dXcXbpz/9aQDAs88+CwB45JFHYFkWrr766gE1kf1fi3L8+c9/xq5du/Ctb30LPp+veP8pp5yC6dOnF1+fUueff36/v4877jh88MEHwz6W3+8v/p5IJNDV1YXjjjsOqVQKGzdurLjs+0smk/inf/onRKNRPPDAA/2Og7Vr15Z1O+mkk4rrpNPpYu2xVOF1SqfTQ5an3PULPw+07HCPQ/bAplQaNbt370Y8HsfMmTPLWn7KlCn9/v7b3/4GAPj4xz/e736Px4OpU6cW/z9lyhQsX74cN998M+6//34cd9xxOPXUU/H1r3+9GJpf/epX8T//8z/413/9V1xxxRU44YQT8MUvfhFf/vKXB4RUqXLWe/fdd/H222+jvb190G3s2rULAPD+++9DlmXMmDGjrNdjOAd6fQBg+vTp+P3vf9/vPp/PN6CM0WgU3d3dwz7Wm2++iauuugrr1q1DPB7v979YLFZp0QdYunQp3n//ffzhD3/A2LFj+/1v/+bWcvj9fmSz2QH3ZzKZ4v9rsX7h54GWHe5xyB4YjGRbI/kQ+eEPf4hzzjkHv/71r/H000/joosuwsqVK/Hyyy9j4sSJ8Pv9eOGFF/Dss8/i8ccfx5NPPok1a9bg05/+NJ5++ul+NZT9yzTcepZl4YgjjsDNN9886DYmTZpU9fOqpQM9x+H09PRg4cKFaGlpwfXXX49p06bB5/Nh/fr1+M53vlNRDXww//3f/40HHngAP/vZzzBr1qwB/9+xY0dZ24lEIsVjqLOzE88++yyEEP1q49u3bweQ7wMcSmdnZ3HZUvuv39nZWbx///28ffv2Yp8m2RubUmnUtLe3o6WlBRs2bKhq/cmTJwMANm3a1O9+Xdfx4YcfFv9fcMQRR+Cqq67CCy+8gBdffBFbt27FqlWriv+XZRknnHACbr75Zrz11lv4z//8T6xbt67Y1Hkgw603bdo07N27FyeccAIWL1484Fao0U2bNg2WZeGtt94a8vHKbVY90OtTuG//16dazz33HPbs2YN77rkHF198MT73uc9h8eLFiEajA5attEn4xRdfxL/927/hkksuwZlnnjnoMp2dnWXd1qxZU1xn1qxZSKVSePvtt/tt65VXXin+fyizZs3C+vXrB4T+K6+8gkAggMMOO6zfdv785z/3W27btm3YsmXLsI9D9sBgpFEjyzJOO+00/OY3vxnwwQEAQogh11+8eDE8Hg9+9KMf9Vv2f//3fxGLxXDKKacAAOLx+IBZRo444gjIslxs4tq7d++A7Rc+tAZrBisoZ72vfOUr2Lp1K37yk58MWDadThdH2J522mmQZRnXX3/9gA/c0ucXDAbR09NzwDIVzJ07Fx0dHVi1alW/5/DEE0/g7bffLr4+I1WoaZaWUdd13HnnnQOWDQaDZTetbt++HV/5yldw7LHHFke2DqaaPsYvfOEL0DStXxmFEFi1ahUOOuggHH300f3KsXHjRhiGUbzvy1/+Mnbu3In/+7//K97X1dWFhx56CJ///OeLfYqf+MQnMH36dNx9990wTbO47F133QVJkvDlL3+5rNeCGotNqTSqbrjhBjz99NNYuHBh8VSG7du346GHHsLvf//7fqcT7K+9vR0rVqzAddddh5NPPhmnnnoqNm3ahDvvvBPz5s3D17/+dQDAunXrcOGFF+L000/HYYcdhlwuh/vuuw+KouBLX/oSAOD666/HCy+8gFNOOQWTJ0/Grl27cOedd2LixIlDDtsvZ72zzjoLv/jFL3D++efj2WefxTHHHAPTNLFx40b84he/wFNPPYW5c+fi0EMPxZVXXonvfve7OO644/DFL34RXq8Xr776KiZMmICVK1cCAObMmYO77roL3/ve93DooYeio6OjOJCnlKZp+P73v48lS5Zg4cKFOOOMM4qnaxxyyCG49NJLq91t/Rx99NGIRqM4++yzcdFFF0GSJNx3332DfrGZM2cO1qxZg+XLl2PevHkIhUL4/Oc/P+h2L7roIuzevRuXX345HnzwwX7/O/LII3HkkUcCqK6PceLEibjkkktw4403wjAMzJs3D4888ghefPFF3H///f2alVesWIF7770XH374IQ455BAA+WD81Kc+hSVLluCtt95CW1sb7rzzTpimieuuu67fY91444049dRTceKJJ+Kf//mfsWHDBtx+++3413/91wGni5BNNXBELLnU3/72N/Ev//Iv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wTRNjBs3rt/948aNw44dOxpUqtqzLAuXXHIJjjnmGMycObPRxRmxBx98EOvXr8fKlSsbXZSa+uCDD3DXXXfhYx/7GJ566ilccMEFuOiii3Dvvfc2umj9MBhH6IorroAkSUPeCn1VAHDllVfiS1/6EubMmYPVq1dDkiQ89NBDDX4WA5X7vG677TYkEgmsWLGi0UUuW7nPrdTWrVtx8skn4/TTT8fSpUsbVHI6kGXLlmHDhg148MEHG12UEdu8eTMuvvhi3H///fD5fI0uTk1ZloXZs2fjhhtuwFFHHYXzzjsPS5cuxapVqxpdtH5cdXWNerjssstwzjnnDLnM1KlTsX37dgDAjBkzivd7vV5MnToVf//73+tZxKqU+7zWrVuHP/7xjwOmdpo7dy7OPPNM230TBMp/bgXbtm3DokWLcPTRR+Puu++uc+lqq62tDYqiYOfOnf3u37lzJ8aPH9+gUtXWhRdeiMceewwvvPBCw66eU0uvvfYadu3ahdmzZxfvM00TL7zwAm6//XZks1koSn0vLl0vnZ2d/T4DAeDwww/Hr371qwaVaHAMxhFqb29He3v7sMvNmTMHXq8XmzZtwrHHHgsAMAwDH330ESZPnlzvYlas3Of1ox/9CN/73veKf2/btg0nnXQS1qxZgwULFtSziFUr97kB+ZriokWLijX84a7jZjcejwdz5szBM888Uzw1yLIsPPPMM7jwwgsbW7gREkLg29/+Nh5++GE899xzmDJlSqOLVBMnnHAC3njjjX73LVmyBNOnT8d3vvMdx4YiABxzzDEDTql555137PcZ2OjRP25y8cUXi4MOOkg89dRTYuPGjeLcc88VHR0dYu/evY0uWs18+OGHTTMqdcuWLeLQQw8VJ5xwgtiyZYvYvn178eYkDz74oPB6veKee+4Rb731ljjvvPNEa2ur2LFjR6OLNiIXXHCBiEQi4rnnnuu3b1KpVKOLVnPNMir1T3/6k1BVVfznf/6nePfdd8X9998vAoGA+NnPftboovXDYBxFuq6Lyy67THR0dIhwOCwWL14sNmzY0Ohi1VQzBePq1asFgEFvTnPbbbeJgw8+WHg8HjF//nzx8ssvN7pII3agfbN69epGF63mmiUYhRDiN7/5jZg5c6bwer1i+vTp4u677250kQbg1TWIiIhKOKvDhIiIqM4YjERERCUYjERERCUYjERERCUYjERERCUYjERERCUYjERERCUYjERERCUYjERERCUYjERERCUYjERERCUYjERNbPfu3Rg/fjxuuOGG4n1/+MMf4PF48MwzzzSwZET2xUnEiZrcb3/7W5x22mn4wx/+gI9//OOYNWsWvvCFL+Dmm29udNGIbInBSOQCy5Ytw+9+9zvMnTsXb7zxBl599VV4vd5GF4vIlhiMRC6QTqcxc+ZMbN68Ga+99hqOOOKIRheJyLbYx0jkAu+//z62bdsGy7Lw0UcfNbo4RLbGGiNRk9N1HfPnz8esWbPw8Y9/HLfeeiveeOMNdHR0NLpoRLbEYCRqcv/+7/+OX/7yl/jrX/+KUCiEhQsXIhKJ4LHHHmt00YhsiU2pRE3sueeew6233or77rsPLS0tkGUZ9913H1588UXcddddjS4ekS2xxkhERFSCNUYiIqISDEYiIqISDEYiIqISDEYiIqISDEYiIqISDEYiIqISDEYiIqISDEYiIqISDEYiIqISDEYiIqISDEYiIqISDEYiIqIS/x/fJKUzx61H7AAAAABJRU5ErkJggg==\n",
"text/plain": [
"