{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "nbpresent": {
     "id": "c946231c-c70e-41a2-909e-b7a5fe1a0f51"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline\n",
    "from scipy.fftpack import dst, idst, dct, idct, fft, ifft, fftfreq"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbpresent": {
     "id": "6169d3fb-8707-412a-8ff6-337b205f034b"
    }
   },
   "source": [
    "# Fourier Spectral Methods"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbpresent": {
     "id": "2210efce-604f-48ca-b719-c4eed291c184"
    }
   },
   "source": [
    "### Periodic Domains (fft)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "nbpresent": {
     "id": "955fc913-199d-4644-bc30-ac7e1c6d0238"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on function ifft in module scipy.fftpack.basic:\n",
      "\n",
      "ifft(x, n=None, axis=-1, overwrite_x=False)\n",
      "    Return discrete inverse Fourier transform of real or complex sequence.\n",
      "    \n",
      "    The returned complex array contains ``y(0), y(1),..., y(n-1)`` where\n",
      "    \n",
      "    ``y(j) = (x * exp(2*pi*sqrt(-1)*j*np.arange(n)/n)).mean()``.\n",
      "    \n",
      "    Parameters\n",
      "    ----------\n",
      "    x : array_like\n",
      "        Transformed data to invert.\n",
      "    n : int, optional\n",
      "        Length of the inverse Fourier transform.  If ``n < x.shape[axis]``,\n",
      "        `x` is truncated.  If ``n > x.shape[axis]``, `x` is zero-padded.\n",
      "        The default results in ``n = x.shape[axis]``.\n",
      "    axis : int, optional\n",
      "        Axis along which the ifft's are computed; the default is over the\n",
      "        last axis (i.e., ``axis=-1``).\n",
      "    overwrite_x : bool, optional\n",
      "        If True, the contents of `x` can be destroyed; the default is False.\n",
      "    \n",
      "    Returns\n",
      "    -------\n",
      "    ifft : ndarray of floats\n",
      "        The inverse discrete Fourier transform.\n",
      "    \n",
      "    See Also\n",
      "    --------\n",
      "    fft : Forward FFT\n",
      "    \n",
      "    Notes\n",
      "    -----\n",
      "    This function is most efficient when `n` is a power of two, and least\n",
      "    efficient when `n` is prime.\n",
      "    \n",
      "    If the data type of `x` is real, a \"real IFFT\" algorithm is automatically\n",
      "    used, which roughly halves the computation time.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(ifft)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "nbpresent": {
     "id": "11d9ae44-ea82-4e00-a6ea-1a60dc03d1c0"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x10e9dd908>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10c96cdd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n = 99\n",
    "N = (99 -1) /2\n",
    "x = arange(n)/n * 2*pi\n",
    "y = sin(3 * x)\n",
    "k = fftfreq((n), 1/(n))\n",
    "plot(x,y,label=\"sin 3x\")\n",
    "\n",
    "dy = real(ifft(fft(y) * k * 1j ))\n",
    "plot(x,dy, label=\"fourier deriv\")\n",
    "legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbpresent": {
     "id": "ed886a70-f743-4832-9f72-e57efb515e14"
    }
   },
   "source": [
    "### Neumann/Dirichclet Boundary Conditions (dct, dst)\n",
    "\n",
    "Fourier derivative doesn't work near boundaries, so we have to use Sin/Cos basis, which is more difficult to use"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "nbpresent": {
     "id": "8b8b7536-6700-4049-bce9-0f40c82081f8"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x10eb85b70>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10c96cc50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n = 100\n",
    "x = arange(n+1)/n * pi\n",
    "y = sin(3*x)\n",
    "\n",
    "\n",
    "dy = real(ifft(fft(y) * fftfreq(n+1, 1/(n+1)) * 1j ))\n",
    "\n",
    "plot(x,y, label='sin 3x')\n",
    "plot(x,dy, label=\"fourier deriv\")\n",
    "legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "nbpresent": {
     "id": "702db8d1-754d-47a2-a595-02f2593ef0f4"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on function dst in module scipy.fftpack.realtransforms:\n",
      "\n",
      "dst(x, type=2, n=None, axis=-1, norm=None, overwrite_x=False)\n",
      "    Return the Discrete Sine Transform of arbitrary type sequence x.\n",
      "    \n",
      "    Parameters\n",
      "    ----------\n",
      "    x : array_like\n",
      "        The input array.\n",
      "    type : {1, 2, 3}, optional\n",
      "        Type of the DST (see Notes). Default type is 2.\n",
      "    n : int, optional\n",
      "        Length of the transform.  If ``n < x.shape[axis]``, `x` is\n",
      "        truncated.  If ``n > x.shape[axis]``, `x` is zero-padded. The\n",
      "        default results in ``n = x.shape[axis]``.\n",
      "    axis : int, optional\n",
      "        Axis along which the dst is computed; the default is over the\n",
      "        last axis (i.e., ``axis=-1``).\n",
      "    norm : {None, 'ortho'}, optional\n",
      "        Normalization mode (see Notes). Default is None.\n",
      "    overwrite_x : bool, optional\n",
      "        If True, the contents of `x` can be destroyed; the default is False.\n",
      "    \n",
      "    Returns\n",
      "    -------\n",
      "    dst : ndarray of reals\n",
      "        The transformed input array.\n",
      "    \n",
      "    See Also\n",
      "    --------\n",
      "    idst : Inverse DST\n",
      "    \n",
      "    Notes\n",
      "    -----\n",
      "    For a single dimension array ``x``.\n",
      "    \n",
      "    There are theoretically 8 types of the DST for different combinations of\n",
      "    even/odd boundary conditions and boundary off sets [1]_, only the first\n",
      "    3 types are implemented in scipy.\n",
      "    \n",
      "    **Type I**\n",
      "    \n",
      "    There are several definitions of the DST-I; we use the following\n",
      "    for ``norm=None``.  DST-I assumes the input is odd around n=-1 and n=N. ::\n",
      "    \n",
      "                 N-1\n",
      "      y[k] = 2 * sum x[n]*sin(pi*(k+1)*(n+1)/(N+1))\n",
      "                 n=0\n",
      "    \n",
      "    Only None is supported as normalization mode for DCT-I. Note also that the\n",
      "    DCT-I is only supported for input size > 1\n",
      "    The (unnormalized) DCT-I is its own inverse, up to a factor `2(N+1)`.\n",
      "    \n",
      "    **Type II**\n",
      "    \n",
      "    There are several definitions of the DST-II; we use the following\n",
      "    for ``norm=None``.  DST-II assumes the input is odd around n=-1/2 and\n",
      "    n=N-1/2; the output is odd around k=-1 and even around k=N-1 ::\n",
      "    \n",
      "                N-1\n",
      "      y[k] = 2* sum x[n]*sin(pi*(k+1)*(n+0.5)/N), 0 <= k < N.\n",
      "                n=0\n",
      "    \n",
      "    if ``norm='ortho'``, ``y[k]`` is multiplied by a scaling factor `f` ::\n",
      "    \n",
      "        f = sqrt(1/(4*N)) if k == 0\n",
      "        f = sqrt(1/(2*N)) otherwise.\n",
      "    \n",
      "    **Type III**\n",
      "    \n",
      "    There are several definitions of the DST-III, we use the following\n",
      "    (for ``norm=None``).  DST-III assumes the input is odd around n=-1\n",
      "    and even around n=N-1 ::\n",
      "    \n",
      "                                 N-2\n",
      "      y[k] = x[N-1]*(-1)**k + 2* sum x[n]*sin(pi*(k+0.5)*(n+1)/N), 0 <= k < N.\n",
      "                                 n=0\n",
      "    \n",
      "    The (unnormalized) DCT-III is the inverse of the (unnormalized) DCT-II, up\n",
      "    to a factor `2N`.  The orthonormalized DST-III is exactly the inverse of\n",
      "    the orthonormalized DST-II.\n",
      "    \n",
      "    .. versionadded:: 0.11.0\n",
      "    \n",
      "    References\n",
      "    ----------\n",
      "    .. [1] Wikipedia, \"Discrete sine transform\",\n",
      "           http://en.wikipedia.org/wiki/Discrete_sine_transform\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(dst)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbpresent": {
     "id": "b4e9e935-5efa-4e54-a020-bed28a02b2ad"
    }
   },
   "source": [
    "Which of the three DST types looks like it can be written as $f(x) = \\sum_k sin(x k)$? \n",
    "\n",
    "By the way, there are also three DCTs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "nbpresent": {
     "id": "39b7aa5b-cd84-45ae-9a2d-599e82203580"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on function dct in module scipy.fftpack.realtransforms:\n",
      "\n",
      "dct(x, type=2, n=None, axis=-1, norm=None, overwrite_x=False)\n",
      "    Return the Discrete Cosine Transform of arbitrary type sequence x.\n",
      "    \n",
      "    Parameters\n",
      "    ----------\n",
      "    x : array_like\n",
      "        The input array.\n",
      "    type : {1, 2, 3}, optional\n",
      "        Type of the DCT (see Notes). Default type is 2.\n",
      "    n : int, optional\n",
      "        Length of the transform.  If ``n < x.shape[axis]``, `x` is\n",
      "        truncated.  If ``n > x.shape[axis]``, `x` is zero-padded. The\n",
      "        default results in ``n = x.shape[axis]``.\n",
      "    axis : int, optional\n",
      "        Axis along which the dct is computed; the default is over the\n",
      "        last axis (i.e., ``axis=-1``).\n",
      "    norm : {None, 'ortho'}, optional\n",
      "        Normalization mode (see Notes). Default is None.\n",
      "    overwrite_x : bool, optional\n",
      "        If True, the contents of `x` can be destroyed; the default is False.\n",
      "    \n",
      "    Returns\n",
      "    -------\n",
      "    y : ndarray of real\n",
      "        The transformed input array.\n",
      "    \n",
      "    See Also\n",
      "    --------\n",
      "    idct : Inverse DCT\n",
      "    \n",
      "    Notes\n",
      "    -----\n",
      "    For a single dimension array ``x``, ``dct(x, norm='ortho')`` is equal to\n",
      "    MATLAB ``dct(x)``.\n",
      "    \n",
      "    There are theoretically 8 types of the DCT, only the first 3 types are\n",
      "    implemented in scipy. 'The' DCT generally refers to DCT type 2, and 'the'\n",
      "    Inverse DCT generally refers to DCT type 3.\n",
      "    \n",
      "    **Type I**\n",
      "    \n",
      "    There are several definitions of the DCT-I; we use the following\n",
      "    (for ``norm=None``)::\n",
      "    \n",
      "                                         N-2\n",
      "      y[k] = x[0] + (-1)**k x[N-1] + 2 * sum x[n]*cos(pi*k*n/(N-1))\n",
      "                                         n=1\n",
      "    \n",
      "    Only None is supported as normalization mode for DCT-I. Note also that the\n",
      "    DCT-I is only supported for input size > 1\n",
      "    \n",
      "    **Type II**\n",
      "    \n",
      "    There are several definitions of the DCT-II; we use the following\n",
      "    (for ``norm=None``)::\n",
      "    \n",
      "    \n",
      "                N-1\n",
      "      y[k] = 2* sum x[n]*cos(pi*k*(2n+1)/(2*N)), 0 <= k < N.\n",
      "                n=0\n",
      "    \n",
      "    If ``norm='ortho'``, ``y[k]`` is multiplied by a scaling factor `f`::\n",
      "    \n",
      "      f = sqrt(1/(4*N)) if k = 0,\n",
      "      f = sqrt(1/(2*N)) otherwise.\n",
      "    \n",
      "    Which makes the corresponding matrix of coefficients orthonormal\n",
      "    (``OO' = Id``).\n",
      "    \n",
      "    **Type III**\n",
      "    \n",
      "    There are several definitions, we use the following\n",
      "    (for ``norm=None``)::\n",
      "    \n",
      "                        N-1\n",
      "      y[k] = x[0] + 2 * sum x[n]*cos(pi*(k+0.5)*n/N), 0 <= k < N.\n",
      "                        n=1\n",
      "    \n",
      "    or, for ``norm='ortho'`` and 0 <= k < N::\n",
      "    \n",
      "                                          N-1\n",
      "      y[k] = x[0] / sqrt(N) + sqrt(2/N) * sum x[n]*cos(pi*(k+0.5)*n/N)\n",
      "                                          n=1\n",
      "    \n",
      "    The (unnormalized) DCT-III is the inverse of the (unnormalized) DCT-II, up\n",
      "    to a factor `2N`. The orthonormalized DCT-III is exactly the inverse of\n",
      "    the orthonormalized DCT-II.\n",
      "    \n",
      "    References\n",
      "    ----------\n",
      "    .. [1] 'A Fast Cosine Transform in One and Two Dimensions', by J.\n",
      "           Makhoul, `IEEE Transactions on acoustics, speech and signal\n",
      "           processing` vol. 28(1), pp. 27-34,\n",
      "           http://dx.doi.org/10.1109/TASSP.1980.1163351 (1980).\n",
      "    .. [2] Wikipedia, \"Discrete cosine transform\",\n",
      "           http://en.wikipedia.org/wiki/Discrete_cosine_transform\n",
      "    \n",
      "    Examples\n",
      "    --------\n",
      "    The Type 1 DCT is equivalent to the FFT (though faster) for real,\n",
      "    even-symmetrical inputs.  The output is also real and even-symmetrical.\n",
      "    Half of the FFT input is used to generate half of the FFT output:\n",
      "    \n",
      "    >>> from scipy.fftpack import fft, dct\n",
      "    >>> fft(np.array([4., 3., 5., 10., 5., 3.])).real\n",
      "    array([ 30.,  -8.,   6.,  -2.,   6.,  -8.])\n",
      "    >>> dct(np.array([4., 3., 5., 10.]), 1)\n",
      "    array([ 30.,  -8.,   6.,  -2.])\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(dct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "nbpresent": {
     "id": "4a006e5b-10f8-4eef-84c9-d2e0380dedc6"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x10ecc2dd8>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10eb556a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# remove end points\n",
    "yy = y[1:-1]\n",
    "\n",
    "# idst type-1\n",
    "y_dst = idst(yy, type=1)\n",
    "\n",
    "# take deriv\n",
    "dy_dct = arange(1,len(y_dst)+1) * y_dst\n",
    "\n",
    "# dct type-1 needs boundaries\n",
    "dy_dct = hstack((0, dy_dct, 0))\n",
    "\n",
    "# need to normalize properly\n",
    "# normalization is not handled automatically\n",
    "# in other words:\n",
    "#    dst(idst(x)) != x\n",
    "dy = dct(dy_dct, type=1)/dy_dct.shape[0]/2\n",
    "\n",
    "plot(x,y, label='sin 3x')\n",
    "plot(x,dy, label='Sin/Cos deriv')\n",
    "legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbpresent": {
     "id": "253cd197-c773-42f1-ba9f-a7fe7905f9a3"
    }
   },
   "source": [
    "# Finite differencing for Barotropic Equations\n",
    "\n",
    "$$ \\zeta_t + J(\\psi, \\zeta) = 0 $$\n",
    "$$ \\Delta \\psi = \\zeta$$\n",
    "\n",
    "The variable are defined by\n",
    "$$\\nabla \\psi = (-u, v)$$\n",
    "$$ J(a,b) = b_x a_y - a_x b_y$$ \n",
    "\n",
    "This jacobian is hard to approximate, and Arakawa (1966) is a famous finite difference scheme."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true,
    "nbpresent": {
     "id": "75b47a10-c609-4b1f-8bdf-267f99e821a2"
    }
   },
   "outputs": [],
   "source": [
    "%%bash\n",
    "\n",
    "open /Users/noah/Dropbox/Papers/Journal\\ Article/Arakawa_1966_Computational\\ design\\ for\\ long-term\\ numerical\\ integration\\ of\\ the\\ equations\\ of.pdf  /Users/noah/Dropbox/Papers/Journal\\ Article/Fix_1975_Finite\\ Element\\ Models\\ for\\ Ocean\\ Circulation\\ Problems.pdf /Users/noah/Dropbox/Papers/Journal\\ Article/Jespersen_1974_Arakawa\\'s\\ method\\ is\\ a\\ finite-element\\ method.pdf /Users/noah/Dropbox/Papers/Journal\\ Article/Naulin_Nielsen_2003_Accuracy\\ of\\ Spectral\\ and\\ Finite\\ Difference\\ Schemes\\ in\\ 2D\\ Advection\\ Problems.pdf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "nbpresent": {
     "id": "a9af0ed4-ca60-48ed-8e32-d4389d873d55"
    }
   },
   "source": [
    "# Demonstration\n",
    "\n",
    "Spectral code\n",
    "```\n",
    "python -m gnl.pdes.barotropic_spec\n",
    "```\n",
    "\n",
    "FD code\n",
    "```\n",
    "python -m gnl.pdes.barotropic_fd_par\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "nbpresent": {
     "id": "b9d237dc-24be-4921-a558-a894f76b2cfe"
    }
   },
   "outputs": [],
   "source": [
    "!open -a ITerm.app"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "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.5.2"
  },
  "nbpresent": {
   "slides": {
    "1b9c99e1-a44d-40b5-beae-c5c49f840eae": {
     "id": "1b9c99e1-a44d-40b5-beae-c5c49f840eae",
     "prev": "e125603a-62bb-479e-aed8-14b19bcd03a0",
     "regions": {
      "802eb4cb-056a-404d-a6f5-41e0286227fc": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "39b7aa5b-cd84-45ae-9a2d-599e82203580",
        "part": "whole"
       },
       "id": "802eb4cb-056a-404d-a6f5-41e0286227fc"
      }
     }
    },
    "1bf1fb9b-769d-48e0-8982-be6bc7f946ce": {
     "id": "1bf1fb9b-769d-48e0-8982-be6bc7f946ce",
     "prev": "33804cb0-a36a-4804-ae2b-b1eca4a1df46",
     "regions": {
      "97c40fb8-f1a0-40a4-a755-f922e3cd1b68": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "b9d237dc-24be-4921-a558-a894f76b2cfe",
        "part": "whole"
       },
       "id": "97c40fb8-f1a0-40a4-a755-f922e3cd1b68"
      }
     }
    },
    "27cce3de-7e56-4213-9793-3d701ddda8f6": {
     "id": "27cce3de-7e56-4213-9793-3d701ddda8f6",
     "prev": "1b9c99e1-a44d-40b5-beae-c5c49f840eae",
     "regions": {
      "ea040723-19f7-4cb0-9242-37698a2c5a36": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "4a006e5b-10f8-4eef-84c9-d2e0380dedc6",
        "part": "whole"
       },
       "id": "ea040723-19f7-4cb0-9242-37698a2c5a36"
      }
     }
    },
    "33804cb0-a36a-4804-ae2b-b1eca4a1df46": {
     "id": "33804cb0-a36a-4804-ae2b-b1eca4a1df46",
     "prev": "c9a93f6d-3152-4248-80d0-ffcc3496b1ed",
     "regions": {
      "3bb0eaeb-bb15-4812-979a-d33126d87ddc": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "a9af0ed4-ca60-48ed-8e32-d4389d873d55",
        "part": "whole"
       },
       "id": "3bb0eaeb-bb15-4812-979a-d33126d87ddc"
      }
     }
    },
    "4fae25f1-19ed-4016-af14-de04455678b7": {
     "id": "4fae25f1-19ed-4016-af14-de04455678b7",
     "prev": null,
     "regions": {
      "7398ed97-3965-4c4f-93b0-eb382b45c46b": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "c946231c-c70e-41a2-909e-b7a5fe1a0f51",
        "part": "whole"
       },
       "id": "7398ed97-3965-4c4f-93b0-eb382b45c46b"
      }
     }
    },
    "6166370a-f953-4d30-9d3b-dd537976b7e7": {
     "id": "6166370a-f953-4d30-9d3b-dd537976b7e7",
     "prev": "f75e5d82-11da-4a19-9860-cab4cc83a765",
     "regions": {
      "ac188e5f-69e5-4578-8c9c-b7786b3572fe": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "ed886a70-f743-4832-9f72-e57efb515e14",
        "part": "whole"
       },
       "id": "ac188e5f-69e5-4578-8c9c-b7786b3572fe"
      }
     }
    },
    "68404ac6-6f0f-45e2-9596-9d008828671b": {
     "id": "68404ac6-6f0f-45e2-9596-9d008828671b",
     "prev": "4fae25f1-19ed-4016-af14-de04455678b7",
     "regions": {
      "d0150091-bf11-4d93-9a29-022c24a32ed7": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "6169d3fb-8707-412a-8ff6-337b205f034b",
        "part": "whole"
       },
       "id": "d0150091-bf11-4d93-9a29-022c24a32ed7"
      }
     }
    },
    "8089bb13-c641-4342-80f9-5bb8ae1a0dc6": {
     "id": "8089bb13-c641-4342-80f9-5bb8ae1a0dc6",
     "prev": "27cce3de-7e56-4213-9793-3d701ddda8f6",
     "regions": {
      "e2c51127-16f1-4ec7-a597-f61624496456": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "253cd197-c773-42f1-ba9f-a7fe7905f9a3",
        "part": "whole"
       },
       "id": "e2c51127-16f1-4ec7-a597-f61624496456"
      }
     }
    },
    "9eff7bb5-5e74-490f-8adc-3a82579dee22": {
     "id": "9eff7bb5-5e74-490f-8adc-3a82579dee22",
     "prev": "68404ac6-6f0f-45e2-9596-9d008828671b",
     "regions": {
      "c1baa805-975e-4c78-97dc-2869fdfd0e29": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "2210efce-604f-48ca-b719-c4eed291c184",
        "part": "whole"
       },
       "id": "c1baa805-975e-4c78-97dc-2869fdfd0e29"
      }
     }
    },
    "b7e529c4-7cef-44bc-8dce-5e7a53ba898b": {
     "id": "b7e529c4-7cef-44bc-8dce-5e7a53ba898b",
     "prev": "6166370a-f953-4d30-9d3b-dd537976b7e7",
     "regions": {
      "4d001e19-c6ed-4f2a-b81c-d8148156bf70": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "8b8b7536-6700-4049-bce9-0f40c82081f8",
        "part": "whole"
       },
       "id": "4d001e19-c6ed-4f2a-b81c-d8148156bf70"
      }
     }
    },
    "c9a93f6d-3152-4248-80d0-ffcc3496b1ed": {
     "id": "c9a93f6d-3152-4248-80d0-ffcc3496b1ed",
     "prev": "8089bb13-c641-4342-80f9-5bb8ae1a0dc6",
     "regions": {
      "27f1a59d-96fc-4fd6-9c00-63bda0f17ae4": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "75b47a10-c609-4b1f-8bdf-267f99e821a2",
        "part": "whole"
       },
       "id": "27f1a59d-96fc-4fd6-9c00-63bda0f17ae4"
      }
     }
    },
    "e125603a-62bb-479e-aed8-14b19bcd03a0": {
     "id": "e125603a-62bb-479e-aed8-14b19bcd03a0",
     "prev": "e4522f2b-1926-47bb-94cd-07040164bc02",
     "regions": {
      "1574dcd2-404e-4cbb-90ee-81afb94d7f42": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "b4e9e935-5efa-4e54-a020-bed28a02b2ad",
        "part": "whole"
       },
       "id": "1574dcd2-404e-4cbb-90ee-81afb94d7f42"
      }
     }
    },
    "e4522f2b-1926-47bb-94cd-07040164bc02": {
     "id": "e4522f2b-1926-47bb-94cd-07040164bc02",
     "prev": "b7e529c4-7cef-44bc-8dce-5e7a53ba898b",
     "regions": {
      "a04ab461-4858-4a6b-b04e-6de13fe1284c": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "702db8d1-754d-47a2-a595-02f2593ef0f4",
        "part": "whole"
       },
       "id": "a04ab461-4858-4a6b-b04e-6de13fe1284c"
      }
     }
    },
    "effd201d-19f8-477f-aa97-154bcbdd3d31": {
     "id": "effd201d-19f8-477f-aa97-154bcbdd3d31",
     "prev": "9eff7bb5-5e74-490f-8adc-3a82579dee22",
     "regions": {
      "75a3a9ef-3cb2-4a12-ac40-6d8abcc578d3": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "955fc913-199d-4644-bc30-ac7e1c6d0238",
        "part": "whole"
       },
       "id": "75a3a9ef-3cb2-4a12-ac40-6d8abcc578d3"
      }
     }
    },
    "f75e5d82-11da-4a19-9860-cab4cc83a765": {
     "id": "f75e5d82-11da-4a19-9860-cab4cc83a765",
     "prev": "effd201d-19f8-477f-aa97-154bcbdd3d31",
     "regions": {
      "d073d2a5-d1c0-4597-9874-462682ecd15e": {
       "attrs": {
        "height": 0.8,
        "width": 0.8,
        "x": 0.1,
        "y": 0.1
       },
       "content": {
        "cell": "11d9ae44-ea82-4e00-a6ea-1a60dc03d1c0",
        "part": "whole"
       },
       "id": "d073d2a5-d1c0-4597-9874-462682ecd15e"
      }
     },
     "theme": null
    }
   },
   "themes": {
    "default": "49910f00-b6f7-444f-84d9-6f3e7342ea25",
    "theme": {}
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}