diff --git a/Autograd26Smatrix.ipynb b/Autograd26Smatrix.ipynb new file mode 100644 index 00000000..df7e0db9 --- /dev/null +++ b/Autograd26Smatrix.ipynb @@ -0,0 +1,2316 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6fa5d362-5b46-4387-8013-951463db2211", + "metadata": {}, + "source": [ + "# Inverse Design of a Waveguide Crossing using S-Matrix Optimization\n", + "\n", + "In this notebook, we will use inverse design to create a compact, high-performance waveguide crossing. This device is a fundamental component in photonic integrated circuits, allowing two separate optical signals in different waveguides to cross each other with minimal signal loss and crosstalk.\n", + "\n", + "Instead of manually designing the structure, we will use an **adjoint optimization** method. We'll start by defining the *function* we want the device to perform in terms of its scattering matrix (S-matrix). Then, we will use `tidy3d`'s automatic differentiation capabilities to discover a geometric structure that achieves this function.\n", + "\n", + "This example highlights the use of the `tidy3d.plugins.smatrix.ComponentModeler`, a powerful tool for optimizing devices based on their multi-port scattering properties. It simplifies the process by automatically running the necessary simulations to compute the full S-matrix, which we can then use directly in our objective function. For more details on the `ComponentModeler`, see [this tutorial](https://docs.flexcompute.com/projects/tidy3d/en/latest/notebooks/SMatrix.html).\n", + "\n", + "If you are new to inverse design, we recommend our tutorials on the [Learning Center](https://www.flexcompute.com/tidy3d/learning-center/inverse-design/) and our [primer on automatic differentiation with tidy3d](https://www.flexcompute.com/tidy3d/examples/notebooks/AdjointPlugin1Intro/)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c76c454e-e2c8-40ab-a4ed-e41a5e3e0d65", + "metadata": {}, + "outputs": [], + "source": [ + "import autograd as ag\n", + "import autograd.numpy as np\n", + "import matplotlib.pylab as plt\n", + "import tidy3d as td\n", + "\n", + "np.random.seed(2)" + ] + }, + { + "cell_type": "markdown", + "id": "e12a92cd-ca91-4981-8168-da4bcd7bb156", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "First, we define the basic parameters for our simulation.\n", + "\n", + "Our device will consist of two parallel input waveguides and two parallel output waveguides. Between them lies a rectangular \"design region.\" We will optimize the pixel-by-pixel permittivity within this region to make light from the top input guide cross over to the bottom output guide, and light from the bottom input guide cross to the top output guide.\n", + "\n", + "This example is a 2D simulation for speed and reduced FlexCredit usage, but it can be easily extended to 3D by defining a vertical dimension (`Lz`), adding a substrate, and modifying the structures accordingly." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3d77b41c-91ac-49af-bc3d-cca78e938e3c", + "metadata": {}, + "outputs": [], + "source": [ + "# material information\n", + "n_si = 3.49\n", + "n_air = 1\n", + "\n", + "# source\n", + "wvl0 = 1.5\n", + "freq0 = td.C_0 / wvl0\n", + "fwidth = freq0 / 10\n", + "run_time = 200 / fwidth\n", + "\n", + "# size of waveguides\n", + "wg_width = 0.3\n", + "wg_length = 1.5\n", + "wg_spacing = 1.5\n", + "\n", + "\n", + "# size of design region\n", + "lx = 4.5\n", + "ly = 4.5\n", + "lz = td.inf\n", + "\n", + "# spacing between design region and PML in y\n", + "buffer = 1.5\n", + "\n", + "# size of simulation\n", + "Lx = lx + wg_length * 2\n", + "Ly = Lx\n", + "Lz = 0.0\n", + "\n", + "# fabrication constraints (feature size and projection strength)\n", + "radius = 0.150\n", + "beta0 = 2\n", + "\n", + "# resolution information\n", + "min_steps_per_wvl = 18\n", + "dl_design_region = 0.01" + ] + }, + { + "cell_type": "markdown", + "id": "c8b4d96e-6af3-47ac-9bac-62ebbc05ce03", + "metadata": {}, + "source": [ + "### Static Simulation\n", + "\n", + "Before we define the optimizable design region, we will set up the \"static\" parts of the simulation—the components that do not change during the optimization. These include the input and output waveguides and the ports used to inject and measure light." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "45077f84-ef94-4ca8-9aa8-e7abfe11784a", + "metadata": {}, + "outputs": [], + "source": [ + "wg_vert = td.Structure(\n", + " geometry=td.Box(\n", + " center=(0, 0, 0),\n", + " size=(td.inf, wg_width, lz),\n", + " ),\n", + " medium=td.Medium(permittivity=n_si**2),\n", + ")\n", + "\n", + "wg_horz = td.Structure(\n", + " geometry=td.Box(\n", + " center=(0, 0, 0),\n", + " size=(wg_width, td.inf, lz),\n", + " ),\n", + " medium=td.Medium(permittivity=n_si**2),\n", + ")\n", + "\n", + "wgs = [wg_vert, wg_horz]\n", + "\n", + "fld_mnt_name = \"field\"\n", + "\n", + "# field monitor that measures fields on the z=0 plane at the design freqs\n", + "fld_mnt = td.FieldMonitor(\n", + " center=(0, 0, 0),\n", + " size=(td.inf, td.inf, 0),\n", + " freqs=[freq0],\n", + " name=fld_mnt_name,\n", + ")\n", + "\n", + "sim_static = td.Simulation(\n", + " size=(Lx, Ly, Lz),\n", + " grid_spec=td.GridSpec.auto(\n", + " min_steps_per_wvl=min_steps_per_wvl,\n", + " wavelength=wvl0,\n", + " ),\n", + " structures=wgs,\n", + " sources=[],\n", + " monitors=[fld_mnt],\n", + " boundary_spec=td.BoundarySpec.pml(x=True, y=True, z=True if Lz else False),\n", + " run_time=run_time,\n", + " symmetry=(0, 0, 0),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4400153f-b2b2-4ec7-97ea-34e82b5ddd1d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAHWCAYAAABDtELCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABz20lEQVR4nO3deXwTdf4/8FfSHG3TJpQUWspZBUW55bLoLihdqyKIByirgIjgASh2VwRXQFGpx8qhXMt6sLogiCt4gLgVOaWCXK6IIl9FQaAtCW3SpjTn/P7ob4amTdtJkzTT9vV8PPKATj6ZvJPppK98Pp+ZUQmCIICIiIhIAdTRLoCIiIhIxGBCREREisFgQkRERIrBYEJERESKwWBCREREisFgQkRERIrBYEJERESKwWBCREREisFgQkRERIrBYEKkUNu3b4dKpcL27dujXQqF2b59+6DT6fDbb781+HNbrVYYDAZs3ry5wZ+bSA4GE6IoW7ZsGVatWhXtMuplzZo1WLRoUbTLAAD4fD68/PLLSE9PR2xsLHr27In33ntP9uOLi4sxefJktGrVCgaDAddddx0OHjxYrd26detw7733okuXLlCpVBgyZEjQtf7tb3/DmDFj0LFjx6AfGyqz2YwHHngAs2fPbvDnJpJDxWvlEEVX9+7dkZycXK1nxOfzweVyQafTQa1W5neIW265BUeOHMGvv/4a7VIwa9YsvPjii5g0aRL69++Pjz76CJs2bcJ7772Hu+++u9bH+nw+/OEPf8C3336LJ554AsnJyVi2bBlOnTqFAwcOoEuXLlLbIUOG4MCBA+jfvz8OHz6Mnj17BtWrdfjwYfTp0wd79uxBRkZGfV9uSH744QdceeWV2Lp1K66//vqo1EBUEwYTUgSHwwGDwRDtMqKipmDSGCglmJw+fRrp6emYPHkylixZAgAQBAGDBw/GiRMn8OuvvyImJqbGx7///vu46667sH79etx5550AgHPnzuGyyy7DTTfdhDVr1khtT506hbZt20KtVtdr2z322GPYuHEjfv31V6hUqvq94DDo0aMH+vTpg3feeSdqNRAFosyvYdSonT59GhMnTkRaWhr0ej3S09Px8MMPw+VyAQBWrVoFlUqFHTt24JFHHkHr1q3Rrl076fHLli1Dt27doNfrkZaWhilTpqC4uNjvOY4fP4477rgDqampiI2N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29Z7DkxsbGyTDhLhpphgItfPP/8sTR4DgLvuugvnzp3DnDlzkJ+fj969e2PLli1+E2IXLlwItVqNO+64A06nE1lZWVi2bFk0yiciIqJaKDqYBJpXEmjZ1KlTpR6UQGJjY7F06VIsXbo0jNURERFRuCnqPCaNgV6vx9y5cxv0cOBwacy1A427/sZcO8D6o6kx1w6wfgqeYia/EhEREbHHhIiIiBSDwYSIiIgUg8GEiIiIFIPBpJKHHnoIKpUKixYtqrPt0qVL0alTJ8TGxmLgwIHYt2+f3/3l5eWYMmUKzGYzEhIScMcdd1Q7Q204PPPMM+jatSsMBgOSkpKQmZmJvXv3Nor63W43nnzySfTo0QMGgwFpaWkYN24czpw50yjq//DDD3HDDTfAbDZDpVLh8OHDsh63fv16dO3aFbGxsejRowc2b97sd78gCJgzZw7atGmDuLg4ZGZm4vjx42GtHaj7PVRq3Tt37sTw4cORlpYGlUqFjRs31vmY7du346qrroJer0fnzp2xatWqam2CfT/qIycnB/3790diYiJat26NkSNH4tixY3U+Tinv/fLly9GzZ0/pnCQZGRn47LPPGkXtVb344otQqVSYPn16re2UWn+TJpAgCILw4YcfCr169RLS0tKEhQsX1tp27dq1gk6nE9566y3h+++/FyZNmiS0aNFCKCgokNo89NBDQvv27YWtW7cK+/fvF66++mph0KBBYa979erVQm5urvDzzz8LR44cESZOnCgYjUahsLBQ8fUXFxcLmZmZwrp164Qff/xRyMvLEwYMGCD07du31scppf533nlHePbZZ4V//vOfAgDh0KFDdT7mq6++EmJiYoSXX35ZOHr0qPD0008LWq1W+O6776Q2L774omAymYSNGzcK3377rTBixAghPT1duHDhQthql/MeKrFuQRCEzZs3C3/729+EDz/8UAAgbNiwodb2v/zyixAfHy9kZ2cLR48eFV5//XUhJiZG2LJli9Qm2PejvrKysoS3335bOHLkiHD48GHh5ptvFjp06CCUlpbW+Bglvfcff/yxsGnTJuGnn34Sjh07Jjz11FOCVqsVjhw5ovjaK9u3b5/QqVMnoWfPnsJjjz1WYzul1t/UMZgIgvD7778Lbdu2FY4cOSJ07NixzmAyYMAAYcqUKdLPXq9XSEtLE3JycgRBqPiDq9VqhfXr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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sim_static.plot_eps(z=0.01, freq=freq0)\n", + "ax.set_aspect(\"equal\")" + ] + }, + { + "cell_type": "markdown", + "id": "d120bf86-54c3-4af2-b3eb-33726288d008", + "metadata": {}, + "source": [ + "### Define design region\n", + "\n", + "Next, we define the design region as a pixelated grid of permittivity values that get generated from our optimization parameters.\n", + "\n", + "We first define the overall geometry as a `td.Box` and also the number of pixels in x and y staticd on our design region resolution." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "209f2e58-fd7d-42f7-bb6d-459f41511250", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "451 451\n" + ] + } + ], + "source": [ + "nx = (int(lx / dl_design_region) // 2) * 2 + 1\n", + "ny = (int(ly / dl_design_region) // 2) * 2 + 1\n", + "print(nx, ny)\n", + "\n", + "design_region_geo = td.Box(size=(lx, ly, lz), center=(0, 0, 0))" + ] + }, + { + "cell_type": "markdown", + "id": "9b02b2fa-ce32-49ad-9844-1af1a4ff864d", + "metadata": {}, + "source": [ + "Next we write a function to give us the pixelated array as a function of our parameters through our filtering and projection methods, which are used to make the resulting structures easier to fabricate. For more details, refer to our 4th lecture in the [inverse design 101 lecture series](https://www.flexcompute.com/tidy3d/learning-center/inverse-design/), which focuses on fabrication constraints.\n", + "\n", + "We also wrap this function in another one that generates the entire `td.Structure` corresponding to the design region, for convenience later.\n", + "\n", + "> Note: we will enforce here that the design region has both 90 degree rotational symmetry and also x and y mirror symmetry, since we expect the final device to respect these symmetries to work in all orientations." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "761964ee-79d7-486a-8bbb-03d2917ff844", + "metadata": {}, + "outputs": [], + "source": [ + "from tidy3d.plugins.autograd import make_filter_and_project, rescale\n", + "\n", + "filter_project = make_filter_and_project(radius, dl_design_region)\n", + "\n", + "\n", + "def get_density(params: np.ndarray, beta: float) -> np.ndarray:\n", + " \"\"\"Get the density of material (0, 1) as a function of the parameters (0,1)\"\"\"\n", + " fp0 = filter_project(params, beta=beta)\n", + "\n", + " # make sure density has 90 degree rotation symmetry\n", + " fp_90 = np.rot90(fp0)\n", + " fp_180 = np.rot90(fp_90)\n", + " fp_270 = np.rot90(fp_180)\n", + " fp_rot_symm = (fp0 + fp_90 + fp_180 + fp_270) / 4.0\n", + "\n", + " # make sure density has x=0 and y=0 mirror symmetry\n", + " fp_xy_symm_lr = np.fliplr(fp_rot_symm)\n", + " fp_xy_symm_ud = np.flipud(fp_rot_symm)\n", + " fp_xy_symm_lrud = np.flipud(np.fliplr(fp_rot_symm))\n", + " return (fp_rot_symm + fp_xy_symm_lr + fp_xy_symm_ud + fp_xy_symm_lrud) / 4.0\n", + "\n", + "\n", + "def make_eps(params: np.ndarray, beta: float) -> np.ndarray:\n", + " \"\"\"Construct density values and rescale them to relative permittivity values between air and silicon.\"\"\"\n", + " density = get_density(params, beta=beta)\n", + " return rescale(density, 1, n_si**2)\n", + "\n", + "\n", + "def make_custom_medium(params: np.ndarray, beta: float) -> td.Structure:\n", + " \"\"\"Make td.Structure containing custom medium with the permittivity data as a function of parameters.\"\"\"\n", + " eps_data = make_eps(params, beta).reshape((nx, ny, 1))\n", + " return td.Structure.from_permittivity_array(eps_data=eps_data, geometry=design_region_geo)" + ] + }, + { + "cell_type": "markdown", + "id": "d8dcf2f1-9bf8-49e6-9e1e-6221992c7210", + "metadata": {}, + "source": [ + "### Construct Simulation\n", + "\n", + "With all of these functions and variables defined, we can write a single function to return our variable `td.Simulation` as a function of our design parameters. This function first constructs the design region, a mesh override structure to control the resolution in this region, and then creates a copy of the original `td.Simulation` with all of the basic parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1d67ccdc-758e-4648-aabc-4264b83086a1", + "metadata": {}, + "outputs": [], + "source": [ + "def get_sim(params, beta, include_extra_mnts: bool = True):\n", + " design_region = make_custom_medium(params, beta=beta)\n", + "\n", + " design_override = td.MeshOverrideStructure(\n", + " geometry=design_region.geometry,\n", + " dl=[dl_design_region, dl_design_region, dl_design_region],\n", + " )\n", + " grid_spec = sim_static.grid_spec.updated_copy(\n", + " override_structures=list(sim_static.grid_spec.override_structures) + [design_override]\n", + " )\n", + "\n", + " update_dict = dict(\n", + " structures=list(sim_static.structures) + [design_region],\n", + " grid_spec=grid_spec,\n", + " )\n", + "\n", + " # if include_extra_mnts is False, update sim to only include mode monitors, to save data.\n", + " if not include_extra_mnts:\n", + " update_dict[\"monitors\"] = []\n", + "\n", + " return sim_static.updated_copy(**update_dict)" + ] + }, + { + "cell_type": "markdown", + "id": "aaab90f1-970e-4fde-89d8-f08ae61f530f", + "metadata": {}, + "source": [ + "Let's test out our function. We'll make an initially random array of parameters between 0 and 1 and generate the static simulation to plot and inspect." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b33ee4ee-4f20-481b-af19-1b47fd5880ea", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAHWCAYAAABDtELCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB0WUlEQVR4nO3deXwTdf4/8NfM5OqVUlroIVcVFEHuy6K7ePRrdRFEXVQWBS/wABTZVUE5FI96rIjKtawHqz8QxBW8EEUUREGQaxdEkVUURNpSjqZnjpnP74+Y0LRpO2mSdtq+no9HHtDJJ8knmWTyyvvzmRlJCCFAREREZAByY3eAiIiIyIfBhIiIiAyDwYSIiIgMg8GEiIiIDIPBhIiIiAyDwYSIiIgMg8GEiIiIDIPBhIiIiAyDwYSIiIgMg8GEyKA2bNgASZKwYcOGxu4KRdhbb72F1q1bo6SkpMEfe9++fTCZTNi7d2+DPzaRHgwmRI1swYIFWLJkSWN3o16WLVuGuXPnNnY3AACapuGZZ55BZmYmbDYbevbsiTfffFP37U+dOoXx48ejTZs2iIuLw8UXX4ydO3cGbfvee++hb9++sNls6NChA2bNmgWPx6PrcVRVxaxZszBp0iTEx8fr7l+kdOvWDUOHDsXMmTMb/LGJdBFE1Ki6d+8uhgwZUm25qqqivLxcqKra8J3SaejQoaJjx46N3Q0hhBBTp04VAMS4cePE4sWLxdChQwUA8eabb9Z5W1VVxeDBg0VcXJx45JFHxLx580S3bt1EQkKC+OGHHwLarlmzRkiSJC6++GKxePFiMWnSJCHLsrjzzjt19XPVqlVCkiTx66+/1ut5RsKaNWsEAPG///2v0fpAVBMGEzKEkpKSxu5Co6kpmDQFRgkmv/76qzCbzWLChAn+ZZqmiT/84Q+iXbt2wuPx1Hr7FStWCABi5cqV/mUFBQWiVatWYtSoUQFtu3XrJnr16iXcbrd/2cMPPywkSRLfffddnX0dPny4uPDCC/U+tahwuVwiKSlJzJgxo1H7QRQMgwlF3K+//ipuvfVWkZ6eLiwWi+jUqZO48847hdPpFEII8dprrwkAYsOGDeKuu+4Sbdq0Ea1atfLffv78+aJbt27CYrGI9PR0cffdd4uTJ08GPMYPP/wgrrnmGpGamiqsVqs444wzxPXXXy9OnTrlb/PJJ5+ICy64QCQmJoq4uDhx9tlni2nTptXZfz23q6ioEDNnzhRnnXWWsFgsol27duL+++8XFRUV1e7vjTfeEAMGDBAxMTGiVatW4g9/+IP4+OOPhRBCdOzYUQAIuPhCyueffy4AiM8//zzg/t566y3Rt29fYbPZRHJyshg9enS1X99jx44VcXFx4tdffxVXXXWViIuLEykpKeKvf/1rnV/SQgixevVq8ac//cm/Ds8880wxe/bsgNsOGTKkWt9rCyljx46t1t53mTVrVp19qs38+fMFAPHtt98GLF+2bJkAIDZt2lTr7UeOHClSU1OrVafGjx8vYmNj/ev122+/FQDE/PnzA9odOXJEABCPPfZYrY9TXl4uLBaLeOSRRwKWHzx4UAAQr732WrXbVH19Zs2aJQCI/fv3i9GjRwu73S5SUlLE9OnThaZp4tChQ2L48OEiISFBpKamir///e9B+3L11VeLnj171tpfosZgaqARI2ohfvvtNwwcONA/Xt+1a1ccOXIEb7/9NsrKymCxWPxt7777brRp0wYzZ85EaWkpAOCRRx7Bo48+iuzsbNx1113Yv38/Fi5ciG+++QZfffUVzGYzXC4XcnJy4HQ6MWnSJKSlpeHIkSP44IMPcOrUKSQmJuLbb7/FlVdeiZ49e2L27NmwWq343//+h6+++qrW/uu5naZpGD58OL788kuMHz8e5557Lvbs2YPnn38eP/zwA1avXu1v++ijj+KRRx7B4MGDMXv2bFgsFmzduhWfffYZLrvsMsydO9c/1+Dhhx8GAKSmptbYvyVLluCWW27BgAEDkJubi/z8fLzwwgv46quvsGvXLrRq1crfVlVV5OTkYNCgQfj73/+OTz/9FM899xzOOuss3HXXXbW+DkuWLEF8fDymTJmC+Ph4fPbZZ5g5cyYcDgeeffZZAMDDDz+MoqIi/Prrr3j++ecBoNY5E3fccQeys7MDlq1duxZLly5F27Zt/csKCwtr7ZtPQkICrFYrAGDXrl2Ii4vDueeeG9Bm4MCB/usvvPDCGu9r165d6Nu3L2Q5cNrdwIEDsXjxYvzwww/o0aMHdu3aBQDo379/QLuMjAy0a9fOf31NduzYAZfLhb59++p6jrW5/vrrce655+Kpp57Chx9+iMcffxytW7fGP/7xD1xyySV4+umnsXTpUvztb3/DgAED8Mc//jHg9v369cO7774L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CVlZWTj//PN19y8jIwOHDx+GEAIdOnTA4cOHYbfbI/DMG47D4UD79u2bZN+Bpt3/ptx3gP1vTE2570Dz6f++fft0HcKiKpvNhoMHD8LlckWsTxaLBTabLWL3ZzSGCSZ6/fjjjygsLPT/ff311+PYsWOYOXMm8vLy0Lt3b6xduzZgQuzzzz8PWZZx7bXXwul0IicnBwsWLAjpcWVZRrt27fxlNLvd3iQ/ZEDT7jvQtPvflPsOsP+NqSn3HWj6/T/jjDMg1/NIazabrVkHiUgzdDAJNq8k2LKJEyf6KyjB2Gw2zJ8/H/Pnz49g74iIiCjSDLW7MBEREbVsDCYhslqtmDVrFqxWa2N3JWRNue9A0+5/U+47wP43pqbcd4D9p9BJQoSx/xMRERFRBLFiQkRERIbBYEJERESGwWBCREREhsFgUsWdd94JSZIwd+7cOtvOnz8fnTp1gs1mw6BBg7Bt27aA6ysqKjBhwgQkJycjPj4e1157bbXD54frkUceQdeuXREXF4ekpCRkZ2dj69atTaLvbrcbDz74IHr06IG4uDhkZGRgzJgx+O2335pE/9955x1cdtllSE5OhiRJ2L17t67brVy5El27doXNZkOPHj2wZs2agOuFEJg5cybS09MRExOD7OxsHDhwIKJ9B+p+DY3a7y+++ALDhg1DRkYGJEnC6tWr67zNhg0b0LdvX1itVnTu3BlLliyp1ibU16M+cnNzMWDAACQkJKBt27YYMWIE9u/fX+ftjPLaL1y4ED179vQfkyQrKwsfffRRk+h7VU899RQkScLkyZNrbWfU/jdrjXfQWeN55513RK9evURGRoZ4/vnna227fPlyYbFYxKuvviq+/fZbMW7cONGqVSuRn5/vb3PnnXeK9u3bi/Xr14vt27eL888/XwwePDiifV66dKlYt26d+PHHH8XevXvFbbfdJux2uygoKDB830+dOiWys7PFihUrxPfffy+2bNkiBg4cKPr161fr7YzS/9dff108+uij4p///KcAIHbt2lXnbb766iuhKIp45plnxL59+8T06dOF2WwWe/bs8bd56qmnRGJioli9erX4z3/+I4YPHy4yMzMjeghqPa+hEfsthBBr1qwRDz/8sHjnnXcEALFq1apa2//0008iNjZWTJkyRezbt0+89NJLQlEUsXbtWn+bUF+P+srJyRGvvfaa2Lt3r9i9e7f405/+JDp06CBKSkpqvI2RXvv33ntPfPjhh+KHH34Q+/fvFw899JAwm81i7969hu97Zdu2bROdOnUSPXv2FPfee2+N7Yza/+aOweR3v/76qzjjjDPE3r17RceOHesMJgMHDhQTJkzw/62qqsjIyKh2jp6VK1f623z33XcCCO0cPaEqKioSAMSnn37a5PouhHeDAUD88ssvNbYxWv8PHjyoO5hcd911YujQoQHLBg0aJO644w4hhBCapom0tDTx7LPP+q8/deqUsFqt4s0334xYn+t6DY3a76r0BJMHHnhAdO/ePWDZ9ddfL3Jycvx/h/p6REpBQYEAIDZu3FhjG6O+9j5JSUni5ZdfDnqdEfteXFwsunTpItatWyeGDBlSazAxYv9bAg7lANA0DTfddBPuv/9+dO/evc72LpcLO3bsQHZ2tn+ZLMvIzs7Gli1bAAA7duyA2+0OaNO1a1d06NDB3ybSXC4XFi9ejMTERPTq1atJ9d2nqKgIkiQFnAm6KfW/Llu2bAnoFwDk5OT4+3Xw4EHk5eUFtElMTMSgQYMi1nc9r6ER+11fdfW9Pq9HpBQVFQEAWrduXWMbo772qqpi+fLlKC0tRVZWVpPp+4QJEzB06NBq/QrGiP1vCQx9SPqG8vTTT8NkMuGee+7R1b6wsBCqqgacjwcAUlNT8f333wMA8vLyYLFYqn3BpqamIi8vLyL99vnggw9www03oKysDOnp6Vi3bh1SUlKaRN8rq6iowIMPPohRo0bVeE4NI/dfj7y8vKB99/XL929tbcKl5zU0Yr/rq6a+OxwOlJeX4+TJkyG/HpGgaRomT56MCy64AOedd16N7Yz22u/ZswdZWVmoqKhAfHw8Vq1ahW7dujWJvi9fvhw7d+7EN998o6u90frfUrS4isnSpUsRHx/vv2zcuBEvvPAClixZAkmSGrt7tara902bNgEALr74YuzevRubN2/G5Zdfjuuuuw4FBQWN3Nvqauo/4J0Ie91110EIgYULFzZiL4Orre9E9TFhwgTs3bsXy5cvb+yuhOScc87B7t27sXXrVtx1110YO3Ys9u3b19jdqtPhw4dx7733YunSpTyhnsG1uGAyfPhw7N6923/ZvHkzCgoK0KFDB5hMJphMJvzyyy/461//ik6dOgW9j5SUFCiKUm0vj/z8fKSlpQEA0tLS4HK5cOrUqRrbhNv3/v37AwDi4uLQuXNnnH/++XjllVdgMpnwyiuvGKrvtfXfF0p++eUXrFu3rtYzkBrttQ9VWlpanX33LaupTbj0vIZG7Hd91dR3u92OmJiYer0e4Zo4cSI++OADfP7552jXrl2tbY322lssFnTu3Bn9+vVDbm4uevXqhRdeeMHwfd+xYwcKCgrQt29f/7Z+48aNePHFF2EymaCqqqH735K0uGCSkJCAzp07+y/jx4/Hf//734AvnYyMDNx///34+OOPg96HxWJBv379sH79ev8yTdOwfv16/1hrv379YDabA9rs378fhw4dqnE8NtS+x8TEBG2naRqcTqeh+l5T/32h5MCBA/j000+RnJxc630Y/bWvS1ZWVkC/AGDdunX+fmVmZiItLS2gjcPhwNatW8N67SvT8xoasd/1VVff6/N61JcQAhMnTsSqVavw2WefITMzM+z+N/ZrX9v2xkh9v/TSS7Fnz55qPzBGjx6N3bt3Q1EUQ/e/RWns2bdGFGyvnEsuuUS89NJL/r+XL18urFarWLJkidi3b58YP368aNWqlcjLy/O3ufPOO0WHDh3EZ599JrZv3y6ysrJEVlZWxPpZUlIipk2bJrZs2SJ+/vlnsX37dnHLLbcIq9UasPueEfsuhBAul0sMHz5ctGvXTuzevVscPXrUf3E6nYbv//Hjx8WuXbvEhx9+KACI5cuXi127domjR4/629x0001i6tSp/r+/+uorYTKZxN///nfx3XffiVmzZgXd/bBVq1bi3XffFf/973/FVVddFZXdhWt7DY3abyG8e1Xs2rVL7Nq1SwAQc+bMEbt27fLvyTV16lRx0003+dv7dhe+//77xXfffSfmz58fdHfhut5TkXDXXXeJxMREsWHDhoD3e1lZmb+NkV/7qVOnio0bN4qDBw+K//73v2Lq1KlCkiTxySefGL7vwVTdK6ep9b+5YjAJIlgw6dixo5g1a1bAspdeekl06NBBWCwWMXDgQPH1118HXF9eXi7uvvtukZSUJGJjY8XVV18d8KUVrvLycnH11VeLjIwMYbFYRHp6uhg+fLjYtm2b4fsuxOndbINdPv/8c8P3/7XXXgva98p9HTJkiBg7dmzA7d566y1x9tlnC4vFIrp37y4+/PDDgOs1TRMzZswQqampwmq1iksvvVTs378/on0XovbX0Mj9/vzzz4O+7r7+jh07VgwZMqTabXr37i0sFos488wzxWuvvVbtfut6T0VCTe/3yv0x8mt/6623io4dOwqLxSLatGkjLr30Un8oMXrfg6kaTJpa/5srnl2YiIiIDKPFzTEhIiIi42IwISIiIsNgMCEiIiLDYDAhIiIiw2AwISIiIsNgMCEiIiLDYDAhIiIiw2AwISIiIsNgMCEiAMArr7yCyy67LOqPs3btWvTu3RuapkX9sYio6WEwISJUVFRgxowZmDVrVtQf6/LLL4fZbMbSpUuj/lhE1PQwmBAR3n77bdjtdlxwwQUN8ng333wzXnzxxQZ5LCJqWhhMiJqRY8eOIS0tDU8++aR/2ebNm2GxWKqdvr2y5cuXY9iwYQHLLrroIkyePDlg2YgRI3DzzTf7/+7UqRMef/xxjBkzBvHx8ejYsSPee+89HDt2DFdddRXi4+PRs2dPbN++PeB+hg0bhu3bt+PHH3+s/5MlomaJwYSoGWnTpg1effVVPPLII9i+fTuKi4tx0003YeLEibj00ktrvN2XX36J/v371+sxn3/+eVxwwQXYtWsXhg4diptuugljxozBjTfeiJ07d+Kss87CmDFjUPl8oR06dEBqaio2bdpUr8ckouaLwYSomfnTn/6EcePGYfTo0bjzzjsRFxeH3NzcGtufOnUKRUVFyMjIqPfj3XHHHejSpQtmzpwJh8OBAQMGYOTIkTj77LPx4IMP4rvvvkN+fn7A7TIyMvDLL7/U6zGJqPliMCFqhv7+97/D4/Fg5cqVWLp0KaxWa41ty8vLAQA2m61ej9WzZ0///1NTUwEAPXr0qLasoKAg4HYxMTEoKyur12MSUfPFYELUDP3444/47bffoGkafv7551rbJicnQ5IknDx5ss77VVW12jKz2ez/vyRJNS6runvwiRMn0KZNmzofk4haFgYTombG5XLhxhtvxPXXX4/HHnsMt99+e7VqRWUWiwXdunXDvn37ql1Xdfjlp59+ikgfKyoq8OOPP6JPnz4RuT8iaj4YTIiamYcffhhFRUV48cUX8eCDD+Lss8/GrbfeWuttcnJy8OWXX1Zb/u677+Kdd97Bjz/+iCeeeAL79u3DL7/8giNHjoTVx6+//hpWqxVZWVlh3Q8RNT8MJkTNyIYNGzB37ly88cYbsNvtkGUZb7zxBjZt2oSFCxfWeLvbbrsNa9asQVFRUcDyoUOH4plnnkG3bt3wxRdfYMGCBdi2bRveeOONsPr55ptvYvTo0YiNjQ3rfoio+ZFE5X34iKjFGjlyJPr27Ytp06YB8B7HpHfv3pg7d25EH6ewsBDnnHMOtm/fjszMzIjeNxE1fayYEBEA4Nlnn0V8fHzUH+fnn3/GggULGEqIKChWTIgoqGhVTIiIasNgQkRERIbBoRwiIiIyDAYTIiIiMgwGEyIiIjIMBhMiIiIyDAYTIiIiMgwGEyIiIjIMBhMiIiIyDAYTIiIiMgwGEyIiIjKM/w/iUnXjlUdrFgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "params0 = 0.5 * np.ones((nx, ny))\n", + "\n", + "\n", + "sim0 = get_sim(params0, beta=100)\n", + "sim0.plot_eps(z=0, freq=freq0)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "93091ed1-2e12-49f6-9107-4e297baed3aa", + "metadata": {}, + "source": [ + "Next we will set up an initial set of parameters to approximate the waveguide crossing represented by two intersecting waveguides. We'll use this as the starting point for our optimization since it already mostly works.\n", + "\n", + "Below we'll import a helper function to set this up automatically by looking at a base `Simulation` object and a parmeterization corresponding to the design region `Structure`." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "e8ccfea8-62b6-4d6e-a49f-407d6c7cb64e", + "metadata": {}, + "outputs": [], + "source": [ + "from tidy3d.plugins.autograd.invdes import initialize_params_from_simulation\n", + "\n", + "params0 = initialize_params_from_simulation(\n", + " sim=sim_static,\n", + " param_to_structure=make_custom_medium,\n", + " params0=params0,\n", + " verbose=False,\n", + " beta=10,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "d6f35a6d-a40f-4f08-8eda-2c44be692212", + "metadata": {}, + "outputs": [], + "source": [ + "sim0 = get_sim(params0, beta=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "65933269-50cd-4dea-b32d-25f39492c7dc", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAHWCAYAAABDtELCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB440lEQVR4nO3deXwTZeI/8E/utGkTSgot5ayCiyKXXNZjQelaXRRRF5VVQUU8FlTsriiugOJRjxVQAVl2VVYXBHEVV0HcinIJgly7Iop8FaUiPRLapE1pzvn90d8MTZu0k6uZtp/365UXdPLM5EmmM/3keZ55RiUIggAiIiIiBVAnuwJEREREIgYTIiIiUgwGEyIiIlIMBhMiIiJSDAYTIiIiUgwGEyIiIlIMBhMiIiJSDAYTIiIiUgwGEyIiIlIMBhMihdq8eTNUKhU2b96c7KpQnO3evRt6vR4//fRTq7+23W6HyWTChg0bWv21ieRgMCFKsqVLl2LFihXJrkZUVq1ahUWLFiW7GgCAQCCA5557Drm5uTAajRg0aBDeeust2etXVVXhzjvvRJcuXWAymXDJJZdg3759TcqtWbMGN998M/r16weVSoUxY8ZEXNc///nPmDRpEnr37h3xurGyWq244447MGfOnFZ/bSI5VLxXDlFynXvuucjMzGzSMhIIBODxeKDX66FWK/M7xJVXXomDBw/ixx9/THZVMHv2bDzzzDOYNm0aRowYgffffx/r16/HW2+9hRtvvLHZdQOBAC6++GL897//xYMPPojMzEwsXboUJSUl2Lt3L/r16yeVHTNmDPbu3YsRI0bgwIEDGDRoUEStWgcOHMDQoUOxY8cO5OXlRft2Y/LNN9/gnHPOwaZNm3DppZcmpQ5E4TCYkCK4XC6YTKZkVyMpwgWTtkApweT48ePIzc3FnXfeicWLFwMABEHA6NGjcfToUfz444/QaDRh13/77bdxww03YO3atfjd734HAKioqMBZZ52FK664AqtWrZLKlpSUoHv37lCr1VHtu/vvvx/r1q3Djz/+CJVKFd0bjoOBAwdi6NCheOONN5JWB6JQlPk1jNq048ePY+rUqcjJyYHBYEBubi7uueceeDweAMCKFSugUqmwZcsW/OEPf0DXrl3Ro0cPaf2lS5diwIABMBgMyMnJwfTp01FVVRX0GkeOHMF1112H7OxsGI1G9OjRAzfeeCMcDodUpri4GBdddBE6deqEtLQ0/OpXv8IjjzzSYv3lrOd2uzFv3jz07dsXBoMBPXv2xKxZs+B2u5ts75///CdGjhyJ1NRUZGRk4Ne//jX+85//AAD69OmDr7/+Glu2bIFKpQrqGgg3xmTt2rUYNmwYUlJSkJmZiZtvvhnHjx8PKnPrrbciLS0Nx48fx4QJE5CWloYuXbrgT3/6E/x+f4ufwfvvv49x48ZJ+/DMM8/EE088EbTumDFjsH79evz0009S3fv06RN2m7feeqtUrvHjsccea7FOLdXX6/XiD3/4g7RMpVLhnnvuwc8//4ydO3c2u/4777yDrKwsXHvttdKyLl264Prrr8f7778ftF979uwZUwvWunXrcOmllzYJJeE+hz59+uDWW2+VfhaPn+3bt+O+++5Dly5d0KlTJ9x1113weDyoqqrC5MmTkZGRgYyMDMyaNQuhvn/+5je/wQcffBDyOaJk0ia7AtS+/PLLLxg5cqTUX9+/f38cP34c77zzDmpra6HX66Wyf/jDH9ClSxfMnTsXLpcLAPDYY4/h8ccfR35+Pu655x4cPnwYr7zyCr788kt8/vnn0Ol08Hg8KCgogNvtxr333ovs7GwcP34cH374IaqqqmCxWPD111/jyiuvxKBBgzB//nwYDAb83//9Hz7//PNm6y9nvUAggPHjx2P79u248847cfbZZ+Orr77CwoUL8d1332HdunVS2ccffxyPPfYYLrjgAsyfPx96vR67du3Cp59+issuuwyLFi3Cvffei7S0NPz5z38GAGRlZYWt34oVK3DbbbdhxIgRKCoqQllZGV588UV8/vnn2L9/Pzp16iSV9fv9KCgowKhRo/CXv/wFn3zyCV544QWceeaZuOeee5r9HFasWIG0tDQUFhYiLS0Nn376KebOnQun04nnn38eQP04CYfDgZ9//hkLFy4EAKSlpYXd5l133YX8/PygZRs3bsTKlSvRtWtXaZnNZmu2bqL09HQYDAYAwP79+2EymXD22WcHlRk5cqT0/EUXXRR2W/v378d5553XJHCMHDkSy5cvx3fffYeBAwfKqldzjh8/jmPHjuG8886LeVvi7/7jjz+OL774AsuXL0enTp2wY8cO9OrVC08//TQ2bNiA559/Hueeey4mT54ctP6wYcOwcOFCfP311zj33HNjrg9R3AhE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dQCA+fPnY+vWrRg3bhx69+6N8vJyLF26FD169Gj2slE5691yyy14++23cffdd+Ozzz7DhRdeCL/fj2+//RZvv/02Pv74YwwfPhx9+/bFn//8ZzzxxBO4+OKLce2118JgMODLL79ETk4OioqKANRftvnKK6/gySefRN++fdG1a9eQs3HqdDo8++yzuO222zB69GhMmjRJuly4T58+eOCBB6LdbUEuuOACZGRkYMqUKbjvvvugUqnw5ptvhvzjOGzYMKxZswaFhYUYMWIE0tLScNVVV4Xc7n333YeKigrMmjULq1evDnpu0KBBGDRoEIDoxpj06NEDM2fOxPPPPw+v14sRI0Zg3bp12LZtG1auXBnUvTF79mz84x//wNGjR6V5V373u9/h/PPPx2233YZDhw5JM7/6/X48/vjjQa+1detWbN26FUD9uCqXy4Unn3wSAPDrX/8av/71r5ut69VXX4333nuvSbcTUD8j629/+1uMHz8ev/zyC1588UVYLBbs2LEDb731FiZNmhTxZxNOcXExrrrqKo4xIeVJxqVA1L799NNPwuTJk4UuXboIBoNBOOOMM4Tp06cLbrdbEITTlzuGuqRYEOovD+7fv7+g0+mErKws4Z577hEqKyul53/44Qfh9ttvF84880zBaDQKnTt3Fi655BLhk08+kcps2rRJuPrqq4WcnBxBr9cLOTk5wqRJk4Tvvvuu2brLXc/j8QjPPvusMGDAAMFgMAgZGRnCsGHDhMcff1xwOBxBZV977TVh6NChUrnRo0cLxcXF0vOlpaXCuHHjhPT0dAGAdGln48uFRWvWrJG217lzZ+Gmm24Sfv7556AyU6ZMEUwmU5P3N2/ePEHOYf/5558L559/vpCSkiLk5OQIs2bNEj7++OMm9ampqRF+//vfC506dRIANHvp8OjRo8Ne+hvqMtlI+f1+4emnnxZ69+4t6PV6YcCAAcI///nPJuXES6mPHj0atPzkyZPC1KlTBavVKqSmpgqjR48O+TsqfobRvo99+/YJAJpcbg5AKCwsFCZOnCikpKQI3bp1ExYvXiwsW7ZMSE1NFe644w5BEMIfP2K9Gl/qHup34ZtvvhEABB0zRErBKemJiFrZ2LFjkZOTgzfffFNaplKpMG/evJhnwZVj5syZ2Lp1K/bu3csWE1IcjjEhImplTz/9NNasWSNdAt6a7HY7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N998IyxZsiTk5cIt/U7Fwz333CNYLBZh8+bNQb/vtbW1Uhklf/YPP/ywsGXLFuHo0aPC//73P+Hhhx8WVCqV8J///EfxdQ+l8VU5ba3+7RWDSQihgknv3r2FefPmBS17+eWXhV69egl6vV4YOXKk8MUXXwQ9f+rUKeEPf/iDkJGRIaSmpgrXXHNN0B+tWJ06dUq45pprhJycHEGv1wvdunUTxo8fL+zevVvxdReE05fZhnp89tlniq//66+/HrLuDes6evRoYcqUKUHrvf3228JZZ50l6PV6YcCAAcL69euDng8EAsKcOXOErKwswWAwCGPHjhUOHz4c17oLQvOfoZLr/dlnn4X83MX6TpkyRRg9enSTdYYMGSLo9XrhjDPOEF5//fUm223pdyoewv2+N6yPkj/722+/Xejdu7eg1+uFLl26CGPHjpVCidLrHkrjYNLW6t9e8e7CREREpBgdbowJERERKReDCRERESkGgwkREREpBoMJERERKQaDCRERESkGgwkREREpBoMJERERKQaDCRERESkGgwkRAQBeffVVXHbZZQl/nY0bN2LIkCEIBAIJfy0iansYTIgIdXV1mDNnDubNm5fw17r88suh0+mwcuXKhL8WEbU9DCZEhHfeeQdmsxkXXnhhq7zerbfeipdeeqlVXouI2hYGE6J2pKKiAtnZ2Xj66aelZTt27IBer29y+/aGVq9ejauuuipo2ZgxYzBz5sygZRMmTMCtt94q/dynTx88+eSTmDx5MtLS0tC7d2/8+9//RkVFBa6++mqkpaVh0KBB2LNnT9B2rrrqKuzZswfff/999G+WiNolBhOidqRLly547bXX8Nhjj2HPnj2orq7GLbfcghkzZmDs2LFh19u+fTuGDx8e1WsuXLgQF154Ifbv349x48bhlltuweTJk3HzzTdj3759OPPMMzF58mQ0vF9or169kJWVhW3btkX1mkTUfjGYELUzv/3tbzFt2jTcdNNNuPvuu2EymVBUVBS2fFVVFRwOB3JycqJ+vbvuugv9+vXD3Llz4XQ6MWLECEycOBFnnXUWHnroIXzzzTcoKysLWi8nJwc//fRTVK9JRO0XgwlRO/SXv/wFPp8Pa9euxcqVK2EwGMKWPXXqFADAaDRG9VqDBg2S/p+VlQUAGDhwYJNl5eXlQeulpKSgtrY2qtckovaLwYSoHfr+++/xyy+/IBAI4Mcff2y2rNVqhUqlQmVlZYvb9fv9TZbpdDrp/yqVKuyyxpcHnzx5El26dGnxNYmoY2EwIWpnPB4Pbr75Ztxwww144okncMcddzRprWhIr9fjnHPOwaFDh5o817j75YcffohLHevq6vD9999j6NChcdkeEbUfDCZE7cyf//xnOBwOvPTSS3jooYdw1lln4fbbb292nYKCAmzfvr3J8vfffx/vvvsuvv/+ezz11FM4dOgQfvrpJxw/fjymOn7xxRcwGAzIy8uLaTtE1P4wmBC1I5s3b8aiRYvw5ptvwmw2Q61W480338S2bdvwyiuvhF1v6tSp2LBhAxwOR9DycePG4bnnnsM555yDrVu3YunSpdi9ezfefPPNmOr51ltv4aabbkJqampM2yGi9kclNLyGj4g6rIkTJ+K8887D7NmzAdTPYzJkyBAsWrQorq9js9nwq1/9Cnv27EFubm5ct01EbR9bTIgIAPD8888jLS0t4a/z448/YunSpQwlRBQSW0yIKKREtZgQETWHwYSIiIgUg105REREpBgMJkRERKQYDCZERESkGAwmREREpBgMJkRERKQYDCZERESkGAwmREREpBgMJkRERKQYDCZERESkGP8PpmkdwEWftBYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = sim0.plot_eps(z=0.01, freq=freq0)\n", + "ax.set_aspect(\"equal\")" + ] + }, + { + "cell_type": "markdown", + "id": "3901f1da-a3de-4356-951a-455ba49ea03c", + "metadata": {}, + "source": [ + "The simulation with design region and initial parameters looks very similar to our initial waveguide crossing.\n", + "\n", + "### Component Modeler\n", + "Next we use the `ComponentModeler` to wrap the `Simulation`, together with a set of `Port` objects, in an object that makes it straighforward to generate scattering matrices. The `ComponentModeler` figures out which simulations need to run for a given specification and can perform parallel processing and final assembly for us. For more details, refer to [this tutorial](https://docs.flexcompute.com/projects/tidy3d/en/latest/notebooks/SMatrix.html).\n", + "\n", + "> Note: we will use `run_only` argument to only compute one column of the scattering matrix, helping save computation time. The structure works the same when turned 90 degrees so we can determine everything we need using the single port excitation + applying symmetry in the design region." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ee5efb82-3aba-450e-8e2f-28e8d185ffda", + "metadata": {}, + "outputs": [], + "source": [ + "from tidy3d.plugins.smatrix import ModalComponentModeler, Port\n", + "\n", + "# set up the ports\n", + "spc = -Lx / 2 + wvl0 / 5\n", + "\n", + "ports = []\n", + "for side in \"-+\":\n", + " for axis, dim in enumerate(\"xy\"):\n", + " center_axis = spc if side == \"-\" else -spc\n", + "\n", + " center = td.Box.unpop_axis(center_axis, (0, 0), axis=axis)\n", + " size = td.Box.unpop_axis(0, (lx / 2, td.inf), axis=axis)\n", + "\n", + " port = Port(\n", + " center=center,\n", + " size=size,\n", + " direction=\"+\" if side == \"-\" else \"-\",\n", + " name=f\"port_{dim}_{side}\",\n", + " )\n", + " ports.append(port)\n", + "\n", + "\n", + "def get_modeler(params, beta, include_extra_mnts: bool = True):\n", + " \"\"\"return the ComponentModeler given the parameters\"\"\"\n", + " sim = get_sim(params, beta, include_extra_mnts=include_extra_mnts)\n", + " return ModalComponentModeler(\n", + " simulation=sim,\n", + " ports=ports,\n", + " freqs=[freq0],\n", + " run_only=[(\"port_x_-\", 0)],\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "fdc58bd7-c2d4-4155-a810-9b532f532bfd", + "metadata": {}, + "source": [ + "Let's first plot the fundamental simulation generated by the `ComponentModeler` to verify that everything looks sufficient. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b862938c-4faa-401b-a921-e8de2a1adc16", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeMAAAHWCAYAAABEwOEmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABso0lEQVR4nO3de3xT9f0/8Nc5OeckbdKEkkJLkZuCoiKggFi371ed/a4qX5XN4eU7Be/TgRPZRHHep7K5qXhB+eq8/3AomzKnjn0RFXVUkJvCuKgIwoSWJrRJm7Y5Jzmf3x81oWmTtmmbnrS8no9HHpCTT855J+fkvHrO+ZxzJCGEABEREVlGtroAIiKiwx3DmIiIyGIMYyIiIosxjImIiCzGMCYiIrIYw5iIiMhiDGMiIiKLMYyJiIgsxjAmIiKyGMOYiIjIYgxjoj7ugQcewLJly6wuIy26rqOxsbFDbU3TxIMPPogRI0bA4XBg7Nix+NOf/pThCom6F8OYqI/rLWG8Y8cOXHfddRgyZAjsdjtycnJQWFiIK6+8Ehs2bEj5vl//+te45ZZb8F//9V94/PHHMXToUPzP//wPlixZ0oPVE3WNxBtFEPU9Qgg0NjYiJycHLpcLP/nJT/DCCy9YXVZK999/P+6++26MGTMGP/nJTzBmzBhIkoSdO3fi9ddfR3l5OW655Rbcf//9Ce/79ttvMWLECFx77bV44oknADR99tNOOw27du3C7t27YbPZrPhIROkRRNTj7rrrLgFAbNu2TUybNk3k5eWJ/v37i1/84heioaEh3s4wDHHvvfeKI488UmiaJoYNGybmzZsnGhsbE8Y3bNgwMWXKFLF8+XIxYcIEYbfbxSOPPCIAtHrMmDGjQzXeeeedQpIk8e677yYMv+aaa4SqqmLTpk1d/h6EEOLXv/61cDgc4sUXX0zZ5u233xb5+fni1ltvTRi+cOFCAUD861//Shj+yiuvCADio48+6pYaiTKNYUxkgVgYn3DCCeLcc88VTzzxhLj00ksFAHHZZZfF282YMUMAED/5yU/EwoULxfTp0wUAMXXq1ITxDRs2TIwcOTIeWIsWLRLvv/++ePnll4Xdbhf/8R//IV5++WXx8ssvi9WrV3eoRl3XxYknniiGDRsmgsGgEEKI5cuXCwDiN7/5Tbd8D6tWrRI2m61V4NfW1grTNIUQQhw8eFDoui42bNggcnJyRHl5ebzd1VdfLZxOZ7xtzFdffSUAiMcee6xb6iTKNIYxkQViYXzeeeclDP/5z38uAIjPPvtMbNq0SQAQV199dUKbX/3qVwKAeO+99+LDhg0bJgCI5cuXt5qW0+ns8NZwS5s3bxaapomrr75aVFdXi8GDB4uJEycKwzA6Nb6WTj/9dDF79uz489WrV4tRo0YJAGLAgAHipZdeEsOGDRPvv/++EEKIm266SfzP//xPvP2UKVPEkUce2Wq8oVBIAGi1JU2UrdiBi8hCM2fOTHh+ww03AADeeecdvPPOOwCAOXPmJLT55S9/CQB4++23E4aPGDECZWVl3VrfmDFjcM899+CPf/wjysrK4PP58OKLL0JRlC6Pu6qqCh9++GH8M4dCIVxwwQUoKirCa6+9hvvvvx933HEHKioq4u+ZOnUqPvjgg/jzhoYG2O32VuN2OBzx14l6g67/ooio00aNGpXw/KijjoIsy9i9ezcAQJZljBw5MqFNUVER+vXrh2+++SZh+IgRIzJS480334wlS5Zg7dq1eOCBB3Dcccel9f5AIJAQipqmoX///tiwYQOGDBmCI488EkDTHxf19fV466234Ha7ATR9P2eccUb8vYWFhaiqqoo/z8nJQTgcbjXN2GlROTk5adVKZBVuGRNlEUmSOjQsmUwFz9dff40vv/wSALB58+a033/jjTdi0KBB8cePf/xjAIDf70dxcXG83e7du3HMMcfEgxgATj755IRx7d27F16vN/580KBBqKiogGhxUsj+/fsBIGH8RNmMYUxkoVjIxXz11VcwTRPDhw/HsGHDYJpmqzaVlZWoqanBsGHDOjSNjoZ5MqZp4vLLL4fb7cZtt92GP/3pT3j99dfTGsfcuXOxYsWK+OOhhx4CALjdbgQCgXi7oqIi7NmzB5FIJD7s66+/ThjXM888g9LS0vjz8ePHo76+Htu2bUtot2bNmvjrRL2C1QetiQ5H7XXg2rRpU7wD17XXXpvQZu7cuUk7cE2ZMiXptAoLC8X555/fqTp///vfCwDizTffFNFoVJx66qli4MCBoqqqqlPja+6rr74SiqKI6upqIYQQ+/fvF06nU1x99dXiiy++EOvXrxennHKKkCRJ/O///q+49tprRV5entixY0d8HHv37hWqqoqZM2fGh5mmKf7jP/5DDB48WEQikS7XSdQTGMZEFmh5atPChQvjpzY17y0cO7XpwgsvFAsXLow/T3ZqU6owPuecc4TT6RQPPfSQ+NOf/iQ++eSTDtW4detW4XA4xOWXXx4f9sUXX4jc3Fwxbdq0Tnzq1kaPHi0eeeSR+PMXX3xROBwOAUBIkiRuvvnmeE/xk08+WWzYsKHVOG6++eb4Hy3PPPOMmDJligAgFi9e3C01EvUEhjGRBWJhvHXrVvGTn/xE5OXlifz8fDFr1qxWF/245557xIgRI4SqqmLIkCFtXvQjme3bt4v//M//FDk5OR2+6EckEhGTJk0SRxxxhKipqUl47dFHHxUAxKuvvpr+B2/h+eefF/379xdff/11fJjP5xMffvih2LNnjxBCiE8//VTs3bs35Tii0ah44IEHxLBhw4SmaeL4448X/+///b8u10bUk3g5TCIL3H333bjnnntQVVWFgoICq8uxjBAC5557Lnbs2IG//e1vGD16dNJ2b731Fk4//XS4XK4erpCoZ7ADFxFZRpIkLFmyBMcccwzGjx+Pn//851ixYgV27dqFr776CkuXLsXZZ5+NH/3oR3jvvfesLpcoY3ieMdFhJhqNJpyrm4zL5erQVmhVVRWi0WjK12PnFLc3rTfffBMvvfQS/vCHP+Cpp56Kv6YoCsrKyvDJJ59gwoQJ7dZD1FsxjIkOM3v37m33AiF33XUX7r777nbHNWnSpFYXH2nutNNOS7hiViqyLOPyyy/H5Zdfjm+//RZ79uyBzWbDMcccA4/H0+77iXo7HjMmOsw0Njbi448/brPNkUceGb8yVlv++c9/tnnJyfz8fG7REnWEpd3H2jF//nwBQNx4441ttnvttdfEMcccI+x2uxgzZox4++23E143TVPccccdoqioSDgcDnHmmWeKL774IoOVExERdVzWduD69NNP8b//+78YO3Zsm+1Wr16NSy65BFdddRU2btyIqVOnYurUqdiyZUu8zYMPPojHHnsMixYtwpo1a+B0OlFWVha/fi0REZGVsnI3dV1dHU466SQ8+eSTuO+++zB+/HgsWLAgaduLLroIoVAIb731VnzYKaecgvHjx2PRokUQQqC4uBi//OUv8atf/QpA04XrCwsL8cILL+Diiy/uUE2maWLfvn3Iy8vr0uUFiYio9xFCoLa2FsXFxZDl7t+OzcoOXDNnzsSUKVNQWlqK++67r8225eXl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RPNADgQCmZ1WRsfex/C+xEREh5dYINtstsxOJ6NjJyIi6uVkWU64dGZGppHRsRMREfUBmb5uNcOYiIjIYgxjIiIiizGMiYiILMYwJiIishjDmIiIyGIMYyIiIosxjImIiCyW9rUdd+3ahY8++gjffPMN6uvrMWDAAJx44okoKSmBw+HIRI1ERER9WofDePHixXj00Uexbt06FBYWori4GDk5OTh48CB27twJh8OBn/70p7jlllswbNiwTNZMRETUp3QojE888URomobLL78cf/nLXzBkyJCE18PhMMrLy7FkyRJMnDgRTz75JKZNm5aRgomIiHqaaZoZHX+Hwvi3v/0tysrKUr5ut9tx+umn4/TTT8f999+P3bt3d1d9REREljJNE8FgMKPT6FAYtxXELXm9Xni93k4XlM0kSbK6BCIi6kGmacLv9yMajWZ0Op2+Oe+BAwdw4MCBVpvuY8eO7XJR2cput2f8BtNERJQdYkFsGAY8Hk9Gp5V2GK9fvx4zZszAtm3b4vf3lSQJQghIkpTxvx6sZJomAoEAHA4HNE3r8PsY4EREvUvzIC4oKMj4ejztML7yyitx9NFH49lnn0VhYeFhtetW13XYbDb4fD4UFBR0KJBDoRAMw+iB6oiIqDu0DGJN07IvjL/++mv85S9/wciRIzNRT9Zzu91oaGjoUCDX1tairq4OTqezByskIqK2xPbqJpMsiHtC2lfgOvPMM/HZZ59lopZeQZZleL1eqKoKn88HXdeTtqutrUUwGITL5YKidPrQPBERdTNd15MGslVBDHRiy/iPf/wjZsyYgS1btmDMmDFQVTXh9fPOO6/bistWsUD2+/1Jt5BjQex2u2G329HY2GhhtURE1JwQAtXV1Rg4cCBkuWmb1MogBjoRxuXl5fjnP/+Jv//9761e6+sduJpLFcjNgzgvLy/lljMREVlD0zTU1dXB7/fHT8W1MoiBTuymvuGGG3DppZdi//79ME0z4XG4BHFMy13Wfr8/IYiJiCj7yLKM/Px8GIYBn88Hn89naRADnQhjv9+Pm266CYWFhZmop9eJBbIQAo2NjXA4HAxiIqIsp6oqvF4vDMOAYRjwer2WBTHQid3UP/7xj/H+++/jqKOOykQ9We+rihpACSUMk6M6bNGm3dHBBh37ag0I2QYAkMwobCKCP734CipzilCl5Scdb8RWj4P9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z4dhGPD5fPD5fJYGMZBFYVxfX48NGzbgjjvuwIYNG/D6669jx44dOO+889p836uvvoo5c+bgrrvuwoYNGzBu3DiUlZXhwIED8TY33XQT/va3v2Hp0qVYtWoV9u3bhx//+MfdUncskIUQaGxshMPhYBATEWU5VVXh9XphGAYMw4DX67UsiAEga3oWeTwerFixImHYE088gZNPPhl79uzB0KFDk77v4YcfxjXXXIMrrrgCALBo0SK8/fbbeO6553DrrbciEAjg2WefxSuvvIIf/OAHAIDnn38exx57LD755BOccsopXa49FArF/x8Oh6HruqUzlYiI2iaESLjEZTAYhNfrhSxbs42aNVvGyQQCAUiShH79+iV9Xdd1rF+/HqWlpfFhsiyjtLQU5eXlAID169fDMIyENqNHj8bQoUPjbbqi+THiQYMGdfi0JyIiskasA5dhGBgwYAAGDBgAwzDix5CtkLVh3NjYiFtuuQWXXHIJ3G530jY+nw/RaBSFhYUJwwsLC1FRUQEAqKiogKZprQK9eZtkwuEwgsFgwqOllp21OnraExERWUfXdUQikfgxYk3TUFBQYGkgWxbGixcvhsvlij8++uij+GuGYeDCCy+EEAJPPfWUJfXNnz8fHo8n/hgyZEjC66l6TbcMZF59i4gouwghkJ+fn3A40epAtiyMzzvvPGzatCn+mDhxIoBDQfzNN99gxYoVKbeKAaCgoAA2m61Vz+jKykoUFRUBAIqKiqDrOmpqalK2SWbevHkIBALxx969e+OvtXf6UvNAbnkuGxERWUvTtKRXRrQykC0L47y8PIwcOTL+yMnJiQfxl19+iXfffRder7fNcWiahgkTJmDlypXxYaZpYuXKlSgpKQEATJgwAaqqJrTZsWMH9uzZE2+TjN1uh9vtTngATb2+O3L6UiyQFUXh7moioizSVictqwI5a44ZG4aBn/zkJ1i3bh0WL16MaDSKiooKVFRUJITZmWeeiSeeeCL+fM6cOXjmmWfw4osvYtu2bbj++usRCoXivas9Hg+uuuoqzJkzB++//z7Wr1+PK664AiUlJWn3pFYUBaFQqMPnEcfOZeN9kImIeg8rAjlrTm369ttv8eabbwIAxo8fn/Da+++/j9NPPx0AsHPnTvh8vvhrF110EaqqqnDnnXeioqIC48ePx/LlyxM6dT3yyCOQZRkXXHAB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19UuRNOPBID45ptvUrbJtvp37drV4TC+8MILxZQpUxKGTZ48WfzsZz8TQghhmqYoKioSv//97+Ov19TUCLvdLv70pz91W83tfYfZWndLHQnjuXPniuOPPz5h2EUXXSTKysriz9P9PrrLgQMHBACxatWqlG2y9buPyc/PF3/84x+TvpaNtdfW1opRo0aJFStWiNNOO63NMO7J+rmbGk1347jssstw88034/jjj2+3va7rWL9+PUpLS+PDZFlGaWkpysvLAQDr16+HYRgJbUaPHo2hQ4fG23Q3Xdfx9NNPw+PxYNy4cb2q9phAIABJklrdf7q31N+e8vLyhLoAoKysLF7Xrl27UFFRkdDG4/Fg8uTJ3VZ7R77DbKy7s9qrvTPfR3eJ3cGpf//+Kdtk63cfjUaxZMkShEIhlJSU9JraZ86ciSlTprSqK5merD+rL4fZU373u99BURT84he/6FB7n8+HaDSacP1rACgsLMT27dsBABUVFdA0rVWoFBYWoqKiolvqjnnrrbdw8cUXo76+HoMGDcKKFStQUFDQK2pvrrGxEbfccgsuueSSlNeAzeb6O6KioiJp7bG6Yv+21aarOvIdZmPdnZWq9mAwiIaGBlRXV6f9fXQH0zQxe/ZsfO9738OYMWNStsu2737z5s0oKSlBY2MjXC4X3njjDRx33HG9ovYlS5Zgw4YN+PTTTzvUvifrP+y2jBcvXgyXyxV/rFq1Co8++iheeOEFSJJkdXltaln7Rx99BAA444wzsGnTJqxevRpnnXUWLrzwQhw4cMDialtLVT/Q1JnrwgsvhBACTz31lIVVJtdW7USdMXPmTGzZsgVLliyxupS0HHPMMdi0aRPWrFmD66+/HjNmzMDWrVutLqtde/fuxY033ojFixfD4XBYXU4rh10Yn3feedi0aVP8sXr1ahw4cABDhw6FoihQFAXffPMNfvnLX2L48OFJx1FQUACbzdaqd25lZSWKiooAAEVFRdB1HTU1NSnbdLX2iRMnAgCcTidGjhyJU045Bc8++ywURcGzzz6bVbW3VX8siL/55husWLGizTujZNt3n66ioqJ2a48NS9WmqzryHWZj3Z2Vqna3242cnJxOfR9dNWvWLLz11lt4//33ccQRR7TZNtu+e03TMHLkSEyYMAHz58/HuHHj8Oijj2Z97evXr8eBAwdw0kknxdf1q1atwmOPPQZFURCNRi2t/7AL47y8PIwcOTL+uPbaa/H5558nrGiLi4tx88034x//+EfScWiahgkTJmDlypXxYaZpYuXKlfFjJxMmTICqqgltduzYgT179qQ8vpJu7Tk5OUnbmaaJcDicVbWnqj8WxF9++SXefffdVve0zpb6O/rdt6ekpCShLgBYsWJFvK4RI0agqKgooU0wGMSaNWu69N0315HvMBvr7qz2au/M99FZQgjMmjULb7zxBt577z2MGDGiy/Vb/d23tb7JptrPPPNMbN68udUf1T/96U+xadMm2Gw2a+tPq7vXYSJZb+of/OAH4vHHH48/X7JkibDb7eKFF14QW7duFddee63o16+fqKioiLe57rrrxNChQ8V7770n1q1bJ0pKSkRJSUm31VlXVyfmzZsnysvLxe7du8W6devEFVdcIex2e8KpBtlYuxBC6LouzjvvPHHEEUeITZs2if3798cf4XA46+v3+/1i48aN4u233xYAxJIlS8TGjRvF/v37420uu+wyceutt8af//Of/xSKoog//OEPYtu2beKuu+5KeqpEv379xF//+lfx+eefi/PPPz8jpza19R1ma91CNPWG3bhxo9i4caMAIB5++GGxcePGeA/8W2+9VVx22WXx9rFTm26++Waxbds2sXDhwqSnNrW3THWH66+/Xng8HvHBBx8kLO/19fXxNtn83d96661i1apVYteuXeLzzz8Xt956q5AkSfzf//1f1teeTMve1FbWzzBOIlkYDxs2TNx1110Jwx5//HExdOhQoWmaOPnkk8Unn3yS8HpDQ4P4+c9/LvLz80Vubq740Y9+lLCi7qqGhgbxox/9SBQXFwtN08SgQYPEeeedJ9auXZv1tQtx6JSgZI/3338/6+t//vnnk9bevNbTTjtNzJgxI+F9r732mjj66KOFpmni+OOPF2+//XbC66ZpijvuuEMUFhYKu90uzjzzTLFjx45urV2Itr/DbK77/fffT/q9x+qdMWOGOO2001q9Z/z48ULTNHHkkUeK559/vtV421umukOq5b15Pdn83V955ZVi2LBhQtM0MWDAAHHmmWfGgzjba0+mZRhbWT/v2kRERGSxw+6YMRERUbZhGBMREVmMYUxERGQxhjEREZHFGMZEREQWYxgTERFZjGFMRERkMYYxERGRxRjGRAQAePbZZ/HDH/4w49NZvnw5xo8fD9M0Mz4tot6CYUxEaGxsxB133IG77ror49M666yzoKoqFi9enPFpEfUWDGMiwp///Ge43W5873vf65HpXX755Xjsscd6ZFpEvQHDmKgPqaqqQlFRER544IH4sNWrV0PTtFa3gmtuyZIlOPfccxOGnX766Zg9e3bCsKlTp+Lyyy+PPx8+fDjuu+8+TJ8+HS6XC8OGDcObb76JqqoqnH/++XC5XBg7dizWrVuXMJ5zzz0X69atw86dOzv/YYn6EIYxUR8yYMAAPPfcc7j77ruxbt061NbW4rLLLsOsWbNw5plnpnzfxx9/jIkTJ3Zqmo888gi+973vYePGjZgyZQouu+wyTJ8+HZdeeik2bNiAo446CtOnT0fze9IMHToUhYWF+Oijjzo1TaK+hmFM1Mecc845uOaaa/DTn/4U1113HZxOJ+bPn5+yfU1NDQKBAIqLizs9vZ/97GcYNWoU7rzzTgSDQUyaNAnTpk3D0UcfjVtuuQXbtm1DZWVlwvuKi4vxzTffdGqaRH0Nw5ioD/rDH/6ASCSCpUuXYvHixbDb7SnbNjQ0AAAcDkenpjV27Nj4/wsLCwEAJ5xwQqthBw4cSHhfTk4O6uvrOzVNor6GYUzUB+3cuRP79u2DaZrYvXt3m229Xi8kSUJ1dXW7441Go62Gqaoa/78kSSmHtTyV6eDBgxgwYEC70yQ6HDCMifoYXddx6aWX4qKLLsJvfvMbXH311a22SpvTNA3HHXcctm7d2uq1lruWv/76626psbGxETt37sSJJ57YLeMj6u0YxkR9zK9//WsEAgE89thjuOWWW3D00UfjyiuvbPM9ZWVl+Pjjj1sN/+tf/4rXX38dO3fuxP3334+tW7fim2++wbffftulGj/55BPY7XaUlJR0aTxEfQXDmKgP+eCDD7BgwQK8/PLLcLvdkGUZL7/8Mj766CM89dRTKd931VVX4Z133kEgEEgYPmXKFDz44IM47rjj8OGHH+LJJ5/E2rVr8fLLL3epzj/96U/46U9/itzc3C6Nh6ivkETz8w2I6LA1bdo0nHTSSZg3bx6ApvOMx48fjwULFnTrdHw+H4455hisW7cOI0aM6NZxE/VW3DImIgDA73//e7hcroxPZ/fu3XjyyScZxETNcMuYiJLK1JYxEbXGMCYiIrIYd1MTERFZjGFMRERkMYYxERGRxRjGREREFmMYExERWYxhTEREZDGGMRERkcUYxkRERBZjGBMREVns/wPQV3cOhnqjxQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "modeler = get_modeler(params0, beta=10, include_extra_mnts=False)\n", + "\n", + "for name, sim in modeler.sim_dict.items():\n", + " ax = sim.plot(z=0)\n", + " ax.set_title(name)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "36ddbde9-64c9-4771-ab9e-8bf2c224f860", + "metadata": {}, + "source": [ + "## Defining Objective Function\n", + "\n", + "With our simulation fully defined as a function of our parameters, we are ready to define our objective function.\n", + "\n", + "First, we generate a matrix where the `ij` element represents our \"desired\" transmission from port `i` to port `j`.\n", + "\n", + "> In this case, since we only need to specify one port due to symmetry, we just describe our desired column of the scattering matrix. But this can be easily generalized to a full scattering matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "68ed0db5-5fac-4597-b4e7-900ac1f07eb7", + "metadata": {}, + "outputs": [], + "source": [ + "# the S-matrix column we want\n", + "s_matrix_desired = np.array([0.0, 0.0, 1.0, 0.0])\n", + "norm = np.linalg.norm(s_matrix_desired)" + ] + }, + { + "cell_type": "markdown", + "id": "cf38f627-60dc-43bf-b474-c17c2c89f85b", + "metadata": {}, + "source": [ + "The next step is writing a python function that combines everything together." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5fbae112-d758-4422-a766-e5daad61ac9a", + "metadata": {}, + "outputs": [], + "source": [ + "import tidy3d.web as web\n", + "\n", + "\n", + "def objective(params, beta: float, include_extra_mnts=False, verbose: bool = True) -> float:\n", + " \"\"\"Construct and run the modeler, then compare S-matrix column to desired.\"\"\"\n", + " modeler = get_modeler(params, beta=beta, include_extra_mnts=include_extra_mnts)\n", + " modeler_data = web.run(modeler, verbose=verbose, task_name=\"crossing\")\n", + " smatrix = modeler_data.smatrix()\n", + " smatrix = smatrix.sel(port_in=\"port_x_-\")\n", + " smatrix_array = np.abs(smatrix.data.squeeze()) ** 2\n", + " return np.linalg.norm(smatrix_array - s_matrix_desired) / norm" + ] + }, + { + "cell_type": "markdown", + "id": "94fa67f3-31e2-444c-b2d2-9aea353eef10", + "metadata": {}, + "source": [ + "### Differentiating the objective\n", + "\n", + "Finally, we can simply use `autograd` (`ag`) to transform this objective function into a function that returns our objective function value and our gradient, which we will feed to the optimizer." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "6d166cf2-233a-4fef-a426-21ea5a65aebb", + "metadata": {}, + "outputs": [], + "source": [ + "grad_fn = ag.value_and_grad(objective)" + ] + }, + { + "cell_type": "markdown", + "id": "afabe317-16c2-4d01-a5c0-6678eb470735", + "metadata": {}, + "source": [ + "Let's try out our gradient function to verify that it works properly." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c6602755-bcb7-4ef2-8532-c3690788e8ca", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4e31df9714c944e9bd30978d112b3cdb", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "ab361f0542aa454293c2d742e324b402",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "Output()"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "00e03eeac2844a19b2eba220606776d1",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "Output()"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
09:17:28 EDT Started working on Batch containing 1 tasks.                       \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:17:28 EDT\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m1\u001b[0m tasks. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:17:29 EDT Maximum FlexCredit cost: 0.065 for the whole batch.                \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:17:29 EDT\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.065\u001b[0m for the whole batch. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Use 'Batch.real_cost()' to get the billed FlexCredit cost after the\n",
+       "             Batch has completed.                                               \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed FlexCredit cost after the\n", + "\u001b[2;36m \u001b[0mBatch has completed. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "13dfd83721d7416a90760bd797f5f5fd", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:17:30 EDT Batch complete.                                                    \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:17:30 EDT\u001b[0m\u001b[2;36m \u001b[0mBatch complete. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "16a1e72f313343838e5098f89900da18",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "Output()"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
09:17:33 EDT Started working on Batch containing 1 tasks.                       \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:17:33 EDT\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m1\u001b[0m tasks. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:17:37 EDT Maximum FlexCredit cost: 0.067 for the whole batch.                \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:17:37 EDT\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.067\u001b[0m for the whole batch. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Use 'Batch.real_cost()' to get the billed FlexCredit cost after the\n",
+       "             Batch has completed.                                               \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed FlexCredit cost after the\n", + "\u001b[2;36m \u001b[0mBatch has completed. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "cbb9520896e04d56bae0f97f97146ea2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:18:05 EDT Batch complete.                                                    \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:18:05 EDT\u001b[0m\u001b[2;36m \u001b[0mBatch complete. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "699adcc2c086423dbf2200097984a4bd",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "Output()"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "J, grad = grad_fn(params0, beta=1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "id": "04e85fa2-dfe9-4c07-bb67-447d1721dcd9",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "J = 0.2659\n",
+      "gradient shape = (451, 451)\n",
+      "gradient norm = 0.0286\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(f\"J = {J:.4f}\")\n",
+    "print(f\"gradient shape = {grad.shape}\")\n",
+    "print(f\"gradient norm = {np.linalg.norm(grad):.4f}\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2351757c-e19c-4715-8bf5-71a775f47602",
+   "metadata": {},
+   "source": [
+    "## Run Optimization\n",
+    "\n",
+    "Finally, we are ready to optimize our device. We will make use of the `optax` package to define an optimizer using the `adam` method, as we've done in the previous inverse design tutorials.\n",
+    "\n",
+    "We record a history of objective function values, and parameters, for visualization later."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "id": "4a24ecd3-f2d1-43b0-88cd-8e0a41cc515a",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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",
+      "text/plain": [
+       "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 1\n", + "\tJ = 2.8238e-01\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 1.8386e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 2\n", + "\tJ = 2.2298e-01\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 8.4923e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 3\n", + "\tJ = 1.9572e-01\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 6.0384e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 4\n", + "\tJ = 1.7752e-01\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 5.6506e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 5\n", + "\tJ = 1.6322e-01\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 5.8429e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 6\n", + "\tJ = 1.4959e-01\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 6.7027e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 7\n", + "\tJ = 1.3494e-01\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 8.5567e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 8\n", + "\tJ = 1.1575e-01\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 8.8893e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 9\n", + "\tJ = 9.3497e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 9.3111e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 10\n", + "\tJ = 6.8201e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 9.3080e-03\n" + ] + }, + { + "data": { + "image/png": "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bjcbGhpi3/zmN5ksy6vWn+xXopp5HPvpX7Iss29961vsypUrzO12M5/Px2ZnZ9nf/vY39uMf/5g1NzezqqoqlpOTw/R6/YrX22w21trayt5//30WDAaZoigsEAiw4eFh9uKLL7KKigpmNpsT1icIArPZbOzJJ59k586dYz6fjymKwiKRCJucnGQvvPACy83NTfpvMxgMrLq6mv3+979n8/PzLBqNMkVRmNvtZv39/ezEiRPswQcfVBtHpvodVxAEiKKIgoICNDc3o7GxEW63G93d3ejr61M1ZhP495C4Q4cO4fjx48jPz8e5c+fQ1dWF2dlZVctKkiShtLQULS0tOHjwIBwOB7q6ujA2NqZqbTT2U315eTn27t0LABgcHITD4UjaT/u/QKfToaKiAg888AAYYxgeHsb4+Di8Xq+qf7skSdi1axfa2tpQWlqKS5cu4dSpU5icnFS1PCcIAoqKivD000/jkUcegdPpRGdnJy5cuKC60chqteKxxx5Da2srrFYrent78dprr2Fubg6KoqheWkwpuDFGoxE5OTkIhUK4fft2ymuSkiRh69atsFgs8W9JqTKZTMjMzITX610xvj6VOgRBiH9b3gxilxSx69C1vF6WZVgsFiwtLa1pVq/FYkFeXh58Ph8WFhZSriP29dfr9VhYWLhj5/GeBvfTv1/rF1wQBAiCoGkHSWsN9yse500URTDGNH39E9Vwz4NLyL2gNri0AUE2pTUHN/atXsvrtc6J1VrD/YrHedO6WaK1hjUlx2g0ori4GLm5uSktisdIkgS73Y7t27fDYrGspQSYzWbk5+dDluU1nwBJkqDT6TZV+GObGGs577HXy7KM/Px8mM3mNX0Oq9WK7du3Iy8vb81f/7y8PBQVFa25qT6lnTNJklBYWIinnnoKjz/+ODweD06ePIm33norpeWw+vp6PPPMM7Db7Th79iy6urowPT2tejls586dOHr0KA4cOIDx8XG88sorGBsbU7W6IYoibDYbysvLUV1dDQC4ePEiPvzww02xHFZZWYna2looioIrV67A4XDA4/GoXg7bs2cP2traUFZWFl8OU9uaKQgCSkpK0NbWhoaGBszNzaGzsxMDAwOql8NsNhsaGxtx7Ngx2Gw29Pb2oqenB06nM7XVKbULvp///OfZ888/zwYGBpjX641vQCwsLLA//OEP7MCBA3fd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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 11\n", + "\tJ = 4.9634e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 1.1281e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 12\n", + "\tJ = 4.2938e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 2.3617e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 13\n", + "\tJ = 3.4192e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 1.3442e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 14\n", + "\tJ = 4.8930e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 3.2987e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 15\n", + "\tJ = 4.5076e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 3.9481e-02\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAYJUlEQVR4nO3da1BU9/kH8O85e2VlWYhcBQKyoiY6iItBbjVKo9WiMU6TjqNOp3ZMM76g00xfGE0mM8nEXF604yS2tZrbZHTGyUwbW+vdgkbF67oQdaIoF2WhCgRhFxf3cs7zf9E/+/8TWNzdc4SyeT4zvJFz2IezXw9nf+c5v59ARATGJhhxvAtgLBocXDYhcXDZhMTBZRMSB5dNSBxcNiFxcNmExMFlExIHl01IHFwVSJKEbdu2wWAwQBCEEb+MRiO2b98OWZbHu9yYwMFVgUajgc1mQ3JycshtkpOTUVhYCFHkQ64GPooqKSwsxLJly6DT6YZ9T6fToaqqCnPmzBmHymITB1clZrMZv/rVr2C1WoecVUVRRH5+PtavX4/4+PhxrDC2cHBVIggC8vPzUVhYCL1eD0EQIIoi9Ho95syZg2nTpkEQhPEuM2ZwcFXU09ODO3fuIBAIgIggyzICgQDa2trQ09Mz3uXFFA6uSgYGBvDZZ5/B4XAgEAgE/z0QCMBut+Pzzz/HwMDAOFYYWzi4KiAi/Otf/8Inn3wyYjgHBgbwySef4OTJk+NQXWzi4KrA5XJh+/bt6O7uDrlNZ2cntm/fDpfLNYaVxS4OrgoaGhpw7ty5R2535swZfPPNN2NQUezj4KrA4XDA7XY/cjuXy4X6+vrHX9APAAdXIVmW0draGtatXFmWcfv2bb7tqwIOrkKyLI96bft9XV1dHFwVcHAVkiQJfX19YW/f19cHSZIeY0U/DBxchQZvMoQrEAjwGVcFHFyFRFFEQkJC2NubzWbuEFMBH0GFdDod5s+fP2JX2Pfp9XqUlpaGtS0bHQdXIVEUsWrVKjzzzDOjNtEIgoDi4mKsXLmSz7gq4COogpycHLz11lvIy8sbMbyCIMBqteLtt99Gdnb2OFQYezi4KhAEAc8++yw2b96M9PT0Yf24GRkZ2LJlCyoqKri1USUcXJXodDr89Kc/xcKFC2EymaDRaKDRaGAymVBZWRny6QgWHQ6uiiRJGjbcRUTw+/08BKYyDq5KfD4f9u/fjxMnTmBgYACSJEGSJHg8HtTU1GD//v3w+/3jXWbMEHhiZ+WICCdPnsT69evR2to64jZ5eXn4/PPP8aMf/Whsi4tRfMZVQU9PD95//33cvn075DYtLS344IMP+BEelXBwVXD69GmcPn0ao/3xGjwr19XVjWFlsYuDqxAR4fLly/B4PI/c9sGDB7h8+fKoAWfh4eAqRERwu91hhZGI0N/fz8FVAQdXIUEQkJCQENaNhUi2ZaPj4CokCAKmTJkSdnAzMjI4uCrg4KogKysr7O6wrKysMago9nFwVZCdnQ2z2fzI7RISEpCZmTkGFcU+Dq4KMjMzkZeX98jt8vLyOLgq4eCqwGKxYOXKlaNeLuh0OqxatQoWi2UMK4tdHFwVaDQarFmzBsXFxSN+8BJFEaWlpVi9ejU3kauEj6JKnnzySbzxxhuYMWMGtFptcAp9rVaLmTNn4vXXX+cPZiri4KpEFEVUVFSguroaM2fOxOTJkzF58mQ8/fTTqK6uRkVFBZ9tVaQd7wJiiV6vR25uLrKysvDw4UMA//nglpuby03kKuPgqoSIcOvWLezevRt2ux39/f0A/jNf2O7du5Gbm4sZM2bwzQeVcD+uSm7cuIHf/e53OH78OLxe75DvGY1GLF68GL///e+Rn58/ThXGFg6uCu7du4eNGzfiH//4R8jplbRaLV544QX88Y9/RGpq6hhXGHv404JCkiThiy++wMGDB0edEywQCOCf//wn9uzZw3OHqYCDq1B/fz+OHDky7PJgJA8fPsThw4fx4MGDMagstnFwFSKisEI76OHDh9yPqwIOrkImkwlTp04Ne/u8vDyYTKbHWNEPAwdXIb1ej/Lycmg0mkduq9FoUF5ezmO6KuDgqqCoqCjstsaioqIxqCj2cXBVkJ2dPerK6YPS0tK4X0ElHFwVmM3msGZhfPLJJ3khapVwcFVgMBjCuiNmtVqh1+vHoKLYx8FVgUajwdy5c6HVhm790Gq1sNlsYX2IY4/GwVVJcXHxqNe5KSkpeOaZZ8awotjGwVWJ1WrFvHnzQs5IXlxcHNF4LxsdB1clJpMJNpttxGtYg8GAoqIixMXFjUNlsYmDqxKv14v79++H/H5PTw/Pj6siDq4KZFlGXV0dDhw4AJ/PN+z7Xq8X+/fvx9mzZ7lPQSXcj6sQEeHq1avYsGEDLl68GDKYgiBg/vz52LVrF2bPnj3GVcYePuMq5HQ6sWnTJly6dOmR8+NeuHABW7ZsgdPpHMMKYxMHVwG/34+9e/eitrY2rMVJZFnGsWPH8OWXX0a0/i8bjoOrgNfrhcPhiKgfd3Cfka6FWfg4uApotVpotdqIP3BptVqeY0EhPnoK6HQ6pKenR/zIeXp6OvfkKsTBVUAQBCQmJkYU3MF9+IyrDB89BYgIvb29EV0qDO7DK00qw8FVwO12o6GhIeLgNjQ0BGe6YdHh4EaJiNDY2Ihr165FvO/Vq1dx8+bNx1DVDwcHN0p+vx9nz56NaqXI7u5unDt3jofEFODgRkGWZXR2dsJut0fVOOP3+2G329HZ2cnXulHi4EaAiODz+dDR0YGamhpcuXIlqqYZIkJ9fT1qa2vR0dHBZ94ocJPN9/j9fni9Xmi1Wuh0OgiCEFw9srGxEWfPnoXdbseVK1fQ3Nwc9qqS/58oijCbzZg6dSoKCgpQVFSE0tJSTJ8+HfHx8cHX9Pv9CAQCMBgMPO77PY8luLIsQ5ZlSJIEWZYhiiJ0Ol1YY5dEBCIKTkUfCUmSgkuOmkymiB5MJCI4nU7s3bsXDocDWq0W6enpSExMRG9vLxoaGnDt2rVgXy0RQZblqNsUBUGAKIoQBAE6nQ6TJ0/GrFmzUFBQEHzNu3fvIhAIwGazYfXq1RE/2u7z+eDxeCAIAuLj4yN+3i3S90KWZfj9/uB7rtFoIIriYxmzDju4kiSF/MWJCC6XCw0NDXA4HGhtbUV3dzf6+voQCASQkJCAkpISvPDCC8jJyRl2EIgIPT09OH36NC5fvgy3242EhARMmTIFWVlZyM7ORmZmJiwWS8ga7t27hy+++CI4Ad3UqVNRXl6OoqKi4DpkBoNhxP1lWca1a9ewadMm1NbWwuv1DnnDBt/AsfD91xQEAQaDAc899xzee+89zJo1a8QQSZIEr9cLt9uNtrY2XLp0CWfOnEFLSwvi4uKwdOlSrFu3DmlpaSO+riRJ6O3tRXt7O5xOJ5xOJzo6OuByuWA2mzFv3jyUl5fjiSeeGLYvEaG1tRVfffUVLly4AJfLBa1WC4vFgpSUFOTm5mLu3LkoKCgYddWh0TI20ouGZdu2bXTy5ElyuVwky3Lw3z0eDx04cICWLl1KFouFRFEkAMO+9Ho9lZWV0fHjx8nn8wX39/l8dOLECVq6dClNmjSJBEEgACQIAomiSAaDgZKTk6m4uJjeffddam1tJUmSgvvLskzXr1+nVatWkcFgGPKaGo2GEhMTafr06fTjH/+YXnnlFdqxYwfZ7Xbq7e0ln89Hbrebjh49SsXFxSFr/2/4EkWRSkpK6Pjx4+R2u8nn81Fvby/Z7Xb685//TL/+9a9p0aJFNG3aNEpMTCSNRjNkf4PBQD/72c+osbFxyPsnSRK1tLTQ1q1bad68eZScnEwGg4FEURzyXsTHx9OyZcvo5MmTQ94/r9dLR48epZKSEtLpdCFrt1gstGzZMjp48CB5PJ4h719fXx+dOHGCtm3bFm4cKezg6vV6mjJlCm3YsIHOnDlDnZ2ddP36ddq0aRMlJyeHdfAFQSCr1Uoff/wxdXR0UFtbG/3pT3+i3Nzc4EEa7Uun01F5eTkdOnSI3G43eb1eunbtGlVVVQ17o0J9abVaSk9Pp+XLl9Obb75J1dXVlJeXF9brj/fX4PH7zW9+Q2+++SZVVVVRWloaabXasH/3FStW0Lfffkter5fcbjcdOHCAysrKQobu+6+fm5tLO3bsoPb2dmpvb6edO3dGdPxSUlJo8+bNdOPGDers7KRTp07R+vXrKSMjg/R6fdjBDftSYfDPk06ng9VqRWFhIe7cuQOHw4GBgYFwfkTw56Snp2PhwoUIBAI4ceIEurq6Itp/xowZqK6uRm5uLnbv3o2//e1vEbUWDv6cwWtgn883YR6pUVq30WjEiy++iDVr1qCpqQnbt29HY2NjRD8nJSUFixYtgkajQW1tLe7duxfR/nFxcbDZbMjOzkZ9fT2ampqCw4rh/pyIgwv851OxXq9HIBCIqiFaFEWYTCbIsoyBgYGo2gJnzpyJrKws2O32iILPgNTUVNhsNjidTly/fj3i91AQBJhMJgiCAI/HE9VY9GBLqM/nG7J/uFmIatUdWZaDH2Ci3X/wLB3Nz5AkCXfv3sXDhw/5nn8U+vv7cevWLdy/fz+qaf2JKLgcVrQ3UAKBACRJijpDUY9T8LJHTAml+YkquIOXCqPNlfWo/ePi4mA0GqP6BTQaDaZMmYL8/Pyw5qVl/0cQBJjNZuTn5yMjIyOqucwEQYDRaERcXFzUY7QajQYGgyHq/SNOnk6nQ35+PubMmYO2tjbY7faoPpxVVlbC7/ejpqYmomtUURQxffp0bNy4Mfjh7K9//WvwT1ckdRgMBgBQdNkz1pTWbTAYsGTJEqxduxbNzc348MMPcePGjYg/nFVWVkKj0aCmpgZ3796NaP/BWX+ys7PhcDiGfDgLW7jDDwaDgTIzM+mVV16hs2fPUldXF924cYM2b95MqampYQ/nTJs2jT799FP697//Te3t7bRjx46wh1N0Oh0tWLCAjhw5Qg8ePCCfz0fffvstrVixIqIhoYyMDFq5ciW9/fbb9Nvf/pasVuuEGQ6bNm0avfrqq/TWW2/R888/TxkZGRH97itXrqTr168Hx7APHTpEFRUVYQ+HWa1W2rlzJ3V0dFBHRwd9/PHHER2/tLQ0euONN6ixsZG6urqorq6OXn75ZcrMzCSDwRD2cFjYwf3oo4/o1KlT5Ha7h92AOHToEFVVVVFiYuKoNyAqKiqopqZm2A2Ir7/+mqqqqig+Pn7YDQij0UipqalUUlJCH3zwAd2+fXvYDYjGxkZ68cUXyWg0DnlNjUZDSUlJNHPmTFqyZAlt3LiRdu3aRfX19dTX10c+n48ePHhAx48fp5KSkv/6GxBlZWVUU1MT/E/b19dHDoeDdu7cSRs3bqTFixfTjBkzKCkpadi4ttFopJ///Od08+bNYTcgWltb6f3336eSkhJKSUkho9E47AaE2Wym5cuX06lTp4a9f8ePH6fy8nLS6/Uha09KSqLly5fTkSNHaGBgYMj753K56NSpU/TRRx+FHdywh8MG7z+H4nK58M0336C+vh63b99GV1dX8Jav2WxGaWkpVq5ciezs7BGva3t6elBXV4fLly+jv78fCQkJyMjIQFZWFjIzM4O3fEPV0NnZiT179uDw4cN4+PAhrFYrysrKUFRUhKysLMTHx0Ov1494TUdEuHbtGrZs2YJjx44NGRMez1u+gwaXVH3vvffw1FNPhbzl6/P54Ha74XQ6YbfbUVdXh+bmZhiNRixbtgxr165FSkrKiK8rSRJcLhfa29uDt307OjrgdrthNpuDjUBJSUnD9iUi3LlzB/v27cP58+fhdruH3PLNycmBzWbD7NmzkZCQEPJ3f1TGhhyncIMbifFssnnw4EGwySbSjiqn04kvv/wyZJPN1atX0d3dHWyyof9ttInGYIPNYJNNcnIyZs+ejcLCQlgslmFNNi+99FLETTZ+vz/YZDNp0qQfZpPND4Xf74ff7x/yn02WZfT39+PmzZs4d+4c7HY76uvr0dLSApfLFXVbo9VqxZw5c2Cz2VBaWor8/HxMmjQp+JqDIVAyghOrOLgR8vl86OzsRG1tLf7whz/gypUrEQ/iazQazJkzB6+++ioqKyuRnJzMa0NEiJ+AiJBer8eUKVOwaNEiFBQURDUOLQgCCgoKUFlZifT0dA5tFDi4URBFEampqSgqKorqyQSdToeioiIkJyfzxCBR4qMWJb1ej9LSUkyePDnifZOTk1FaWspnWgU4uApMnz4ds2bNini/2bNnh7UuGguNg6tAfHx8xNe5giCgsLAQkyZNeoyVxT4OrgLRTno32o0UFh4+egoQT3o3bji4Cvj9/og7owDg7t27vHSUQhxcBQYfXYp0LDcQCPAZVyEOrgIGgwE2my3YHxsOo9EYcgVKFj4OrgI6nQ6rV6/Gc889F9aHLVEUsXjxYrz00kvce6AQ9yqoYHCBvgsXLoy6QF9paSl27dqFp59+eowrjD18xlXBrFmz8M477yAvLy/k6ulWqxXvvPMOnnrqqXGoMPZwcFUgCAJKSkpQVVUVcvX0FStWYP78+fx0tEo4uCoxGAxITEwM+f3ExESeKlRFHFyVeDwe2O32kKunR/o0NBsdB1clt27dCrkQNRHh4sWLaG5uHofKYhMHVyUXLlzAd999F/L7XV1duHjx4hhWFNs4uCqQJAkOh2PUyeMCgQAcDkdUc3Wx4Ti4KvB6vbh169Yjt7t16xYvVKISDq4KBqevf5Q7d+7A7XaPQUWxj4Orgra2trDmP+vs7ITT6RyDimIfB1cFly5dCmueXpfLBbvdPgYVxT4OrkI+nw9nzpwJ60OXJEmoq6vjXlwVcHAV8ng8aGlpCXv75uZmeDyex1jRDwMHVyFBEBAXFxf29tFOZs2G4uAqFB8fj6VLl4bVTD44ayI/4ascB1chjUaDdevWYfny5aM2h2u1Wjz//PNYu3ZtVNPXs6G4DV8FaWlpePfdd+Hz+XDs2LFh0/objUb85Cc/wdatW0POT8siw09AqISIcOPGDWzduhVHjx4NDo+ZzWYsWbIEr7/+OqZPn87XtyrhM65KBEFAXl4e1qxZg+7u7uAt4Pz8fKxduzbk0xEsOnyNqyKfz4empiY4nU7cv38f9+/fR1tbG5qbmyNespWNjs+4KpFlGV9//TW2b9+Opqam4A2Jvr4+fPjhh5g6dSqWLFnCUy+phK9xVdLS0oJ169bh7Nmzw5rJBUFAeXk5du/ejZycnHGqMLbwf38VSJKEPXv24OLFiyGfgDh//jz27t3L/bgq4eCqoLe3F3//+99H7UHw+/3Yt28fXC7XGFYWuzi4Kmhvbw+rX6GpqQnt7e1jUFHs4+CqwOl0htXW6Ha7Obgq4eCqwOl0htWq6PP5uJFcJRxchYgIHR0dYc2RG8m2bHQcXIWIKOzVJYkIbrebg6sCDq5CgiDAbDaHdTs3km3Z6Di4CgmCgKKiIphMpkduGx8fj7lz53JwVcDBVUFFRQUWLFgwaiAFQcCzzz6L8vLyMawsdnFwVfDEE0/gtddeG/V2bl5eHjZt2oSkpKQxrCx2cXBVUlpaitdeew0pKSlDzryCICA1NRWbNm3C/Pnzx7HC2MLBVYlOp8OKFSuwaNEimEwmaDQaaDQamEwmVFZWYvny5Tw/roo4uCrTaDTDzrj8jJn6OLgq8fl8OHDgAGpra+HxeCBJEiRJgsfjQU1NDQ4ePMgTgaiI+3FVQEQ4duwYNm7ciJaWlhH7cfPy8vCXv/wFlZWVPBymAg6uClpaWrBmzRqcP39+1OWiysrKsGfPHm4mVwFfKigkyzK++uor2O32UW/lDk6nv2/fPl4OVQUcXIX8fj8uXLgQdnfY+fPn+VpXBRxchWRZjuipBrfbzWdcFXBwFRJFMaJ1ebVaLT/pqwI+ggppNBpYLJawt7dYLDyuqwIOrkKiKEY0H1hKSgqfcVXAR1AhURSRm5sbVhhFUUROTg4HVwV8BFUwd+5cmM3mR25nsVhgs9nGoKLYx8FVQUFBAcrKyh65XXl5OWbPnj0GFcU+Dq4KLBYLqqurR73WTUtLQ3V1NRISEsawstjFwVXJwoULsWHDhhHXgzCZTHj55ZexYMGCcagsNnFwVRIXF4df/vKXsNlswXFdQRCg1Wphs9nwi1/8AkajcZyrjB0cXBUlJSUhOzsbWq022AGm1WqRnZ3Nj+yojIOrksGp9Ovr6+Hz+UBEICL4fD44HA7cvHmT51NQEQdXJW63G59++imampqG9CLIsoympiZ89tlnYc0vxsLDwVWJw+HA4cOHR+z88vv9OHjwIBoaGsahstjEwVWBJElwOBz47rvvQm7T3d2N+vp67gxTCT8BwSYkPuOyCYmDyyYkDi6bkDi4bELi4LIJiYPLJiQOLpuQOLhsQuLgsgnpfwAMnPDZF7OdhQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 16\n", + "\tJ = 2.9627e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 8.3295e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 17\n", + "\tJ = 3.1068e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 2.4241e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 18\n", + "\tJ = 1.9480e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 4.5024e-03\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:46:34 EDT WARNING: No connection: Retrying for 180 seconds.                  \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:46:34 EDT\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING: No connection: Retrying for \u001b[0m\u001b[1;36m180\u001b[0m\u001b[31m seconds. \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 19\n", + "\tJ = 2.4465e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 3.2538e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 20\n", + "\tJ = 1.7596e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 1.3490e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 21\n", + "\tJ = 1.9705e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 2.3249e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 22\n", + "\tJ = 1.5817e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 1.9620e-02\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAZC0lEQVR4nO2de2wU1/XHvzOz3oe9u14/MA4NfuEminiYh43BtqhIKVBw7NCAEohKk1BoU7WB0qhUKmmkRI1IG5Q6VRUCNISmaWidhPIoYCtSKZA1MQ/HJpDy8guKzWL83l17d2bP7490Vz/Xr1nPxI435yNZsrx3Zo9nP76+c++ZcwUiIjDMOEMc6wAYZiSwuMy4hMVlxiUsLjMuYXGZcQmLy4xLWFxmXMLiMuMSFpcZl7C4OnHz5k3k5ORAEIQBv+bNm4empqaxDjNiYHF1wuFwYNasWZAkqd9rkiRh1qxZiI2NHYPIIhMWVydiYmKwcuVKJCcn93tt0qRJWLlyJSwWyxhEFpmwuDohCALmzp2L5cuXIzo6OjREiI6ORmFhIbKzsyEIwliHGTGwuDoSExODnJwcxMbGQpIkSJIEh8OBnJwcxMTEjHV4EQWLqyNutxvnz59HZ2cnAoEAAoEAOjs7UVVVBbfbPdbhRRQsrk74/X787W9/Q2lpKdxud0jc7u5u7Nu3D++99x5kWR7rMCMGgRPJ9eHEiRNYu3YtGhoaBnw9LS0Nb7/9NgoKCkY5ssiEe1wdaG9vx7Zt29DY2Dhom4aGBvzmN79BR0fHKEYWubC4OnD69GmcPHkSQ/3zIiIcP34clZWVoxhZ5MLiaoSI4HQ6Vd18dXd3w+l0Dik4ow4WVyOKoqCurk6VjESEuro6KIoyCpFFNiyuRmRZxt27d1W3b21tZXF1gMXViCzL8Hq9qtt7PB4WVwdYXB0YKLFGj7bM4LC4GomKikJSUpLq9hMnToTBYPgCI/pqwOJqxGg04sEHH1SV+WWxWLBw4UJERUWNQmSRDYurEUEQUFRUhG9961sQxcEvpyiKWLp0KQoLCzlLTAd4yVcnqqur8f3vfx/nzp3rNzUmiiKys7Oxe/duTJ8+fYwijCy4x9WJadOm4Ze//CUmT57cp0cVRREpKSnYunUrpk6dOoYRRhYsrk5IkoS8vDzMnz8fJpMplEhuMpkwf/58zJs3b8ihBBMefCV1xO12o62tDYFAIPQzRVHQ1tYGj8czhpFFHiyuTng8HuzduxcVFRXw+XwgIhARfD4fnE4n/vSnP4W1UMEMDYurA7IsY9++ffj973+Prq6ufq93dnaipKQEpaWlvGqmEzyroAOVlZVYvXo1amtrh2yXmZmJd999F9nZ2aMUWeTCPa5Genp6sHPnTtTV1Q3btra2Frt27UJvb+8oRBbZsLga6ejowNmzZ1WlNQYCAVRWVqKzs3MUIotsWFyNEFFYPajf7+dEch1gcTUSHR2N+Ph41e3j4uK4oo0OsLgasVgsSE1NVd0+IyODxdUBFlcjBoMBWVlZqhJnRFHEjBkzOCdXB1hcjQiCgOzsbFUllmJiYjBnzhzODtMBFlcHsrKykJWVNWy7WbNmcXaYTrC4OpCQkICNGzciISFh0DaJiYnYuHFjWDdyzOCwuDogCAIKCwuxefNmxMXF9RkKCIKAuLg4PPvss1i2bBkPE3SCH37SCYvFgqeffhqBQABvvfUWXC4XACApKQnr1q3DD37wA5jN5jGOMnJgcXXE4XDgiSeeQFRUFE6dOgVBEFBQUIA1a9ZwGX2dYXF1RpZl+P3+UBaYLMucEfYFwOLqBBGhsbERJSUl2L9/f6i6zaVLl9DS0oJNmzYhJSVljKOMHDitUSeuXLmCn//85ygrK0NPT0+f1ywWC5YuXYqXX34ZX//618cowsiCxdWBmzdv4umnn8bRo0cHHRZIkoTCwkK8/vrruOeee0Y5wsiDp8M0Issy9uzZg/Ly8iHHsoqi4OjRo9izZw+X1NcBFlcjXV1dKC8vh8/nG7atz+dDeXk5uru7RyGyyIbF1QgRwe/3q24fTltmcFhcjVitVmRkZKhuP2XKFERHR3+BEX01YHE1YjQaUVBQoKrYhyRJyM/Ph9FoHIXIIhsWVweys7NhtVqHbWez2TBnzpxRiCjyYXF1ICUlBRMmTBi2XVJSEi9C6ASLqwN2ux1paWnDtktPT4fNZvviA/oKwOLqgNlsxvTp04dMWRQEAdOnT4fJZBrFyCIXFlcHRFHEggULhnwIMjo6GgsWLOCKjTrBV1En5s2bh5kzZw7Y6wqCgFmzZmHu3LljEFlkwuLqRFJSEtauXQuHwzHgExDf+973kJiYOIYRRhYsrk4E52inTp0Kk8kEg8EAg8EAk8mEadOmIS8vjx9L1xEWVycCgQBaWlr61cAVBAEejwctLS19Cj4z2mBxdeLq1avYvn07Ll68iN7eXsiyDFmW0dPTg08//RTbt2/H9evXxzrMiIHzcXWgtrYWzzzzDMrKygZNWTQYDFi2bBlKSkpUzfkyQ8OP7mikqakJW7ZswbFjx4bMx5VlGUeOHIHZbEZJSQmSk5NHMcrIg4cKGpBlGe+88w4OHz6s6oFIWZZx6NAhvPvuu5xMrhEWVwM9PT04ffp0v2fM9D6G6Q+LqwFJksKe4iKiER3H9IXF1YDRaERqampYZZUEQUBaWhrn5GqExdWAJEmYMmVKWPkHkiQhIyODe1yNsLgaiYmJCUtcQRBUJZ0zQ8PiaqS7uzusFbFAIMBP+eoAi6sBIsLt27fDFre5uZl33tEIi6sBRVFw586dsCXkvAXtsLgakGU57M32iAgdHR28AKERFlcDnZ2daG5uDvu45uZm3l1SIyzu/yDLMrq7u+H1evst4xJRKOPL5XKhrKwMly9fDvs9PvvsM5SVlcHlcqGnpweyLPcbbiiKAq/Xi+7ubu6dB0D37DAigqIoobQ+AIiKioLRaBx2or6npwcdHR0gIkRHR8NiscBgMKie4JdlGV1dXSAiWK3WsCf5m5qa8Oc//xkff/wxJElCamoqpkyZgpiYGHR3d+P27du4c+dOqKe9fPkybt26FbZYBoMBX/va13D//fcjOTkZdrsdiYmJSE5ODr1XbW0t6uvrEQgEMH/+fKxZsybsKo8+nw/d3d0QBAE2mw0Gg7qcquAfqNfrhcfjgSAIiI2NHXYrACKCz+cLlZkKJtNLkqT73he6idve3o7Tp0/D6XSirq4Od+/ehdfrhSRJSEpKwoMPPoiioiIkJSX1O1aWZZw/fx47d+7E2bNn0dvbi/j4eKSmpiIrKwvZ2dnIyspCQkLCoBfg5s2boaqJfr8fGRkZKCgoQHZ2NlJSUmC322E2mwedc62trcWWLVtw+PDhUB6BIAgQRRGiKCIQCCAQCHxhswGDvZcgCDCZTCgqKsK2bduQnp4+4PGBQAA9PT3o7OxEQ0MDzpw5A6fTidraWkRFRWHJkiV46qmnMGnSpAGPJyLcvXsX1dXVOHPmDGpqatDQ0IDW1laYTCbk5ORgw4YNmD179oCLJ7dv38aBAwdw/PhxuFwuKIoCi8WCxMREpKWlIT8/H7m5uXA4HPpcMFLJjRs3yO12UyAQ6PNzn89HJ06coG9/+9tktVpJEAQC0O/LYrFQcXExVVdXkyzLoePdbje9+eablJGRMeCxgiCQ1WqlgoICKi0tJY/H0+f9A4EAXb58mQoLC8loNPY5VpIkio2NpczMTFq0aBH99Kc/pf3791NTU1MoBkVR6N///jcVFhaSJEkDxv5l+DIYDFRUVESXL18mRVGIiEiWZbp16xZ98MEHtGnTJvrmN79JmZmZZLfbSRTFPscbjUYqKiqiq1ev9vtsPR4P/fWvf6W8vLxBP0NRFGnKlCn01ltvkdvtDh0ryzJVVVXRQw89RGazecDYBUEgm81GhYWFdPLkSfL7/f0+w66uLrpx44ZaHUm1uNnZ2bR+/XoqKyujtrY28vl81NbWRm+88QalpqYOKuz//vLZ2dm0f/9+un37NtXW1tLzzz9P8fHxqj68hIQE+vWvf02tra0UCAQoEAhQfX09FRcXq5JOEASKjo6mvLw82rFjB124cIH++c9/UmFhIRkMhjGXU628x48fp5qaGnr99ddp3rx5ZLFYVB0vSRKtWLGCGhoaQtevtbWVXnzxxbA+gxdeeIHq6uqoubmZPvjgA5o9e3a/P5TBrn9aWhrt3r27j0PHjh2jdevWUXZ2tmpxVQ8VBEGAJEm45557sGzZMuTk5OD8+fMoLS1FS0uLmlOEzjN58mTMnz8fbW1tqKioQFdXl+rj4+LisHnzZjzxxBOQZRklJSXYsWNHWGmCgiDA4XBg6tSp8Hq9uHjx4rhJMzSbzZg6dSrMZjMuXrwYuidQi8ViwY9+9CP85Cc/gSiK2LNnD1599VW0t7erPofNZkNeXh5iY2NRUVGBmzdvhhXDhAkT8OijjyIrKwuVlZU4cuQImpuboSiK6vOEJW6Q6OhoxMbGorOzE263W3XA//9cJpMJgUBAVUHk/z02IyMD69evh9/vx+7du9HQ0DDiGACgt7d33KxkCYIAs9kMIhpx3GlpaVi/fj1EUcQbb7yBhoaGsM9jNBohiuKIY7BarbDZbOjo6IDH4wn9XO25RvTojtfrhc/nG/HqT/Cij/RYl8uFU6dOQVGU0O42IzlPcDZgvEgLIFRI+r/DvBGdo6WlBadOnYIoimhpaRnReYIzByONwePxoKenZ8RbaY3beVzeWnTkBGcwxvM1HFGPa7FY4HA40NnZOaJMJ1EUYTKZoCjKiIYKSUlJKCgogCzLuHTp0ohiEAQhNEcczthqrBEEAVFRUSCiEU/PJSQkID8/H6Io4tKlS3C73WGfJyoqStNQITo6Gna7He3t7X2GCmoJS1xJkjBp0iQUFhYiJycHVVVV2LdvH+7cuaP6HKIoIiUlJXRz5nQ6w1r+dDgcWLduHdasWQNFUdDS0oIdO3b0K8QxFMGySNOmTYPH48Gnn346bm/O2tvbw745W7VqFR5//HGIogi/34/t27eHdXNmt9uRn58Ph8MBp9OJxsbGsGJISkrCY489hpkzZ6KyshKHDx9GU1NTeMMGtdMPubm59MMf/pA+/PBDam9vJ7/fT+3t7bR7925KS0tTPR02d+5cOnjwILlcLqqvr6cXXniBEhISVE3FJCYm0rZt26itrS00ndPQ0EArVqxQPR0WExNDBQUFtGvXLrp48SL961//oqKionExHRYVFUUPP/wwnThxgi5cuEA7d+6k/Px8io6OVnX9JUmilStX0o0bN0LXr62tjV566aWwPoMXX3yRGhoayOVy0d///nfKzs5WPR2WkZFBb775ZsihtrY2Ki8vpw0bNlBubq7q6TDV4t66dWvABQi/308nT56khx56iGw225ALECtWrKCamprQBDrR55Pfe/fupczMzAF/eVEUyWaz0YIFC+j9998nr9fbL7YrV65QcXHxgAsQDoeD7rvvPlqyZAk9++yzdPDgQWpubu6zAHHlypUvvbwGg4Eefvhhunr1ap8FiKamJjpw4AD97Gc/o8WLF9N9991HDoej3x+y0WikFStW0LVr1/pdP4/HQ6WlpVRQUEA2m23QzyEzM5PefvvtPotAsixTdXU1FRcXDzqfLAgC2e12Ki4uJqfTOeAChNvtplu3bqnVUf087nB0dHSgsrIytOTb2toKj8cDSZIwceJELFy4EIWFhQOWnFcUBVVVVdi1axcqKyvh9/sRFxeHjIwMzJgxA3PmzMH06dMRHx8/6A1FU1NTnyXfKVOmID8/H3PmzEFKSgpsNhtMJtOgS7719fXYsmULDh48GBq3BeeuBUEILcMC0H08HPydgku+9N98j2AMZrMZxcXF2LZtG1JTUwc8RyAQQG9vLzo7O3Hjxg2cPXsWH330Ea5duwaz2YzFixfjySefHLQQCRGhtbUVNTU1OHfuHGpqalBXV4e2tjZERUUhNzcX69evx8yZMwdc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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 23\n", + "\tJ = 1.2857e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 1.3309e-02\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 24\n", + "\tJ = 1.5397e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 2.7810e-02\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAACuCAYAAACvDDbuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAZEUlEQVR4nO3dWVBUZ/o/8O85fXqjFxhAI8SwNLjNhoC40G4pBTRINBPHZS4cjVMVL7TmIiaOTlJmNquSMTM1pVUz5Rh14qSmTJWVmBh1EjNRWcQBQayKgJHFJYAKLXY3S6/P/+L/654gWzfnCKF9PlV9o+fA4+Hroft9n/O+AhERGBtnxLEugLGR4OCycYmDy8YlDi4blzi4bFzi4LJxiYPLxiUOLhuXOLhsXOLgKqSjowP5+fkQRRGCIPR5iaKIZcuW4cGDB2NdZsTg4CrEaDQiKysLkiT1+ztJkpCVlQWDwTAGlUUmDq5CtFotVq5cieTkZAiCEPxzQRCQnJyMVatWQaPRjGGFkYWDq6Af/ehHeOGFF2A0GiGKIkRRhNFoxOrVq/H9739/rMuLKBxcBen1esyaNQtxcXFQqVSQJAlxcXHIzs6GXq8f6/IiCgdXQd3d3aiqqsKDBw/g8/ng9Xrx4MEDVFVVoaenZ6zLiygcXIV4vV589NFH+Mc//gG73Q6/3w+/3w+73Y4jR47g448/hs/nG+syI4bAjeTKKCkpwcaNG9HQ0DDg36enp+Po0aOYO3fuKFcWmfiOq4AHDx5gz549aGxsHPSYhoYG7NmzB52dnaNXWATj4CqguLgYFy5cwFC/vIgIX375JUpKSkaxssjFwZXJ7/ejuLgY3d3dwx7b1dWFkpIS+P3+UagssnFwZfJ6vWhqahrybhtARGhubuYPaQrg4Mrk9Xphs9lCPt5ms8Hr9T7Gip4MHFyZfD4fXC5XyMf39PTwHVcBHFwFqNXqx3IsGxwHVyaNRoPExMSQj3/66ac5vArg4Mqk0WiQl5eHqKioYY81GAzIy8vjLjEFcHBlEgQBRUVFKCwshEqlGvQ4lUoVPO7bbY9sZHjKVyG1tbX4xS9+gfLy8n7jtKIoIjc3FwcPHsS0adPGqMLIwndchUybNg2vv/46kpKSIIr/u6yiKCI1NRWvv/46pkyZMoYVRhYOrkJEUcSsWbMwb948aDSa4PNmWq0W8+bNw6xZs/oEmsnDV1JBTqcT7e3tfcZpvV4v7t+/D6fTOYaVRR4OrkKcTicOHz6MixcvwuPxgIhARPB4PCgrK8Phw4dD6mdgoeHgKsDj8eCf//wn9u/fP+Cd1eFwYN++fXj//fd5ulchPKogExHh/Pnz2LBhA27fvj3ksUlJSTh69CgWLlw4StVFLr7jyuR0OrF//37cuXNn2GNv37496F2ZhYeDK1N7ezuqq6tDbmusrq5GR0fHKFQW2Ti4MhFRWO9bvV5vSCFnQ+PgymQ2mxETExPy8TExMTCZTI+voCcEB1cmk8kEi8US8vFpaWkwGo2PsaInAwdXJo1Gg+zs7JAaZ0RRRHZ2NneHKYCDK5MgCLBarSHdRU0mE6xWK3eHKYCDq4DMzEzk5uYOGUhBEDB//nxkZGSMYmWRi4OrgJiYGPzqV79CamrqoMdYLBbs2LED0dHRo1hZ5OLgKmT+/Pn44x//iOnTp0OSpGB3mCRJmD59Ovbu3Yvc3NyxLjNi8JSvgtxuN86dO4cDBw6gtrYWgiBgxowZePnll7Fo0SJ+1kxBHFyFdXd3o6amBtXV1QCArKwsZGRk8Pq4Cuu/YQGTxeVy4d69e2hpaQEATJ48Gb29vRxchfEdV0Gtra149913cezYMbS1tUEQBCQkJGDt2rV46aWXMGnSpLEuMWJwcBXy9ddfY9euXTh16hR6enqC/QiCICAqKgqFhYXYs2cP0tLSxrjSyMDBVcCdO3ewZcsWnDlzZtDllVQqFQoLC/HXv/41rAVE2MB4OEwmj8eDv//97/jss8+GXBPM5/PhzJkzOHjwIDwezyhWGJk4uDLZ7XZ89tlnIYXR7Xbj888/h8PhGIXKIhsHVwHh9OPy3VYZHFyZjEZjWB+4LBYLtzUqgIMrk1arxfz580Na7EOlUmHBggXc1qgADq4CcnJyQm5rzMnJGYWKIh8HVwHJycmYMGHCsMdNnDgRSUlJo1BR5OPgKsBsNg/Z0hhgsVj4eTOFcHAVoNPpkJGRMWwjeUZGBrRa7ShWFrk4uAoQRRGLFy8eclVyg8GARYsW8YqNCuGrqJDZs2cjJydnwLuuIAiYM2cOfzBTEAdXIXFxcXjppZcQHx/fJ7yCIGDChAnYuHEjYmNjx7DCyMLBVYhKpcLs2bODTeNqtRpqtRp6vR4zZ87EnDlz+G2CgvhKKsTv9+Pu3buw2+3BtXED7HY77t69y3v4KoiDq5D6+nq8/fbbuHr1Knp7e+H1euHxeNDT04MrV67g7bffxtdffz3WZUYM7sdVwI0bN7Bt2zacPXt20IYbSZJQUFCAv/zlL9xMrgAOrky3b9/G1q1b8emnnw67R29gr7N9+/Zh8uTJo1RhZOK3CjK43W4cOnRoyCcfvs3n8+H06dM4cuQI3G73KFQYuTi4MnR3d6O8vDysELpcLpSXl6Onp+cxVhb5OLgySJIESQr/CX+VSjXk9qlseBxcGXQ6HVJTU8NafVEQBFgsFuh0usdYWeTj4MqgUqkwffr0sCYWRFEMri/GRo6DK4MgCIiNjQ07uDz1Kx8HV6bALpLhnsPk4eDK9PDhw7Cmcv1+Px4+fPgYK3oycHBlIKJgb0I45zgcDt4ySiYOrgx+vz/sXSKJCE6nk4MrEwdXBpfLhba2trDPa21thcvlegwVPTk4uI9wu93o7OyE0+kccBdIIoLP50N3dzcuX76MqqqqsN8qVFZW4vLly+ju7obP5xvwe3i9XjgcDnR2dvL08AAUb7Lx+/3wer3wer3B+XuNRgONRjPkQH3gV2h7ezuICGazGSaTadjzvs3j8cButwP4/yvMhPtg4u3bt3Ho0CGUl5dDkiSkpqZi+vTpiI2NhcfjwcOHD2G32+F0OtHW1oaqqirU1taGHSytVosZM2YgMzMTkyZNgtFohNlsRnR0NNRqNdrb21FfX4+mpib4fD7k5uZi06ZNYTfmuFyu4FsZs9kc8lL+RAS32w2HwwG73R58isNgMAz7M3S73cHroVKpgrOLSjfRKxbcBw8eoLi4GMXFxWhqaoLNZoPL5YJarUZiYiLy8vJQVFSE+Pj4fud6PB6UlpZi//79qK6uhtfrRUxMDCwWC7Kzs2G1WpGZmTnk1qN37twJrpro9XqRlpaG+fPnIycnB8nJyTCbzdDpdINewBs3buCVV17BmTNnghdeEASIoghRFEFE8Pv9fe6Oci/do4/4iKIIQRDg9/v7fC+tVovly5dj7969g7ZE+v1+9Pb2wm63o7m5GRUVFSgpKUFjYyM0Gg3y8/OxefPmQcNPROjs7ER1dTVKS0tRVVWFxsZGdHZ2QpIkZGVlYevWrbBarQNOnrS3t+PEiRP44osv0NLSAo/HA61Wi7i4OKSkpGDhwoVYsGBBWNvHDolC1NHRQb29vf3+3OPxUGlpKRUWFpLBYCBBEAhAv1dUVBStWbOGrl27Rj6fL3i+w+Ggv/3tb/TMM88MeK4gCGQ2m2nZsmV07tw58ng8/Wq4fv06rVixgtRqdZ9zRVEks9lM6enplJeXR9u3b6dPPvmE7t27F6zB5/NRbW0tLV++nFQq1YC1fxdeKpWKCgsLqa6uLli71+ulu3fv0scff0yvvPIKLV26lNLT08lsNpMoin3OV6vV9Pzzz9ONGzcG/Bn+5z//ofz8fDKZTIP+HJKSkujAgQPU1dUVPNfn89FXX31Fq1evJr1eP2DtgiCQ0WikFStWUFlZGXm93n419Pb2Unt7e6hxpJCDm5eXRzt27KCLFy+Sw+Egr9dLdrud3nvvPUpLSxs0sI9e/NzcXDp16hTdu3ePGhsb6Y033qDvfe97w54rCAJZLBY6fvw4uVyuYF0tLS20evXqkEInCAIZDAZavHgxvffee1RXV0fnz5+nwsJCkiRpzMM53EuSJCoqKqILFy5QXV0dHTlyhBYtWjTkDePR67927VpqbW0NXj+Xy0UffPABpaSkhFRDbGws7d69m5qamujevXv0ySef0Ny5c0O+/unp6XT06NFghhwOB5WWltJrr71GS5cuVT64giCQWq2m9PR0evXVV+nYsWO0Y8cOmjRpUlgXXxRFSklJofXr11NeXh4Zjcawzp8+fTr9+9//pq6uLrLZbPS73/2OoqKiwvoagiDQhAkTaOnSpTR79mzS6XRjHspQXzqdjubMmUNLliyh+Pj4kAL77ZfBYKA9e/aQzWajrq4uOn36NE2dOjWsr2EymSg/P5/Wr19PKSkp/e7uw70SEhJo586ddOzYMdq+fTulpaWRWq0mQRCUD+63f+gmk4lSUlIoOjo67AsXCK9Op+v3qz2UlyRJ9OKLL1JZWRl99NFH9MMf/nBENQiCQFFRUaTX60d0/li9AnVHRUWN+N+dkZFBJ06coNLSUnrhhRdG9NtGrVaTTqcLO7SBGqKjoyk5ObnfW5NQhd2iRETo6upCb2/vgEM5ofD7/SMex/T5fKitrUV1dTVaWlrQ1tY2ohqIKNhnMJLzx4rcuokILS0tqKiowFNPPYXa2tqQnt54VGDkaKQ1OByOQYcDQzHiMYqx3AH80U/jSn2tJ0Vgu9axJqeGsIMrCAIMBgMSExNhMplG9M1FUYROpxvx0wMzZsxAVlYWZs+ejYSEhBHVIAhCcNGO78IPMVSBusMZ3370/MTEROTk5CA7OxszZswY0dMYarV6yOHF4Wowm81ITEwcdmx4MCEnJ7ChcmpqKn7yk58gOzsbVVVVOHLkCFpbW0P+hqIoIjU1FfPmzcP9+/dRVlYW1mYe6enpePnll5GRkYHe3l6sXbsWDQ0N6OrqCvlrBAbUZ86cCbvdjitXrqC3tzfk88eSTqfDj3/8Y5hMJly5ciU4YRMqg8GAdevWBVdG37JlC65du4b6+vqQv4bJZILVakV8fDzKysrQ3NwcVodcQkICNm3ahJkzZ6KyshLHjx/HzZs3w9pLI+R3wwUFBbRz5066dOlSn6GM999/n9LT00Mejpk/fz6dOXOG2tvbqbm5mXbv3k2xsbEhvaFPS0ujDz/8kNxud7Cu1tZWWrNmTcjDMUajkZYsWUJHjx6l69evU3FxMRUVFY2b4bCVK1dScXEx1dfX09GjR+nZZ58lo9EY0vWXJInWr19PbW1twevncrno+PHjZLFYQvoacXFx9Nvf/pZu3rxJ9+/fp9OnT5PVag35+k+dOpX+9a9/9clQeXk57dy5kwoKCkL+cBZycG02W5/x0wCv10sXL16koqKiIS+gwWCgdevW9RlAJyLq6uqiAwcOUFJS0oDniqJI0dHRVFhYSBcuXBhw8PrGjRv0/PPPk0aj6fcfJSYmhqZOnUrLli2jHTt20KlTp+j+/ft9JiDq6uqosLDwOz8BUVRURNevX+9T+7179+jTTz+l1157jQoKCmjq1KkUHR3d79+i0Who1apV1NDQ0O/6eTweOnfuHC1fvpzMZvOgExApKSn07rvv9puAuHbtGq1Zs2bQYcnADWPlypV06dKlAX+GLpeLbDZbqHEkxaZ8Ozs7UVJSgpKSEjQ3N8Nms6GnpwdqtRpPP/008vLyUFhYiLi4uH7ner1elJWV9ZvyTUtLC075ZmRkIDo6etDv39LSgoMHD+Lzzz+Hx+NBeno6rFYrcnJykJSUBJPJBK1WO+h7soaGBmzfvh2nT58Ojnh8e8oXQHAaNnDJ5F66wHu7wIelb3+fR6d8n3vuOezduxcWi2XArxUYqbHb7bh161afKV+1Wo2CggJs3rwZCQkJg9bT2dmJmpqa4JRvQ0NDcMo3OzsbW7duxdy5cwf8bNLR0YGTJ0/i7Nmz+Oabb+DxeKDX6xEbG4vU1FQsWLAAVqt1yJ9hOB5Lk43P5+vTZBPqhwmn04mOjg4QEUwmE4xGY9hNNoH3y4Fzw3Hnzh0cOXIE5eXlUKlUsFgs/ZpsHA4HnE4nWltbUVlZidra2rCH9rRaLX7wgx8gOzsbCQkJMBgMMJvNwUYYm82Guro6NDY2BptsNmzYEHaTjdvthtPphCAIMJlMIX8Ypv9rlnE6nXA4HBAEAXFxccNu0BI4L/BoUqDJRqVSfXebbCKF2+1GT08PVCrVgCMfgTuuy+XC5cuXsW3bNly5ciWs75GVlYV9+/YhMzMTWq223/AU/V/rZGCsPCoqKuTOricFPyP9iEAL5mACIdPr9cjKykJmZiZqampCftsgCAKys7ORmZkJvV4/6DGSJPFGfkPgRnIZtFotJk2aFPZ5CQkJvImJTBxcGURRDPuuGJjAGU+THt9FHFwZAjNA4S7BFO45rD8OrkzR0dFhr2RjNpsfY0VPBg6uTCPpdeARAvk4uDIQEdrb28NeycZms42rVsrvIg6uDD6fD/X19WEHt66ubkQ9sOx/OLgy9PT0oKmpKex1FRobG8dNN9p3FQdXBp/PN6I750jPY//DwZUhKioKubm5YU0maLVa5ObmDrlhNRseB1cGjUaDTZs2Yfny5SE9RaBSqfDcc89hw4YNPLIgEwdXpsmTJ2Pv3r3Iz88fsvtKkqRgayLvcSYfB1cBaWlp+POf/4zly5dDp9P1e5hTr9ejsLAQ77zzzqD9tCw8HFyFTJkyBa+++uqAu6dnZGRg+/btvBWqgritUSGiKGLixInBpptvD5GZTCZMnDhR8WbqJxlfSYX4fD6Ul5ejpqYGPT09wQUzArun//e//w1rooINjYOrkI6ODhw+fDj46FFAYFr40KFD6OjoGMMKIwsHVyHl5eWorKwccBaNiFBRUYGKiooxqCwycXAV4Pf7ce7cOXR3dw96TFdXF86fP89vFxTCwVVAb28vrl69OmTPAhGhpqaGNy1RCAdXAYHl64fT1NQU3KOCycPBVUBzczPu378/7HF3797FrVu3RqGiyMfBVUBFRUVIG/U5nU7+gKYQDq5MLpcLJSUlIX3o8vl8KCkp4X3LFMDBlcnpdKKxsTHk4xsbG8PeRpX1x8FVQDhrlI23haS/qzi4MpnNZuTn54fUX6vRaFBQUACTyTQKlUU2Dq5MarUamzdvxrJly4ZsJg/0427evHlEWwiwvji4Cpg8eTL+9Kc/4cUXX+y3vFJgyaWf/vSneOedd4Zcn5aFjpcZVVBbWxsOHz6MY8eOoaWlJbhRyLp167Bx40Y89dRTY11ixODgKiywGXdFRQUEQUBOTo6ymy8zANxIrjitVov4+Pjg3TU+Pj7sldHZ8Di4CnK73bhw4QIOHDiA2tpaAMCMGTOwZcsWLF68mAOspJC3OWFD8ng89MEHH9DUqVNJkiQSBIEEQSBJkmjatGl0/Phx8ng8Y11mxOD3uAogInz55ZfYvHnzoF1iFosFhw4dwqJFi0a3uAjFw2EK6OzsxFtvvTVka2NTUxPeeustdHZ2jlpdkYyDq4Dq6mpcvHhxyGOICKWlpaipqRmlqiIbB1emQCBDaZxxOBwoLS3ltXEVwMGVye12o6qqKqQwEhGqqqq4rVEBHFyZHA5HWG2NDQ0N3NaoAA6uTHa7PawPXJ2dncFtW9nIcXBlCuwCGSpJkrgfVwEcXJkmTJiArKyskMIY2A51oB3kWXg4uDIZDAZs3boVzzzzzLDHJicnY+vWrbxHrwI4uDIJggCr1Ypf//rXiI2NHfS4uLg4vPHGG5g7d+4oVhe5OLgKkCQJP/vZz7Bt27YBH8sxmUz45S9/iXXr1vHTDwrh4CrEaDRi48aNmDdvXvCBSEEQoNFoYLVa8fOf/5w3LFEQB1dBBoMBcXFxfZ49U6lUiI+P59AqjIOrEL/fj0uXLuHixYtwu90gIhARXC4XysrKUFlZySs1KoiDq5Br167hD3/4A27dutUnoH6/H83Nzfj973+P+vr6MawwsnBwFdDe3o4333wTFRUVA95V/X4/ysvL8eabb/Kq5Arh4MpERDhx4gROnTo15DanPp8PJ0+exMmTJ7k7TAEcXJncbje++OIL9PT0DHtsd3c3zp49y91hCuDgyuR2u9HS0hLy8d988w08Hs9jrOjJwMFVQDhB5NAqg4Mrk0qlCmv3dL1eH9KG1WxoHFyZJEkKq9srNjaWp30VwMGVSZIkpKSkhNzWmJqayndcBXBwZRJFEQsXLgxpStdgMGDBggW8p68C+AoqYMGCBXj22WeHvOsKgoAlS5bAarWOYmWRi4OrgJiYGOzatQtpaWmDHjNlyhTs2rUL0dHRo1hZ5OLgKiQnJwe7d+9GQkJCv4WdExMT8Zvf/AbZ2dljWGFk4eAqRJIkrFq1Chs3boTZbIYoihBFEdHR0di0aRNWrFjBH8oUxMFVkF6vx8yZMxETEwOVSgVJkhATE4OZM2dCr9ePdXkRhYOroJ6eHlRUVMBms8Hn88Hr9aKjowOVlZUh9TKw0HFwFUJEuHr1Kj788EM4nU74/X74/X44nU4cP34cX3311ViXGFE4uApxu904ceIEbt261adtkYhw8+ZNnDhxgrvCFMTBVYjT6URVVRW8Xm+/v/N6vaiqqkJXV9cYVBaZeEVyNi7xHZeNSxxcNi5xcNm4xMFl4xIHl41LHFw2LnFw2bjEwWXjEgeXjUv/D7Hgj2/5jW/UAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step = 25\n", + "\tJ = 1.0909e-02\n", + "\tbeta = 30.00\n", + "\tgrad_norm = 1.5978e-02\n" + ] + } + ], + "source": [ + "import optax\n", + "\n", + "# hyperparameters\n", + "num_steps = 25\n", + "learning_rate = 0.05\n", + "\n", + "# we will just have the same projection strength for beginnning and end in this case\n", + "beta = 30\n", + "\n", + "# initialize adam optimizer with starting parameters\n", + "params = params0.copy()\n", + "\n", + "optimizer = optax.adam(learning_rate=learning_rate)\n", + "opt_state = optimizer.init(params)\n", + "\n", + "# store history\n", + "Js = []\n", + "params_history = [params0]\n", + "beta_history = []\n", + "\n", + "for i in range(num_steps):\n", + " perc_done = i / (num_steps - 1)\n", + "\n", + " # make a plot of density to check on progress\n", + " density = get_density(params, beta=beta)\n", + " plt.subplots(figsize=(2, 2))\n", + " plt.imshow(np.flipud(1 - density.T), cmap=\"gray\", vmin=0, vmax=1)\n", + " plt.axis(\"off\")\n", + " plt.show()\n", + "\n", + " # compute gradient and current objective function value\n", + " value, gradient = grad_fn(params, beta=beta, verbose=False)\n", + "\n", + " # outputs\n", + " print(f\"step = {i + 1}\")\n", + " print(f\"\\tJ = {value:.4e}\")\n", + " print(f\"\\tbeta = {beta:.2f}\")\n", + " print(f\"\\tgrad_norm = {np.linalg.norm(gradient):.4e}\")\n", + "\n", + " # compute and apply updates to the optimizer based on gradient (-1 sign to maximize obj_fn)\n", + " updates, opt_state = optimizer.update(gradient, opt_state, params)\n", + " params[:] = optax.apply_updates(params, updates)\n", + "\n", + " # keep params between 0 and 1\n", + " np.clip(params, 0.0, 1.0, out=params)\n", + "\n", + " # save history\n", + " Js.append(value)\n", + " params_history.append(params.copy())" + ] + }, + { + "cell_type": "markdown", + "id": "f082a060-208d-4678-8c60-9701db55faad", + "metadata": {}, + "source": [ + "## Visualize Results\n", + "\n", + "Let's visualize the results of our optimization.\n", + "\n", + "### Objective function vs Iteration\n", + "\n", + "First we inspect the objective function value as a function of optimization iteration number. We see that it steadily increases as expected. " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "a3f9509b-2448-4505-a013-c2fd26b36052", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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jaqU1yOikjjQmohey8HBAX/++ScSEhKQmpoKoHAG2fnz5zFjxgxERkbi7t27+Omnn0oMHP6vRo0aIS4uDvv27UNMTAw2bNiAI0eOlHi92NhYREZGIjU1Fbm5uSX2M2rUKBgYGMDHxwfXr19HaGgoZs6cidGjR8u/qlKW7t274/vvv8dff/2Fa9euwcfHp8SZmvIqek9Xr17FX3/9hVmzZuGDDz6QX45g2bJlCAgIwIYNG3Dnzh1cu3YNO3fuxNq1ayvl9YmIpYiI3mD58uV48OABnJycULt2bQCF42XOnDmDO3fuoFOnTmjRogUWL14sP8PxOv3798ecOXMwY8YMuLu74/z58/JZaUUGDx6MXr16oVu3bqhduzb27t1bYj9GRkb43//+h2fPnqF169YYMmQIevTogaCgoMp746/h7++PLl26oF+/fujbty8GDBgAJyenStl3w4YNMWjQIPTp0wc9e/aEq6trsSn3EydOxPbt27Fz5064uLigS5cuCA4OhqOjY6W8PhEBEuG/X5ATERERVUM8U0REREQEliIiIiIiACxFRERERABYioiIiIgAsBQRERERAWApIiIiIgLAUkREREQEgKWIiIiICABLEREREREAliIiIiIiACxFRERERACA/wdQoIpvow2ymwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(Js)\n", + "plt.xlabel(\"iteration number\")\n", + "plt.ylabel(\"objective function\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "c9b97d20-1e6b-4b4c-9f35-fc3c21903e24", + "metadata": {}, + "source": [ + "### Final Device Performance\n", + "\n", + "Now, let's take a closer look at the final, optimized design. We take the best parameters found during the optimization and run the `ComponentModeler` one last time." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "d47f5efe-26ae-42f7-810e-4b8bcea4d4d9", + "metadata": {}, + "outputs": [], + "source": [ + "# we'll sample the modes at a finer frequency resolution for this final evaluation, for smoother plots\n", + "freqs = np.linspace(freq0 - fwidth, freq0 + fwidth, 201)\n", + "\n", + "modeler_start = get_modeler(params_history[0], beta=beta, include_extra_mnts=True).updated_copy(\n", + " freqs=freqs\n", + ")\n", + "modeler_final = get_modeler(params_history[-1], beta=beta, include_extra_mnts=True).updated_copy(\n", + " freqs=freqs\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "764cb9a2-5e81-432e-9d4a-3817933fad08", + "metadata": {}, + "source": [ + "Let's take a look at our final design." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "b96dc1a8-4107-418f-a3a8-23385f4ecedc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'final design')" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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0aMNXo8NtexJSUn1rieKIlwuV1yVvaHy+0PJgQMH8NVXX8FmszW6jXh/75uSlZUVUC4AWLdunVyuzMxMpKenB6zjcDiwefPmiN772oJ5D+Ox3OFqquzhvB/hkiQJkyZNwurVq/H1118jMzMz4vLH+r1v7HwTT2W/4oorsGfPnjo/MG677Tbs3LkTarU6rsvfqsS69W08qq9XzuWXXy698sor8t8rVqyQ9Hq99NZbb0n79u2T7rnnHqlNmzZSYWGhvM5f//pXqUuXLtLXX38tbd26VcrKypKysrIUK2dlZaU0depUKS8vTzp8+LC0detW6c4775T0en1A9714LLskSZLb7ZZGjRolderUSdq5c6d04sQJ+eZyueK+/CUlJdKOHTukzz77TAIgrVixQtqxY4d04sQJeZ1x48ZJjz/+uPz3f//7X0mj0Uj/+te/pJ9//lmaOXNmvd0P27RpI3300UfS7t27peuvvz4q3YUbew/jtdySdLpXxY4dO6QdO3ZIAKS5c+dKO3bskHtyPf7449K4cePk9f3dhR955BHp559/lhYsWFBvd+GmPlNKuO+++ySr1Sp9++23AZ/3qqoqeZ14fu8ff/xxacOGDVJ+fr60e/du6fHHH5cEQZD+7//+L+7LXp+ze+UkWvlbKgaTetQXTLp27SrNnDkzYNkrr7widenSRdLpdNLQoUOlTZs2BdxfXV0t3X///VJKSoqUnJws/fGPfwz40opUdXW19Mc//lHKyMiQdDqd1KFDB2nUqFHSli1b4r7sknSmm219t2+++Sbuy7906dJ6y167rJdeeqk0fvz4gMe9//77Us+ePSWdTif16dNH+uyzzwLuF0VRmj59upSWlibp9XrpiiuukPbv369o2SWp8fcwnsv9zTff1Pu++8s7fvx46dJLL63zmIEDB0o6nU4655xzpKVLl9bZblOfKSU09HmvXZ54fu/vuusuqWvXrpJOp5PatWsnXXHFFXIoifey1+fsYJJo5W+pOLswERERxY1W18aEiIiI4heDCREREcUNBhMiIiKKGwwmREREFDcYTIiIiChuMJgQERFR3GAwISIiorjBYEJERERxg8GEiAAAixcvxpVXXhn151m7di0GDhwIURSj/lxElHgYTIgINTU1mD59OmbOnBn157rqqqug1WqxbNmyqD8XESUeBhMiwgcffACLxYKLL764WZ7vjjvuwMsvv9wsz0VEiYXBhKgFOXnyJNLT0/H000/LyzZu3AidTldn+vbaVqxYgeuuuy5g2YgRIzB58uSAZaNHj8Ydd9wh/92tWzfMnj0bt99+O0wmE7p27YqPP/4YJ0+exPXXXw+TyYT+/ftj69atAdu57rrrsHXrVhw8eDD8F0tELRKDCVEL0q5dOyxZsgSzZs3C1q1bUVFRgXHjxmHSpEm44oorGnzcDz/8gAsvvDCs53zxxRdx8cUXY8eOHRg5ciTGjRuH22+/HX/+85+xfft2nHvuubj99ttRe77QLl26IC0tDd9//31Yz0lELReDCVELc8011+Duu+/Gbbfdhr/+9a8wGo3Izc1tcP2ysjKUl5cjIyMj7Oe799570aNHD8yYMQMOhwNDhgzBmDFj0LNnTzz22GP4+eefUVRUFPC4jIwMHDlyJKznJKKWi8GEqAX617/+Ba/Xi5UrV2LZsmXQ6/UNrltdXQ0AMBgMYT1X//795f+npaUBAPr161dnWXFxccDjkpKSUFVVFdZzElHLxWBC1AIdPHgQx48fhyiKOHz4cKPr2mw2CIKA0tLSJrfr8/nqLNNqtfL/BUFocNnZ3YNPnTqFdu3aNfmcRNS6MJgQtTButxt//vOfcfPNN+Opp57CX/7ylzq1FbXpdDr07t0b+/btq3Pf2ZdfDh06pEgZa2pqcPDgQVxwwQWKbI+IWg4GE6IW5p///CfKy8vx8ssv47HHHkPPnj1x1113NfqYnJwc/PDDD3WWf/TRR1i1ahUOHjyIOXPmYN++fThy5AiOHTsWURk3bdoEvV6PrKysiLZDRC0PgwlRC/Ltt99i3rx5ePfdd2GxWKBSqfDuu+/i+++/x8KFCxt83IQJE/D555+jvLw8YPnIkSPx3HPPoXfv3vjuu+/w6quvYsuWLXj33XcjKud//vMf3HbbbUhOTo5oO0TU8ghS7T58RNRqjRkzBoMGDcLUqVMBnB7HZODAgZg3b56iz2O323Heeedh69atyMzMVHTbRJT4WGNCRACA559/HiaTKerPc/jwYbz66qsMJURUL9aYEFG9olVjQkTUGAYTIiIiihu8lENERERxg8GEiIiI4gaDCREREcUNBhMiIiKKGwwmREREFDcYTIiIiChuMJgQERFR3GAwISIiorjBYEJERERx4/8BR/WuelrJwecAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ax = modeler_final.simulation.plot_eps(z=0, monitor_alpha=0, freq=freq0)\n", + "ax.set_title(\"final design\")" + ] + }, + { + "cell_type": "markdown", + "id": "df8e1f7c-80c2-49b5-9be1-4d1fccf80b28", + "metadata": {}, + "source": [ + "The field plots below show the device operating at the central design frequency. We can clearly see the crossover behavior: light entering the top-left port is efficiently routed to the bottom-right port, and light from the bottom-left is routed to the top-right." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "52cb5194-a71b-4cf2-9b74-c96cf20f3095", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e86893bc7541431095df1e4139f7d27b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
09:55:52 EDT Started working on Batch containing 1 tasks.                       \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:55:52 EDT\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m1\u001b[0m tasks. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:55:53 EDT Maximum FlexCredit cost: 0.134 for the whole batch.                \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:55:53 EDT\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.134\u001b[0m for the whole batch. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Use 'Batch.real_cost()' to get the billed FlexCredit cost after the\n",
+       "             Batch has completed.                                               \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed FlexCredit cost after the\n", + "\u001b[2;36m \u001b[0mBatch has completed. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7a6428f92e704258a3480bce80e04380", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:56:40 EDT Batch complete.                                                    \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:56:40 EDT\u001b[0m\u001b[2;36m \u001b[0mBatch complete. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "694fc856d7644d15978a21413c7cc8a2",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "Output()"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "image/png": "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nprz8TnssMOYNm0ad9xxR17Y/2233YYQgk996lODXoNjjjmGYDBY8PkA+gnzBx54IHcuI80LL7zAYYcdlhsqNhgOJMywl2FE+f73v89f//pXFixYkAsD37p1K/fffz9PP/10Xih2X2pqarjyyiv5zne+wymnnMLHPvYx3nrrLW699VbmzJnDOeecA8Djjz/OJZdcwumnn84hhxyC67r89re/xbIsPvnJTwJw7bXX8ve//53FixczadIkWlpauPXWWxk/fvygIc9D2e/f/u3f+P3vf88Xv/hFnnjiCU444QQ8z+PNN9/k97//PY8++iizZ8/m4IMP5pvf/Cbf/e53ed/73scnPvEJQqEQzz33HA0NDSxduhTwX4i33XYb1113HQcffDC1tbU55+neBAIBfvjDH/LZz36WBQsWcNZZZ+VC3SdPnsxXv/rVXf3Z8jj++OOprKzkvPPO48tf/jJCCH77298WfAEfc8wx3HfffVx22WXMmTOHkpISTj311IL1fvnLX2bbtm1cfvnl3HvvvXnbZs2axaxZs4Bd8/kZP348l156KTfccAOO4zBnzhwefPBB/vGPf3D33XfnDQddeeWV3HXXXaxduzaXl+hTn/oUxx13HJ/97GdZtWoVY8aM4dZbb8XzPL7zne/kHeuGG27gYx/7GB/60Ic488wzef311/npT3/K5z//+X6h9n0Jh8N86EMf4m9/+xvXXnttv+3Lli3j7LPP5v3vfz9vv/02d9xxB0VFRfz1r39lzpw5fPSjH93pa1MIx3FyebYMhgOSvRJjZtivWb9+vT733HN1TU2NDoVC+qCDDtJf+tKXdCqV0lr3hLoXCofX2g9tnzZtmg4EArqurk5fdNFFur29Pbf9vffe05/73Of0lClTdDgc1lVVVfqkk07Sf/vb33JlHnvsMX3aaafphoYGHQwGdUNDgz7rrLP6TVXQl6Hul06n9Q9/+EN92GGH6VAopCsrK/Uxxxyjv/Od7+hoNJpX9le/+pU+6qijcuUWLFigly9fntve1NSkFy9erEtLSzWQC3vvG+qe5b777svVV1VVpc8+++x+UyWcd955uri4uN/5ZcOkd8QzzzyjjzvuOB2JRHRDQ4O+/PLL9aOPPtqvPd3d3fr//b//pysqKjQwaNj7ggULBgxb7x3Kvat4nqe///3v60mTJulgMKgPO+ww/T//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Q1VVYxHyjuzZswfV1dW49tprjX2apuGdd97Bk08+ib/85S/w+/2oq6uLq/2pqqpCXl4eACAvLw+7du2KO29kNFikTF9hnx8iy+vqL/jooFYZ06E4tIX72uiB8OaDrnuh615oekvcJmULcnIy4LAjfFzs9QWklFCERFZWGpxONXQerSVuk7ovvIWuB6mF+/pE+yNF/rQdkEtEsSKruie7dafpbPr06Thw4AD2799vbNdddx3uuece4992ux1bt241jjly5AhOnjyJ4uJiAEBxcTEOHDiA6upqo0xFRQUyMzMxfvx4016fnmDND1G/0N4Cqu1pm0S0ue/JxI9kDc1BVlYGJLR28y6J0DfIMWMKcOjQIei61qpEb64hxNoeGlzMWtW9OzIyMnD11VfH7UtLS0N2draxf8GCBSgvL8fQoUORmZmJxYsXo7i4GNOmTQMAzJgxA+PHj8ecOXPw2GOPwePx4OGHH0ZZWVnCpraLickPUb+S6BZo5oryArm5wxOcMzGHw4HU1FQ0NjYmGUN712OiQyRhzeUtVq9eDUVRMHv2bPh8PpSWluKpp54yHldVFa+++ioWLlyI4uJipKWlYd68efj+979vciTdx+SHqN8z45YWSj5sNhtcrpTwQqgIj/JqVcqYUDHUaj5sWB4aG48mGQuTHCKre/vtt+N+drlcWLduHdatW9fuMaNHj8brr7/ey5F1H5MfokErmsQICEAIpKa6oappADRIKSERhJBaNDURAgIqIFSI8ND4zMwcCHEiZjh8bJMbkxqiZJk11J0fxygmP0SDTkzSI5Tw3zYoih052aNgV9MAIDQrs94cul9KLXyUAggViuKEqjggoEB1pUJV06DrAUAGEb9UReRavOsS9ZSZQ90phMkP0aDRNulRFEd4gkMHVNWFYUMvgcuRCUgdQd0HbyA0JxAQunEqEFAUO2xqKuyKC6rigJSAXU2DJvzQZSA0saHuB5MgInNERmsli5++KCY/RANebGfiUOIjhA2KsEMIO1TVAbuSAqeajqGpI+FQU6HLIHyiAQGtCbruC9foINzsZYddccFpc8MhUgAAKfah8AcbEZReaJofQhHhBVHDQ+yN765Mgoio7zH5IRrQRMy/1FDyImxQFCcUYYeqOOBQ02BX0uB2DMdQZSTsmg0BEUCjakOLUoegaIFEZO0fBarqhF1NR6oyBKky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",
+      "text/plain": [
+       "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "simulations = modeler_final.sim_dict\n", + "bd = web.run_async(simulations)\n", + "for task_name, sim_data in bd.items():\n", + " sim_data.plot_field(field_monitor_name=\"field\", field_name=\"E\", val=\"abs^2\")" + ] + }, + { + "cell_type": "markdown", + "id": "f352300f-c5aa-48a1-97b0-f15735377a41", + "metadata": {}, + "source": [ + "Next, let's look at the S-parameters over a range of frequencies to see how our final device behaves." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "cf0c4ac8-bc8c-421d-abef-89ae4cf59c4e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
09:56:46 EDT Created task 'start' with resource_id                              \n",
+       "             'sid-df34a742-6a56-491f-9f4c-2632b2c82cbc' and task_type 'RF'.     \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:56:46 EDT\u001b[0m\u001b[2;36m \u001b[0mCreated task \u001b[32m'start'\u001b[0m with resource_id \n", + "\u001b[2;36m \u001b[0m\u001b[32m'sid-df34a742-6a56-491f-9f4c-2632b2c82cbc'\u001b[0m and task_type \u001b[32m'RF'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             View task using web UI at                                          \n",
+       "             'https://tidy3d.simulation.cloud/workbench?taskId=sid-df34a742-6a56\n",
+       "             -491f-9f4c-2632b2c82cbc'.                                          \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mView task using web UI at \n", + "\u001b[2;36m \u001b[0m\u001b]8;id=13954;https://tidy3d.simulation.cloud/workbench?taskId=sid-df34a742-6a56-491f-9f4c-2632b2c82cbc\u001b\\\u001b[32m'https://tidy3d.simulation.cloud/workbench?\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=380254;https://tidy3d.simulation.cloud/workbench?taskId=sid-df34a742-6a56-491f-9f4c-2632b2c82cbc\u001b\\\u001b[32mtaskId\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=13954;https://tidy3d.simulation.cloud/workbench?taskId=sid-df34a742-6a56-491f-9f4c-2632b2c82cbc\u001b\\\u001b[32m=\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=238595;https://tidy3d.simulation.cloud/workbench?taskId=sid-df34a742-6a56-491f-9f4c-2632b2c82cbc\u001b\\\u001b[32msid\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=13954;https://tidy3d.simulation.cloud/workbench?taskId=sid-df34a742-6a56-491f-9f4c-2632b2c82cbc\u001b\\\u001b[32m-df34a742-6a56\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m\u001b]8;id=13954;https://tidy3d.simulation.cloud/workbench?taskId=sid-df34a742-6a56-491f-9f4c-2632b2c82cbc\u001b\\\u001b[32m-491f-9f4c-2632b2c82cbc'\u001b[0m\u001b]8;;\u001b\\. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Task folder: 'default'.                                            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mTask folder: \u001b]8;id=820630;https://tidy3d.simulation.cloud/folders/41078c53-acd3-4f23-98d5-8423bc5401c7\u001b\\\u001b[32m'default'\u001b[0m\u001b]8;;\u001b\\. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6135e6dcad964c53ad19a87c7c39ebb4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
09:56:49 EDT Child simulation subtasks are being uploaded to                    \n",
+       "             - port_x_-@0: 'rf-b36e4261-6012-4b66-805f-14e162cb4612'            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:56:49 EDT\u001b[0m\u001b[2;36m \u001b[0mChild simulation subtasks are being uploaded to \n", + "\u001b[2;36m \u001b[0m- port_x_-@\u001b[1;36m0\u001b[0m: \u001b[32m'rf-b36e4261-6012-4b66-805f-14e162cb4612'\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:56:50 EDT Validating component modeler and subtask simulations...            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:56:50 EDT\u001b[0m\u001b[2;36m \u001b[0mValidating component modeler and subtask simulations\u001b[33m...\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Maximum FlexCredit cost: 0.134. Minimum cost depends on task       \n",
+       "             execution details. Use 'web.real_cost(task_id)' to get the billed  \n",
+       "             FlexCredit cost after a simulation run.                            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.134\u001b[0m. Minimum cost depends on task \n", + "\u001b[2;36m \u001b[0mexecution details. Use \u001b[32m'web.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed \n", + "\u001b[2;36m \u001b[0mFlexCredit cost after a simulation run. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:56:51 EDT Component modeler batch validation has been successful.            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:56:51 EDT\u001b[0m\u001b[2;36m \u001b[0mComponent modeler batch validation has been successful. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Subtasks status - start                                            \n",
+       "             Group ID: 'pa-80b32ccd-ee55-41e2-9409-3eedb5252ded'                \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mSubtasks status - start \n", + "\u001b[2;36m \u001b[0mGroup ID: \u001b[32m'pa-80b32ccd-ee55-41e2-9409-3eedb5252ded'\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b7eb1a035d274d5190214ba763455690", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:57:47 EDT Modeler has finished running successfully.                         \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:57:47 EDT\u001b[0m\u001b[2;36m \u001b[0mModeler has finished running successfully. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:57:48 EDT Billed FlexCredit cost: 0.086. Minimum cost depends on task        \n",
+       "             execution details. Use 'web.real_cost(task_id)' to get the billed  \n",
+       "             FlexCredit cost after a simulation run.                            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:57:48 EDT\u001b[0m\u001b[2;36m \u001b[0mBilled FlexCredit cost: \u001b[1;36m0.086\u001b[0m. Minimum cost depends on task \n", + "\u001b[2;36m \u001b[0mexecution details. Use \u001b[32m'web.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed \n", + "\u001b[2;36m \u001b[0mFlexCredit cost after a simulation run. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "c717dd11530149728cfb891f1d763cd9",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "Output()"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
09:57:50 EDT loading component modeler data from ./cm_data.hdf5                 \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:57:50 EDT\u001b[0m\u001b[2;36m \u001b[0mloading component modeler data from .\u001b[35m/\u001b[0m\u001b[95mcm_data.hdf5\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Created task 'final' with resource_id                              \n",
+       "             'sid-a5113da9-103b-40f3-bf9a-8d7fb8599e65' and task_type 'RF'.     \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mCreated task \u001b[32m'final'\u001b[0m with resource_id \n", + "\u001b[2;36m \u001b[0m\u001b[32m'sid-a5113da9-103b-40f3-bf9a-8d7fb8599e65'\u001b[0m and task_type \u001b[32m'RF'\u001b[0m. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             View task using web UI at                                          \n",
+       "             'https://tidy3d.simulation.cloud/workbench?taskId=sid-a5113da9-103b\n",
+       "             -40f3-bf9a-8d7fb8599e65'.                                          \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mView task using web UI at \n", + "\u001b[2;36m \u001b[0m\u001b]8;id=923871;https://tidy3d.simulation.cloud/workbench?taskId=sid-a5113da9-103b-40f3-bf9a-8d7fb8599e65\u001b\\\u001b[32m'https://tidy3d.simulation.cloud/workbench?\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=426511;https://tidy3d.simulation.cloud/workbench?taskId=sid-a5113da9-103b-40f3-bf9a-8d7fb8599e65\u001b\\\u001b[32mtaskId\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=923871;https://tidy3d.simulation.cloud/workbench?taskId=sid-a5113da9-103b-40f3-bf9a-8d7fb8599e65\u001b\\\u001b[32m=\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=826247;https://tidy3d.simulation.cloud/workbench?taskId=sid-a5113da9-103b-40f3-bf9a-8d7fb8599e65\u001b\\\u001b[32msid\u001b[0m\u001b]8;;\u001b\\\u001b]8;id=923871;https://tidy3d.simulation.cloud/workbench?taskId=sid-a5113da9-103b-40f3-bf9a-8d7fb8599e65\u001b\\\u001b[32m-a5113da9-103b\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m\u001b]8;id=923871;https://tidy3d.simulation.cloud/workbench?taskId=sid-a5113da9-103b-40f3-bf9a-8d7fb8599e65\u001b\\\u001b[32m-40f3-bf9a-8d7fb8599e65'\u001b[0m\u001b]8;;\u001b\\. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Task folder: 'default'.                                            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mTask folder: \u001b]8;id=306032;https://tidy3d.simulation.cloud/folders/41078c53-acd3-4f23-98d5-8423bc5401c7\u001b\\\u001b[32m'default'\u001b[0m\u001b]8;;\u001b\\. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "19e53b08c54e48e9babe419aa35b69a4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
09:57:53 EDT Child simulation subtasks are being uploaded to                    \n",
+       "             - port_x_-@0: 'rf-63060054-b8f3-4678-9866-a0564cddebe8'            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:57:53 EDT\u001b[0m\u001b[2;36m \u001b[0mChild simulation subtasks are being uploaded to \n", + "\u001b[2;36m \u001b[0m- port_x_-@\u001b[1;36m0\u001b[0m: \u001b[32m'rf-63060054-b8f3-4678-9866-a0564cddebe8'\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Validating component modeler and subtask simulations...            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mValidating component modeler and subtask simulations\u001b[33m...\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:57:54 EDT Maximum FlexCredit cost: 0.134. Minimum cost depends on task       \n",
+       "             execution details. Use 'web.real_cost(task_id)' to get the billed  \n",
+       "             FlexCredit cost after a simulation run.                            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:57:54 EDT\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.134\u001b[0m. Minimum cost depends on task \n", + "\u001b[2;36m \u001b[0mexecution details. Use \u001b[32m'web.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed \n", + "\u001b[2;36m \u001b[0mFlexCredit cost after a simulation run. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Component modeler batch validation has been successful.            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mComponent modeler batch validation has been successful. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:57:55 EDT Subtasks status - final                                            \n",
+       "             Group ID: 'pa-6dfb45bf-f1ad-40b4-9986-85c9d54914d4'                \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:57:55 EDT\u001b[0m\u001b[2;36m \u001b[0mSubtasks status - final \n", + "\u001b[2;36m \u001b[0mGroup ID: \u001b[32m'pa-6dfb45bf-f1ad-40b4-9986-85c9d54914d4'\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8c363341a3794017a9246a70d0ebab24", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
09:59:53 EDT Modeler has finished running successfully.                         \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:59:53 EDT\u001b[0m\u001b[2;36m \u001b[0mModeler has finished running successfully. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
             Billed FlexCredit cost: 0.096. Minimum cost depends on task        \n",
+       "             execution details. Use 'web.real_cost(task_id)' to get the billed  \n",
+       "             FlexCredit cost after a simulation run.                            \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0mBilled FlexCredit cost: \u001b[1;36m0.096\u001b[0m. Minimum cost depends on task \n", + "\u001b[2;36m \u001b[0mexecution details. Use \u001b[32m'web.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32mtask_id\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed \n", + "\u001b[2;36m \u001b[0mFlexCredit cost after a simulation run. \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "application/vnd.jupyter.widget-view+json": {
+       "model_id": "63c91301113643d2bbd69c679f325f39",
+       "version_major": 2,
+       "version_minor": 0
+      },
+      "text/plain": [
+       "Output()"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
09:59:56 EDT loading component modeler data from ./cm_data.hdf5                 \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m09:59:56 EDT\u001b[0m\u001b[2;36m \u001b[0mloading component modeler data from .\u001b[35m/\u001b[0m\u001b[95mcm_data.hdf5\u001b[0m \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "smatrix_start = web.run(modeler_start, task_name=\"start\").smatrix()\n", + "smatrix_final = web.run(modeler_final, task_name=\"final\").smatrix()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "9db3a43a-b877-473b-a405-90e785ee680c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAGGCAYAAACNL1mYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADvrklEQVR4nOzdd3xUdbr48c+ZPumdQAgESAiEJkWaitG1gSi6u7IWVHYV1sKKsrsXvOtdy66s3P0p9rKiCIrtui5ixwKiVBGpgRBqIARIQvqUzMw5vz8mMySQkDbJpDzv12sgM6c9J5PkzHO+3+/zVTRN0xBCCCGEEEIIIUSr0AU7ACGEEEIIIYQQojOTxFsIIYQQQgghhGhFkngLIYQQQgghhBCtSBJvIYQQQgghhBCiFUniLYQQQgghhBBCtCJJvIUQQgghhBBCiFYkibcQQgghhBBCCNGKJPEWQgghhBBCCCFakSTeQgghhBBCCCFEK5LEW4gu5pFHHkFRFAoLCwO2zzfffJMBAwZgNBqJiooK2H6FEEII0TI5OTlcccUVREZGoigKy5cvD3ZIQnRJhmAHIITo2Pbs2cP06dO56qqrmDdvHiEhIcEOSQghhBDVbr/9dg4ePMjjjz9OVFQUo0aN4u233+bkyZPcf//9wQ5PiC5DEm8hRIusXr0aVVV55plnSE1NDXY4QgghhKhmt9tZv349f/nLX5g1a5b/9bfffpudO3dK4i1EG5Ku5kKIFjl58iRAQLuY22y2gO1LCCGE6KoKCgqAwF6j66OqKg6Ho9WPI0RHJYm3EF1UYWEhU6dOJSIigtjYWGbPnn3WBfOtt95i5MiRWK1WYmJiuPHGGzly5Ih/eUpKCg8//DAA8fHxKIrCI4884l/+4osvMmjQIMxmMz169ODee++lpKSk1jEyMzMZPHgwP/30ExMmTCAkJIT//u//BsDpdPLwww+TmpqK2WwmOTmZ//qv/8LpdLbON0UIIYToAA4fPsw999xDeno6VquV2NhYbrjhBg4dOuRf55FHHqF3794A/PnPf0ZRFFJSUsjMzOTTTz/l8OHDKIrif92nsddeRVGYNWsWy5Yt81/rv/jii7Y4fSE6JOlqLkQXNXXqVFJSUvjHP/7Bhg0bePbZZykuLmbp0qUAPP744/zP//wPU6dO5c4776SgoIDnnnuOCRMm8PPPPxMVFcXTTz/N0qVL+c9//sNLL71EWFgYQ4cOBbwX/EcffZTLLruMu+++m+zsbF566SV+/PFH1q5di9Fo9MdSVFTExIkTufHGG5k2bRrdunVDVVWuvfZafvjhB2bOnMnAgQPZsWMHCxcuZO/evVIcRgghRJf1448/sm7dOm688UZ69uzJoUOHeOmll8jMzCQrK4uQkBB++ctfEhUVxQMPPMBNN93EpEmTCAsLIzQ0lNLSUo4ePcrChQsBCAsLA2jytffbb7/l/fffZ9asWcTFxdVK4IUQZ9CEEF3Kww8/rAHatddeW+v1e+65RwO0bdu2aYcOHdL0er32+OOP11pnx44dmsFgqPW6b38FBQX+106ePKmZTCbtiiuu0Dwej//1559/XgO0119/3f/axRdfrAHayy+/XOtYb775pqbT6bTvv/++1usvv/yyBmhr165t/jdBCCGE6MBsNttZr61fv14DtKVLl/pfO3jwoAZo//znP2ute/XVV2u9e/c+ax9NufYCmk6n03bt2tXCsxGia5Cu5kJ0Uffee2+t53/4wx8A+Oyzz/jwww9RVZWpU6dSWFjofyQmJpKWlsaqVavOue+vv/6aqqoq7r//fnS6039mZsyYQUREBJ9++mmt9c1mM7/97W9rvfZ///d/DBw4kAEDBtSK4dJLLwVoMAYhhBCis7Jarf6vXS4XRUVFpKamEhUVxZYtW5q936Zeey+++GIyMjKafTwhuhLpai5EF5WWllbreb9+/dDpdBw6dAidToemaWet41Ozm3hdDh8+DEB6enqt100mE3379vUv90lKSsJkMtV6LScnh927dxMfH1/nMXxF3YQQQoiuxm63849//IPFixeTl5eHpmn+ZaWlpc3eb1OvvX369Gn2sYToaiTxFkIA3iIpPqqqoigKn3/+OXq9/qx1fWPBAqXmnfuaMQwZMoSnnnqqzm2Sk5MDGoMQQgjRUfzhD39g8eLF3H///YwbN47IyEgUReHGG29EVdVm77ep1966rt9CiLpJ4i1EF5WTk1PrTvW+fftQVZWUlBT0ej2aptGnTx/69+/f5H37qqhmZ2fTt29f/+tVVVUcPHiQyy67rMF99OvXj23btvGLX/yi1k0BIYQQoqv74IMPuP3223nyySf9rzkcjrNmDqlPfddVufYK0XpkjLcQXdQLL7xQ6/lzzz0HwMSJE/nlL3+JXq/n0UcfrdV9DUDTNIqKis6578suuwyTycSzzz5ba/vXXnuN0tJSrr766gbjmzp1Knl5ebz66qtnLbPb7VRWVja4DyGEEKIz8t0gr+m5557D4/E0antfZfMzybVXiNYjLd5CdFEHDx7k2muv5aqrrmL9+vW89dZb3HzzzQwbNgyAv//97zz44IMcOnSI6667jvDwcA4ePMh//vMfZs6cyZ/+9Kd69x0fH8+DDz7Io48+ylVXXcW1115LdnY2L774Iueffz7Tpk1rML5bb72V999/n7vuuotVq1ZxwQUX4PF42LNnD++//z5ffvklo0aNCtj3QwghhOgoJk+ezJtvvklkZCQZGRmsX7+er7/+mtjY2EZtP3LkSN577z3mzJnD+eefT1hYGNdcc41ce4VoRZJ4C9FFvffee/z1r39l3rx5GAwGZs2axT//+U//8nnz5tG/f38WLlzIo48+CnjHdl1xxRVce+21De7/kUceIT4+nueff54HHniAmJgYZs6cyfz58xsszgag0+lYvnw5Cxcu9M8VHhISQt++fZk9e3azusALIYQQncEzzzyDXq9n2bJlOBwOLrjgAr7++muuvPLKRm1/zz33sHXrVhYvXszChQvp3bs311xzjVx7hWhFinZmPxUhhBBCCCGEEEIEjIzxFkIIIYQQQgghWpEk3kIIIYQQQgghRCuSxFsIIYQQQgghhGhFkngLIYQQQgghhBCtSBJvIYQQQgghhBCiFUniLYQQQgghhBBCtCKZx/sMqqpy7NgxwsPDURQl2OEIIYTogjRNo7y8nB49eqDTyT3yusj1WgghRLA15XotifcZjh07RnJycrDDEEIIIThy5Ag9e/YMdhjtklyvhRBCtBeNuV5L4n2G8PBwABYtWsR1112H0WgMckRty+VysXLlSq644go59y5Ezl3OXc69fSkrKyM5Odl/TRJn831vDh48yPr169vte9ma2vvPcWvqqufeVc8b5Nzl3NvnuTflei2J9xl83dVCQkKIiIhol29wa3K5XHLucu7BDqdNybnLubfnc5cu1PXzfW/Cw8M7xHvZGjrKz3Fr6Krn3lXPG+Tc5dzb97k35notA8eEEEIIIYQQQohWJIm3EEIIIYQQQgjRiiTxFkIIIYQQQgghWpGM8RZCiA7O4/HgcrmavJ3L5cJgMOBwOPB4PK0QWfsV7HM3Go3o9fo2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mMZOQBs3E61XWiyaLIQQQkREvI3ZndU4491yO7F6T0OqeUSLqzVPNW/8XoULvKtrAUhNlfXdkaJpGtgjd01bo9ttKK+GspnRQs7X2lr+xj28GwPvlStXNjnmm2++Yfjw4YwePRqv18vKlSuDqeZlZWVs27aN0aNHt9kuq9UaPFd7jR07lilTpvA///M//P3vf29SaO1Y+vTpQ58+fQB/4G0ymejfv7/szBAnPC8/gXenDhjYfvYDtL75sW5STCXcRw7XX389WVlZTJs2jZdeeqnVP1DRZmzbjneXhqqxAzqYXZiyarGMM2H7f8Nx3HcRSW88iePll7E99AyWa+9AnzlPgm4hhBA9RncZszur7TXeDTPelkju490YVOmajqZpIVXNW6aaO50NbeiCQFFEVmCrOF8r28Q15zUathILeY3s27ePW265hW3btvHaa6/x1FNPcdNNNzF8+HDOPfdcrrnmGlasWMG6deu47LLL6N+/P+eee26b5xk0aBDr169n27ZtlJaW4mnnbjhXX301Dz30EEopfvSjH7XrMSK+GRtX4X57MwCWGemYzpDrHjcz3u3xu9/9jtNOO42kpCQ+/vhjfv7zn1NTU8ONN97Y6mNcLhcuV+Mn1VVVVcH/t/ePSVgzT8Ts/hyGD0EbPxkGn4DW8MdQAcHPCrvZ9l2BPh9X3+OU9F363tNI37tv37truyKpo2N2a+N1LK9lIMipdzlbnL/OVQeA1WSJWNtCk351TfM/b0iqefPz1Nb513dbreaEe011xXX3eDwopTAMA6OdAXCkBLIbfIavybkDH04F2hVsa8Me3ibdFLz98ssvp66ujmnTpmEymbjxxhu5+uqrMQyDF198kZtvvpkf/OAHuN1uZs2axbvvvovJZGrS3+b9vuqqq1i6dClTpkyhpqaGTz/9tM3txAIuuugibr75Zi6++GKsVmunfp6t9b0thuEvOufxeJqsC4833X3Mak7VVeN96M9gJKFn1sPNf+p027t73zvSLk3F8OPlO+64g4cffrjNY7Zs2cLIkSOD3wf2FQxXqKW5u+++m0WLFlFUVNTqMffee28wJS7U3//+d5KSko55DiGEECLS6urquOSSS6isrCQ1NTXWzQFiP2Z3x/H624ObeHHdOxRkDuSWaZc0ue+p795g45FdXDH2bE7KO74CVQGL17/L1wc2AP6g/5m5v8IwFIfL/G/8crIsTdbkVtV4qa036OXQSU1OqLmWLmE2m8nJySE/Px+rtWvXyB+pK6fO46S3PZVUW69jHl9eX0WVu5YUay8yHKn84Ac/YOzYsTz44INd0Npj27dvHxMnTuSzzz5rUiU92txuN0VFRRQXF+P1ervsvD3dyR/8E/uhZDC7+PacqVSlx++SomPpyHgd07/Ct956KwsWLGjzmCFDhnT6+adPn87999+Py+UK7h3Y3K9//esme55WVVWRn+9ff3DmmWcG9zLsKTweD0uWLJG+S997DOm79L079j00+6q7iPWY3dp4feqpp7Jy5cqYXEttXTIvrnuHlNQU5s+f3+S+xYUfwhGYPnkq8ydHZuucz8rXBwNvi9nCmWeeyUcffRy8/6yzzmpSgG35l6vZXriPkSMLmDCuICJt6C664nfY6XRSVFREcnIydnvklgy0R5W3jjqPE6vN2uTNvFKK6upqUlJSmn7I4q0DNyQ5HKSmpmI2m7FarTH/4M7j8VBWVsbDDz/MjBkzmDVrVqefq7W+t8XpdOJwOJg9e3aXX8NI6u5jVijjpYV4DyUDBpb/PI2T515wXM/X3fvekfE6poF3dnY22dnZUXv+tWvX0rt371aDbgCbzdbq/RaLpVte4K4gfZe+9zTSd+l7d9Id2xTrMbu18Trws4rFtexldwDg9nlanNvZUHAt2ZEUsXZZzI1v20y67n/ekPjDZDJjNjem07o9/hm+XkmObvmaioRoXnefz4emaei63qKifLQF1vMbSjU5dyDFOtCuYFsbqppbTObg7c2PiYYHHniABx54IOx9s2bN4vbbb+fUU09lxIgR/OMf/2j6wdDy5Zx11lmtPnfzbcJa63tbdN1fC6G7/q3vqO7eD9/XS3B/sAswYTkpE+sPLjnmY9qru/a9I22Km7yjffv2cfToUfbt24fP52Pt2rUADBs2jOTkZP79739z+PBhZsyYgd1uZ8mSJTzwwAPBLQiEEEII0TV6yphts/g/CHB20T7eocFGIDALnffzByaNgbfT6W+XTYqrxZ3AGm/DaF8FcW+wqrn/rf2yZcui0q7mrrvuOi688MKw9zkcDvr3799q0cQpU6YE/zaI+KcOF+Fa+DooO6Z+biy33BvrJnU7cRN433333bz88svB7ydOnAjA0qVLmTNnDhaLhWeeeYZf/OIXKKUYNmwYjz32GNdcc02smiyEEEL0SD1lzLa3tY+3J/KBt0kzhfy/5Yxf8wAnUIzObpM9vOONqcNVzX1NHtdVMjIyyMjI6NRjHQ6HbAuWIJTHg+uue1EuO5q9Htv9f0Azx02Y2WXi5ieyePHiNvcDnTdvHvPmzeu6BgkhhBAirJ4yZjfu4x1uxrthH29LdPbx1sKk2hrN9vIOzHhL4B1/9GBV8/YF3oFUc3MXB95CAHge/A2+EjtoXuy/vBItKzfWTeqWEm4fbyGEEEKIrtC4j7erxX2BwDuiM96hqeZa4zreQKGp0L28lVI4XZJqHgmx2AAocH196tip5kqpYIDe1WvRu7sYbt7UY3j/+jSe7/3bJ9rOH4M+5ZQYt6j7kt9OIYQQQohOaGuNdzRSzfWQ2czQIFxvCLxVyIy32+0JBh0y4905gaJJdXV1XX7uYHG1dsx4G0oBquFx8tY+VODadceiXInA9+WHuN7cCIBloh3zFTfGuEXdW9ykmgshhBBCdCeha7yVUsGZZ6/Pi9vr31vbbo1OqnloEK7pGhiBAMwvMNttNpuaVDoX7WcymUhPT6ekpASApKSkdm9jdbw8Hg/Ka+BRHpxOZ/B2wzBwu904nc7g7LbH60V5/QG62+XusjZ2tXB9b41Sirq6OkpKSkhPT8dkkt+BSDP27cD1+P/5i6nluLDc+Xism9TtSeAthBBCCNEJgTXehjLwGj4sDRWlA7PdEOniaqFVzUPWewdSzUNmR2V9d2Tk5OQABIPvruLxeSmpOIJJ1zHVN11CUF9fj8PhCF73wLG6pmNzJ+6Md7i+H0t6enrwGorIUbXVuO56EOV2oPWqx/bgQ2iSVXBMEngLIYQQQnRCYI03gMvjCgbega3EAOzmyAW+JlPIPt5a6Ox3Q6p5yIx3oKK5rO8+PpqmkZubS58+ffB4PF123gPlJfzmr3dhs9j49K5Xgrd7PB6++OILZs+eHUyf3nygkN/89Qn6pmXy5i1/7rI2drVwfW+LxWKRme4oUIaB6ze/xKh0gMmN/bc3oGX0iXWz4oIE3kIIIYQQnWALCaqdHjfJ9l5A04rmkSx21TTVvOWMd+gab5nxjiyTydSlQVxqr17srzwMgM1mC15jk8mE1+vFbrcHg89aTz37Kw+T3CsZuz1yGRbdTbi+i67n+f0d+PaYAAP7NWegj5oU6ybFjcTNRxFCCCGEiCJd14Oz3KFbigVmvB0RXN8NzWa5Q/6v0RB4hxwbWONtlxnvuBS6RCF06UI4VfU1AKTYk6LaJiE8z/0Rz/e1AFjPGY7prIti3KL4IoG3EEIIIUQnBbcUCwmOolHRHBorXTf/f3DGO0yqucx4x6fQ/d9Dly6EU13vD4RSHMlRbZPo2bxvv4z7/d0AWKalYLnqlhi3KP5I4C2EEEII0UmBLcVc3sb1v6Gp5pEUml7eZNuohjpToYF3MNXcLoF3PDKbzFjN/nTqwOupNY2Bd6+ot0v0TL6vPsL18leAjnmYwvLrB2LdpLgkgbcQQgghRCcFiqe5vP5AV1UcQR3eB0RjxrvtquYqzHZiNpukmserwOvnmIG3syHwtkvgLSLP2LIa12P/B4YZUx8n1gceQ5P94jtFiqsJIYQQQnRSaKq57+slOB95g3FeG9stBfy7V01Ez2XSQtPLQ9d4+4XE3Tidkmoe7xwWO5VUtz/wllRzEWHG7i0473ka5XGgJ9dje/ghNFviFvCLNvm4QgghhBCikwKBd/L6lTj/9L/g9c8wmzzJnLczC9/KTyN2rtZSzRv3NA5d4y2p5vEuUJzv2KnmgeJqMuMtIkcd3IPzN39CuRxojnpsD90p24YdJwm8hRBCCCE6yWa2gVIM/OdX4LOi965n2X+Op6JXMSgzrkdfRVWURuRcTVLNNUk1T3QdTTVPlTXeIkJU6SGcv7oPVedAszmx3/8L9PyhsW5W3JPAWwghhBCik+wWK1cYZrTqZNB82P/wWw6lpXNuygEMay3K5cC76OmInOvYVc0bjw3OeEuqedxqDLzbt51Yssx4iwhQVeU4b7sTozoJLC7sd/8MffjYWDcrIUjgLYQQQgjRSTaLlRtq+wJgHmFB6z+YereT/RqsG+oDwPNVEcpZf9znCp3x1tuoaq6UwuPxAmCxSDmfeBUMvD1tz3jX1AdmvGWNtzg+qqoc5y9uwyh3gMmN/fbL0E+YFutmJQwJvIUQQgghOmlcfT2ZtbkAWC6/DAB3w9ZiH4wcgWZxodx2vK8/d9zn0rVW1njTNNXc5zOC95nNjTPjIr60d413lVO2ExPHT1WU4rzpVoxSO+ge7Dedi2nqnFg3K6FI4C2EEEII0Ulzi6sB8KRXoY+dDoDX559tNmwOzNNz/Ld9uv64zxWaXq6HWeMd4PX6gv+XwDt+BWa8644ReAdmvCXVXHSWOlqC8+ZfYRx1gMmD/eZzMJ3yg1g3K+FI4C2EEEII0UlDSv1vpYrzHcHbPA2Bt8VkxnLZNYCBUeXA2PzdcZ2rtVRzrVmqeSDw13W9aUq6iCvtLa4WWOMtqeaiM1RZMc6b72hML7/1/0nQHSXy11gIIYQQohPU0cPYqtMAWD9sYPB2T0OqucVsRssdiJ7tL3Tmffet4zpf0+3EQmaym1U1D8x4y2x3fGtPcTXDMKhx1QGynZjoOHVoL86bf41R2RB0/+piTCfNjXWzEpYE3kIIIYQQneD7+C1Ax2utYlfvzODtoTPeAObpo/zHrzt0XOczaSFVzUNTzRv+DVQ1l8A7MbRnxrvOXR/8wEXWeIuOMLavo/4X92FUJYHZjf2OSzDNOD3WzUpoEngLIYQQQnSC79t1AGx3lOL0uIO3e30NgW8g8D73YsDAqHFgrP+m0+drso+3HmYfbwIz3v7A32yWiubxrD2Bd1XD+m6zbsJukT3bRfsYq5bh/M2TqHr/Pt2Ou6/GNO3UWDcr4UngLYQQQgjRCb4if7D9nrUGV0jg7fb5U82tZgsAWp88TH39t3k/fLfT52u6xrvlPt40SzW3yIx3XGtPVfPqkK3EmhfZEyIc38dvUv/g31EeO1qveux//BX6+OmxblaPIIG3EEIIIUQHGbu3otx2wOAfugeXt3EdbqC4mVlvnHE2TRgKgG/rwU6fU29S1TwkyGoadwcDb5NJAu941p4Z72qnv7BasqSZi3bw/u0ZnH9eAj4LekY9jif+gD6oINbN6jEk8BZCCCGE6CDj2y/8/ybVUarTZMY7sMbbGpLqbTptnv/4Mhvq6OFOndPUSnG15vt4N6aaS+Adz5LaE3iHzHgL0Rrl9eL+/a9w/d9mUCZM/T3Yn3oCLTs31k3rUSTwFkIIIYToIGPzVgDqMvzfh67xDlQ1D6zxBtBHTkRz1AM6vk//3alzhhZUC7vGu0VVc1njHc/aU9U8sJWY7OEtWqMqj+K66b/wrPJ/SGOZ4MD2xDNoySkxblnPI4G3EEIIIUQH+fZVAFDevzcALm/LGW+LqWngaxrif6PrW7W2U+c0NUk1D7OPd8P3weJuMuMd1xyWY8941zj9wVSKPalL2iTii7FrM87rb8W33wqaD+u5w7De9wiaxRLrpvVIEngLIYQQQnSAcjkxyv1vXI8MGwaAyxO6xjtQ3Kzpm1vTtMkA+PbUowyjw+dtbR/v1me8JfCOZ+0prhaY8ZZUc9Gc773XqP/lYxjVSWB2Yb/5bCw//UWsm9WjSQ6SSGhKKWqcdZRWH6W0upyKumpcHhdurweX14PL48Lr82IxWzBpOlsObkZb24skexJpSclkJqeTlZpBir2XVAsVQggBgLF2BSgzmDxUDimAzwhb1bzFjPdp58Dir1AuO2rbWrRRkzp0XnNIsB2aah7UYo23vM2LZ+0rrlYHSKq5aKQ8Hjx/+i2elVWADT2lHtvdv0AfMTbWTevx5C+yiHu1zjp2luxjV0kRu0uK2FWyn90lRRyqOEJZdTlOT+tro8J5cd07LW6zmMxkJvemb3oWA7P6MTCrv//f7P4MzOpPXkZOk5kIIYQQictY/R0AeoYPm82f4tt0H++WVc0BtNR09N5ujKMOfCs+Q+9g4N16qnlgxrvh/LKdWEJozxrvGimuJkKoA7tx3vN7jCN2QMM8QsN6zxOynrubkMBbxJWq+hrW79vG+r1b2VC0jfX7trKrpCiYXteaXrYkslJ6k94rFbvFis1sxWqxYjNbMJvMeLwenG4XBw8Xk5KWgsvroaKuitLqcupc9Xh8Xoorj1BceYR1e7eEff6R/YYwqv9QRvYfyqh+Qxk7oEAGQiGESEDGngMAmPJ6Y7dYgfBrvK1hZpxNQ7Mwjtbi21RIR1dZ6k328W5PcTUJvONZMPD2tJFq3rCdWIpsJ9bj+d57DdfiT/zbHOperOeNxnLlTbFulgghgbfo1o5UHeWbHWv5esdqvtmxli0Hd4YNsjNTejMkO4/BffIZ0iefwX3yyc/MISslg6zUjOCWHG3xeDy8//77zJ8/H0tI0Yl6t5OymgpKq8spLj/C3tIDDV8H2dfwb62rju93b+T73RubPOfwnIFMGDSGiYNGM3HQaMbkDcdqloIWQggRz4zDtYADfchALCb/3/RAJfPQ/5tNYQLvyZPxrPoC44AHZRhoHciWarqdWLjiapJqnkjalWpeHyiuJoF3T6VqqnA/+Fu8G72AHS2pHvuvrkKfeFKsmyaakb/Ioltxelx8vX0Nn236mmWbv2FH8d4Wx+Rn5jJuQAHjBoxk3ICRnJA/guzUjKi1yWG1k5eRQ15GDgwc1eJ+j8/LrsNFbDlYyNYDO9lyYCebDxRSVHaIHcV72VG8l//75n0A7BYbkwaPYcbwiZw4fCKThpzQrg8FhBBCdA/KMDCq/G+f9DHjMZv8s8pewxc8xhMorhYm8NZPngvPLUW5O77OOzTV3KSFzmaHTzU3mWTGO54FAm+314PX5w37QU51vcx492S+lZ/ieuJvqFr/khfzKBPW3zyGlpoe24aJsCTwFjG3t/Qgn278is82fc2XW7+jvtma7NH9hzFj+ARmDp/EjOHjyU7NjFFLw7OYzBT0G0xBv8Ew5czg7aXV5azds4U1ezaxZs9m1uzZRHltFV9tX81X21fzWMNjJwwcxcwRk5gxfALTho6TAikJRilFRV0VJZVHOVJVxpHqo1TUVlHjrKPaWUt1fS3VzlpqnLU4PS58hg9DKXyGgdHwf6UUNosVu8WGPfCv1YbdYiMtKZXMlHQyk9PJ6JVGRnI6GcnpZKX0xtaQAiuEiBy1cyP4LICBNnoK5hL/B8Q+X2jg3VBcLUyGk5aSjp7uxijv+Drv0HXdepgZbyTVPKEEqpqDf2IiOVzg3bCdWLJN3jv0JKq+Fs/j9+NZWQEqCc3iwnr5KZjPvTzWTRNtkMBbdDmlFGv3buH9Ncv4cN3nLWa1c9OzOW3MTE47YSYnjphE715pMWrp8clK6c0ZY0/kjLEnAv5+Fx7e60+d376ar3es4VDFEVbt2sCqXRt48sOX0TWdsQMKOLlgMrNGTmXasPEyI97NuTxu9h8tZl/pQfaVHfT/W3qIorJDlFSVcqTqaHC9Z1frm5blz9bIzCE/M5e8DP+/w3IGkZ+RE5M2CRHvjA2rAdCSXWiOpGCl8dDf89b28Q4wDc3C+K4WY/PODp279VTzpmu8PcFUcwm845nd0hh417udYT+YDxReS7LJe4WewvfFu7j+8mbDLLcJU38Ptt/ejZY7INZNE8cggbfoEj7Dx8rCdby/ZhkfrP2cA+WHg/eZdBNTh47j9BNmcvqYmYzqPywht+7SNI3hOYMYnjOIy2edh1KKfaUH+WrHGr7ZsYavd6xhX+lB1u3dwrq9W3jm479hMZmZPGQss0ZO4eSCyUwcNEbWiMdIZV01O4r3sP3QHnYUN3wd2sO+soPHLO4HkJ6USnZqBtmpGfTulUaKoxcp9l4k2wP/JuGw2jHpOrquo2s6Jl0PppM6vS6cbhcurxun24XT46Le7aSirpqjNRWU1VRwtKaCozWVHK2pwOPzcriylMOVpS1qDwA4LDaG9h1AkmFlp6mUUXnDGNV/KAOz+ifk758QkWIU7gBAz/JnlATSf0NTzYNVzVsJvPXxY+G7b/Ad6tiuG61WNQ+kmgfOH6xqLm/z4pmmaTisdurdTupaqWwe2D8+NEgXicnirMV3z624N3mBJDC7sf1oIqZLrutQrQgRO/IXWUSNy+Nmxbbv/DPb65dTVl0evC/J5uD0MScyf+IpnDZmJmlJPW+bA03T/NuRZffnJyf+AIADRw/z1fbVrNj2HSu2fseB8sN80xCY/+nf/0OSzcH0YeM5uWAKs0ZOYUze8CZvxMTxc3ncbD+0m437d7B5/w42Hyhkx6E9lFSVtfoYh9XOgKx+DMjMbfi3H/mZueSkZ9MnLZPslIwuTftWSlFWU8H+o8UUlR5i/9FD/v+XHWJv6UF2Hd5HvcfFxv3+AOLbg5uCj01LSmFsfkFIHYUCBmXnyXZ5QjQwikoBM3p+H6Bxb21vyIy3u6G4mrW1Ge8Zp8KL36DqHajDRWh989t17mMWV2v4EDCQ9i4z3vEvEHi3VmAtsGWq3SqBd6JShoHx+l845V9r8HkcgIZpiIHt9t+i5cgsdzyRwFtEVI2zls82fcMHaz/nkw1fBtcegX/Gb+74WcyfcAqzR00LFg0Rjfpn9OWCGWdxwYyzUEqx58h+lm/9zh+Ib/ueozUVLN30DUs3fQP4f6YnFUzipIZAfFjfgTJb2QFHaypZv2cLS3Z/y8evrGbLwZ1sP7S7ycxVqNz0bH/WQu6gYPbC8JxBZKdmdKufu6ZpZKX0JiulNxPCFAT0+rzsLT3I5qIdvPfFx+hpNgoP72XrwV1U1lU3vN6+Cx6f6khm8uATmDp0HFOHjmXSoDH0sid1ZZeE6DaMMjdgRh8+HGhMJ286490Q+LYSeGt98tCS6lF1Dnxff4b5vCvbde6ma7xDgmrZTixhHauyeSDwtpkl8E5ExqpluP78CsZRB+BAszmxXn4a5h9eGuumiU6QwFsctyNVZXy0bjkfrPuC5VtXBT/pB8hJy2behNmcPXEOM4ZPbHW9m2hJ0zQGN2yNdsXsH2EYBlsP7gwG4l/vWENFXRXvrVnGe2uWAdAnNZNpw8YzY9h4pg0bz+j+w1p949eTGIbBniP72bS/kM0HdrCxaDub9u/gYHlJ2OPTk1IZnTeME/JGMDpvGCNyBzM8Z1DCVI01m8wM7TuAARm5GAdqglvoub0eth3cxfp9W1m/bxvr921l8/5CquprWLr5G5Zu9n/go2s6Y/KGMXXoOKYPm8DJI6eQmZwe204J0QVUfS2q1h8I6WOnAI2Vw71h1ni3tTTIlGvDuxOMjZvgvPadv0lV8zBrvAlWNZftxBJFUsNMduuBt3//eJnxTiyqpAj3wj/i3ewFHKD5qBjqI/u3f8Sc3r2KDIv2k7/IUbL14C4+XPs5s0ZOZfzAkQkX/OwuKeKDtV/w4brPWbVrQ5M1roOz8zhrwimcPfFUJg4aLSmqEaLrOqPzhjM6bzg/O+MneH1e1u3dyvKtq1ix7XtW7VxPSVUZ767+jHdXfwZAsj2JKUPGMm2oPxCfMHBkwldNr3HWsnl/IZsa0sQ37d/BlgM7W33TMiCrH5mmFE6bfBLjBo5kTP4I+vfu261msLuK1Wxh7IACxg4oIPBZusfnZcuBQlbt3MB3uzbw7c71HDhazIai7Wwo2s5Ly/4BwNj8EZw8ciqzG4oC9rI5YtcRIaJEbV8H6KB70AYVACEz3mGqmrc19uvDB8LOInx7Wl/G0lyTVPMma7wb2td8xlu2E4t7bc14K6UaU81lF4uEoNwuvC8uxP3JTvBaAR1Tvhf9hv/iu217md8rNdZNFMchsaLBbuSjdV/w0DvP8dA7z5FsT2LG8InMKpjCSQWTGdV/aNyty6111fP19jUs2/wNyzavpPBw00rkEwaO5qwJs5k3/hRG5A7qkUFLVzObzEwecgKTh5zAzfP/k3q3k3V7t7KycC0rC9exaud6qp21LNu8kmWbVwL+WZFhfQcwfuAoxg0YyfiBIzkhbwRWU/wVbPP4vOwrPcj2Q7v9Qfb+HWzaX8je0gNhj7dbbBT0G8Lo/sM4IX8EY/KGMzpvGA6zjffff5/5Z/lnfUVTFpO5Ya33SK469QIADpaXsGrner7duY4vt61m68GdwUD82SWvYjGZmTJkLLNHTWXWyKlMGDgq4T58FD2TsX0zAHqyN1jMKDCeG8rAMAx0XT9mVXMAfcp0+LAIo8yE8njQ2vH3p+ka78b3EcGq5kiqeaJpK/D2+LzBD1ukuFp8U4aB780Xcf/zK1RdEmBF61WP7cr5mOb+GI/HA9v2HvN5RPcm74SiZFT/oZw98VS+2v495bVVfLLhSz7Z8CUAKfZeTB5ygn8Wcug4Jg4e0+1mh+rdLr7bs5GVO9by5fbvWVm4rkkKuVk3ceKIScybcApzx82if0bfGLZWgH9wnjF8AjOGTwD8leS3HtzFysJ1fNsQiB8oP8yO4r3sKN7LP1Z+GHxsfkYuaaYk1rj3MKohtXpwdh5pSSkx/RBFKUVJVRk7D+9j1+F9FB7ex87De9lVUsTeIwdaXYudk5bN6LxhjMkbHgywh/TJDxv8eTyeMM8g2tKvdx/OnXIG5045A4CSyjJWbPuOL7auYvmWVRwoP8zXDZX6H37neVLsvZg5YiKzR05l1shp8uGciFvGHv8bXy2jcXYxNLj2Gj5MqGAwZGnjQ019/Imgvw6GBbXhG7RJs455fj1MsO3/xv+PUv6/m8E15pJqHvcaA++WVc0Ds90ggXc88336Fu5X3sGoSCJQrdw6ZxDma29Ds8l1TSTyFzlK/mPcLP5j3CwMw2DT/h2s2PYdy7d+x8rCdS1mIU26iTF5w5kwcBRj8odzQt4IRvYf2mXBuNfnZfeR/Wzav4O1uzfz8fdfcMPHf2qx93BeRg6njpnBnNHTOblgSo+sRB5PAq+rMXnD+emcHwNwpOoo6/dtZd3erazbu4W1e7dwuLKUoqOHKAI2ftp0T9kUe68me0D3z8ghK6U3vXulkZGcRkavNHonp5HmSGn3kgLDMKh21lJRW0V5XRUVtf6vo7WVHCov4WD5YQ6Wl3CwvIRDFSVNPvBpzmG1M6zvAEb1bwyyR+UNk/XGXaxPWibnT5vL+dPmopRid0kRy7d9xxdbVvHltu+pqKvi4/Ur+Hj9CsC/v7h/i7wpzB41jX69+8S4B0K0jzpUCujoORnB28whwbDH58VnNAbEbc14a1Ybem8PRpkZ3/ffoLcj8A5NL29tH+/QlHeZ8Y5/DkvrM96BrcQ0TZOtRuOQsWYF7ucW4ztkA5JA82KZnI7l+lvRMmRcTEQSeEeZruvBNZP/deal+AwfWw7sDKYCB2Yh/cWMtgYfp2kag7PzGNwnn0HZ/RmcncfA7DzyMvqSmdyb3slpHSpU5vF5OVRewv6jxew/WsyBo8XsOXKALQf8VZxDPzUN6JuWxbSh45k+fDxzRk1naN8BMksV57JTMzj9hBM5/YQTg7eV1VSwuWgHby15F2tWL3Yc3sv2Q7s5UnWUamctWw7sZMuBnW08q59ZN2ExW7AGvhpmetw+Dx6vt+FfT4sPdI5F13TyM3MZ0jefYX0HMrTvgIavgeSkZUkNgW5G0zSG9B3AkL4DuHL2+fgMHxuLdrB86yqWb13FysJ1HK4s5R8rPwxmXQzrO5CTR05h9sipnDhiEumyhk10U0aZE0hCH9i4/VdoJo3P8GGghdzXduBrGpiBUVaPsW1Pu87ftLhayOw3IYG3tzHwNska77jnaKO4WmAW3G62yvuzOGLsWI/n2Wfx7gSwAQbmAjOWG25DHzA8xq0T0SSBdxcz6SZOyB/BCfkjgusl9x8t5rtdG9hUtION+7ezqWgHJVVl7CopYldJUavPlZaUQkavNJJsDky6jkk3YdZNmHQTdW4nta46qutrqXHVUeeqb7NdSTYHo/oNZVS/oZirfVz9o8sZmiOBdk+QmZzOjGETOLr9YLC6NfjX9R9o+KCmqOwQ+8v8H9iU11ZRVlNBeW0l5bWV1DjrAH+Kpdfta7WIWXMOq53evVJJT0olvVcqvXulkpOeTW56H/pn9KVf7z7kpvchJz1bPsmPYybdxPiB/noCN8y9HKfHxXe7NrJ8y7cs3/Yda/dsofDwXgoP72Xx52+iazrjBoxk1sgpzB41lalDx0kKpegWlGFgVPvfNmnDRwZvDw2uPT5vMAiGtquaA+gnjIHV3+E72PYYHTxe18P+P3Qf70DgbTLp6LqM4fGurTXewa3E5G9kXFD7d+L+8xN4N7tB+f9umPI8WK+7Cn3s9Bi3TnQFCby7gbyMHPIycjhvypnB20oqy9h2aBd7jhxgd0kRe0sPsLtkP8UVRyivq0IpRWVdNZV11e0+j81spX9G34Yvf/rwyIZiUwOz+vsLwng8vP/++wzM6idBdw/Xy+ZgRO5gRuQObvM4l8dNtbMWj9eD2+fF7XXj8XpweT3+9DeT2T8TbrJgMVuwmMykOHpJMNVD2S02Ti6YzMkFk/k1UFlXzdfb1/DF1m9ZvnUVO4r3snbvZtbu3cxTH72CzWxl6tBxnFQwiZMLpjBh0GjZllDExuEi8PnXdusjJwZvNukmNE1DKYXP5wsWONM07ZiFVE0zToFXvkPVOlClh9Cycts+vrWq5sFU89CtxGS2OxG0FXi7AluJyXjaranSg3j+vBDPmiowzIAJPcuJdcGPMc06K9bNE11I3r10U33SMumTlsmskVNb3OczfFTUVXO0poKy6gpcHhdew4fP8OH1+fAaPhxWOyn2XiTbk/z/OnrROylV0nJFxNksVmyyjYnopLSkFOZNmM28CbMBOFRewvKGmhjLt6yiuPIIK7b5965/mOdJsjmYMWwCJxdM4eSRkxmTNzzudokQ8cnYvAYAzeZES0lvcp9ZN+Hxef1VpgkUVjv2Wyyt/xA0ez3K6cBYuQzT2T9p8/hWU82DH5SrkK3E5C1eImhPcTUZg7snVVWO57nH8Hxd3PChnRk9rR7rT+ZhOuvCWDdPxID8VY5DJt1EZnI6mcnpDM+JdWuEECJycnv34cIZ87lwxnyUUuw8vK8h8P6er7Z9z9HaSj7b9DWfbfoagPSkVGYMn+CvRzFsPGMHFMjSBBEVxq5CAPS0lveZTWY8Pi9ew4dSBtB2RfNQeo4V3x7wrV9/7MA7ZJZbb1LVvOUab5nxTgzBwNvTxoy3VWa8uxNVX4f3pcfxLN2F8tgIbA1mPf8kTOf/Z3ArQtHzSOAthBCiW9I0jWE5AxmWM5AFp/w/DMNgy8GdrNjqnwH/escaKuqq+HDdF3y47gvAn3I5YdBopg0dx7Sh45k8ZAy9e4WJlIToILX/IABadnKL+wKVzb0+L76GbQ7buyTCNCwP355DGLuPHPPYpmu8Q4urNbRRyR7eiabN4moNM96Sat49KI8H79+ewfPBBpTLDtjQ7PVY5o/HfMnP0SzyoXBPFxeB9549e7j//vv57LPPKC4upl+/flx22WXceeedWK2N6TXr16/n+uuvZ9WqVWRnZ/Pf//3f/OpXv4phy4UQQkSKruvBbeN+dsZP8Pq8rN+3lW92rOPbnev4dud6jtZU8M2ONXyzY03wcQOy+jF+wCjGDxzJhIGjGDuggKSGLXpE5CXqmG0cqQas6P1abvMTCLK9Ph8+o2GNdTsriuuTpsAn/8ZXqqEM45izYSbdhM/wtbGdWGCNd1y8xRPH0PYa70DgLanmsaQMA9+bL+F+6ytUrQOwo1lcWE4bivk/b0JzJMW6iaKbiIu/ylu3bsUwDJ577jmGDRvGxo0bueaaa6itreWRRx4BoKqqiv/4j//gjDPO4C9/+QsbNmzgpz/9Kenp6Vx77bUx7oEQQohIM5vMTBp8ApMGn8DPuTSYmh4Iwr8tXMeukiL2lR5kX+lB/r360+BjB2XnkaH3YrM6yKi8YRTkDmFo3wGSph4BiTpmG5X+mWRtwIAW9wW27fIa3uA+2u19LemTZoP2NvisqE2r0I5R3dik62ECb/+/kmqeeAKBd10bVc1lxjt2fB+8gfu1jzAqHYADTG4sJ+Zi+dktLWpBCBEXgfe8efOYN29e8PshQ4awbds2nn322eAg/uqrr+J2u3nppZewWq2MGTOGtWvX8thjj3XbQVwIIUTkhKamX3LSOQBU1FaxoWgba/duYd3erazft5V9pQfZc2Q/e4DVH24LPt6smxjcJ58RuYMZlN2fAVn9yM/MZUBmP/Iyc+TNbTsl4pitDANV5w+k9SEjW9wfOuPt8XmA9hc30xxJ6OlujHIHvlVfHXNbIX9RNU/TooIh670bi6tJ4J0IAn93whZXc0txtVgxNn+H+8nn8B2yAg7QvVgmpWH5r7uOuTuB6LniIvAOp7KykoyMjOD3X3/9NbNnz26SxjZ37lwefvhhysvL6d27d9jncblcuFyNf8yqqqqC//d4PFFoefcW6LP0vWeRvkvfE1Uvq4MZQycwY+iE4G3ltZWs2b2Jf3/+MXqajcLDe9levJsaZx07ivewo3hP2Ofqk5pBXkYu2akZ/gKXKb3JSu5NRnI6WSn+7/ul9yEtKeW4251o1yQSY3Zr43VXvI7V/sKGbYAMvINGoDU7l0nzB7lOlxN3Q+Bt0c3tbpOWnwblbnxbd8IxHhOY6VaGCj6/MvwF3bw+X/BnpJv0hHsdheoJf78A9IYV/B6vB4/H06TfdS7//u9WkzXhfw7QPa65qijFePpP+NbVgbICBqbRFvSf3YjWfwhefwMjft7u0PdY6e5970i74jLwLiws5Kmnngp+cg5QXFzM4MFN9xvu27dv8L7WAu8HH3yQ++67L+x9S5YsiVCL44/0vWeSvvdMPbXvZw6eBsDpGeNRIxXlzmoO1ZRyqKaU0voKyuorKa2rpKy+ApfPQ0nVUUqqjrb5nHOHzOD8glOPu211dXXH/RzdRaTG7NbG66VLl5KUlBTV13H+7nUUAFidfPDpshb3u5z+NOAVX67A01Bcrb6unvfff79dzz/CZmYAbrxF1Xx0jMcYXn+QvXbNWkzF/vPu3bsXgF07d6Lr/kCt+NChdp8/niX6368NJf5q+qVHS5tczyVLlrB213r/fSUlPeJaB8Tkmhs+xqxdTu7GKvDaARPe9Co2njSZ0r6DYd1W/1eUJfrrvS3dte8dGa9jGnjfcccdPPzww20es2XLFkaObEzrOnDgAPPmzeOCCy7gmmuuOe42/PrXv+aWW24Jfl9VVUV+fj4AZ555JpYeVoHQ4/GwZMkS6bv0vceQvkvfj9V3pRTltZUUHS3mwNFiSqvLOVpTQWl1BWU1FZTVlFNWXU5ZTQUzJkxl/qnzj7t9odlX3UWsx+zWxutTTz2VlStXRvV1bLy8Ay+gp+rMn9/y+j6y5u+U1JUzZdpU/xZPq14jIz097LHhqDFD8ax6Fq0uibNOno6WmtnqsXd88WfqvE6mTJnCGaNnsmTJEgYNHsymzTsZPHgwFouZNeu2MWjQQE6cMb6zXe72esrfr+Stq3j6+/+jV3Iy8+fPb9Lv7Z8chm1LGTZoaLtfa/EsVtfc+PYzfM+9gapsKJxmr8d0wUlYfngZ07poa7Ce8noPp7v3vSPjdUwD71tvvZUFCxa0ecyQIUOC/z948CCnnnoqJ554Is8//3yT43Jycjh8+HCT2wLf5+S0vtm1zWbDZgu/bs9isXTLC9wVpO/S955G+i59b0tfazZ9e2czZejYLmgV3fJ6xHrMbm28Dvysovk6dheXAKBnJoU9R3DPbg2UpgCwWqztb8+wE/BanSi3HdP3KzD9x49bPTSQam4L6W9gPbem6xhGw/mtPeP3OtH/fgX26Pb4vE36abFYcDdUsE+yORL6Z9BcV11zVVOJ50/3411bi38dtwfLSTlYrr8dzdEr6ucPJ9Ff723prn3vSJtiGnhnZ2eTnZ3drmMPHDjAqaeeyuTJk1m0aFGTvSwBZs6cyZ133onH4wn+AJYsWUJBQUGraeZCCCGEaJ+ePGYbJZWAGS0n/Ex0IPD1+Hx4GoKh9u7jHaD3NeErAt+6dccIvP3nCt3HO8C/nZg/FV22E0sMjYX7vC3uc3ncgBRXiwbfR//A9dL7KKcD0DEN8GD95W3oA0bEumkijnVNfsRxOnDgAHPmzGHAgAE88sgjHDlyhOLiYoqLi4PHXHLJJVitVq666io2bdrEG2+8wRNPPNEkLU0IIYQQ0ZWIY7aq8Ac4en5e2PsDFcx9hjcYeLe3qnmAaVh/AIxdxW0f1/AhRrh9vFHga9jOzGSKi7d44hgsDdvSucME3sHtxKyy40KkqKoKXLffiPPPS1FOB5rVie2Kydifel6CbnHc4uLj0CVLllBYWEhhYSF5eU0HPaX8KVVpaWl8/PHHXH/99UyePJmsrCzuvvvubrktiRBCCJGoEnHMNmr9b5f0wcPD3m/WAzPejYG31dSxlEh9wiRY+iG+IwplGGitrB3VNb3Jv9B0H2+j4WfcPMtAxKe2ZrzrGwJvm1lmvCPB9/UnuJ78O6rOAYB5pI719gfQMvrGuGUiUcRF4L1gwYJjrisDGDduHMuXL49+g4QQQggRVqKN2ar0IHj9gY02YlzYYwKz217DFwyQOrqPtj51DmjvgceG2r4ebeSEsMcFUs3DzXgrpVANa7y1kL29RfwK1A/weFtuWeSSGe+IUB4Pnifux7P8CNAwy/2fZ2Kaf3GsmyYSjHwcKoQQQgjRCmPnZgA0iwstNfz688CMt9fnxd0QIHV0jbfWKwU91Z/Sbqxq/QOJQMAdOuNNw17PClAEAu8OnV50UxZTYzZFc8FUc5nx7jR1cA/O667Ds7wM0DHluXE8c68E3SIq4mLGWwghhBAiFtTe3QBovYxWjwnOePsaZ7wDa3M7Qs9Pwaj04ttS2OobtGE5A9lXepCB2f2Dt4WmmsuMd2IJvI7aKq4mM96d4/v8PVxP/xPltoPuwfqDAsz/+YtWl3kIcbwk8BZCCCGEaIU6eBAALa31QDqQVu4zfLi9natqDmAaNRzvxi0YRdWtHvPCtQ9SUVtFn7RMPB7/7HpjcTUVXEcvgXdiCLyO2iyuZpHAuyOUYeD9yx9xf7wHlB0tqQ77Hdegjz8x1k0TCU4+0hFCCCGEaIVRchQAPTOl1WNCi6t5jc5VNQfQp83yn7PKhqqpCnuM1WyhT1rTbc0a13j7v0JvE/EtMOPtM3wYRtOsC2dwOzEJvNtL1dfhvu0G3B8VgTJhynfj+PMfJegWXUICbyGEEEKIVqjyWgC0vq3vYR5aXK2zVc0BtGFj0SwuQMdYtaz9jwu0FZnxTjShmRPN13kHZrwdEni3iyo5gPPn/413pwYYWOdkY3vyObTerf9uCxFJEngLIYQQQrRCVfn3xdbywu/hDU2LqwWqT3e0qjmApuvo2f6A2VizugMPbKxqHtxOTALvhBCaOdF8nbfT3bCdmEWKqx2LsWU19Tf9FuOoHUwe7NfOxvKLe2U9t+hSssZbCCGEECIMZRgY9f6Za33gsFaPCy2u5jmO4moA+pAcfAeP4tt5kPY+Q8gSb5nxTjDWkMDb7fM0yaQIFleTGe82+T5/D+eTb4PXgWZzYr/9SvTJs2PdLNEDycc8QgghhBDhlB4Cnz/Q0QaPavWwwOy21+dtrGreiTXeAKYJEwEwSnztfowUV0tcgX3bIcyMt0dmvI/F+86rOBf+G7xW9NQ67I/cLkG3iBkJvIUQQgghwjB2bwEa9vBOTm31uNA13sdT1RxAn34qYKDc9uD5j0WjMdVcAu/Eomka1obsicBrK8AlVc3b5P3fF3C9tNxfRC3Hif3pR9EHjIh1s0QPJoG3EEIIIUQY7dnDG5qu8Q5UNbd0orgagJbaGz3FCYDxzRftfJD/H4WkmieixqUMjYG3Uor6QHE12ce7Bc/iJ3G9+r0/6B7gwfbE02hpGbFulujhJPAWQgghhAijPXt4Q+PsdmhV887OeAPo/ZMB8G3e2q7jNS3cjHenTy+6mcC67tCq5u6GIn4g24k15/nLH3G/tQ3QMQ8zsD36NJrdEetmCSGBtxBCCCFEOO3Zwxsa1+F6jrOqeYA+cqj//EWV7To+fOAtkXeiCLyWPL7GYDuwvhsk1TyU57k/4f5gLwDmMSasDz+FZpU18KJ7kMBbCCGEECKM4B7efdre5zcwu+2LQFVzANO0EwEwKqyo+rpjHh8MsUOrmusSeCeKwOsrdMY7EHhrmnZc2RWJxPPyk7jf9y8PsYy3Yv3942hm+dmI7kMCbyGEEEKIMNqzhzeAKSQwOt6q5gDaqClgcoMyYXz/+bGPbzLj3XAbEngnisCHOJ6Q4mqhW4lJdgN4X38e9z+3ABrm0TqWex+VPbpFtyOvSCGEEEKIZtq7hzeApSEV2Gf4cEci8NZ1TNn+CNpY8307HuD/R6FkxjsBtTXj7ZA0c7xvvYzrtTX413QrrPcvlKBbdEvyqhRCCCGEaC50D+8hre/hDWDWw814dz7VHEAf3AcA346iYx7bOOMNRkPgrcssaMKwBIurNa7xdnn9M949fQ9v32f/wvXy14COaaAX60NPSHq56LYk8BZCCCGEaKa9e3hDY/ErX4SqmgOYxo31t6PYe4wjm+3jbajgrSIxWEyNxfsCnLKHN8a6lTiffte/ZVg/F7ZHnkCzHN8HXkJEkwTeQgghhBDNtHcPb2g64x2JquYA+ozTAIVy2TH272rz2MDktlIKRcOMt6SaJ4zAGu/QfbwDa7x76lZixr5CnH94HnxW9PQ6bH98FM1qj3WzhGiTBN5CCCGEEM0E9/BOPfYMWiDI9oZUNbceR1VzAC2jL1qvegCMr5ce4+CWM95ScCtxBLInQvfu7skz3qqyDNedD6BcdjRHPfaH7kVLSYt1s4Q4Jgm8hRBCCCGaCe7hndX2Ht4A5obAyBuyxtscgS2eTP2T/G3ZuLnN4/SQNd6yj3fiCazx9vp8wdsaq5r3rDXeus+D7zd3YVQ5wOzCfs/1aLkDY90sIdpFAm8hhBBCiGbau4c3hATeIVXNrcdZXA1AH+Wvpu7bW972gSEbeQdSzSXuThzBGW9fmBlva8+a8Z7+2XsYh22gebHffD76qMmxbpIQ7SaBtxBCCCFEM+3dwxvArAdSzSM84z39JACMCiuqvrbV48IVV5MZ78TRuJQhtLha4z7ePYWx+Al6FfmzQGw/mYxp1vwYt0iIjpHAWwghhBAiREf28IbGGUlvBKuaA2ijpoDZBcqE8W3r67w1STVPaIF6AaFrvBuLq/WMVHPf5+/ifa8QAPPUZMwXXRvjFgnRcRJ4CyGEEEKE6sAe3gCmkBnvQFVzSwT2EtZ0HVMffwBtrP6+9eNCqpobEngnnNAaAgE9qbiasWcrrqfeBmXCk1mFdtu9sW6SEJ0igbcQQgghRIiO7OENITPevsjOeAPoQ3MB8BUeaP2gwIw3ioYl3hJ4J5BAcTVP2O3EEnvGW9VU4/rtH1EeG1pyHV/PPQstQr9bQnQ1CbyFEEIIIUKofXsA0JKOvYc3gKlhDa7H5w1Wno7EGm8A08RJABiHDZQRvj2BNd4ogjPeugTeCSPwIY4nzIy3I8FnvN33/bqhgrkb82+ux23vFesmCdFpEngLIYQQQoRQhw4BoKW2L3gOBEY+wxesPB2JquYA+vTTQPOhPDbU9vVhjwlNNQ+s8Zay5okjsGyhyYy3NzDjnbiBt2fR43i3K0Bh/+mpaCPGx7pJQhwXCbyFEEIIIUIYpf49vLWM5HYdH6hq7olwVXMALTkVPc0/u2ms/CL8MVpIVXOZ8U44wRlvb5jtxBI08Da+X477X/4lH5bpqZjOviTGLRLi+EngLYQQQggRQh31b92lZ2e06/jQ4leRXuMNoA9IB8C3eUfY+6WqeWIzh0s1dydu4K0qSnE+sgiUGVMfJ5Zf3R/rJgkRERJ4CyGEEEKEUFX+AEfLyWnX8YF9ll1eTzDwjURV8wDTCf7K6sb+1vfyBn9xtWDgrUvgnSgCyxY83nCp5olVXE0ZBq7f3omqc6BZndh+dzeaOTLLNoSINQm8hRBCCCFCqDr/2yMtb2C7jg/MSNa7ncHbIjrjPXMOAEaNHXW0pMX9WuMi78bAO2JnF7EWbsbb1ZB2bkuwoNT7P4/g22cGDGw/Pxctt32/g0LEAwm8hRBCCCEaqPpalMefvqsPGtGuxwTWeIcG3pFa4w2gDxiBZq8HNIyvP2txf0jcLTPeCcjakD3hNRoDb8PwV8/XG157icBY9zXuD3YCYJndB9Op58S4RUJElgTeQgghhBAN1N7t/v9oPuib367HNJ/x1jQtYlXNA/Qcf0qxb93aFveFK64ma7wTR+D15Q4pruZr2FrOpCfGW3lVV4Prj/8Dyoye7cRy029j3SQhIi4xfluFEEIIISJA7dsFgGZ3o7UzqDE3m3VMtiWhRzggMo0cBIBv55Ew94YG3oFbJPBOFIEPcbwhqeY+5Q+8m7/24pX7gbswahxgdmG7+w60CNZIEKK7kMBbCCGEEKKBcbAIAC25/YFr8/XcyfakiLYJwDRjFgBGmRlVX9fkvsDkthGIupFU80TSOOMdEnj7/KnmpgQIvL3v/BXvhoY165edjD5geIxbJER0SOAthBBCCNFAHfbPKOtp9nY/xmRqNuNt7xXRNgFo42aA2QXKjPFt03XegbRyoyH9GGQf70RiNYeb8Q6s8Y7vt/LqwG5cr3wOgHmMGfOPFsS2QUJEUXz/tgohhBBCRJAqrQRAy0hp92Oaz3inOKIQeJtMmPr6g2nfqm+b3hcMvFXojRFvg4iN4Iy3r3GNt5EAa7yVYeD6wwPgsaEl12G98/exbpIQURW/v61CCCGEEBGmKusB0Ppmt/sxzdN9U6Iw4w1gKvAXezN2HAx7v8x4JyZLQ0ZFkxnvQOCtxW+que+vT+M7YAXNh+3mK9B6tf/DLiHikQTeQgghhBANjBr/rLHer3+7H9NyjXd0Am99+okA+I7oKE/j7GdoVfPmt4n4Z2koruYJE3jHa6q5sXsLrn9tBMByYiamqafGuEVCRF98/rYKIYQQQkSYMgxUvT+I1gYMaffjmleWjkaqOYA++RTQPeCzYKz+Inh7sLhayIy3xN2JI/DBjidkOzGjYY232RR/M97KMHA/8Aj4LOhpdVhuvjvWTRKiS0jgLYQQQggBcLQYDP/sojaooN0PMzdf4x2lGW/NYsGU7Q+ujW++arydlsXVZMY7cVjMgRlvX/A2b6CquRZ/b+W9//MIvhK7P8X8tp+hWW2xbpIQXSL+fluFEEIIIaJA7dnh/4/ZhZac1u7HNZ91jFaqOYA+vB8Avm37grc1pprT4jYR/4Iz3iHF1QL7eMfbdmLG1jW4P9wJgHVOLvq4GTFukRBdRwJvIYQQQgjAKNoNgJ5kHOPIpky6qUmgG60ZbwDT1KkA+A77U3YBCBNjS+CdOBoD78Y13kYcrvFWXi+uh58Cw4yeUY/5hjtj3SQhulT8/LYKIYQQQkSROnQIAC2l47OIoeu8k+1JEWtTc/r000HzgtcKG78BWgbZEnQnlnBrvH1GQ6p5HAXe3mcewDjqAN2L7fb/RjObj/0gIRJI/Py2CiGEEEJEkSopA0Dr3fHAOXSdd7SKqwFojiT0TP/Mp1r5pf82JPBOZOYwM97xlmpubPwW91L/NnjWuUPQR06McYuE6HoSeAshhBBCAMbRagD0rN4dfmzTGe/oBd4ApqF9AFBb9wItK5jLHt6JxdpQXM0bUlwtkGoeD4G38npxPfoXUCb0bCfma38Z6yYJERMSeAshhBBCAKrKn8qr9e3b4ceG7uUdzTXeAKbJkwEwDnrBMFpG3hJ3J5TAjLc7pLiaN45Szb0vPNKYYv6rm9DioM1CRENcvPL37NnDVVddxeDBg3E4HAwdOpR77rkHt9vd5BhN01p8ffPNNzFsuRBCCNGzxPOYrer8EauWN6DDjzWFVDaPZqo5gH7SXNB8KI+drJI9MuOd4KwNgbe3SXG1QODdvWe8jd1bcX+8CwDrqXnoI8bFuEVCxE5cVDXYunUrhmHw3HPPMWzYMDZu3Mg111xDbW0tjzzySJNjP/nkE8aMGRP8PjMzs6ubK4QQQvRY8TpmK7cL5bICoA0c3uHHh854RzvVXEtOQc/0YJSa6L+3sOUab10C70RiDltcraGqeTfex1sZBu4/PgI+G3paPeb/uiPWTRIipuIi8J43bx7z5s0Lfj9kyBC2bdvGs88+22IQz8zMJCcnp6ubKIQQQgjid8xWRTsBHTQfWv8hHX586MxjtFPNAUwjczFWlJNeXNWyqrnkmieUwBrvJsXVgmu8u2/g7Xv9L/gO2kDzYfvFT9Esllg3SYiY6r6/rcdQWVlJRkZGi9vPOecc+vTpw8knn8w777wTg5YJIYQQIlQ8jNlqXyEAms3dqW2Oms54R287sQDTzJP8562wo4Ws/QWpap5oAjPeXsOHUgoAo5tXNVeHi3D9czUAlqnp6BNPjnGLhIi9uJjxbq6wsJCnnnqqySfnycnJPProo5x00knous6bb77Jeeedx9tvv80555zT6nO5XC5cLlfw+8rKSgDq6uooKyvD0sM+nfN4PNJ36Xusm9OlpO/S9+7Y9+pqf3XtwJvseBapMbu18fro0aMRuZbGtq14PW70ZDf1ZWUdfrzy+DDcXmxmK9WVVZ1uR7vPN3wiHuMN8FjwLvuA+vrG2VBNGZR1og/xpLv/DkdSTX0Nhtt/fYtLDlNXV4en3oXh9lJVUUmZuftda9999+CrM6H1qsB85e1oEXg99qRr3pz0vfv2vUPjtYqh22+/XQFtfm3ZsqXJY/bv36+GDh2qrrrqqmM+/+WXX65OPvnkNo+55557jtkG+ZIv+ZIv+ZKvWHwVFRUd1zgbSbEes2W8li/5ki/5kq/u+tWe8VpTKnYfpx85cuSYn8gOGTIEq9Vf7OTgwYPMmTOHGTNmsHjxYvRjrGt55pln+P3vf8+hQ4daPab5J+iGYbB3714mTJhAUVERqampHehR/KuqqiI/P1/6Ln3vMaTv0vfu2HelFNXV1fTr1++YY11XifWYHW68Pnr0KBaLhQEDBnTbaxlN3f11HE09te89td8gfZe+d8++d2S8jmmqeXZ2NtnZ2e069sCBA5x66qlMnjyZRYsWteuNyNq1a8nNzW3zGJvNhs1ma3Jb4LlTU1O75QXuCtJ36XtPI32Xvnc3aWlpsW5CE7Ees8ON1+np6VRV+dO6u/O1jDbpe8/re0/tN0jfpe/dT3vH67hY433gwAHmzJnDwIEDeeSRRzhy5EjwvkA11Jdffhmr1crEiRMB+Oc//8lLL73ECy+8EJM2CyGEED2RjNlCCCFES3EReC9ZsoTCwkIKCwvJy8trcl9opvz999/P3r17MZvNjBw5kjfeeIMf//jHXd1cIYQQoseSMVsIIYRoKS4C7wULFrBgwYI2j7nyyiu58sorI3I+m83GPffc0yKlrSeQvkvfexrpu/RdRJaM2V1H+t7z+t5T+w3Sd+l7/Pc9psXVhBBCCCGEEEKIRNc9SqUKIYQQQgghhBAJSgJvIYQQQgghhBAiiiTwFkIIIYQQQgghoqhHBN5ffPEFP/zhD+nXrx+apvH222+3efyKFSs46aSTyMzMxOFwMHLkSBYuXNjkmHvvvRdN05p8jRw5Moq96LiO9jvUl19+idlsZsKECS3ue+aZZxg0aBB2u53p06fz7bffRq7RERKNvsfDNYeO933ZsmUt+qVpGsXFxU2OS8Tr3p6+J+p1B3C5XNx5550MHDgQm83GoEGDeOmll5oc83//93+MHDkSu93O2LFjef/996PUg86LRt8XL17c4rrb7fYo9kJAzx2vQcZsGbNlzO4pY7aM1z13vO4RgXdtbS3jx4/nmWeeadfxvXr14oYbbuCLL75gy5Yt3HXXXdx11108//zzTY4bM2YMhw4dCn6tWLEiGs3vtI72O6CiooIrrriC008/vcV9b7zxBrfccgv33HMPq1evZvz48cydO5eSkpJINTsiotF36P7XHDrf923btjXpW58+fYL3Jfp1b6vvkLjX/cILL+TTTz/lxRdfZNu2bbz22msUFBQE7//qq6/4yU9+wlVXXcWaNWs477zzOO+889i4cWM0utBp0eg7QGpqapPrvnfv3kg3XTTTU8drkDFbxmwZs9sr3sdsGa978HitehhAvfXWWx1+3I9+9CN12WWXBb+/55571Pjx4yPXsCjrSL8vuugiddddd4Xt47Rp09T1118f/N7n86l+/fqpBx98MIKtjaxI9T3errlS7ev70qVLFaDKy8tbPSZRr3t7+p6o1/2DDz5QaWlpqqysrNVjLrzwQnX22Wc3uW369OnqZz/7WSSaGRWR6vuiRYtUWlpaZBsnOqSnjtdKyZgtY3brZMxOrDFbxuu32jwm0cbrHjHjfbzWrFnDV199xSmnnNLk9h07dtCvXz+GDBnCpZdeyr59+2LUwshZtGgRu3bt4p577mlxn9vt5vvvv+eMM84I3qbrOmeccQZff/11VzYzKtrqe0AiXvOACRMmkJuby5lnnsmXX34ZvD3Rrzu03veARLzu77zzDlOmTOGPf/wj/fv3Z8SIEdx2223U19cHj/n666+bXHeAuXPnxv11b0/fAWpqahg4cCD5+fmce+65bNq0KUYtFu3Vk8ZrkDFbxmwZs3vCmC3jdeKM1+ZYN6A7y8vL48iRI3i9Xu69916uvvrq4H3Tp09n8eLFFBQUcOjQIe677z5mzZrFxo0bSUlJiWGrO2/Hjh3ccccdLF++HLO55UujtLQUn89H3759m9zet29ftm7d2lXNjIpj9R0S85oD5Obm8pe//IUpU6bgcrl44YUXmDNnDitXrmTSpEkJfd2P1XdI3Ou+a9cuVqxYgd1u56233qK0tJSf//znlJWVsWjRIgCKi4vDXvfmawnjTXv6XlBQwEsvvcS4ceOorKzkkUce4cQTT2TTpk3k5eXFuAeiuZ42XoOM2TJmy5jdU8ZsGa8TaLyO9ZR7V6MDKUy7du1S69evV88//7zKyMhQf//731s9try8XKWmpqoXXnghQi2NrGP12+v1qilTpqhnn302eFvzdJ0DBw4oQH311VdNHvvLX/5STZs2LdJNjphI9D2c7n7Nlep8qubs2bODqZqJet1bE9r3cBLlup955pnKbrerioqK4G1vvvmm0jRN1dXVKaWUslgsLf7uPfPMM6pPnz4Rb3OkRKrvzbndbjV06FB11113RbK5og09dbxWSsZsGbM7Rsbs+B2zZbx+q81jEm28lhnvNgwePBiAsWPHcvjwYe69915+8pOfhD02PT2dESNGUFhY2JVNjJjq6mq+++471qxZww033ACAYRgopTCbzXz88cecfPLJmEwmDh8+3OSxhw8fJicnJxbNjoj29P20005r8bh4v+ZtmTZtWrAYSVZWVkJe99aE9j2cRLnuubm59O/fn7S0tOBto0aNQinF/v37GT58ODk5OQl53dvT9+YsFgsTJ06M++ueqHrSeA0yZsuY3ZSM2Yk9Zst4nTjjtazxbifDMHC5XK3eX1NTw86dO8nNze3CVkVOamoqGzZsYO3atcGv6667joKCAtauXcv06dOxWq1MnjyZTz/9NPg4wzD49NNPmTlzZgxbf3za0/dw4v2at2Xt2rXBfiXqdW9NaN/DSZTrftJJJ3Hw4EFqamqCt23fvh1d14OpWTNnzmxy3QGWLFkS99e9PX1vzufzsWHDhri/7j1Boo/XIGO2jNlNyZid2GO2jNcJNF7HbrK961RXV6s1a9aoNWvWKEA99thjas2aNWrv3r1KKaXuuOMOdfnllwePf/rpp9U777yjtm/frrZv365eeOEFlZKSou68887gMbfeeqtatmyZ2r17t/ryyy/VGWecobKyslRJSUmX9681He13c+FSt15//XVls9nU4sWL1ebNm9W1116r0tPTVXFxcTS70mHR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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_, axes = plt.subplots(1, 2, tight_layout=True, figsize=(10, 4))\n", + "\n", + "wvs = td.C_0 / freqs\n", + "\n", + "for ax, smatrix, label in zip(axes, [smatrix_start, smatrix_final], [\"before\", \"after\"]):\n", + " for port in ports:\n", + " amps = smatrix.sel(port_in=ports[0].name, port_out=port.name).data.squeeze()\n", + " ts = np.abs(amps) ** 2\n", + " loss = 10 * np.log10(ts)\n", + " ax.plot(wvs, loss, label=f\"{port.name}\")\n", + " ax.set_title(label)\n", + " ax.set_ylim([-25, 1])\n", + " ax.set_ylabel(\"loss (dB)\")\n", + " ax.set_xlabel(\"wavelength (um)\")\n", + " ax.grid(\"on\")\n", + " ax.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "d1b5690e-2057-443a-b45b-e161d8998e87", + "metadata": {}, + "source": [ + "As we can see, through transmission is very low loss whereas the transmission to the side ports is suppressed. " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "12865b8e-6017-4e8f-ad67-92e70389b2c5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2.34935260e-04, 8.71454911e-04, 9.90924129e-01, 8.71589045e-04])" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "abs(smatrix_final.interp(f=freq0).data.squeeze()) ** 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "45fe0072-e454-4340-aaa5-5903020c799e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "applications": [ + "Passive photonic integrated circuit components" + ], + "description": "This notebook demonstrates the adjoint optimization of a wavelength division multiplexer using autograd.", + "feature_image": "./img/adjoint_9.png", + "features": [ + "Adjoint inverse design", + "2D simulation" + ], + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "keywords": "inverse design, WDM, design optimization, adjoint, Tidy3D, FDTD", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.0" + }, + "title": "Adjoint Optimization of a WDM in Tidy3D | Flexcompute" + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/features/autograd.rst b/docs/features/autograd.rst index b771936a..87cb3646 100644 --- a/docs/features/autograd.rst +++ b/docs/features/autograd.rst @@ -33,3 +33,4 @@ The adjoint method is an extremely powerful tool for photonics optimization, all ../../Autograd22PhotonicCrystal ../../Autograd23FabricationAwareInvdes ../../Autograd24DigitalSplitter + ../../Autograd26Smatrix