{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "16f7a264",
   "metadata": {},
   "source": [
    "```{try_on_binder}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "334910e6",
   "metadata": {
    "load": "myst_code_init.py",
    "tags": [
     "remove-cell"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The pymor.discretizers.builtin.gui.jupyter extension is already loaded. To reload it, use:\n",
      "  %reload_ext pymor.discretizers.builtin.gui.jupyter\n"
     ]
    }
   ],
   "source": [
    "from IPython import get_ipython\n",
    "ip = get_ipython()\n",
    "if ip is not None:\n",
    "    ip.run_line_magic('load_ext', 'pymor.discretizers.builtin.gui.jupyter')\n",
    "    ip.run_line_magic('matplotlib', 'inline')\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\", category=UserWarning, module='torch')\n",
    "import pymor.tools.random\n",
    "pymor.tools.random._default_random_state = None\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "16d3ad27",
   "metadata": {},
   "source": [
    "# Tutorial: Model order reduction for unstable LTI systems\n",
    "\n",
    "In {doc}`tutorial_lti_systems` we introduced LTI systems of the form\n",
    "\n",
    "```{math}\n",
    "\\begin{align}\n",
    "    E \\dot{x}(t) & = A x(t) + B u(t), \\\\\n",
    "    y(t) & = C x(t) + D u(t).\n",
    "\\end{align}\n",
    "```\n",
    "\n",
    "If the system is asymptotically stable, i.e., all eigenvalues of the\n",
    "matrix pair {math}`(A, E)` lie in the open left half plane, methods like\n",
    "balanced truncation (see {doc}`tutorial_bt`) can be used for model\n",
    "order reduction. Asymptotic stability of the LTI system is a crucial\n",
    "assumption for balanced truncation because the controllability and\n",
    "observability Gramians are not defined if the matrix pair {math}`(A, E)` has\n",
    "eigenvalues with a positive real part (in this case we call the LTI system\n",
    "unstable). Additionally, commonly used system norms like the\n",
    "{math}`\\mathcal{H}_2` norm, the {math}`\\mathcal{H}_\\infty` norm, and\n",
    "the Hankel (semi)norm are not defined for unstable LTI systems.\n",
    "\n",
    "In this tutorial we show how unstable LTI systems with an invertible\n",
    "{math}`E` matrix can be reduced using pyMOR.\n",
    "\n",
    "## An unstable model\n",
    "\n",
    "We consider the following one-dimensional heat equation over {math}`(0, 1)` with\n",
    "one input {math}`u(t)` and one output {math}`y(t)`:\n",
    "\n",
    "```{math}\n",
    "\\begin{align}\n",
    "    \\partial_t T(\\xi, t) & = \\partial_{\\xi \\xi} T(\\xi, t) + \\lambda T(\\xi, t),\n",
    "    & 0 < \\xi < 1,\\ t > 0, \\\\\n",
    "    -\\partial_\\xi T(0, t) & = -T(0, t) + u(t),\n",
    "    & t > 0, \\\\\n",
    "    \\partial_\\xi T(1, t) & = -T(1, t),\n",
    "    & t > 0, \\\\\n",
    "    y(t) & = T(1, t),\n",
    "    & t > 0.\n",
    "\\end{align}\n",
    "```\n",
    "\n",
    "Depending on the choice of the parameter {math}`\\lambda`, the discretization of\n",
    "the above partial differential equation is an unstable LTI system. In order to\n",
    "build the {{ LTIModel }} we follow the lines of {doc}`tutorial_lti_systems`.\n",
    "\n",
    "First, we do the necessary imports and some matplotlib style choices."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b60aea60",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import scipy.sparse as sps\n",
    "from pymor.models.iosys import LTIModel\n",
    "\n",
    "plt.rcParams['axes.grid'] = True"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6b1f825",
   "metadata": {},
   "source": [
    "Next, we can assemble the matrices based on a centered finite difference\n",
    "approximation using standard methods of NumPy and SciPy. Here we use\n",
    "{math}`\\lambda = 50`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ca34f827",
   "metadata": {
    "load": "unstable_heat_equation.py"
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import scipy.sparse as sps\n",
    "\n",
    "k = 50\n",
    "n = 2 * k + 1\n",
    "lam = 50\n",
    "\n",
    "E = sps.eye(n, format='lil')\n",
    "E[0, 0] = E[-1, -1] = 0.5\n",
    "E = E.tocsc()\n",
    "\n",
    "d0 = n * [-2 * (n - 1)**2 + lam]\n",
    "d1 = (n - 1) * [(n - 1)**2]\n",
    "A = sps.diags([d1, d0, d1], [-1, 0, 1], format='lil')\n",
    "A[0, 0] = A[-1, -1] = -n * (n - 1) + lam / 2\n",
    "A = A.tocsc()\n",
    "\n",
    "B = np.zeros((n, 1))\n",
    "B[0, 0] = n - 1\n",
    "\n",
    "C = np.zeros((1, n))\n",
    "C[0, -1] = 1\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd24b14c",
   "metadata": {},
   "source": [
    "Then, we can create an {{ LTIModel }} from NumPy and SciPy matrices `A`, `B`, `C`,\n",
    "`E`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "29c84474",
   "metadata": {},
   "outputs": [],
   "source": [
    "fom = LTIModel.from_matrices(A, B, C, E=E)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8b8d70b3",
   "metadata": {},
   "source": [
    "First, let's check whether our system is indeed unstable. For this, we can use the\n",
    "method {meth}`~pymor.models.iosys.LTIModel.get_ast_spectrum`, which will\n",
    "compute the subset of system poles with a positive real part and the corresponding\n",
    "eigenvectors as well."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "6b24aeda",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 6.65573911+0.j 36.50842397+0.j 48.29293004+0.j]\n"
     ]
    }
   ],
   "source": [
    "ast_spectrum = fom.get_ast_spectrum()\n",
    "print(ast_spectrum[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "590959bc",
   "metadata": {},
   "source": [
    "In the code snippet above, all eigenvalues of the matrix pair {math}`(A, E)` are\n",
    "computed using dense methods. This works well for systems with a small state space\n",
    "dimension. For large-scale systems it is wiser to rely on iterative methods for\n",
    "computing eigenvalues. The code below redefines `fom` to compute 10 system poles\n",
    "that are close to 0 using pyMOR's iterative eigensolver and filters the result\n",
    "for values with a positive real part."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a4731cd3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c3e4257047c44673ac29c00be1e4bdd4",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Accordion(children=(HTML(value='', layout=Layout(height='16em', overflow_y='auto', width='100%')),), selected_…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 6.65573911+0.j 36.50842397+0.j 48.29293004+0.j]\n"
     ]
    }
   ],
   "source": [
    "fom = fom.with_(ast_pole_data={'k': 10, 'sigma': 0})\n",
    "ast_spectrum = fom.get_ast_spectrum()\n",
    "print(ast_spectrum[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0bcd3df3",
   "metadata": {},
   "source": [
    "## Frequency domain balanced truncation\n",
    "\n",
    "The controllability and observability Gramians (defined in the time-domain)\n",
    "introduced in {doc}`tutorial_lti_systems` do not exist for unstable systems.\n",
    "However, the frequency domain representations of these Gramians are defined for\n",
    "systems with no poles on the imaginary axis. Hence, for most unstable systems we\n",
    "can follow a similar approach to the one from {doc}`tutorial_bt` but using the\n",
    "frequency domain representations of the controllability and observability Gramians\n",
    "\n",
    "```{math}\n",
    "\\begin{align*}\n",
    "    P & =\n",
    "    \\frac{1}{2 \\pi} \\int_{-\\infty}^\\infty\n",
    "    (\\imath \\omega E - A)^{-1}\n",
    "    B B^{\\operatorname{T}}\n",
    "    (-\\imath \\omega E^{\\operatorname{T}} - A^{\\operatorname{T}})^{-1}\n",
    "    \\operatorname{d}\\!\\omega, \\text{ and} \\\\\n",
    "    E^{\\operatorname{T}} Q E & =\n",
    "    \\frac{1}{2 \\pi} E^{\\operatorname{T}} \\int_{-\\infty}^\\infty\n",
    "    (-\\imath \\omega E^{\\operatorname{T}} - A^{\\operatorname{T}})^{-1}\n",
    "    C^{\\operatorname{T}} C\n",
    "    (\\imath \\omega E - A)^{-1}\n",
    "    \\operatorname{d}\\!\\omega\\, E.\n",
    "\\end{align*}\n",
    "```\n",
    "\n",
    "Again, two Lyapunov equations have to be solved in order to obtain these Gramians.\n",
    "Additionally, it is necessary to perform a Bernoulli stabilization of the system\n",
    "matrices before solving the matrix equations. Both of these steps are done internally\n",
    "by the {class}`~pymor.reductors.bt.FDBTReductor`.\n",
    "\n",
    "Let us start with initializing a reductor object"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "32038d66",
   "metadata": {},
   "outputs": [],
   "source": [
    "from pymor.reductors.bt import FDBTReductor\n",
    "fdbt = FDBTReductor(fom)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f96f8c30",
   "metadata": {},
   "source": [
    "In order to perform a Bernoulli stabilization, knowledge about the anti-stable\n",
    "subset of system poles is required. Therefore,\n",
    "{class}`~pymor.reductors.bt.FDBTReductor` internally calls\n",
    "`fom.get_ast_spectrum` using the `ast_pole_data` attribute, which can be a list\n",
    "of anti-stable eigenvalues (with or without corresponding eigenvectors) or\n",
    "specifying how eigenvalues should be computed (`None` for computing all\n",
    "eigenvalues using dense methods or arguments for pyMOR's iterative eigensolver\n",
    "like in the code above).\n",
    "\n",
    "Before we use the {meth}`~pymor.reductors.bt.FDBTReductor.reduce` method to\n",
    "obtain a reduced-order model, we take a look at some a priori error bounds for\n",
    "the reductor. In particular, we get a {math}`\\mathcal{L}_\\infty` rather than the\n",
    "{math}`\\mathcal{H}_\\infty` error bound from classic balanced truncation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "ac65519c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "35f60eb8a5ac45e180a790c6ac6e28d5",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Accordion(children=(HTML(value='', layout=Layout(height='16em', overflow_y='auto', width='100%')),), selected_…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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wBcwUgP4gKysLJWXl+urr77SxRdfrLZt22r06NG65557dPDgQc2YMUP33nuvJOnPf/6zJk+erFOnTun+++9XWFiYsrKy9M9//lNZWVkaMGDAOe81efJkffnll0pJSdEjjzyi7t2769ixY9q4caO++OILHTt27IK+y+9//3stWbJEN9xwg0aPHq1WrVrpjTfeUHl5uf7whz9c0LUlKTc3V3fccYduu+02rV69Wu+++65GjhyppKSkRt//Zz/7mZ599lkNGzZMTzzxhMrKyvT666+ra9euTV4v5sUXX9SiRYt04403avTo0Tpz5oxeffVVXXnllfbwdPLkSXXq1El33323kpKS1KZNG33xxRdat26d/vznP19YBwHezL0PXwG4UBs3bjS33HKLGTBggElLSzPx8fHGYrEYSaZt27ZmzJgxpqCgwH5+RkaG/ef09HQze/ZsY4wx27dvN1OnTm3QPfPz882YMWNMfHy8CQgIMDExMWbAgAHmH//4h/0c22PM1e/dkGO27zRo0CDTpk0bExoaavr3729WrVrVqGvUd89t27aZu+++24SFhZl27dqZjIwMc+rUqUbf32bx4sXmqquuMoGBgaZbt27m3XffrfeR7pptfeutt4wkk5ub67B/+fLlpnfv3iYwMNBcfPHFZtq0aQ7XLC8vN08//bRJSkoyYWFhpnXr1iYpKcn8/e9/b1BfAL7KYkwTKtQAeLTTp0+ruLhYUVFRtYpZx48fr7vuukuBgYH69a9/rdLSUi1cuFDTp09XamqqbrrpJje1GgAuDKEGaGGOHz+uJ554QkVFRfrrX/+qXbt26aWXXlK/fv00YcIEdzcPAJqMUAMAAHwCTz8BAACfQKgBAAA+gVADAAB8QotZp8ZqterQoUMKCwtrtpf9AQAA5zLG6OTJk4qLi5Of37nHYlpMqDl06NAFL68OAADc48CBA+rUqdM5z2kxoSYsLEzS2U65kGXWKysrtXjxYt16660KCAhwVvNQB/ratehv16GvXYe+dp3m6uvi4mLFx8fb/x4/lxYTamxTTuHh4RccakJDQxUeHs4fkGZGX7sW/e069LXr0Neu09x93ZDSEQqFAQCATyDUAAAAn0CoAQAAPoFQAwAAfAKhBgAA+ARCDQAA8AmEGgAA4BMINQAAwCcQagAAgE8g1AAAAJ9AqAEAAD6BUOMEh4tOadWe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APgEQg0AAPAJhBoAAOATCDUAms2yZctksVhqvSDT1SZMmKCePXu65F6e8p2BlohQA0APPvigLBaLLBaLAgIC1KVLFz3zzDM6ffq0u5sGAA3Wyt0NAOAZbrvtNr311luqrKzUhg0blJ6eLovFopdfftndTfNIFRUVCgwM9LprA76MkRoAkqSgoCDFxMQoPj5eQ4cOVVpampYsWWI/brVaNWnSJHXp0kUhISFKSkrS3LlzHa7x6aefqmvXrgoJCVH//v21d+9eh+N1TQNNmTJFiYmJDvumT5+uK6+8UkFBQYqNjVVGRob92IkTJ/SLX/xCUVFRCg8P1y233KKcnByHz0+ePFnR0dEKCwvTww8/3KARp+XLl6tv3772e44bN05nzpyxH+/Xr58yMjL05JNPKjIyUoMGDWrQd5aklStX6sYbb1RISIji4+P1xBNPqLS01H48MTFRv/vd7/TAAw8oPDxcjz766HnbC6A2Qg2AWrZs2aJVq1Y5jBZMmjRJ77zzjqZNm6atW7fqV7/6lX7+859r+fLlkqQDBw5o+PDhGjJkiLKzs/WLX/xC48aNa/S9X3/9dY0ZM0aPPvqoNm/erI8++kiXXnqp/fg999yjI0eO6LPPPtOGDRt0zTXXaMCAATp27Jgkafbs2ZowYYJeeuklrV+/XrGxsfr73/9+znsePHhQt99+u5KTk5WTk6PXX39d//rXv/T73//e4by3335bgYGB+uqrrzRt2rQGfec9e/botttu01133aVvvvlGs2bN0sqVKx2CmiT96U9/UlJSkjZt2qTf/va3je43AJKa5d3fALxKenq68ff3N61btzZBQUFGkvHz8zNz5841xhhz+vRpExoaalatWuXwuYcfftjcd999xhhjxo8fb7p37+5w/NlnnzWSzPHjx40xxrzwwgsmKSnJ4ZxXXnnFdO7c2b4dFxdnfvOb39TZzv/+978mPDzcnD592mH/JZdcYt544w1jjDGpqalm9OjRDsdTUlJq3be65557znTr1s1YrVb7vqlTp5o2bdqYqqoqY4wxN998s+nVq5fD5xrynR9++GHz6KOP1voefn5+5tSpU8YYYzp37myGDh1ab/sANAw1NQAkSf3799frr7+u0tJSvfLKK2rVqpXuuusuSdLu3btVVlamgQMHOnymoqJCvXr1kiRt375dKSkpDsdTU1Mb1YYjR47o0KFDGjBgQJ3Hc3JyVFJSog4dOjjsP3XqlPbs2WNvx2OPPVarHV9++WW9992+fbtSU1NlsVjs+66//nqVlJTo+++/V0JCgiSpd+/etT53vu+ck5Ojb775Ru+99559nzFGVqtVubm5uuKKKyRJffr0qbd9ABqGUANAktS6dWv7NM/06dOVlJSkf/3rX3r44YdVUlIiSfrkk0900UUXOXwuKCiowffw8/OTMcZhX2Vlpf3nkJCQc36+pKREsbGxWrZsWa1jbdu2bXA7mqp169aN/kxJSYn+93//V0888UStY7aw1NRrA3BEqAFQi5+fn5577jllZmZq5MiR6t69u4KCgrR//37dfPPNdX7miiuu0EcffeSw7+uvv3bYjoqKUl5enowx9lGR7Oxs+/GwsDAlJiYqKytL/fv3r3WPa665Rnl5eWrVqlWt4uLq7VizZo0eeOCBettR12c+/PBDh3Z99dVXCgsLU6dOnc75ufN952uuuUbbtm1zqAsC0DwoFAZQp3vuuUf+/v6aOnWqwsLC9NRTT+lXv/qV3n77be3Zs0cbN27Uq6++qrfffluS9Nhjj2nXrl16+umntXPnTs2cOVMzZsxwuGa/fv1UUFCgP/zhD9qzZ4+mTp2qzz77zOGcCRMm6M9//rP+9re/adeuXfb7SFJaWppSU1M1dOhQLV68WHv37tWqVav0m9/8RuvXr5ckjR07VtOnT9dbb72lb7/9Vi+88IK2bt16zu86evRoHThwQI8//rh27NihhQsX6oUXXlBmZqb8/Or/z2RDvvOzzz6rVatWKSMjQ9nZ2dq1a5cWLlxYq1AYgBO4t6QHgCdIT083d955Z639kyZNMlFRUaakpMRYrVYzZcoU061bNxMQEGCioqLMoEGDzPLly+3nf/zxx+bSSy81QUFB5sYbbzTTp093KJo1xpjXX3/dxMfHm9atW5sHHnjATJw40aFQ2Bhjpk2bZr9PbGysefzxx+3HiouLzeOPP27i4uJMQECAiY+PN/fff7/Zv3+//ZyJEyeayMhI06ZNG5Oenm6eeeaZcxYKG2PMsmXLTHJysgkMDDQxMTHm2WefNZWVlfbjN998sxk7dmytzzXkO69du9YMHDjQtGnTxrRu3dpcffXVZuLEifbjnTt3Nq+88so52wfg/CzG1JjgBgAA8EJMPwEAAJ9AqAEAAD6BUAMAAHwCoQYAAPgEQg0AAPAJhBoAAOATCDUAAMAnEGoAAIBPINQAAACfQKgBAAA+gVADAAB8wv8HAHq0dgIuOF8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "error_bounds = fdbt.error_bounds()\n",
    "fig, ax = plt.subplots()\n",
    "ax.semilogy(range(1, len(error_bounds) + 1), error_bounds, '.-')\n",
    "ax.set_xlabel('Reduced order')\n",
    "_ = ax.set_title(r'$\\mathcal{L}_\\infty$ error bounds')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd4ef985",
   "metadata": {},
   "source": [
    "To get a reduced-order model of order 10, we call the `reduce` method with the\n",
    "appropriate argument:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "65e83d13",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bcaa4417ae394e20a82b5204f0a506e9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Accordion(children=(HTML(value='', layout=Layout(height='16em', overflow_y='auto', width='100%')),), selected_…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rom = fdbt.reduce(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6db8572",
   "metadata": {},
   "source": [
    "Alternatively, we can specify a desired error tolerance rather than the order\n",
    "of the reduced model.\n",
    "\n",
    "Finally, we can compute the relative {math}`\\mathcal{L}_\\infty` error to check\n",
    "the quality of the reduced-order model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "414fa105",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Linf error:   2.980e-09\n"
     ]
    }
   ],
   "source": [
    "err = fom - rom\n",
    "print(f'Relative Linf error:   {err.linf_norm() / fom.linf_norm():.3e}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "851f4082",
   "metadata": {},
   "source": [
    "Clearly, this result is in accordance with our previously computed\n",
    "{math}`\\mathcal{L}_\\infty` error bound:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "45e32d81",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linf error:   8.497e-10\n",
      "Linf upper bound:   1.646e-09\n"
     ]
    }
   ],
   "source": [
    "print(f'Linf error:   {err.linf_norm():.3e}')\n",
    "print(f'Linf upper bound:   {error_bounds[9]:.3e}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b9e86241",
   "metadata": {},
   "source": [
    "## Gap-IRKA\n",
    "\n",
    "The {class}`~pymor.reductors.h2.IRKAReductor` is specifically designed to find\n",
    "{math}`\\mathcal{H}_2`-optimal reduced-order models (see e.g. {cite}`GAB08`).\n",
    "Since we cannot compute {math}`\\mathcal{H}_2`-norms for unstable systems,\n",
    "we can not expect the IRKA to yield high-quality approximations for unstable\n",
    "full-order models.\n",
    "In {cite}`BBG19` the authors introduce a variant of the IRKA (the Gap-IRKA) which\n",
    "is based on the {math}`\\mathcal{H}_2`-gap-norm.\n",
    "As desired, this norm is defined for most unstable systems which makes the\n",
    "Gap-IRKA a suitable algorithm for finding reduced-order models for unstable systems.\n",
    "\n",
    "One major advantage of the {class}`~pymor.reductors.h2.GapIRKAReductor` over the\n",
    "{class}`~pymor.reductors.bt.FDBTReductor` is that\n",
    "no a priori information about the system poles is required. However, we do not\n",
    "obtain an a priori {math}`\\mathcal{L}_\\infty` error bound. Let us compute a\n",
    "reduced-order model of order 10 using the {class}`~pymor.reductors.h2.GapIRKAReductor`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "364143ae",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5564cf6f61cb4e26b012f63576fedfff",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Accordion(children=(HTML(value='', layout=Layout(height='16em', overflow_y='auto', width='100%')),), selected_…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from pymor.reductors.h2 import GapIRKAReductor\n",
    "gapirka = GapIRKAReductor(fom)\n",
    "rom = gapirka.reduce(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1963fb39",
   "metadata": {},
   "source": [
    "Beside the desired order of the reduced model, the `reduce` method has a few\n",
    "other arguments as well: `conv_crit` allows for choosing the stopping criterion\n",
    "of the algorithm. By specifying `conv_crit='sigma'` the relative change in\n",
    "interpolation points, `conv_crit='htwogap'` the relative change in\n",
    "{math}`\\mathcal{H}_2`-gap distance of the reduced-order models and `conv_crit='ltwo'` the\n",
    "relative change of {math}`\\mathcal{L}_2` distances of the reduced-order models are\n",
    "used as a stopping criterion. The `tol` argument sets the tolerance for\n",
    "any of the chosen stopping criterion.\n",
    "\n",
    "Again, we can compute the relative {math}`\\mathcal{L}_\\infty` error."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "9465d80e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Relative Linf error:   2.849e-09\n"
     ]
    }
   ],
   "source": [
    "err = fom - rom\n",
    "print(f'Relative Linf error:   {err.linf_norm() / fom.linf_norm():.3e}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7fc8987b",
   "metadata": {},
   "source": [
    "Download the code:\n",
    "{download}`tutorial_unstable_lti_systems.md`,\n",
    "{nb-download}`tutorial_unstable_lti_systems.ipynb`."
   ]
  }
 ],
 "metadata": {
  "jupyter": {
   "jupytext": {
    "cell_metadata_filter": "-all",
    "formats": "ipynb,myst",
    "main_language": "python",
    "text_representation": {
     "extension": ".md",
     "format_name": "myst",
     "format_version": "1.3",
     "jupytext_version": "1.11.2"
    }
   }
  },
  "jupytext": {
   "text_representation": {
    "format_name": "myst"
   }
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "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.9.16"
  },
  "source_map": [
   18,
   23,
   28,
   79,
   86,
   92,
   96,
   101,
   103,
   110,
   113,
   122,
   126,
   161,
   164,
   180,
   186,
   191,
   193,
   201,
   204,
   209,
   212,
   232,
   236,
   249,
   252
  ],
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "0445ef1842d54767abf194a527594f03": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "0667b0f828a344caa4a7e7ca70d19c78": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "15cbf69bc2c94c2e8665c324877f9c3d": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_7226765703fc4a72b2a264f240e7a5d7",
       "placeholder": "​",
       "style": "IPY_MODEL_46abbb85fce145b2b9d05fbd8258545f",
       "value": ""
      }
     },
     "18f7f00f77124a57ba2d12b4c70c03cb": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "19f9ef0352d24779ab613dfb1dd9a354": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "1a87dc0d54c84c57865e06c3d510af73": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "2d0d36d135e44a3b9f2cc5f14568f0f9": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_398babdfa20748b983db0a40e8b25164",
       "placeholder": "​",
       "style": "IPY_MODEL_359cc371b63c459f9476107a3d66f0b8",
       "value": "<p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 10 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 11 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 12 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 13 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 14 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 15 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 16 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 17 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 18 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 19 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 20 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 21 again</p><p style=\"line-height:120%\">00:01 <bold>eigs</bold>: Maximum of relative Ritz estimates at step 1: 2.64850e-05</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 16 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 17 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 18 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 19 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 20 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 21 again</p><p style=\"line-height:120%\">00:01 <bold>eigs</bold>: Maximum of relative Ritz estimates at step 2: 4.67071e-10</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 16 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 17 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 18 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 19 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 20 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 21 again</p><p style=\"line-height:120%\">00:01 <bold>eigs</bold>: Maximum of relative Ritz estimates at step 3: 3.24620e-15</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:01 <bold>eigs</bold>: Maximum of relative Ritz estimates at step 1: 1.54968e-29</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:01 <bold>eigs</bold>: Maximum of relative Ritz estimates at step 1: 1.03876e-26</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:01 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:01 <bold>eigs</bold>: Maximum of relative Ritz estimates at step 1: 9.43066e-30</p>"
      }
     },
     "359cc371b63c459f9476107a3d66f0b8": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "35f60eb8a5ac45e180a790c6ac6e28d5": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_c4cd89f343ab4fbdaa480cb78e99192b"
       ],
       "layout": "IPY_MODEL_8dfc4667f36c40b6ad615c12d9adfa88",
       "selected_index": null
      }
     },
     "398babdfa20748b983db0a40e8b25164": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "3c4f4fe6ab7e496a9991e1cb41d01b59": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "41412bd93a854a8b8e39fdbe00f95813": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_b7ba8c2e13704b75b4915716a6eaea12",
       "placeholder": "​",
       "style": "IPY_MODEL_ae1ad6051586491b9f6355614af8e900",
       "value": ""
      }
     },
     "46abbb85fce145b2b9d05fbd8258545f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "4b6624bd15e04be696fe2b94b7dc6e55": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "4e319171fddb4041936bf5d30bc91d4f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_7936aa049bc345f9b2354d1afdc352fc"
       ],
       "layout": "IPY_MODEL_9ec72f7332604478aea46bdbb1ee56ad",
       "selected_index": null
      }
     },
     "4fa7e7d0d92e46cfb7ecc516dc9ec00f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_cb53582fec6f46e68e3efe645924ddd1",
       "placeholder": "​",
       "style": "IPY_MODEL_1a87dc0d54c84c57865e06c3d510af73",
       "value": ""
      }
     },
     "5564cf6f61cb4e26b012f63576fedfff": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_cc6cf958104c4359bedcb25497ffb972"
       ],
       "layout": "IPY_MODEL_f160f611e2f54666963eccc6288ffb43",
       "selected_index": null
      }
     },
     "56ca1207337d479c884fa0124099a026": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "5c75a9c8e8694b7795dd746e4a1d2889": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "5e59348bd18e4cd2aad4dc884a7d239b": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_6341a5b09c0644ff998f0095ec28b5ae"
       ],
       "layout": "IPY_MODEL_8a4f400908fe443bacad853e3f99ff0a",
       "selected_index": null
      }
     },
     "62b549138ef24bf4a281596557dcaac3": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "6341a5b09c0644ff998f0095ec28b5ae": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_0445ef1842d54767abf194a527594f03",
       "placeholder": "​",
       "style": "IPY_MODEL_f06945229e1e4fbea6681f64732f354f",
       "value": ""
      }
     },
     "6db6c3c3d22b4b2cb6d391c0d901d7c8": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "6fd2b959084045f59e5ff0ac0d58f6ca": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_d5827a73988d4565b4cd192e12387ad8"
       ],
       "layout": "IPY_MODEL_56ca1207337d479c884fa0124099a026",
       "selected_index": null
      }
     },
     "70ee6f88596e476fa79344018331a714": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "7226765703fc4a72b2a264f240e7a5d7": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "7936aa049bc345f9b2354d1afdc352fc": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_62b549138ef24bf4a281596557dcaac3",
       "placeholder": "​",
       "style": "IPY_MODEL_bd5a43f541a2476b84596dbbae3d654c",
       "value": ""
      }
     },
     "7d59a9a733094f95982e9a9440e02d57": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "8060c1fa79c640faa2d2e9e0d17eaba5": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_a48b15ef3d8d4a99ae28cdd6f75b7a93",
       "placeholder": "​",
       "style": "IPY_MODEL_4b6624bd15e04be696fe2b94b7dc6e55",
       "value": "<p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p>"
      }
     },
     "83d708cc3f904a5ca2be61aebb345868": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_b2be44c76d8146008ada2a213f81a747"
       ],
       "layout": "IPY_MODEL_7d59a9a733094f95982e9a9440e02d57",
       "selected_index": null
      }
     },
     "8a4f400908fe443bacad853e3f99ff0a": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "8dfc4667f36c40b6ad615c12d9adfa88": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "9ec72f7332604478aea46bdbb1ee56ad": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "a48b15ef3d8d4a99ae28cdd6f75b7a93": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "a66ef2894dd74efab0c661fec6c29734": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "a73170ec90e64ce69046530e06cdda37": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "ac6369f708134cde9b4b7f7af538fd17": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_4fa7e7d0d92e46cfb7ecc516dc9ec00f"
       ],
       "layout": "IPY_MODEL_ddc06d57b78442fc9705470c2e9ac5b9",
       "selected_index": null
      }
     },
     "ac6d1dd5e14c4fc19c347c083681c481": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "ae1ad6051586491b9f6355614af8e900": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "ae95eff639ce4bcaa30acf53e32a0a47": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "b2be44c76d8146008ada2a213f81a747": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_a73170ec90e64ce69046530e06cdda37",
       "placeholder": "​",
       "style": "IPY_MODEL_ae95eff639ce4bcaa30acf53e32a0a47",
       "value": ""
      }
     },
     "b7ba8c2e13704b75b4915716a6eaea12": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "b7e14837e6a64df6b68566a7d2d06a87": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_41412bd93a854a8b8e39fdbe00f95813"
       ],
       "layout": "IPY_MODEL_d31b186a988d487cb23d05b5661bf927",
       "selected_index": null
      }
     },
     "baea7eed8b8b4db59890b5f36f7f45a0": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "bbce4a27449540069be764050be6bc4d": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_3c4f4fe6ab7e496a9991e1cb41d01b59",
       "placeholder": "​",
       "style": "IPY_MODEL_ca2528396e9346e7ba50c3c3c08c1ec5",
       "value": ""
      }
     },
     "bcaa4417ae394e20a82b5204f0a506e9": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_8060c1fa79c640faa2d2e9e0d17eaba5"
       ],
       "layout": "IPY_MODEL_19f9ef0352d24779ab613dfb1dd9a354",
       "selected_index": null
      }
     },
     "bd5a43f541a2476b84596dbbae3d654c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "c3e4257047c44673ac29c00be1e4bdd4": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_2d0d36d135e44a3b9f2cc5f14568f0f9"
       ],
       "layout": "IPY_MODEL_d30753c583d54587b447594bf396a2d7",
       "selected_index": null
      }
     },
     "c4cd89f343ab4fbdaa480cb78e99192b": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_0667b0f828a344caa4a7e7ca70d19c78",
       "placeholder": "​",
       "style": "IPY_MODEL_baea7eed8b8b4db59890b5f36f7f45a0",
       "value": "<p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 0: 2.35087e+01</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 1: 4.88678e-01</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 2: 2.77956e-02</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 3: 1.53979e-04</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 4: 4.81367e-09</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 5: 3.72362e-30</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 6: 0.00000e+00</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 7: 0.00000e+00</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 0: 2.35087e+01</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 1: 4.88678e-01</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 2: 2.77956e-02</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 3: 1.53979e-04</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 4: 4.81367e-09</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 5: 8.27486e-30</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 6: 0.00000e+00</p><p style=\"line-height:120%\">00:01 <bold>solve_bernoulli</bold>: Relative change of iterates at step 7: 0.00000e+00</p>"
      }
     },
     "ca2528396e9346e7ba50c3c3c08c1ec5": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "cb53582fec6f46e68e3efe645924ddd1": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "cc6cf958104c4359bedcb25497ffb972": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_fc9f7ae2f10340b88f41470e2f5159d3",
       "placeholder": "​",
       "style": "IPY_MODEL_ac6d1dd5e14c4fc19c347c083681c481",
       "value": "<p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Generating initial interpolation data</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Starting gap IRKA</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 1: 1.647171e+04</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 2: 9.112820e-01</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 3: 5.301505e-01</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 4: 9.167618e-02</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 5: 2.126237e-02</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 6: 4.797222e-03</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 7: 1.089198e-03</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 8: 2.469658e-04</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 1 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 2 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 3 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 4 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 5 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 6 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 7 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 8 again</p><p style=\"line-height:120%\">00:02 <bold>gram_schmidt</bold>: Orthonormalizing vector 9 again</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Operator projection ...</p><p style=\"line-height:120%\">00:02 <bold>LTIPGReductor</bold>: Building ROM ...</p><p style=\"line-height:120%\">00:02 <bold>GapIRKAReductor</bold>: Convergence criterion in iteration 9: 5.600619e-05</p>"
      }
     },
     "d30753c583d54587b447594bf396a2d7": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "d31b186a988d487cb23d05b5661bf927": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "d5827a73988d4565b4cd192e12387ad8": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_6db6c3c3d22b4b2cb6d391c0d901d7c8",
       "placeholder": "​",
       "style": "IPY_MODEL_70ee6f88596e476fa79344018331a714",
       "value": ""
      }
     },
     "d623f401382c4c04874bc14cca5244a9": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     },
     "d79263202d75402bac18be164025f3e1": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_15cbf69bc2c94c2e8665c324877f9c3d"
       ],
       "layout": "IPY_MODEL_18f7f00f77124a57ba2d12b4c70c03cb",
       "selected_index": null
      }
     },
     "ddc06d57b78442fc9705470c2e9ac5b9": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "e0a7eff06f144578a42a9a1774b93e81": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "HTMLModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "HTMLView",
       "description": "",
       "description_tooltip": null,
       "layout": "IPY_MODEL_d623f401382c4c04874bc14cca5244a9",
       "placeholder": "​",
       "style": "IPY_MODEL_5c75a9c8e8694b7795dd746e4a1d2889",
       "value": ""
      }
     },
     "e960dd8fbf7841fba5aa47e7b3102cfd": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_e0a7eff06f144578a42a9a1774b93e81"
       ],
       "layout": "IPY_MODEL_f47d1d8b632e4cae8dfb36976637cf9a",
       "selected_index": null
      }
     },
     "f06945229e1e4fbea6681f64732f354f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "DescriptionStyleModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "StyleView",
       "description_width": ""
      }
     },
     "f160f611e2f54666963eccc6288ffb43": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "f45ae4799e3047aeafa7a408b80a3916": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "AccordionModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/controls",
       "_model_module_version": "1.5.0",
       "_model_name": "AccordionModel",
       "_titles": {
        "0": "Log Output"
       },
       "_view_count": null,
       "_view_module": "@jupyter-widgets/controls",
       "_view_module_version": "1.5.0",
       "_view_name": "AccordionView",
       "box_style": "",
       "children": [
        "IPY_MODEL_bbce4a27449540069be764050be6bc4d"
       ],
       "layout": "IPY_MODEL_a66ef2894dd74efab0c661fec6c29734",
       "selected_index": null
      }
     },
     "f47d1d8b632e4cae8dfb36976637cf9a": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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,
       "overflow_x": null,
       "overflow_y": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "fc9f7ae2f10340b88f41470e2f5159d3": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "1.2.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "1.2.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border": 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": "16em",
       "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,
       "overflow_x": null,
       "overflow_y": "auto",
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": "100%"
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}