{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "df03ca2b-256f-472c-bcaf-e35a529143c6",
   "metadata": {},
   "source": [
    "# Multi-objective adjoint optimization\n",
    "\n",
    "In this notebook, we will show how to use autograd efficiently for objectives involving several simulations.\n",
    "\n",
    "One common application of this involves defining an objective function that may depend on several different definitions of your structures, each with some geometric or material modification. For example, including the performance of devices with slightly larger or smaller feature sizes into one's objective can serve to make optimization more robust to fabrication errors. For more details, see this [paper](https://link.springer.com/article/10.1007/s10409-009-0240-z). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5accbf7e-221b-46b8-8aa4-b010fde0a816",
   "metadata": {},
   "outputs": [],
   "source": [
    "import autograd as ag\n",
    "import autograd.numpy as anp\n",
    "import matplotlib.pylab as plt\n",
    "import tidy3d as td\n",
    "import tidy3d.web as web"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a908597-1bb4-45ff-8fc9-dca626011d5c",
   "metadata": {},
   "source": [
    "### Setup\n",
    "\n",
    "First, let's define the frequency that our objective will depend on"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "247c3045-6b11-4a86-9bc7-d9ba1a8c173e",
   "metadata": {},
   "outputs": [],
   "source": [
    "freq0 = 2e14\n",
    "wavelength = td.C_0 / freq0"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d96aca0f-a9da-4f8a-833c-5cefe8a3bb7f",
   "metadata": {},
   "source": [
    "Now we set up some physical parameters.\n",
    "\n",
    "We will be putting a `td.Box` in the center of a domain with a point source on one side and a diffraction monitor on the other.\n",
    "\n",
    "The objective will involve summing the power of the 0th order diffraction order.\n",
    "\n",
    "The gradient of this objective will be computed with respect to the permittivity of the box.\n",
    "\n",
    "We will adjust the size of the box by `dy` in the y direction and define a combined objective function that returns the average power when the box is either perturbed by `+dy`, `0`, or `-dy`, which emulates a treatment for enhancing device robustness via dilation and erosion effects, as described in the paper linked at the top of this notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "6894b8a3-4889-431f-bb68-f3bd28b73369",
   "metadata": {},
   "outputs": [],
   "source": [
    "permittivity_val = 2.0\n",
    "\n",
    "# box sizes (original design)\n",
    "lx = wavelength\n",
    "ly = wavelength\n",
    "lz = wavelength\n",
    "\n",
    "# amount by which we will change the box size in y\n",
    "dy = ly / 5.0\n",
    "\n",
    "buffer = 2 * wavelength\n",
    "\n",
    "Lx = lx + 2 * buffer\n",
    "Ly = ly + dy + 2 * buffer\n",
    "Lz = lz + 2 * buffer\n",
    "\n",
    "\n",
    "src_pos_x = -Lx / 2 + buffer / 2\n",
    "mnt_pos_x = +Lx / 2 - buffer / 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "7257c894-0eb8-4813-bc86-8d5ee9b4d639",
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_sim(permittivity: float, dy_sign: int) -> td.Simulation:\n",
    "    \"\"\"Make a simulation as a function of the box permittivity and the frequency.\"\"\"\n",
    "\n",
    "    box_size = ly + dy_sign * dy\n",
    "\n",
    "    box = td.Structure(\n",
    "        geometry=td.Box(center=(0.0, 0.0, 0.0), size=(lx, box_size, lz)),\n",
    "        medium=td.Medium(permittivity=permittivity),\n",
    "    )\n",
    "\n",
    "    src = td.PointDipole(\n",
    "        center=(src_pos_x, 0, 0),\n",
    "        polarization=\"Ey\",\n",
    "        source_time=td.GaussianPulse(\n",
    "            freq0=freq0,\n",
    "            fwidth=freq0 / 10,\n",
    "        ),\n",
    "    )\n",
    "\n",
    "    mnt = td.DiffractionMonitor(\n",
    "        center=(mnt_pos_x, 0, 0),\n",
    "        size=(0, td.inf, td.inf),\n",
    "        freqs=[freq0],\n",
    "        name=\"diffraction\",\n",
    "    )\n",
    "\n",
    "    return td.Simulation(\n",
    "        size=(Lx, Ly, Lz),\n",
    "        structures=[box],\n",
    "        monitors=[mnt],\n",
    "        sources=[src],\n",
    "        grid_spec=td.GridSpec.auto(wavelength=td.C_0 / freq0),\n",
    "        boundary_spec=td.BoundarySpec(\n",
    "            x=td.Boundary.pml(), y=td.Boundary.periodic(), z=td.Boundary.periodic()\n",
    "        ),\n",
    "        run_time=200 / src.source_time.fwidth,\n",
    "    )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e11b1338-e831-47f6-85d7-d3abe2aef5d5",
   "metadata": {},
   "source": [
    "Let's make a simulation for each of the perturbed size values and visualize them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c03a39c5-83e4-4e0d-84a2-c8bf86446b60",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAECCAYAAADjObRVAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWRdJREFUeJztnQmcFNW1xs/MMAvD4ADKKgjGJS7giho0iSbwBDVRE4LKc8FI1BhNgibGJQomakhc4vJckry4xC0qGsW45SmCK4iAMRo3oqwCw7ANMwyzMNPv912stqane7qq+lbVrarv769luru6q6pPnVP3u8s5RalUKiWEEEIIIYQQQgjRTrH+rySEEEIIIYQQQgig6CaEEEIIIYQQQnyCopsQQgghhBBCCPEJim5CCCGEEEIIIcQnKLoJIYQQQgghhBCfoOgmhBBCCCGEEEJ8gqKbEEIIIYQQQgjxCYpuQgghhBBCCCHEJyi6CSGEEEIIIYQQn6DoJoFw5plnyrBhw3z57jlz5khRUVH6sWDBAtffceKJJ6Y/P3z4cF+OkxBCssH4SAghuWGMJHGAopvEhssvv1zuv/9++dKXvuT6sxdeeKH67F577aXteK699lo5/vjjpX///ioQX3XVVY4/+9Zbb8kFF1wg++67r/To0UN22WUXOemkk+Tjjz/Ouv0HH3wg48aNk6qqKunTp4+cfvrpUltbq+1cCCHRJk7xMbORbH/Mmzev0/ZvvPGGfPWrX5XKykoZMGCA/OQnP5GGhgZt50IIiT5xipFg8eLFcsopp8jgwYNV7MOx/frXv5bGxsZO2zJGBkO3gPZDEs7//u//Snt7u6/7+K//+i856qijPH32yCOPVP/++c9/lnXr1mk5niuuuEIFrwMPPFD+8Y9/uPrs7373O3n99ddlwoQJst9++8maNWvktttuk4MOOkg1Ku09qStXrpSvf/3rUl1dLb/5zW9UoLzhhhvk3Xfflfnz50tZWZmW8yGE+APjo7v4aIGG4SGHHNLhtd13373D83/+858yevRo2XvvveX3v/+9ipeIj2iQPvfccwWdAyEkGBgj3cXIFStWyKGHHqrahRjAwWDM3LlzZdq0abJw4UKZOXNmelvGyOCg6CaBUFpaKkljyZIlajoUAnDfvn1dffaiiy6Shx56qINgPvnkk2XEiBHy29/+Vh544IH06xDaW7ZsUYEUI+IAwRY3kHvvvVfOOeccjWdFCNEN46O7+Gjxta99Tb73ve/lHb3q3bu3Gh3fYYcd1GvY79lnny3/93//J0cffbSnfRNCgoMx0l2MxKj7pk2b5LXXXlMzJgHagui4uO+++2Tjxo0qLgLGyODg9HKihfr6epkyZYpy1PLycunXr58SfYsWLcq6Hge9ibmmB0IoWiBo4HuHDBmivhejGBgFdtLjec8996jve/vttzu9B6FaUlIin332mfhFIeuPDj/88E4j1HvssYcKnphKbufxxx+Xb33rW2nBDcaMGSN77rmnPProo56PgRCiB8bHzuhan4nfdtu2bVnf27x5s7zwwgty2mmnpRuT4IwzzlBLcRgfCTEDxki9MRKxD2Bqup2BAwdKcXFxun3JGBksHOkmWvjhD38ojz32mJrGss8++8j69etVDxsEIqZEZ/LLX/5SfvCDH3R4DaO3mEKDYAuw7gRTdhDUzj33XCUqse7ksssuk9WrV8vNN9/c5TFhBOT888+XBx98UE3PsYPXELR33nnnvOfmdKpQz549VVD3i1QqJTU1NeleS4DfZu3atTJy5MhO22O0+9lnn/XteAghzmB89Cc+fv/731fLadD4xaj39ddf3yEWYokNBHlmfESD84ADDsjamCaEBA9jpN4YiWND58LkyZPlV7/6ley4447q3O+88061LAe5ggBjZMCkCNFAdXV16vzzz8/5/qRJk1JDhw7N+f7rr7+eKi0tTZ111lnp166++upUjx49Uh9//HGHbS+99NJUSUlJavny5er57NmzU7iU8W8mEydOTA0aNCjV1taWfm3RokVq+3vuuafT9kceeWRq33337fAatnXyyPZ9oLa2Vr0/bdq0VCHcf//96nvuuuuu9GtvvfWWeu2+++7rtP3FF1+s3mtqaipov4SQwmB81Bsf8XuMHz9excKZM2empk+fntpxxx1TFRUV6vgtZsyYob77lVde6fQdEyZMSA0YMMDxPgkh/sEYqb8NifPv3r17h3388pe/7LANY2SwcKSbaKFXr17y5ptvyqpVq2TQoEGuPoskYehRRK/aHXfckX59xowZavQCa03sPYWYOo11za+88oqceuqpXX43psj89a9/ldmzZ6tEEVYPZffu3WX8+PGOjg9Tb5xgH4HWzYcffqh6XEeNGiWTJk1Kv75161b1b7be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",
      "text/plain": [
       "<Figure size 1000x400 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f, axes = plt.subplots(1, 3, tight_layout=True, figsize=(10, 4))\n",
    "\n",
    "for ax, dy_sign in zip(axes, (-1, 0, 1)):\n",
    "    sim = make_sim(permittivity=permittivity_val, dy_sign=dy_sign)\n",
    "    ax = sim.plot(z=0, ax=ax)\n",
    "    ax.set_title(f\"size[y]={sim.structures[0].geometry.size[1]:.2f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2aa83e08-2983-4d8d-b85b-31584c96872d",
   "metadata": {},
   "source": [
    "### Define Objective\n",
    "\n",
    "Now let's define our objective function, first we defined how to postprocess a `SimulationData` to give the desired power."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e673c7d6-e44f-4086-bf98-d201739201fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "def post_process(sim_data: td.SimulationData) -> float:\n",
    "    \"\"\"O-th order diffracted power.\"\"\"\n",
    "    amp = sim_data[\"diffraction\"].amps.sel(orders_x=0, orders_y=0).values\n",
    "    return anp.sum(anp.abs(amp) ** 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56d3acce-0f8b-493d-9cf7-0568720827f5",
   "metadata": {},
   "source": [
    "And then we write our combined, multi-objective over all of the `dy` values.  We use the `web.run` function to run a list of these three simulations simultaneously."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "86e4ec1c-89ca-474c-83d1-68c6c3bcbdb3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def objective(permittivity: float) -> float:\n",
    "    \"\"\"Average of O-th order diffracted power over all dy_sign values.\"\"\"\n",
    "    sims = {f\"sign = {dy_sign}\": make_sim(permittivity, dy_sign=dy_sign) for dy_sign in (-1, 0, 1)}\n",
    "\n",
    "    batch_data = web.run(sims, path=\"data\", verbose=True)\n",
    "\n",
    "    power = sum(post_process(sim_data) for sim_data in batch_data.values()) / len(batch_data)\n",
    "    return power"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "318b2a19-5536-4332-9903-8f63ce8ae502",
   "metadata": {},
   "source": [
    "### Multi-Objective Gradient Calculation\n",
    "\n",
    "Finally, we are ready to use `ag.value_and_grad` to differentiate this function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "15546df4-05b5-480f-8a10-32a69f434088",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7350fb8cd879458abd842a4563a6e36d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ecdc5bb7e79644f990f0b9990c053b09",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e682d2385674482183471694c79eb659",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "3eaca0b7fcdd49f2bf9a5b28d5b0f943",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b4976425040b4d1389215556a7a2b1e0",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:20:19 CEST </span>Started working on Batch containing <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">3</span> tasks.                      \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:20:19 CEST\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m3\u001b[0m tasks.                      \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:20:22 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.075</span> for the whole batch.               \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:20:22 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.075\u001b[0m for the whole batch.               \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Use <span style=\"color: #008000; text-decoration-color: #008000\">'Batch.real_cost()'</span> to get the billed FlexCredit cost after   \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>the Batch has completed.                                          \n",
       "</pre>\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   \n",
       "\u001b[2;36m              \u001b[0mthe Batch has completed.                                          \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "52d4707ae25d41218348d173f20c5a36",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:22:42 CEST </span>Batch complete.                                                   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:22:42 CEST\u001b[0m\u001b[2;36m \u001b[0mBatch complete.                                                   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f26e256bbda14c34a7d4a3c7162bcd06",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:22:50 CEST </span>Started working on Batch containing <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">3</span> tasks.                      \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:22:50 CEST\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m3\u001b[0m tasks.                      \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:22:55 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.075</span> for the whole batch.               \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:22:55 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.075\u001b[0m for the whole batch.               \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Use <span style=\"color: #008000; text-decoration-color: #008000\">'Batch.real_cost()'</span> to get the billed FlexCredit cost after   \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>the Batch has completed.                                          \n",
       "</pre>\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   \n",
       "\u001b[2;36m              \u001b[0mthe Batch has completed.                                          \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4db2caf214744d688819729c9b5ec620",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">12:23:10 CEST </span>Batch complete.                                                   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m12:23:10 CEST\u001b[0m\u001b[2;36m \u001b[0mBatch complete.                                                   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "42f297adbddd459ca34f6772a84d70a7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "20f103937c42456fb72eb258670b1617",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "97bc24257235423e84373b9f932f62a8",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "average power = 2.64e+00\n",
      "derivative of average power wrt permittivity = -8.47e-01\n"
     ]
    }
   ],
   "source": [
    "grad_objective = ag.value_and_grad(objective)\n",
    "\n",
    "power_average, grad_power_min = grad_objective(permittivity_val)\n",
    "print(f\"average power = {power_average:.2e}\")\n",
    "print(f\"derivative of average power wrt permittivity = {grad_power_min:.2e}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cbb1fa38-7212-48d2-bd3c-6538f39d378a",
   "metadata": {},
   "source": [
    "### Sanity Checking: Manual Loop over size\n",
    "\n",
    "Now we will implement the brute force approach to computing the multi-objective gradient by the naive approach of looping over dy values and computing the individual gradient contributions one by one."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "722f8199-6316-49d0-a53d-2e39c3f649cd",
   "metadata": {},
   "outputs": [],
   "source": [
    "def grad_manual(permittivity: float) -> float:\n",
    "    \"\"\"Average of O-th order diffracted power over all dy_sign values.\"\"\"\n",
    "\n",
    "    grad_avg = 0.0\n",
    "\n",
    "    for dy_sign in (-1, 0, 1):\n",
    "        print(f\"working on dy_sign = {dy_sign}\")\n",
    "\n",
    "        def objective_fn(p, dy_sign=dy_sign):\n",
    "            sim = make_sim(p, dy_sign=dy_sign)\n",
    "            sim_data = td.web.run(sim, task_name=f\"dy_sign={dy_sign}\", verbose=False)\n",
    "            return post_process(sim_data)\n",
    "\n",
    "        grad_fn = ag.grad(objective_fn)\n",
    "\n",
    "        gradient = grad_fn(permittivity)\n",
    "        grad_avg += gradient / 3.0\n",
    "\n",
    "    return grad_avg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "4662f3ea-ec95-4d40-8ac9-255ca3228b18",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "working on dy_sign = -1\n",
      "working on dy_sign = 0\n",
      "working on dy_sign = 1\n"
     ]
    }
   ],
   "source": [
    "grad_man = grad_manual(permittivity_val)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "274b87fc-b3d4-4d33-a782-d0338b694220",
   "metadata": {},
   "source": [
    "We can see that they match, as expected."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "24aa18da-fa10-4307-acde-ca0ac24bf98e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gradient (batched) = -8.4677e-01\n",
      "gradient (looped) = -8.4677e-01\n"
     ]
    }
   ],
   "source": [
    "print(f\"gradient (batched) = {grad_power_min:.4e}\")\n",
    "print(f\"gradient (looped) = {grad_man:.4e}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2386142b-fe8e-4fa2-b80d-942db85b4d0c",
   "metadata": {},
   "source": [
    "## Takeaways\n",
    "\n",
    "The main thing to note here is that, using `web.run`, all of the individual simulations were uploaded at roughly the same time.\n",
    "\n",
    "This means that the server is able to work on them concurrently rather than needing to wait for the previously uploaded one to finish. The time savings for applications with several simulations can be enormous.\n"
   ]
  }
 ],
 "metadata": {
  "description": "This notebook demonstrates how to perform multi-objective adjoint optimization in Tidy3D FDTD.",
  "feature_image": "",
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "keywords": "adjoint optimization, multi-objective, 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.11.2"
  },
  "title": "Multi-objective Adjoint Optimization in Tidy3D | Flexcompute",
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "0172e964c13348fc8e48908bfc282672": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_ba5894ecac91402cb58e1acfccf46c8c",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">1.3/1.3 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m1.3/1.3 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "029f76bafae2431087ec71f7c90dbe72": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_9701023e40e342efb9ad862ca9e75f08",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">1.3/1.3 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m1.3/1.3 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "03e03415151e4b46b73c831ec303758f": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_04ab25b62ee74156bc1776ea4157869e",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">↓</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">monitor_data.hdf5</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">62.7/62.7 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mmonitor_data.hdf5\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m62.7/62.7 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "04ab25b62ee74156bc1776ea4157869e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "10da14b764cf47db8d9f8e7b7edd0cd0": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "13cfbe9cfc2446c7ad760c4ac47a8e14": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_1cf423d7c88f4e8fbb4a191c40e5d951",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">↓</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">monitor_data.hdf5</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">38.3/38.3 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mmonitor_data.hdf5\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m38.3/38.3 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "1cf423d7c88f4e8fbb4a191c40e5d951": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "29f8590c361b48bca1e12494fcfb8ab4": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_95536a961542477b8bcfb90afc30a276",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_info.json</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">174/174 bytes</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34mjax_info.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m174/174 bytes\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "3ed07f6927d54b3a809fd1a2af1e7a89": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "415d1fd49bd94508b4e4d77fa274fcb2": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "499d3648550b48f3bbf9220599befb23": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "4c2ee4134272409d94da42708a5c6c6c": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_7c15683d4633430182172947a7fcfcd5",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">↓</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_sim_vjp.hdf5</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">6.2/6.2 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mjax_sim_vjp.hdf5\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m6.2/6.2 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "4f1e8a2d262e4ce091d65797c1d76975": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "51362b4ae19f425c894721e7153a3876": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "5253d6ea70a843e4b9bdc30d86b7eca1": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "532c83763d6845d79f635c392ba2ba10": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "544887ce1b4d459cb05cecb61eb0b546": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "5b287f1ec54d4edc812b0e5be7d78757": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_415d1fd49bd94508b4e4d77fa274fcb2",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">0: status = success <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n1: status = success <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "0: status = success \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n1: status = success \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "67909a05940f4ea4b748b21a64df558e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "70d7dacfaea84f63b243825524612c32": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_aea6d00970cd4766bdf824f29f868ae1",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">1.3/1.3 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m1.3/1.3 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "7c15683d4633430182172947a7fcfcd5": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "7e7995ffb7fb485faeba5de693a949bf": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_10da14b764cf47db8d9f8e7b7edd0cd0",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_info.json</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">174/174 bytes</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34mjax_info.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m174/174 bytes\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "873b53aac2e7469da4adede58ca2ef40": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_3ed07f6927d54b3a809fd1a2af1e7a89",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_info.json</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">174/174 bytes</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34mjax_info.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m174/174 bytes\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "93e15d5f9103491ca4993df8a02c2e47": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_544887ce1b4d459cb05cecb61eb0b546",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_info.json</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">174/174 bytes</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34mjax_info.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m174/174 bytes\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "95536a961542477b8bcfb90afc30a276": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "959610552153492fba3e08354bca36df": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "96bc63fb59434b819086fa5682fee872": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_959610552153492fba3e08354bca36df",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_info.json</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">174/174 bytes</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34mjax_info.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m174/174 bytes\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "9701023e40e342efb9ad862ca9e75f08": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "98d30ee9221c4cea80f01809b2174f15": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_499d3648550b48f3bbf9220599befb23",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">↓</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">monitor_data.hdf5</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">38.3/38.3 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mmonitor_data.hdf5\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m38.3/38.3 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "99ea96ecfe0c4c8cb8b729c34ee2214e": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_c50da78e61394243b49a8765d0c9a444",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">↓</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">monitor_data.hdf5</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">62.7/62.7 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mmonitor_data.hdf5\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m62.7/62.7 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "9d3b76b56f1b4221b4caf4d7ce79c2d6": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_d8a41f8c96b94e4f9468c898ae5a392c",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_info.json</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">174/174 bytes</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34mjax_info.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m174/174 bytes\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "a11d036d61b943ac86f9e63b61d52470": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_532c83763d6845d79f635c392ba2ba10",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">1.3/1.3 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m1.3/1.3 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "a144aa87ed224ee0b321964c7a8f7772": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "acd51b46b612471bab3c8b22516a3922": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_f122ef0abd49450e8f83740cda3ac323",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">0: status = success <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n1: status = success <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "0: status = success \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n1: status = success \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "aea6d00970cd4766bdf824f29f868ae1": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "ba5894ecac91402cb58e1acfccf46c8c": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "c2b803fa49ab4a07bb3798c9de3c0e96": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "c3149c9924b048d0a3f6907d76aebee3": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_5253d6ea70a843e4b9bdc30d86b7eca1",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #008000; text-decoration-color: #008000; font-weight: bold\">↓</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_sim_vjp.hdf5</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">6.2/6.2 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;32m↓\u001b[0m \u001b[1;34mjax_sim_vjp.hdf5\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m6.2/6.2 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "c50da78e61394243b49a8765d0c9a444": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "cbd4906e48eb4f709d880b992f3a5ad6": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_67909a05940f4ea4b748b21a64df558e",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">1.2/1.2 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m1.2/1.2 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "cfc68a61986d4370a7c4f9169d174400": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_a144aa87ed224ee0b321964c7a8f7772",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_info.json</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">174/174 bytes</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34mjax_info.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m174/174 bytes\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "d8a41f8c96b94e4f9468c898ae5a392c": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "d908c62a0abc41ca8216cb681e60f691": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_c2b803fa49ab4a07bb3798c9de3c0e96",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">simulation.hdf5.gz</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">1.2/1.2 kB</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34msimulation.hdf5.gz\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m1.2/1.2 kB\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "e548311d8f314223b890f683f4fda5b7": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_4f1e8a2d262e4ce091d65797c1d76975",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">0: status = success <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n1: status = success <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "0: status = success \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n1: status = success \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "e60fcdf2b7dd46e18a0405558c993289": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_51362b4ae19f425c894721e7153a3876",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #800000; text-decoration-color: #800000; font-weight: bold\">↑</span> <span style=\"color: #000080; text-decoration-color: #000080; font-weight: bold\">jax_info.json</span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100.0%</span> • <span style=\"color: #008000; text-decoration-color: #008000\">174/174 bytes</span> • <span style=\"color: #800000; text-decoration-color: #800000\">?</span> • <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "\u001b[1;31m↑\u001b[0m \u001b[1;34mjax_info.json\u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100.0%\u001b[0m • \u001b[32m174/174 bytes\u001b[0m • \u001b[31m?\u001b[0m • \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "f122ef0abd49450e8f83740cda3ac323": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
