diff --git a/examples/userapi/07_sparse_operations.ipynb b/examples/userapi/07_sparse_operations.ipynb new file mode 100644 index 0000000000..4a1637777e --- /dev/null +++ b/examples/userapi/07_sparse_operations.ipynb @@ -0,0 +1,617 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sparse operations in devito\n", + "\n", + "In this tutorials, we look at the API devito offers for sparse operations:\n", + "\n", + "- `injection` that inject values at given sparse position (i.e point source)\n", + "- `interpolation` that reads the value of a field at sparse positions (i.e point measurments)\n", + "\n", + "In devito, sparse operation are define as methods for `SparseFunction`, `SparseTimeFunction`, `PrecomputedSparseFunction`, `PrecomputedSparseTimeFunction`. For practicality, we will only consider the time-dependent functions in this tutorials but all operations trivially apply to spatial-only functions" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from devito import *\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.ticker import AutoMinorLocator, FixedLocator" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "grid = Grid((51, 51))\n", + "nt = 11\n", + "f = TimeFunction(name=\"f\", grid=grid, space_order=4)\n", + "u = TimeFunction(name=\"u\", grid=grid, space_order=4, save=nt)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAANECAYAAAB/24QQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACXzUlEQVR4nOzdeXhTZf7//1dK0rI1h6W0LAIFR0AExQ8OCG6oKCoiOjoqKCjiShgdmVFkXAAZwRVxNO6AOOqAjo4jisgiuIHigLigoqKAIouyNClbk3J+f/hLvgktbU/anjbcz8d19Rp7ct736z53bhjfJjnx2LZtCwAAAAAMlVHTEwAAAACAmkRTBAAAAMBoNEUAAAAAjEZTBAAAAMBoNEUAAAAAjEZTBAAAAMBoNEUAAAAAjEZTBAAAAMBoNEUAAAAAjEZTBACl+Pjjj9W7d281aNBAHo9HK1eulCTNnTtX3bp1U926deXxeLRjxw7HY3s8Ho0cObJqJ1xNxo0bJ4/HU6FzPR6Pxo0bV70TQoUsXrxYHo9HixcvLvfctWvXyuPx6Jlnnqn2eQFAbUVTBMAIq1at0qWXXqpWrVopKytLLVu21CWXXKJVq1aVODcSieiPf/yjtm3bpgcffFD//Oc/1bZtW23dulUXXnih6tWrp2AwqH/+859q0KBBqXlLlizRuHHjUmqagOrwwgsvaMqUKTU9DQColbw1PQEAqG6vvPKKBg0apCZNmmj48OFq166d1q5dq6lTp+rf//63Zs6cqfPOOy9+/po1a7Ru3To99dRTuvLKK+PH586dq3A4rAkTJqhv375lZi5ZskTjx4/X5ZdfrkaNGlXXpVW72267TbfccktNTwMOnXjiidq9e7cyMzPjx1544QV98cUX+vOf/5x0btu2bbV79275fD6XZwkAtQdNEYCD2po1azRkyBC1b99e7777rpo1axZ/7IYbbtAJJ5ygIUOG6LPPPlP79u0lSVu2bJGkEs3MgY4fjHbu3KkGDRrI6/XK6z34/q/Ctm3t2bNH9erVq+mpVIuMjAzVrVu3Qud6PJ4KnwsAByvePgfgoHbfffdp165devLJJ5MaIknKycnRE088oZ07d+ree++VJF1++eU66aSTJEl//OMf5fF41KdPH/Xp00eXXXaZJOn3v/+9PB6PLr/88lIzx40bp5tuukmS1K5dO3k8Hnk8Hq1duzbpvFdffVVdunRRVlaWjjjiCM2dO7fEWBs2bNAVV1yhvLy8+HnTpk2r0LXv3r1b119/vXJycpSdna1zzjlHGzZsKPHZn9jnhr788ksNHjxYjRs31vHHH5/0WKK9e/fqxhtvVLNmzeLj/vTTTxWakyQ9/PDDOuKII1S/fn01btxYxxxzjF544YUS8/n666914YUXyu/3q2nTprrhhhu0Z8+epLGmT5+uU045Rbm5ucrKylLnzp312GOPlcjMz8/X2WefrbfeekvHHHOM6tWrpyeeeEKSNH/+fB1//PFq1KiRGjZsqI4dO+pvf/tbiWseO3asfve73ykrK0utW7fWzTffrL1795Z7vX369FGXLl20fPly9e7dW/Xq1VO7du30+OOPlzh3y5YtGj58uPLy8lS3bl0dddRRmjFjRonzZs6cqe7duys7O1t+v19du3bVQw89FH98/88U9enTR2+88YbWrVsX34/5+fmSDvyZorffflsnnHCCGjRooEaNGmngwIH66quvks6JPVffffdd/FVRy7I0bNgw7dq1K+nciqwzANSUg+8//wFAgtmzZys/P18nnHBCqY+feOKJys/P1xtvvCFJuuaaa9SqVStNnDhR119/vX7/+98rLy9PktSxY0c9+eSTuvPOO9WuXTsdeuihpY75hz/8Qd98843+9a9/6cEHH1ROTo4kJTVl77//vl555RWNGDFC2dnZ+sc//qHzzz9f69evV9OmTSVJmzdv1rHHHhu/MUOzZs305ptvavjw4QqFQiXeBrW/yy+/XC+++KKGDBmiY489Vu+884769+9/wPP/+Mc/6rDDDtPEiRNl2/YBz7vyyiv13HPPafDgwerdu7fefvvtMsdN9NRTT+n666/XBRdcEG9yPvvsM3300UcaPHhw0rkXXnih8vPzNWnSJH344Yf6xz/+oe3bt+vZZ5+Nn/PYY4/piCOO0DnnnCOv16vZs2drxIgR2rdvnwKBQNJ4q1ev1qBBg3TNNdfoqquuUseOHbVq1SqdffbZOvLII3XnnXcqKytL3333nT744IN43b59+3TOOefo/fff19VXX63DDz9cn3/+uR588EF98803evXVV8u97u3bt+uss87ShRdeqEGDBunFF1/Uddddp8zMTF1xxRWSfmti+/Tpo++++04jR45Uu3bt9NJLL+nyyy/Xjh07dMMNN0j6rbkYNGiQTj31VN1zzz2SpK+++koffPBB/Jz93XrrrSooKNBPP/2kBx98UJLUsGHDA853wYIFOvPMM9W+fXuNGzdOu3fv1sMPP6zjjjtOK1asiDdUic9Vu3btNGnSJK1YsUJPP/20cnNz4/OryDoDQI2yAeAgtWPHDluSPXDgwDLPO+ecc2xJdigUsm3bthctWmRLsl966aWk86ZPn25Lsj/++ONys++77z5bkv3DDz+UeEySnZmZaX/33XfxY59++qktyX744Yfjx4YPH263aNHC/vXXX5PqL774YtuyLHvXrl0HzF++fLktyf7zn/+cdPzyyy+3Jdljx46NHxs7dqwtyR40aFCJcWKPxaxcudKWZI8YMSLpvMGDB5cYtzQDBw60jzjiiDLPiWWec845ScdHjBhhS7I//fTT+LHS1qBfv352+/btk461bdvWlmTPnTs36fiDDz5oS7J/+eWXA87nn//8p52RkWG/9957Sccff/xxW5L9wQcflHk9J510ki3JfuCBB+LH9u7da3fr1s3Ozc21i4qKbNu27SlTptiS7Oeeey5+XlFRkd2rVy+7YcOG8f15ww032H6/345GowfMjO3hRYsWxY/179/fbtu2bYlzf/jhB1uSPX369Pix2Ny2bt0aP/bpp5/aGRkZ9tChQ+PHYs/VFVdckTTmeeedZzdt2jT+e0XWGQBqEm+fA3DQCofDkqTs7Owyz4s9HgqFqn1OMX379k16penII4+U3+/X999/L+m3z7y8/PLLGjBggGzb1q+//hr/6devnwoKCrRixYoDjh97K96IESOSjv/pT386YM21115b7rznzJkjSbr++uuTjpf3qlVMo0aN9NNPP+njjz8u99z9X+mJzT02B0lJnwkqKCjQr7/+qpNOOknff/+9CgoKkurbtWunfv36lZiPJP33v//Vvn37Sp3HSy+9pMMPP1ydOnVKeh5OOeUUSdKiRYvKvRav16trrrkm/ntmZqauueYabdmyRcuXL49fV/PmzTVo0KD4eT6fT9dff70KCwv1zjvvxOe8c+dOzZ8/v9zcVGzcuFErV67U5ZdfriZNmsSPH3nkkTrttNOS1j9m/71zwgknaOvWrfE/UxVZZwCoSTRFAA5asWYn1hwdSEWbp6rUpk2bEscaN26s7du3S5J++eUX7dixI/5ZqMSfYcOGSfp/N34ozbp165SRkaF27dolHf/d7353wJr9zy1r3P3fOtixY8dyayVp9OjRatiwoXr06KHDDjtMgUDggG+hOuyww5J+P/TQQ5WRkZH02awPPvhAffv2jX/upVmzZvHPqZTWFO3voosu0nHHHacrr7xSeXl5uvjii/Xiiy8m/Yv7t99+q1WrVpV4Hjp06CCp7OchpmXLliVu3x6rj13PunXrdNhhhykjI/n/mg8//PD449JvjW6HDh105pln6pBDDtEVV1xR6ufRUhXLKe05Pfzww/Xrr79q586dScf338+NGzeWpPh+rsg6A0BN4jNFAA5almWpRYsW+uyzz8o877PPPlOrVq3k9/tdmplUp06dUo/b//9neWL/snjppZfGb/CwvyOPPLJK5+TGndgOP/xwrV69Wq+//rrmzp2rl19+WY8++qjuuOMOjR8/vsza/W/4sGbNGp166qnq1KmTJk+erNatWyszM1Nz5szRgw8+WOJfuEu7vnr16undd9/VokWL9MYbb2ju3LmaNWuWTjnlFM2bN0916tTRvn371LVrV02ePLnUebVu3drhKlRObm6uVq5cqbfeektvvvmm3nzzTU2fPl1Dhw4t9aYMbihvP1dknQGgJtEUATionX322Xrqqaf0/vvvx++olui9997T2rVrk97aVBX2/xd4p2J3disuLi73O5FK07ZtW+3bt08//PBD0isu3333XaXmFRt3zZo1Sa8krF69usJjNGjQQBdddJEuuugiFRUV6Q9/+IPuuusujRkzJunW0N9++23Sqzvfffed9u3bF/+Q/+zZs7V371699tprSa9UVOTtbIkyMjJ06qmn6tRTT9XkyZM1ceJE3XrrrVq0aFH8bY6ffvqpTj311JSf159//jl+m/OYb775RpLi19O2bVt99tln2rdvX9KrRV9//XX88ZjMzEwNGDBAAwYM0L59+zRixAg98cQTuv322w/4amBF5x7LKe05/frrr5WTk3PALy0uS3nrDAA1ibfPATio3XTTTapXr56uueYabd26Nemxbdu26dprr1X9+vXjt9CuKrF/adyxY0dK9XXq1NH555+vl19+WV988UWJx3/55Zcy62OfnXn00UeTjj/88MMpzSfmzDPPlCT94x//SDo+ZcqUCtXv/xxkZmaqc+fOsm1bkUgk6bFgMJj0e2zusTnEXl2wE+6UV1BQoOnT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MWOGJk6cWOZYJ598sl588UWtXr1aL7/8stasWaMLLrgg6ZxRo0bp6aef1v3336+vv/5ar732mnr06FFirB07dmjo0KE69dRTU7quG2+8UbNnz9ZLL72kxYsXa9OmTTr//PPLrFmzZo2OP/54derUSYsXL9Znn32m2267TXXr1pUk/fzzz/r55591//3364svvtAzzzyjuXPnJq1dzPTp07Vx40b9/PPP+vrrr3XuuefGH8vMzNTgwYP1j3/8I6VrAwCgsmr12+cAwG1z5sxRVlaWjj322PixefPm6csvv9SCBQuUl5enbt266c4779To0aM1adIkZWVllTrWjTfeGP/ntm3b6pZbbtG5554bf4vJjz/+qCeeeEJffPGFOnbsKElq165dqWNde+21Gjx4sOrUqaNXX33V0TUVFBRo6tSpeuGFF3TKKafItm098sgj6tmzpz788MOka01066236qyzztK9994bP9a+fXsVFBRIkrp06aKXX345/tihhx6qu+66S5deeqmi0WjSZwoaNWqk5s2by7Zt1atXL95YxQwYMECnnXaadu/erXr16jm6PgAAKotXigAgwXvvvafu3bsnHVu6dKm6du2qvLy8+LF+/fopHA5r1apVFRp327Ztev7559W7d+/4e+0//vhjtWvXTq+//rratWun/Px8XXnlldq2bVtS7fTp0/X9999r7NixKV3T8uXLFYlE1Ldv3/ixDh06qE2bNlq6dGmpNfv27dMbb7yhDh06qF+/fsrNzVXPnj3LbcgKCgrk9/tLfMg6EAgoJydHPXv21HPPPVfizkHHHHOMotGoPvroo5SuEQCAyqApAoAE69atU8uWLZOObdq0KakhkhT/fdOmTWWON3r0aDVo0EBNmzbV+vXr9d///jf+2ObNm7V+/Xq99NJLevbZZ/XMM89o+fLlSW+x+/bbb3XLLbfoueeec3w3p8T5Z2ZmqlGjRiWu4UDz37JliwoLC3X33XfrjDPO0Lx583Teeefp/PPP1wcffFBqza+//qoJEybo6quvTjp+55136sUXX9T8+fP1hz/8QX/961/18MMPJ51Tv359WZaldevWpXSNAABUBm+fA4AEu3fvLvHWrsq46aabNHz4cK1bt07jx4/X0KFD9frrr0v67dWYvXv36tlnn1WHDh0kSVOnTlX37t21evVq/e53v9PgwYM1fvz4+ONu2bdvnyRp4MCB8bcBduvWTUuWLNG0adN01llnJZ0fCoXUv39/de7cWePGjUt67Pbbb4//c7du3bRt2zbdf//9uuGGG5LOq1evnnbt2lUNVwMAQNl4pQgAEuTk5Gj79u1Jx5o3b67NmzcnHYv93rx583LH69Chg0477TTNnDlTc+bM0YcffihJatKkibxeb1LDc/jhh0uS1q9fr3A4rP/9738aOXKkvF6vvF6v7rzzTn366afKycnR22+/XaFrat68uYqKirRjx44S13Cg+efk5Mjr9apz585Jxzt16qSffvop6Vg4HNYZZ5yh7Oxs/ec//yn3Vrzdu3fXTz/9pL179yYd37Ztm5o1a1ahawIAoCrRFAGApE/Wb9crK35Sbn5Hffnll0mP9erVS59//rm2bNkSPzZ//nxlZ2eXaBrKEnv1JdYMdOrUSdFoVGvWrImf880330j67cYMfr9fn3/+uVauXBn/ufbaa9WxY0e9++676tmzZ4Vyu3fvLp/Pp4ULF8aPffvtt1q/fr169epVak1mZqZ+//vfa/Xq1UnHv/32W7Vu3Tr+eygU0umnn67MzEy99tprFXqV7fPPP1fjxo2TblCxZs0a7dmzR0cffXSFrgkAgKrE2+cAGO+eN7/S4+/+IEkq+qWpNn+xStu3b1fjxo0lSaeffro6d+6sIUOG6N5779WmTZt0++2368orr4z/i/2yZcs0dOhQLVy4UK1atdJHH32kjz/+WMcff7waN26sNWvW6Pbbb9ehhx4ab0SOOuooHX300briiis0ZcoU7du3T4FAQKeddlr81aMuXbokzTU3N1d169ZV586d1aBBgwpdn2VZGj58uEaNGqUmTZooOztbgUBAvXr1SrrzXKdOnTRp0iSdd955kn57699FF12kE088USeffLLmzp2r2bNna/bs2ZL+X0O0a9cuPffccwqFQgqFQpKkZs2aqU6dOpo9e7Y2b96sY489VnXr1tW8efP04IMP6i9/+UvSHN977z21b99ehx56aMWfOAAAqgivFAEw2upNIT3x7vfx3zOb5cub2173P/5M/FidOnX0+uuvq06dOurVq5cuvfRSDRkyRH/729/i5+zatUurV6+O3267fv36euWVV3TqqaeqY8eOGj58uI488ki988478UYqIyND//nPf5STk6MTTzxR/fv31+GHH66Z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5BL5/X41atRIw4cPV2FhYZk1ffr0kcfjSfq59tpr44+/8MILysjIKHGOx+PRli1bSoz3wQcfyOv1qlu3bknHb7vtNt11110qKChwfF0AgIMPTREA1LBdu3Zp6tSpGj58ePxYcXGx+vfvr6KiIi1ZskQzZszQM888ozvuuKNCY958881q2bJlieOhUEj9+vVT69at9b///U/33Xefxo0bpyeffDJ+zuLFizVo0CAtWrRIS5cuVevWrXX66adrw4YNjq7rkksu0apVqzR//ny9/vrrevfdd3XNNdeUW3fVVVdp48aN8Z/Epu28887Tzz//nPR4v379dNJJJyk3NzdpnB07dmjo0KE69dRTS2R06dJFhx56qJ577jlH1wQAODjRFAFADZszZ46ysrJ07LHHxo/NmzdPX375pZ577jl169ZNZ555piZMmKBgMKiioqIyx3vzzTc1b9483X///SUee/7551VUVKRHHnlERxxxhC6++GJdf/31mjx5ctI5I0aMULdu3dSpUyc9/fTT2rdvnxYuXFjha/rqq680d+5cPf300+rZs6eOP/54Pfzww5o5c6Y2btxYZm39+vXVvHnz+I/f748/Vq9evaTH6tSpo7fffjupoYy59tprNXjwYPXq1avUnAEDBmjmzJkVviYAwMGLpggAath7772n7t27Jx1bunSpunbtGv9ibEnq16+fQqGQVq1adcCxNm/erKuuukr//Oc/Vb9+/RKPL126VCeeeKIyMzOTxl29erW2b99e6pi7du1SJBJRkyZNKnxNS5cuVaNGjXTMMcfEj/Xt21cZGRlavnx5mbXPP/+8cnJy1KVLF40ZM0a7du064LnPPvus6tevrwsuuCDp+PTp0/X9999r7NixB6zt0aOHli1bpr1791bwqgAAB6uUvry1pti2Ldu2U6pxWlcV9WSnZ3biOG5nm7rmpmbH/nfdunVq0aJF0lgbN25UXl5e0rHY28M2btyodu3alci2bVuXX365rrnmGnXv3j1+04bEeW7atEn5+flJxxLHbdSoUYm5xt6Kd+qpp1b4ujdu3Kjc3Nyk8+rUqaMmTZpo8+bNB6wfNGiQ2rZtq5YtW+qzzz7TLbfcotWrV+vll18uNXvq1KkaNGiQ6tatGz/+7bff6pZbbtG7776rOnXqlPhzHfu9RYsWKioq0saNG9W2bdsyr+dg2Wv8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Nn5s3rx5+vLLL7VgwQLl5eWpW7dumjBhgkaPHq2xY8eWOV52draaN29e6mPPP/+8ioqKNHXqVGVlZemII47QypUrNXnyZF199dXxcxI9/fTTevnll7Vw4UINGTKkQtf01Vdfae7cufr44491zDHHSJL+8Y9/qH///vr555+TXrXZX/369Q84f0l68MEH5fP59Msvv+izzz4r8XjDhg3VsGHD+O+ffvqpvvzyS913331J5w0YMEC33nprieMAkM54pQgAkJbee+89de/ePenY0qVL1bVrV+Xl5cWP9evXT6FQSKtWrSpzvLvvvltNmzbV0Ucfrfvuuy/pLXcffvihevfurczMzKRxV69ere3bt5c63q5duxSJRNSkSZMKX9PSpUvVqFGjeEMkSX379lVGRoY++uijMmuff/555eTkqEuXLhozZox27dpV4dzSPP300+rQoYN69+6ddLxHjx766aef+BwXgIMKrxQBANLSunXr1LJly6RjmzZtSmqIJMV/37Rpk9q3b1/qWNdff73+7//+T02aNNGSJUs0ZswYbdy4UZMnT47X7p+VOG7jxo1LjDl69Gi1bNlSffv2rfA1bdq0Sbm5uUnHvF6vGjdurE2bNh2wbvDgwWrbtq1atmypzz77TKNHj9bq1av1yiuvVDg70Z49e/T8889r9OjRJR6LrcO6deuSPssFAOmMpggAkJZ2796tunXrVslYo0aNiv/zkUceqczMTF1zzTWaNGmSsrKyHI939913a+bMmVq8eLHq1q0r27arZJ4HEnsLnyR17dpVLVq00Kmnnqo1a9aoTZs2jsf7z3/+o3A4rMsuu6zEY/Xq1ZOkSr8SBQC1CW+fAwCkpZycnBJvXWvevLk2b96cdCz2e1mft9lfz549FY1G428Ra968uX755ZcKjXv//ffr7rvv1rx583TkkUdWODM21pYtW5KORaNRbd++3fH8Jem7775zlB/z9NNP6+yzzy7xqpv0293xJKlZs2YpjQ0AtVFavVJk27bj/9oWq0n1v9JVpp7s9MxOHMftbFPX3NTsxHHczk7nNV+xbpvWbd2lZvkdtfiNV5LGOvbYY3XXXXdp8+bN8behzZs3T36/X4cffrj27NlToexPPvlEGRkZatasmWzbVs+ePXXbbbepqKgo/rmiefPmqWPHjmrUqFF8zHvvvVcTJ07U3Llz1b179xLPc3nZxx57rHbs2KH//e9/8c9LLVy4UPv27VOPHj0qvG6ffPKJpN+arAPN4UBj/fDDD1q0aJH++9//ljrvzz//XD6fT507dy53Pum+18h2Xp84jtvZpq65qdlVrVY3RcFgUMFgUMXFxZKkcDgsr9fZlG3bjn+/g8fjcTyHytSTnX7ZsQ9Wh0Ih9hrZ1ZrNXkst+18ffKN/fbJFtjzaWdBEn3+xSuvWrVOjRo0k/fYKSceOHTV48GCNGzdOW7Zs0W233abhw4drz549Kiws1PLlyzVixAi9+uqratmypZYtW6bly5fr+OOPV3Z2tpYtW6Zbb71VF154oTIyMlRQUKCzzz5b48eP12WXXaYbbrhBX331lf7xj3/orrvuUkFBgSRpypQpmjRpkp566ik1adJE33zzjSSpQYMGatCgQYWuu2XLljr11FM1fPhwTZ48WZFIRCNHjtQ555yjBg0aqKCgQD///LPOPfdcPfbYY+revbt++OEH/fvf/9Zpp52mJk2a6IsvvtCtt96q3r17q23btgqFQpKklStXau/evVq/fr127typ999/X5LUsWPHpBtIPPbYY2revLl69+6tgoKCEvNesGCBevXqpaKiIhUVFVXr823qPk/XbP5eI9ut7HA47LimPLW6KQoEAgoEAgqFQrIsS9nZ2bIsy9EYsU7SsqyUn/BU68lOv+xIJCJJ8vv98vl8rmabuuamZrPXnNevWLdN//pkizbslGxJapgvb257PfXCK/r7mBvj582ZM0cjRoxQv3791KBBAw0dOlR333236tSpI0nKyMjQt99+q3r16smyLDVt2lT//e9/dc8992jv3r1q166dbrzxRo0aNSr+eSK/369XXnlFY8aM0cknn6ycnBzdfvvtuuGGG+K5zzzzjIqKikp8DueOO+6I3w58ypQpmjFjhn744YcDXuesWbP0pz/9Seeee64yMjL0hz/8QXfeeWd8zbZv365vv/1WGRkZ8fm///77evzxx7Vz5061bt1aF1xwgW677Tb5/f74Xrvpppv07rvvxnNOPPFESdL3338ffyvcvn37NHPmTF1++eVq0qRJqc/Xq6++qrFjx1bo/4/Tda+Rzd9rZNfu7PK+kDsVtbop2l/sG7ZTrUultrL1ZKdXdqzGtOsmm72WDtnrtu6SLY9sSbZ+q7WOG6Rnn35cE275szIyfvuY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6667rsya7t27a/r06frqq6/01ltvybZtnX766fEvs46ZPn26Nm7cGP8599xz44899NBDSY/9+OOPatKkSdI6dOnSRYceeqiee+45R9cEAMDBJK2+pwjAwW3OnDnKysrSscceGz82b948ffnll1qwYIHy8vLUrVs3TZgwQaNHj9bYsWMPONaNN94Y/+e2bdvqlltu0bnnnqtIJCKfz6e//e1vsm1bBQUFsixLN9xwg+bNm6dXXnlFZ599tiSVeOXo6aef1ssvv6yFCxdqyJAhFbqmr776SnPnztXHH3+sY445RpL08MMP66yzzlK/fv0OWHf11VfH/zk/P19///vfddRRR2nt2rVq3759/LFGjRqpefPmpY5hWVbSF16/+uqr2r59u4YNG5Z03oABAzRz5kwFAoEKXRMAAAcbXikCUGu899576t69e9KxpUuXqmvXrsrLy4sf69evn0KhkFatWlWhcbdt26bnn39evXv3LvNb1gsKCtSkSZMDPr5r1y5FIpEyz9nf0qVL1ahRo3hDJEl9+/ZVRkaGvvnmmwqNsXPnTk2fPl3t2rVT69atkx4LBALKyclRjx49NG3atPi3hJdm6tSp6tu3r9q2bZt0vEePHlq2bJn27t1b4esCAOBgQlMEoNZYt26dWrZsmXRs06ZNSQ2RpPjvmzZtKnO80aNHq0GDBmratKnWr1+v//73vwc898UXX9THH39c4lWU/cdr2bKl+vbtW96lJM0/Nzc36ZjX61WTJk20ffv2MmsfffRRNWzYUA0bNtSbb76p+fPnKzMzM/74+PHj9eKLL2r+/Pk6//zzNWLECD388MOljvXzzz/rzTff1JVXXlnisZYtW6qoqKjc9QQA4GBFUwSg1ti9e7fq1q1bZePddNNN+uSTTzRv3jzVqVNHQ4cOLfWVlEWLFmnYsGF66qmndMQRR5Q61t13362ZM2fqP//5T5XOsSyXXHKJPvnkE73zzjvq0KGDLrzwQu3Zsyf++O23367jjjtORx99tEaPHq2bb75Z9913X6ljzZgxQ40aNUr6zFFMvXr1JP32ShgAACZKq88U2bZd5ltDyqpxWlcV9WSnZ3biOG5nm7rmsZ+cnBxt3749aay8vDwtW7Ys6VjsFY28vLwys5s2baqmTZvqsMMOU6dOndSmTRstXbpUvXr1ime///77uvjiizV58mQNGTKk1LHuv/9+3X333Zo/f766du2aNOfyrjsvL09btmxJOi8ajWrbtm1q3LhxmWP4/X75/X797ne/U8+ePdWkSRO98soruvjii0ut69GjhyZMmKA9e/YoKysraY2nTZumSy+9VD6fr8Tct27dKknKyckp93oOlr1mWnbiOG5nm7rmpmYnjuN2tqlrbmp2VavVTVEwGFQwGIzfbSkcDsvrdTZl27bjt771eDyO51CZerLTLzt2m+dQKMReczF71brN2rJ7i5q2yteiN19Luj30kUceqYkTJ+q7775Ts2bNJEmvvfaasrOz1apVqwpn79ixQ9Jvny+Kjf/ee+/p4osv1rhx43TRRReVelvqhx56SA888IBefvllHXbYYfFzKnrdXbp00Y4dO/TOO++oW7dukqS3335b+/btU4cOHSq81/bu3SvbtrVjxw4VFBSUmv3hhx+qUaNG2rNnT9IrSu+//76+++47XXjhhSooKCgx948//lgtW7aUz+cr99bc6b7XTMzm7zWy3cpmr5HtVnY4HHZcU55a3RQFAgEFAgGFQiFZlqXs7OykOylVRKyTtCwr5Sc81Xqy0y87EolI+u2/0Jf1gfzqyDZ1ze+Z86XeWPG9NuyU9m5toU1ffa19+/apcePGkqTzzjtPnTt31siRI3XPPfdo06ZNmjhxogKBgHJzc1VQUKDVq1fr8ssv14IFC9SqVSt99NFH+vjjj3X88cercePGWrNmje644w4deuih6tu3r7KysrRo0SJdfPHFuuaaa3TJJZdo9+7dkqTMzMz4jRTuueceTZw4Uc8//7y6dOkSP6dhw4Zq0KBBha67R48eOuOMMzRq1Cg99thjikQiuuWWW3ThhReqSZMm8vv92rJli/r27asZM2aoR48e+v777zVr1iydfvrpatasmX766Sfdc889qlevns4//3xZlqW5c+cqHA6rV69eqlu3rubPn68HH3xQf/nLX0r8PTlr1iz17Nkz6RWyxLkvX75c/fr1q9Dfr+m810zN5u81st3KZq+R7VZ2ed9VmIpa3RTtL/bFg6nWpVJb2Xqy0ys7VmPadddU9ifrt+uJ935QqwYe2ZJ8zdrJm9teDzwxQ3eN+e2W2l6vV6+//rquu+469e7dWw0aNNBll12mCRMmxDN3796t1atXKxqNyuPxqEGDBvrPf/6jcePGaefOnWrRooXOOOMM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799fRUVFWrJkiWbMmKEZM2Zo4sSJZY718ssva8iQIRo2bJg+/fRTffDBBxo8eHDSuGeffXbSuM8884zuuOOOEmPt2LFDQ4cO1amnnprSdd14442aPXu2XnrpJS1evFibNm3S+eeff8Dzd+3apRUrVuj222/XihUr9Morr2j16tUaOHBg/JzevXtr48aNST9XXnml2rVrp2OOOSZpvAULFmjjxo36+eef9fXXX6t79+7xx3JyctSvXz899thjKV0bgOqVVl/eCgAAKm/OnDnKysrSscceGz82b948ffnll1qwYIHy8vLUrVs33XnnnRo9erQmTZqkrKysEuNEo1HdcMMNuu+++5IarM6dO8f/+e233y4x7oQJEzR69GiNGzdOmZmZ8XOvvfZaDR48WHXq1NGrr77q6JoKCgo0depUvfDCCzrllFNk27YeeeQR9ezZUx9++GHStcZYlqX58+cnHXvkkUfUo0cP/fjjj7IsS5mZmWrevHn88Ugkov/+97/605/+VOILJJs2barmzZvLtm3Vq1dPPp8v6fEBAwbo1ltv1X333efo2gBUP14pAgDAMO+9917SqxiStHTpUnXt2lV5eXnxY/369VM4HNaqVatKHWfFihXasGGDMjIydPTRR6tFixY688wz9cUXX8TP+fjjj0sdNxQKJY07ffp0ff/99xo7dmxK17R8+XJFIhH17ds3fqxDhw5q06aNli5dWuFxCgoK5PF4ZFlWqY+/9tpr2rp1q4YNG1bisXPOOUe5ubk64YQTNGfOnBKP9+jRQz/99BOf4wJqIZoiAAAMs27dOrVs2TLp2KZNm5IaF0nx3zdt2lTqOLHPx4wbN0633XabXn/9dTVu3Fh9+vTRtm3bJElbtmwpd9xvv/1Wt9xyi5577jl5vam9iWXTpk3KzMxUo0aNSmQdaP7727Nnj0aPHq1BgwbJ7/eXes7UqVPVr18/HXLIIfFjDRs21AMPPKCXXnpJb7zxho477jhdeumleu2115JqY2u+bt06B1cGwA28fQ4AAMPs3r1bdevWrfQ4+/btkyTdeuut8c/uTJ8+XYcccoheeuklXX311eWOUVxcrMGDB2v8+PHq0KFDpeeUqkgkogsvvFC2bevRRx+Vbdslzvnpp5/01ltv6cUXX0w6npOTo1GjRsV/P+aYY7Ru3Trdf//9SZ9PqlevnqTfPssE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "npoint = 5\n", + "coords = np.random.rand(npoint, 2)/2 + .25\n", + "base = np.floor(coords / grid.spacing)*grid.spacing\n", + "\n", + "\n", + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.scatter(coords[:, 0], coords[:, 1], s=10)\n", + "ax.grid(which = \"major\")\n", + "ax.grid(which = \"minor\", alpha = 0.2)\n", + "ax.xaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.yaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.set_title(\"Off the grid sparse positions\")\n", + "for i in range(npoint):\n", + " ax.annotate(\"(%.3f, %.3f)\" % (coords[i, 0], coords[i, 1]), coords[i, :])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SparseFunction" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " Tensor symbol representing a space- and time-varying sparse array in symbolic\n", + " equations.\n", + "\n", + " Like SparseFunction, SparseTimeFunction carries multi-dimensional data that\n", + " are not aligned with the computational grid. As such, each data value is\n", + " associated some coordinates.\n", + " A SparseTimeFunction provides symbolic interpolation routines to convert\n", + " between TimeFunctions and sparse data points. These are based upon standard\n", + " [bi,tri]linear interpolation.\n", + "\n", + " Parameters\n", + " ----------\n", + " name : str\n", + " Name of the symbol.\n", + " npoint : int\n", + " Number of sparse points.\n", + " nt : int\n", + " Number of timesteps along the time Dimension.\n", + " grid : Grid\n", + " The computational domain from which the sparse points are sampled.\n", + " coordinates : np.ndarray, optional\n", + " The coordinates of each sparse point.\n", + " space_order : int, optional\n", + " Discretisation order for space derivatives. Defaults to 0.\n", + " time_order : int, optional\n", + " Discretisation order for time derivatives. Defaults to 1.\n", + " shape : tuple of ints, optional\n", + " Shape of the object. Defaults to ``(nt, npoint)``.\n", + " dimensions : tuple of Dimension, optional\n", + " Dimensions associated with the object. Only necessary if the SparseFunction\n", + " defines a multi-dimensional tensor.\n", + " dtype : data-type, optional\n", + " Any object that can be interpreted as a numpy data type. Defaults\n", + " to ``np.float32``.\n", + " initializer : callable or any object exposing the buffer interface, optional\n", + " Data initializer. If a callable is provided, data is allocated lazily.\n", + " allocator : MemoryAllocator, optional\n", + " Controller for memory allocation. To be used, for example, when one wants\n", + " to take advantage of the memory hierarchy in a NUMA architecture. Refer to\n", + " `default_allocator.__doc__` for more information.\n", + "\n", + " Examples\n", + " --------\n", + "\n", + " Creation\n", + "\n", + " >>> from devito import Grid, SparseTimeFunction\n", + " >>> grid = Grid(shape=(4, 4))\n", + " >>> sf = SparseTimeFunction(name='sf', grid=grid, npoint=2, nt=3)\n", + " >>> sf\n", + " sf(time, p_sf)\n", + "\n", + " Inspection\n", + "\n", + " >>> sf.data\n", + " Data([[0., 0.],\n", + " [0., 0.],\n", + " [0., 0.]], dtype=float32)\n", + " >>> sf.coordinates\n", + " sf_coords(p_sf, d)\n", + " >>> sf.coordinates_data\n", + " array([[0., 0.],\n", + " [0., 0.]], dtype=float32)\n", + "\n", + " Symbolic interpolation routines\n", + "\n", + " >>> from devito import TimeFunction\n", + " >>> f = TimeFunction(name='f', grid=grid)\n", + " >>> exprs0 = sf.interpolate(f)\n", + " >>> exprs1 = sf.inject(f, sf)\n", + "\n", + " Notes\n", + " -----\n", + " The parameters must always be given as keyword arguments, since SymPy\n", + " uses ``*args`` to (re-)create the Dimension arguments of the symbolic object.\n", + " \n" + ] + } + ], + "source": [ + "print(SparseTimeFunction.__doc__)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from itertools import product\n", + "pos = tuple(product((0, grid.spacing[1]), (0, grid.spacing[1])))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "s = SparseTimeFunction(name=\"s\", grid=grid, npoint=npoint, nt=nt,\n", + " coordinates=coords)\n", + "\n", + "interp_points = np.concatenate([base+p for p in pos])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAANECAYAAAB/24QQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACeWUlEQVR4nOzdeXxTVf7/8XdK0rI1l7VlKwVUQASFHwgCLqggKiI6OiqoKOJKGFFmHGRcAB3BXRiNGyLiqF/R0XFcEAUEF0BREBdUXBAQZFGWJmVr2t7fH51kElraJm1vm57X8/HoQ7m5n/M+9+RY/ZjkxmXbti0AAAAAMFRKdU8AAAAAAKoTTREAAAAAo9EUAQAAADAaTREAAAAAo9EUAQAAADAaTREAAAAAo9EUAQAAADAaTREAAAAAo9EUAQAAADAaTREAlODTTz9Vv3791KBBA7lcLq1evVqSNH/+fHXv3l1169aVy+XS7t274x7b5XJp7NixlTvhKjJ58mS5XK5ynetyuTR58uSqnRDKZcmSJXK5XFqyZEmZ565fv14ul0vPPPNMlc8LAGoqmiIARlizZo0uueQStW7dWmlpaWrVqpUuvvhirVmzpti5oVBIf/zjH7Vz50499NBD+uc//6ns7Gzt2LFDF1xwgerVqye/369//vOfatCgQYl5y5Yt0+TJkxNqmoCq8MILL2j69OnVPQ0AqJHc1T0BAKhqr776qoYPH64mTZpo9OjRat++vdavX69Zs2bpX//6l1588UWde+65kfN/+uknbdiwQTNnztSVV14ZOT5//nwFg0HdeeedGjhwYKmZy5Yt05QpU3T55ZerUaNGVXVpVe7WW2/VzTffXN3TQJxOPPFE7du3T6mpqZFjL7zwgr7++mvdcMMNMedmZ2dr37598ng8Ds8SAGoOmiIAtdpPP/2kSy+9VB06dNAHH3yg5s2bRx4bN26cTjjhBF166aX68ssv1aFDB0nS9u3bJalYM3Oo47XRnj171KBBA7ndbrndte9fFbZta//+/apXr151T6VKpKSkqG7duuU61+VylftcAKitePscgFrtvvvu0969e/Xkk0/GNESS1KxZMz3xxBPas2eP7r33XknS5ZdfrpNOOkmS9Mc//lEul0sDBgzQgAEDdNlll0mSjj32WLlcLl1++eUlZk6ePFk33XSTJKl9+/ZyuVxyuVxav359zHmvvfaaunbtqrS0NB111FGaP39+sbE2b96sK664QpmZmZHznn766XJd+759+3T99derWbNmSk9P19lnn63NmzcX++xP+HND33zzjUaMGKHGjRvr+OOPj3ks2oEDB3TjjTeqefPmkXE3bdpUrjlJ0sMPP6yjjjpK9evXV+PGjdWrVy+98MILxebz3Xff6YILLpDX61XTpk01btw47d+/P2as2bNn65RTTlFGRobS0tLUpUsXPfbYY8Uy27Vrp7POOkvvvPOOevXqpXr16umJJ56QJC1YsEDHH3+8GjVqpIYNG6pTp07629/+VuyaJ02apMMPP1xpaWnKysrSX//6Vx04cKDM6x0wYIC6du2qlStXql+/fqpXr57at2+vxx9/vNi527dv1+jRo5WZmam6devqmGOO0Zw5c4qd9+KLL6pnz55KT0+X1+tVt27dNGPGjMjjB3+maMCAAXrrrbe0YcOGyH5s166dpEN/pui9997TCSecoAYNGqhRo0YaNmyYvv3225hzws/Vjz/+GHlV1LIsjRo1Snv37o05tzzrDADVpfb97z8AiPLGG2+oXbt2OuGEE0p8/MQTT1S7du301ltvSZKuueYatW7dWlOnTtX111+vY489VpmZmZKkTp066cknn9Qdd9yh9u3b67DDDitxzD/84Q/6/vvv9X//93966KGH1KxZM0mKaco++ugjvfrqqxozZozS09P1j3/8Q+edd542btyopk2bSpK2bdum4447LnJjhubNm+vtt9/W6NGjFQgEir0N6mCXX365XnrpJV166aU67rjj9P7772vIkCGHPP+Pf/yjjjjiCE2dOlW2bR/yvCuvvFLPPfecRowYoX79+um9994rddxoM2fO1PXXX6/zzz8/0uR8+eWX+uSTTzRixIiYcy+44AK1a9dO06ZN08cff6x//OMf2rVrl5599tnIOY899piOOuoonX322XK73XrjjTc0ZswYFRYWyufzxYy3du1aDR8+XNdcc42uuuoqderUSWvWrNFZZ52lo48+WnfccYfS0tL0448/aunSpZG6wsJCnX322froo4909dVX68gjj9RXX32lhx56SN9//71ee+21Mq97165dOvPMM3XBBRdo+PDheumll3TdddcpNTVVV1xxhaSiJnbAgAH68ccfNXbsWLVv314vv/yyLr/8cu3evVvjxo2T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7t0lKXK77QsuuECbN2/WzJkzi527b9++Ym8lK0l+fn7kFuCSlJeXpyeeeELNmzdXz549JUlnnnmmtm7dqrlz58bUPfzww2rYsGHkVvEHr2FKSkrkVcPSbhHeoEGDYm8pLEnLli3VvXt3zZkzJ2b/fv3113r33Xd15plnljnGwcqzzgBQnXilCECtdsQRR2jOnDm6+OKL1a1bN40ePVrt27fX+vXrNWvWLP3+++/6v//7v0PeXjtR4f/QveWWW3TRRRfJ4/Fo6NChcf0f9rvvvluLFy9Wnz59dNVVV6lLly7auXOnVq1apYULF5b4H5rR+eedd56mT5+uHTt2RG7JHX51ItFXPLp3767hw4fr0UcfVU5Ojvr166dFixaV+xWo0047TS1atFD//v2VmZmpb7/9Vo888oiGDBlS7DNdP//8s84++2ydfvrpWr58eeQ24Mccc0xkrPArJtdcc41yc3M1c+ZMZWRkaMuWLeWazx133KEPPvhAQ4YMUXZ2trZv365HH31Ubdq0ibyyeOmll+qll17Stddeq8WLF6t///4qKCjQd999p5deeiny3UeladWqle655x6tX79eHTt21Ny5c7V69Wo9+eST8ng8kqSrr75aTzzxhC6//HKtXLlS7dq107/+9S8tXbpU06dPj6zPlVdeqZ07d+qUU05RmzZttGHDBj388MPq3r175PNHJenZs6fmzp2r8ePH69hjj1XDhg01dOjQEs+97777dMYZZ6hv374aPXp05JbclmXFfMdVeZVnnQGgWlXnre8AwClffvmlPXz4cLtly5a2x+OxW7RoYQ8fPtz+6quvip1bGbfktm3bvvPOO+3WrVvbKSkpMbfnlmT7fL5i52dnZ9uXXXZZzLFt27bZPp/PzsrKisz71FNPtZ988sky8/fs2WP7fD67SZMmdsOGDe1zzjnHXrt2rS3JvvvuuyPnhW+rXNLtkg++Jbdt2/a+ffvs66+/3m7atKndoEEDe+jQofYvv/xSrltyP/HEE/aJJ55oN23a1E5LS7MPO+ww+6abbrJzcnKKZX7zzTf2+eefb6enp9uNGze2x44da+/bty9mvNdff90++uij7bp169rt2rWz77nnHvvpp58udjv07Oxse8iQIcXms2jRInvYsGF2q1at7NTUVLtVq1b28OHD7e+//z7mvLy8PPuee+6xjzrqKDst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2rVrl66//np17txZ9evXV3Z2tsaNG6dAIBAzRkpKSuSnTp06atKkiebOnRt5fPTo0Vq1apU++uij6t8btfSH32v8OPXDXuPHqZ/KVqNfKQKAKjNoStHngLasK3qVJ+tYSdLevXs1a9YsvfPOO5FTCwoKNGTIELVo0ULLli3Tli1bNPKSESrs2EEP3DkrUnuwk08+WX/729/UsmVLbd68WX/5y190/vnna9myZZFzxo8fr4ULF+r+++9Xt27dtHPnTu3cubPYWLt379bIkSN16qmnatu2bXFf7o033qi33npLL7/8srxer8aMGaPzzjtPS5cuPWTNTz/9pOOPP16jR4/WlClT5PV69fXXX6tu3bqSpF9//VW//vqr7r//fnXp0kUbNmzQtddeq19//VX/+te/YsaaPXu2Tj/9dNm2rUAgoLZt20YeS01N1YgRI/SPf/xDJ5xwQtzXBgBARdEUATBXm15FnwOKetvbvHnzlJaWpuOOOy5y7N1339U333yjhQsXKjMzU927d9cdf5+qCRMmaNoTc5V2iOFvvPHGyN9nZ2fr5ptv1jnnnBN5i8kvv/yiJ554Ql9//bU6deokSWrfvn2JY1177bUaMWKE6tSpo9deey2uy8zJydGsWbP0wgsv6JRTTpFt23rkkUfUp08fffzxxzHXGu2WW27RmWeeqXvvvTdyrEOHDsrJyZEkde3aVa+88krkscMOO0x33XWXLrnkEuXn58d8pqBRo0Zq0aKFbNtWvXr1Io1V2NChQzVo0CDt27dP9erVi+v6AACoqKR6+xwAVLUPP/xQPXv2jDm2fPlydevWTZmZmZFjgwcPVjAY1Jo1a8o17s6dO/X888+rX79+kffaf/rpp2rfvr3efPNNtW/fXu3atdOVV15Z7JWi2bNna926dZo0aVJC17Ry5UqFQiENHDgwcqxjx45q27atli9fXmJNYWGh3nrrLXXs2FGDBw9WRkaG+vTpU2ZDlpOTI6/XW+xD1j6fT82aNVOfPn303HPPFbtzUK9evZSfn69PPvkkoWsEAKAiaIoAIMqGDRvUqlWrmGNbt26NaYgkRf68devWUsebMGGCGjRooKZNm2rjxo36z3/+E3ls27Zt2rhxo15++WU9++yzeuaZZ7Ry5Uqdf/75kXN++OEH3XzzzXruuefivptT9PxTU1PVqFGjYtdwqPlv375dubm5uvvuu3X66afr3Xff1bnnnlvqW+5+//133Xnnnbr66qtjjt9xxx166aWXtGDBAv3hD3/QX/7yFz388MMx59SvX1+WZWnDhg0JXSMAABXB2+cAIMq+ffuKvbWrIm666SaNHj1aGzZs0JQpUzRy5Ei9+eabkopejTlw4ICeffZZdezYUZI0a9Ys9ezZU2vXrtXhhx+uESNGaMqUKZHHnVJYWChJGjZsWORtgN27d9eyZcv09NNP68wzz4w5PxAIaMiQIerSpYsmT54c89htt90W+fvu3btr586duv/++zVu3LiY8+rVq6e9e/dWwdUAAFA6XikCgCjNmjXTrl27Yo61aNGi2M0Nwn9u0aJFmeN17NhRgwYN0osvvqh58+bp448/liQ1adJEbrc7puE58sgjJUkbN25UMBjUZ599prFjx8rtdsvtduuOO+7QF198oWbNmum9994r1zW1aNFCeXl52r17d7FrONT8mzVrJrfbrS5dusQc79y5szZt2hRzLBgM6vTTT1d6err+/e9/l3kr3p49e2rTpk06cOBAzPGdO3eqefPm5bomAAAqE00RAEj6fOMuvbpqkzLaddI333wT81jfvn311Vdfafv27ZFjCxYsUHp6erGmoTThV1/CzUDnzp2Vn5+vn376KXLO999/L6noxgxer1dfffWVVq9eHfm59tpr1alTJ33wwQfq06dPuXJ79uwpj8ejRYsWRY798MMP2rhxo/r27VtiTWpqqo499litXbs25vgPP/ygrKysyJ8DgYBOO+00paam6vXXXy/Xq2xfffWVGjdurLS0/92i4qefftL+/fvVo0ePcl0TAACVibfPATDePW9/q8c/+FmSlPdbU237eo127dqlxo0bS5JOO+00denSRZdeeqnuvfdebd26VbfddpuuvPLKyH/Yr1ixQiNHjtSiRYvUunVrffLJJ/r00091/PHHq3Hjxvrpp59022236bDDDos0Isccc4x69OihK664QtOnT1dhYaF8Pp8GDRoUefWoa9euMXPNyMhQ3bp11aVLFzVo0KBc12dZlkaPHq3x48erSZMmSk9Pl8/nU9++fWPuPNe5c2dNmzZN5557rqSit/5deOGFOvHEE3XyySdr/vz5euONN/TGG29I+l9DtHfvXj333HMKBAIKBAKSpObNm6tOnTp64403tG3bNh133HGqW7eu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d9112rlzp8aNG6fvv/9eb731lqZOnSqfz1d5VwEAAAAACYr7M0UXXnihfvvtN91+++3aunWrunfvrvnz50duvrBx40alpPyv18rKytI777yjG2+8UUcffbRat26tcePGacKECZV3FQAAAACQoIRutDB27FiNHTu2xMeWLFlS7Fjfvn318ccfJxIFAAAAAFUq7rfPAQAAAEBtQlMEAAAAwGg0RQAAAACMRlMEADXAjh07lJGRofXr11f3VIxw0UUX6YEHHqjuaQAAagiaIgCoAe666y4NGzZM7dq1ixzbuHGjhgwZovr16ysjI0M33XST8vPzyzXegQMH1L17d7lcLq1evTrmsS+//FJnnHGG6tWrp6ysLN17770xj8+cOVMnnHCCGjdurMaNG2vgwIFasWJF3Ne0c+dOXXzxxfJ6vWrUqJFGjx6t3NzcUmsGDBggl8sV83PttddGHn/hhReUkpJS7ByXy6Xt27cXG2/p0qVyu93q3r17zPFbb71Vd911l3JycuK+LgBA7UNTBADVbO/evZo1a5ZGjx4dOVZQUKAhQ4YoLy9Py5Yt05w5c/TMM8/o9ttvL9eYf/3rX9WqVatixwOBgAYPHqysrCx99tlnuu+++zR58mQ9+eSTkXOWLFmi4cOHa/HixVq+fLmysrJ02mmnafPmzXFd18UXX6w1a9ZowYIFevPNN/XBBx/ommuuKbPuqquu0pYtWyI/0U3bueeeq19//TXm8cGDB+ukk05SRkZGzDi7d+/WyJEjdeqppxbL6Nq1qw477DA999xzcV0TAKB2oikCgOrw6+eRv86bN09paWk67rjjIg+/++67+uabb/Tcc8+pe/fuOuOMM3TnnXfK7/crb91y6ft3pE2flTj022+/rXfffVf3339/sceef/555eXl6ZFHHtFRRx2liy66SNdff70efPDBmHPGjBmj7t27q3PnznrqqadUWFioRYsWlfvyvv32W82fP19PPfWU+vTpo+OPP14PP/ywXnzxRW3ZsqXU2vr166tFixaRH6/XG3msXr16MY/VqVNH7733XkxDGXbttddqxIgR6tu3b4k5Q4cO1YsvvljuawIA1F40RQDgtAWTpDlDi/5+zlB9+Px96tmzZ8wpy5cvV7du3SJfjC1JgwcPViAQ0Jp7B0uLp0qzBhWNFWXbtm266qqr9M9//lP169cvFr18+XKdeOKJSk1NjRl37dq12rVrV4nT3bt3r0KhkJo0aVLuS1y+fLkaNWqkXr16RY4NHDhQKSkpWrlyZam1zz//vJo1a6auXbtq4sSJ2rt37yHPffbZZ1W/fn2df/75Mcdnz56tdevWadKkSYeolHr37q0VK1bowIED5bwqAEBtldCXt1YX27Zl23ZCNfHWVUY92cmZHT2O09mmrrlR2Zs+k5bOkJ1St2gcubTh21Vq2f2MmLG2bNmizMzMmGMZoU1Fj+Xaai+XbLmkpTOkzmdJbXrJtm1dfvnluuaaa9SzZ8/ITRui57l161a1a9cu5lj4bWdbtmxRo0aNik05/Fa8U089tdzXvWXLFmVkZMScV6dOHTVp0kTbtm07ZP3w4cOVnZ2tVq1a6csvv9TNN9+stWvX6pVXXikxe9asWRo+fLjq1q0bOf7DDz/o5ptv1gcffKA6deoU++c6/OeWLVsqLy9PW7ZsUXZ2dqnXk5R7Lao+ehyns43655vsmHGczjZ1zU3Nrmw1uiny+/3y+/0qKCiQJAWDQbnd8U3Ztu3IB3tdLlfcc6hIPdnJlx3+EHsgEGCvkV01tVvWSfWylZ9S9EpNoF6WgoV71Cz/QMyH/kOhkPLz82OO7d36syRpT1qGctNaFGXLLhoz/Qg98cQT2rVrl8aMGaOcnBwFg0FJUm5ubmSc/Px85eXlxcw9fF4wGCx244GHHnpIL774ot544w0dOHBA+/fvL9d179+/X4WFhcXGs21bBw4UXWtJ9RdeeGHk79u2bSuv16thw4Zp9erVateuXUz2ihUr9O233+rRRx+N5BQUFOiiiy7ShAkTlJmZqZycHB04cEAFBQXKycmJqQ//875t27YSm8GD5510e+2/+L1GtlPZ7DWyncoO/3urMtXopsjn88nn8ykQCMiyLKWnp8uyrLjGCHeSlmUl/IQnWk928mWHQiFJktfrlcfjcTTb1DU3LrtlB2nfBoX++0qRd98valH3gPbmK+b3W1ZWllavXh1zbGedos/WHOb5TQ0PeGXt21DUFLXsIFmWli9frk8//TTmLXeSdPLJJ+viiy/WM888ozZt2mjXrl1q2LBhZO7ht6cdccQRMXn333+/ZsyYoQULFkTeBlfe627Xrp1+//33mPHy8/O1a9cuZWVllXvdTjnlFElFjcsxxxwTk/3iiy+qe/fuOumkkyLn7969W59//rm+/PJL/fWvf5UkFRYWyrZtNW/eXK+88oqGDh0ql8sV+ee9Q4cOZf67JSn32n/xe41sp7LZa2Q7lV3eO7HGo0Y3RQcL33Y10bpEaitaT3ZyZYdrTLtush3MzjpW6j9OruWPF40hW4d376//fLktZpx+/fpp6tSp+u233yJvb1u4Zru89dN0VPMU7Zdd9Aa6/jcUjSnpH//4h/7+979Hxvj11181ePBgzZ07V3369JHL5VLfvn11yy23KD8/PzL3hQsXqlOnTjGfGbr33nt111136Z133tGxxx4b93X369dPu3fv1qpVqyKfl1q8eLEKCwvVq1evcq/bF198IUlq1apVTO6ePXv08ssva9q0aTHjWJalr776KmaMRx99VO+9955efvllNWnSJDLGmjVr1KZNGzVv3rzMeZT3uquqnt9rZCdDNnuNbCdrK1tSNUUAUCsMmqIXdndVI0kj8m7RUk8dbfv6Bu3atUuNGzeWJJ122mnq0qWLLr30Ut17773aunWrbr31VvnGjVfaNedq/5Z1WrFtny77091atOgqtW7dWm3bto2JadiwoSTpsMMOU5s2bSRJI0aM0JQpU/SnP/1Jt956q9asWaMZM2booYceitTdc889uv322/XCCy+oXbt22rp1a2S8Bg0alOsSjzzySJ1++um66qqr9PjjjysUCmns2LG66KKL1LJlS0nS5s2bdeqpp+rZZ59V79699dNPP+mFF17QmWeeqaZNm+rLL7/UjTfeqBNPPFFHH310zHvI586dq/z8fF1yySUxuSkpKeratWvMsYyMDNWtW1ddu3aNeTvfhx9+qNNOO61c1wMAqN24+xwAOOzzjbs0dXU9SdKXdgelNm8nd0YH3f/4M5Fz6tSpozfffFN16tRR3759dckll2jkyJG64447pDa9pI6DtbdhttauXRt5y0p5WJald955Rxs2bFCvXr305z//WbfffruuvvrqyDmPPfaY8vLydP7556tly5aRn+hbfE+ePDnmi2ZL8vzzz6tz58469dRTdeaZZ+r444/XE088EXk8FApp7dq1kbfvpaamauHChTrttNPUuXNn/fnPf9Z5552nN954o9jYs2bN0h/+8IcyPwt0KPv379drr72mq666KqF6AEDtwitFAOCwn3/fU+yY1X+4np35mO6cME4pKUX/vyo7O1vz5s0rdm74FZMBAwaUegee8F3mDnb00Ufr7bffPuR7ucN3rStJeLz169drwIABhzxPkpo0aaIXXnihWH341ZqD55eVlaX333+/1DHDli1bVq7zpKIGbvLkyTFZs2fPVu/evWO+GwoAYC6aIgBwWPtmxd+CVv+wY3V+l1Rt3rxZWVlZ1TCr8rNtW0uWLNFHH31U3VNJmMfj0cMPP1zd0wAA1BA0RQDgsB5tG2t0/3ZS6KfIsetO6qAJZwypvknFweVyaf369VXyQVenXHnlldU9BQBADUJTBADV4MZBnTRv3k+adm43tc/wqkfbxtU9JQAAjEVTBADVaOgxreL+Pg8AAFC5uPscAAAAAKPRFAEAAAAwGk0RAFSHXz+P/Ws8Nn0mff9O0V8BAECF0RQBgNMWTJLmDC36+zlDi/4cT+2sQdLiqUV/jacWAACUKKlutGDbdqlfVFhaTbx1lVFPdnJmR4/jdLapa25U9qbPpKUzZKfULRpHLtlLZ0idz5La9CpfrVyRH5W3tjLmXsFasvm9Rnbtz44ex+lsU9fc1OzKVqObIr/fL7/fr4KCAklSMBiU2x3flG3bVm5uriQl9J0aFaknO/my8/PzJUmBQIC9RnbV1G5ZJ9XLVn5KqiQpUC9L7sK8ouPpR5Sr1pZLuWktirJll6+2MuZewVqy+b1Gdu3OZq+R7VR2MBiMu6YsNbop8vl88vl8CgQCsixL6enpsiwrrjHCnaRlWQk/4YnWk5182aFQSJLk9Xrjvk1yMl832Q5mt+wg7dug0H9fKfLu+0Wewv1Fx8v6/fbfWltFeda+DUVNUXlqK2PuFawlm99rZNfubPYa2U5lhxvwylSjm6KDuVyuhBYuXJfot69XpJ7s5MoO15h23WQ7mJ11rNR/nFzLHy8aQ7Zc/W8oOl7OWi2d8b830JW3tjLmXgm1ZPN7jezam81eI9vJ2sqWVE0RANQKg6ZIHYdIq7dIl70hZfeOr7bzWUVvmWvZIaGGCAAAxKIpAoDq0KpHUVPUqkf8tW16FX2GKM63EwMAgJJxS24AAAAARqMpAgAAAGA0miIAAAAARqMpAgAAAGA0miIAAAAARqMpAgAAAGA0miIAAAAARqMpAgAAAGA0miIAAAAARnNX9wTiYdu2bNtOqCbeusqoJzs5s6PHcTrb1DU3NTt6HKezTV1zU7Ojx3E629Q1NzU7ehyns01dc1OzK1uNbor8fr/8fr8KCgokScFgUG53fFO2bVu5ubmSJJfLFfccKlJPdvJl5+fnS5ICgQB7jewqzWavke1UNnuNbKey2WtkO5UdDAbjrilLjW6KfD6ffD6fAoGALMtSenq6LMuKa4xwJ2lZVsJPeKL1ZCdfdigUkiR5vV55PB5Hs01dc1Oz2WtkO5XNXiPbqWz2GtlOZYcb8MpUo5uig7lcroQWLlyXSG1F68lOruxwjWnXTTZ7jezam81eI9vJ2ugxnMyuaD3ZyZWd6HxLw40WAAAAABiNpggAAACA0WiKAAAAABiNpggAAACA0WiKAABJa8eOHcrIyND69eureypGuPnmm/WnP/2puqcBAJWOpggAkLTuuusuDRs2TO3atYsc27hxo4YMGaL69esrIyNDN910U5m3b23Xrl3MnZBcLpfuvvvumHO+/vprnXjiiapbt66ysrJ07733xjw+c+ZMnXDCCWrcuLEaN26sgQMHasWKFXFf086dO3XxxRfL6/WqUaNGGj16dOT7PA5lwIABxeZ/7bXXxpxz4403qmfPnkpLS1P37t2LjTF58uRiY6SkpKh169aRc/7yl79ozpw5WrduXdzXBQA1GU0RACAp7d27V7NmzdLo0aMjxwoKCjRkyBDl5eVp2bJlmjNnjp555hndfvvtZY53xx13aMuWLZGf6FdEAoGAzjvvPGVnZ2vlypW67777NHnyZD355JORc5YsWaLhw4dr8eLFWr58ubKysnTaaadp8+bNcV3XxRdfrDVr1mjBggV688039eGHH+qGG24os+6qq66Kmf/BTZskXXHFFbrwwgtLrP/LX/4SU79lyxZ16dJFw4YNi5zTrFkzDR48WI899lhc1wQANV1SfU8RAABh8+bNU1pamo477rjIsXfffVfffPONFi5cqMzMTHXv3l133nmnJkyYoEmTJpU6Xnp6ulq0aFHiY88//7zy8vI0a9YspaWl6aijjtLq1av14IMP6uqrr46cE+2pp57SK6+8okWLFunSSy8t1zV9++23mj9/vj799FP16tVLkvSPf/xDQ4YM0a+//hrzqs3B6tevf8j5S9JDDz0kj8ej3377TV9++WWxxxs2bKiGDRtG/vzFF1/om2++0X333Rdz3tChQ3XLLbcUOw4AyYxXigAASenDDz9Uz549Y44tX75c3bp1U2ZmZuTY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jRqlkSNH6s0334ycs2TJEg0fPlyLFy/W8uXLlZWVpdNOO02bN2+O67ouvvhirVmzRgsWLNCbb76pDz74QNddd12pNT179tTs2bP17bff6p133pFt2zrttNMiX2YdNnv2bG3ZsiXyc84550QemzFjRsxjv/zyi5o0aRKzDl27dtVhhx2m5557Lq5rAgCgNkmq7ykCULvNmzdPaWlpOu644yLH3n33XX3zzTdauHChMjMz1b17d915552aMGGCJk2adMixbrzxxsjfZ2dn6+abb9Y555yjUCgkj8ejv/3tb7JtWzk5ObIsS+PGjdO7776rV199VWeddZYkFXvl6KmnntIrr7yiRYsW6dJLLy3XNX377beaP3++Pv30U/Xq1UuS9PDDD+vMM8/U4MGDD1l39dVXR/6+Xbt2+vvf/65jjjlG69evV4cOHSKPNWrUSC1atChxDMuyYr7w+rXXXtOuXbs0atSomPOGDh2qF198UT6fr1zXBABAbcMrRQBqjA8//FA9e/aMObZ8+XJ169ZNmZmZkWODBw9WIBDQmjVryjXuzp079fzzz6tfv36lfst6Tk6OmjRpcsjH9+7dq1AoVOo5B1u+fLkaNWoUaYgkaeDAgUpJSdH3339frjH27Nmj2bNnq3379srKyop5zOfzqVmzZurdu7eefvrpyLeEl2TWrFkaOHCgsrOzY4737t1bK1as0IEDB8p9XQAA1CY0RQCq16bPpO/fkTZ9pg0bNqhVq1YxD2/dujWmIZIU+fPWrz+M1JZkwoQJatCggZo2baqNGzfqP//5zyGn8dJLL+nTTz8t9irKweO1atVKAwcOLO/VaevWrcrIyIg55na71aRJE+3atavU2kcffVQNGzZUw4YN9fbbb2vBggVKTU2NPD5lyhS99NJLWrBggc477zyNGTNGDz/8cIlj/frrr3r77bd15ZVXFnusVatWysvL09atW8t9XQAA1CY0RQCqz4JJ0qxB0uKp0qxB2rfpK9WtW7f89e/8LVKrBcXfSnfTTTfp888/17vvvqs6depo5MiRJb6SsnjxYo0aNUozZ87UUUcdVWLU3XffrRdffFH//ve/45tjBVx88cX6/PPP9f7776tjx4664IILtH///sjjt912m/r3768ePXpowoQJ+utf/6r77ruvxLHmzJmjRo0axXzmKKxevXqSil4JAwDAREn1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R3wra+HChXryySd133336Z577tFFF12kzZs3n/FCJH3xx+l6e3tH/SN1QCMxa7CFWYMtzBpsYdZgy1jMWuLvFAEAAADARNK4n04CAAAAgAxiKQIAAADgNJYiAAAAAE5jKQIAAADgtKZZisIw1IUXXqj29nYtWLBAb7311imff+aZZzR79my1t7drzpw52rJli6VOkXVJZm3Dhg269tprdc455+icc87R4sWLTzubQFXS39eqNm7cKM/z1NPTM7YNYsJIOmuffPKJgiDQtGnT1NbWplmzZvHvUZyRpLP28MMP6+KLL9ZZZ52lzs5O/fCHP9T//vc/S90ii15//XVdd911mj59ujzP0+bNm09bs337dl155ZVqa2vTl7/8ZT3++OOJc5tiKdq0aZNWrVql3t5e7dq1S3PnzlV3d7c++OCDUZ/fsWOHli1bppUrV6q/v189PT3q6enRu+++a7lzZE3SWdu+fbuWLVum1157TX19fers7NQ3v/lN/ec//7HcObIm6axVHThwQD/60Y907bXXWuoUWZd01oaGhvSNb3xDBw4c0LPPPqt9+/Zpw4YNOu+88yx3jqxJOmtPPvmkVq9erd7eXu3Zs0ePPvqoNm3apHvuucdy58iSTz/9VHPnzlUYhmf0/D//+U8tWbJEX/va17R792794Ac/0M0336yXX345WbBpAvPnzzdBEAz/daVSMdOnTzfr1q0b9fkbb7zRLFmyZMRrCxYsMLfddtuY9onsSzprxyuXy6ZQKJgnnnhirFrEBJFm1srlslm4cKH54x//aFasWGFuuOEGC50i65LO2u9+9zszY8YMMzQ0ZKtFTBBJZy0IAvP1r399xGurVq0y11xzzZj2iYlDknn++edP+cxdd91lLrvsshGvLV261HR3dyfKGvfvFA0NDWnnzp1avHjx8GuTJk3S4sWL1dfXN2pNX1/fiOclqbu7+6TPA1K6WTve0aNHVSqVdO65545Vm5gA0s7aAw88oClTpmjlypU22sQEkGbWXnjhBXV1dSkIAnV0dOjyyy/X2rVrValUbLWNDEozawsXLtTOnTuH/4jd/v37tWXLFn3729+20jPc0Ki9INfIptI4fPiwKpWKOjo6Rrze0dGhvXv3jlozMDAw6vMDAwNj1ieyL82sHe/HP/6xpk+ffsI/fECtNLP217/+VY8++qh2795toUNMFGlmbf/+/frLX/6i73znO9qyZYvee+893XHHHSqVSurt7bXRNjIozazddNNNOnz4sL761a/KGKNyuazbb7+dPz6HhjrZXhBFkT777DOdddZZZ3TOuH+nCMiK9evXa+PGjXr++efV3t4+3u1gAonjWMuXL9eGDRs0efLk8W4HE9yxY8c0ZcoU/eEPf9C8efO0dOlS3XvvvXrkkUfGuzVMMNu3b9fatWv129/+Vrt27dJzzz2nl156SWvWrBnv1oATjPt3iiZPnqyWlhYdOnRoxOuHDh3S1KlTR62ZOnVqoucBKd2sVT344INav369/vznP+srX/nKWLaJCSDprP3jH//QgQMHdN111w2/duzYMUlSLpfTvn37NHPmzLFtGpmU5ve1adOmKZ/Pq6WlZfi1Sy65RAMDAxoaGlJra+uY9oxsSjNrP/nJT7R8+XLdfPPNkqQ5c+bo008/1a233qp7771Xkybx/+ZRv5PtBcVi8Yy/SyQ1wXeKWltbNW/ePG3btm34tWPHjmnbtm3q6uoataarq2vE85L06quvnvR5QEo3a5L0y1/+UmvWrNHWrVt11VVX2WgVGZd01mbPnq133nlHu3fvHv51/fXXD3+STmdnp832kSFpfl+75ppr9N577w0v3pL097//XdOmTWMhwkmlmbWjR4+esPhUl/EvfoYeqF/D9oJknwExNjZu3Gja2trM448/bv72t7+ZW2+91XzpS18yAwMDxhhjli9fblavXj38/BtvvGFyuZx58MEHzZ49e0xvb6/J5/PmnXfeGa+3gIxIOmvr1683ra2t5tlnnzXvv//+8K84jsfrLSAjks7a8fj0OZyppLN28OBBUygUzPe//32zb98+8+KLL5opU6aYn//85+P1FpARSWett7fXFAoF89RTT5n9+/ebV155xcycOdPceOON4/UWkAFxHJv+/n7T399vJJmHHnrI9Pf3m3/961/GGGNWr15tli9fPvz8/v37zdlnn23uvPNOs2fPHhOGoWlpaTFbt25NlNsUS5Exxvz61782559/vmltbTXz5883b7755vDfW7RokVmxYsWI559++mkza9Ys09raai677DLz0ksvWe4YWZVk1i644AIj6YRfvb299htH5iT9fa0WSxGSSDprO3bsMAsWLDBtbW1mxowZ5he/+IUpl8uWu0YWJZm1Uqlkfvazn5mZM2ea9vZ209nZae644w7z8ccf228cmfHaa6+N+t9e1dlasWKFWbRo0Qk1V1xxhWltbTUzZswwjz32WOJczxi+fwkAAADAXeP+M0UAAAAAMJ5YigAAAAA4jaUIAAAAgNNYigAAAAA4jaUIAAAAgNNYigAAAAA4jaUIAAAAgNNYigAAAAA4jaUIAAAAgNNYigAAAAA4jaUIAAAAgNNYigAAAAA47f9XuPZGhV218gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.scatter(coords[:, 0], coords[:, 1], s=10)\n", + "ax.scatter(interp_points[:, 0], interp_points[:, 1], s=10)\n", + "ax.grid(which = \"major\")\n", + "ax.grid(which = \"minor\", alpha = 0.2)\n", + "ax.xaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.yaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.set_title(\"Off the grid sparse positions\")\n", + "for i in range(npoint):\n", + " ax.annotate(\"(%.3f, %.3f)\" % (coords[i, 0], coords[i, 1]), coords[i, :])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Operator `Kernel` ran in 0.01 s\n" + ] + }, + { + "data": { + "text/plain": [ + "PerformanceSummary([(PerfKey(name='section0', rank=None),\n", + " PerfEntry(time=0.00012299999999999998, gflopss=0.0, gpointss=0.0, oi=0.0, ops=0, itershapes=[])),\n", + " (PerfKey(name='section1', rank=None),\n", + " PerfEntry(time=8.499999999999999e-05, gflopss=0.0, gpointss=0.0, oi=0.0, ops=0, itershapes=[]))])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f.data.fill(0)\n", + "op = Operator([Eq(f.forward, f+1)] + s.interpolate(f))\n", + "op()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Data([[0. , 0. , 0. , 0. , 0. ],\n", + " [1. , 1. , 1. , 1. , 1. ],\n", + " [2. , 2. , 2. , 2. , 2. ],\n", + " [3. , 3. , 3. , 3. , 3. ],\n", + " [4. , 4. , 4. , 4. , 4. ],\n", + " [5. , 5. , 5. , 5. , 5. ],\n", + " [6. , 6. , 6. , 6. , 6. ],\n", + " [7. , 6.9999995, 7. , 7. , 6.9999995],\n", + " [8. , 8. , 8. , 8. , 8. ],\n", + " [9. , 9.000001 , 9. , 9. , 9. ],\n", + " [0. , 0. , 0. , 0. , 0. ]],\n", + " dtype=float32)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s.data" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Operator `Kernel` ran in 0.01 s\n" + ] + }, + { + "data": { + "text/plain": [ + "PerformanceSummary([(PerfKey(name='section0', rank=None),\n", + " PerfEntry(time=2.7e-05, gflopss=0.0, gpointss=0.0, oi=0.0, ops=0, itershapes=[]))])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "op = Operator(s.inject(u, expr=s))\n", + "op()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0AAAAMzCAYAAACP1XItAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAoo0lEQVR4nO3dfYyV9Znw8WsAZ0ZTQVyW4WXHstK12qpgocyO1hg3U+dJDV2SbcpqA4T4Ulu2jzrpVvCF0do6rFGWZMUSqa79x0Jr1DSFxbWzkqbrbEh52WgWMUopxHRGWdcZi+2MztzPH91OnymDcs68OV6fT3L+4Ob+nfs6yQ/k633OmYqiKIoAAABIYMJYDwAAADBaBBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJBGyQH005/+NBYvXhyzZs2KioqKeOqpp953zc6dO+NTn/pUVFVVxcc+9rF49NFHyxgVAABgaEoOoGPHjsW8efNi48aNJ3X+L37xi7jyyivj8ssvj3379sVNN90U1157bTz99NMlDwsAADAUFUVRFGUvrqiIJ598MpYsWXLCc2655ZbYtm1bvPDCC/3H/vZv/zbefPPN2LFjR7mXBgAAKNmkkb5AW1tbNDQ0DDjW2NgYN9100wnXdHd3R3d3d/+v+/r64o033og/+ZM/iYqKipEaFQAA+AApiiLeeuutmDVrVkyYMDxfXzDiAdTe3h41NTUDjtXU1ERXV1f85je/iVNPPfW4NS0tLXHXXXeN9GgAAMA4cOTIkfizP/uzYXmuEQ+gcqxZsyaampr6f93Z2RlnnXVWRNwcEVVjNhcAADCauiPiH+P0008ftmcc8QCaMWNGdHR0DDjW0dERkydPHvTuT0REVVVVVFUNFjpVIYAAACCX4fwYzIj/HKD6+vpobW0dcOyZZ56J+vr6kb40AADAACUH0K9//evYt29f7Nu3LyJ+9zXX+/bti8OHD0fE796+tnz58v7zb7jhhjh48GB84xvfiBdffDEefPDB+MEPfhA333zz8LwCAACAk1RyAP385z+Piy66KC666KKIiGhqaoqLLroo1q5dGxERv/rVr/pjKCLiz//8z2Pbtm3xzDPPxLx58+L++++P7373u9HY2DhMLwEAAODkDOnnAI2Wrq6umDJlSkSsDp8BAgCALLojYl10dnbG5MmTh+UZR/wzQAAAAB8UAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQRlkBtHHjxpgzZ05UV1dHXV1d7Nq16z3P37BhQ3z84x+PU089NWpra+Pmm2+O3/72t2UNDAAAUK6SA2jr1q3R1NQUzc3NsWfPnpg3b140NjbGa6+9Nuj5jz32WKxevTqam5tj//798fDDD8fWrVvj1ltvHfLwAAAApSg5gNavXx/XXXddrFy5Mj7xiU/Epk2b4rTTTotHHnlk0POfe+65uOSSS+Lqq6+OOXPmxBVXXBFXXXXV+941AgAAGG4lBVBPT0/s3r07Ghoa/vAEEyZEQ0NDtLW1Dbrm4osvjt27d/cHz8GDB2P79u3xuc997oTX6e7ujq6urgEPAACAoZpUyslHjx6N3t7eqKmpGXC8pqYmXnzxxUHXXH311XH06NH4zGc+E0VRxLvvvhs33HDDe74FrqWlJe66665SRgMAAHhfI/4tcDt37ox77rknHnzwwdizZ0888cQTsW3btrj77rtPuGbNmjXR2dnZ/zhy5MhIjwkAACRQ0h2gadOmxcSJE6Ojo2PA8Y6OjpgxY8aga+64445YtmxZXHvttRERccEFF8SxY8fi+uuvj9tuuy0mTDi+waqqqqKqqqqU0QAAAN5XSXeAKisrY8GCBdHa2tp/rK+vL1pbW6O+vn7QNW+//fZxkTNx4sSIiCiKotR5AQAAylbSHaCIiKamplixYkUsXLgwFi1aFBs2bIhjx47FypUrIyJi+fLlMXv27GhpaYmIiMWLF8f69evjoosuirq6unj55ZfjjjvuiMWLF/eHEAAAwGgoOYCWLl0ar7/+eqxduzba29tj/vz5sWPHjv4vRjh8+PCAOz633357VFRUxO233x6vvvpq/Omf/mksXrw4vv3tbw/fqwAAADgJFcU4eB9aV1dXTJkyJSJWR4TPBgEAQA7dEbEuOjs7Y/LkycPyjCP+LXAAAAAfFAIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGpPGegCAkzLtzrKXFn9fUfbailuay14LAHzwuAMEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASEMAAQAAaQggAAAgDQEEAACkIYAAAIA0BBAAAJCGAAIAANIQQAAAQBoCCAAASGPSWA8AcFKOri97acUt/zmECz8xhLUAwAeNO0AAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANCaN9QAAJ6drCGufGLYpYLzbXzxa9trzLj9U/oV33ln+WoBh5A4QAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAII1JYz0AADB6zpt5qPzF7f8ybHMAjBV3gAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpTBrrAQBg3Hr8zrKXvvI3M8teO7fiy2WvjfY7y18L8CHgDhAAAJBGWQG0cePGmDNnTlRXV0ddXV3s2rXrPc9/8803Y9WqVTFz5syoqqqKc845J7Zv317WwAAAAOUq+S1wW7dujaampti0aVPU1dXFhg0borGxMQ4cOBDTp08/7vyenp747Gc/G9OnT4/HH388Zs+eHb/85S/jjDPOGI75AQAATlrJAbR+/fq47rrrYuXKlRERsWnTpti2bVs88sgjsXr16uPOf+SRR+KNN96I5557Lk455ZSIiJgzZ87QpgYAAChDSW+B6+npid27d0dDQ8MfnmDChGhoaIi2trZB1/zoRz+K+vr6WLVqVdTU1MT5558f99xzT/T29p7wOt3d3dHV1TXgAQAAMFQlBdDR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hgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANMoKoI0bN8acOXOiuro66urqYteuXe95/g9/+MM499xzo7q6Oi644ILYvn17WcMCAAAMRckBtHXr1mhqaorm5ubYs2dPzJs3LxobG+O1114b9Pznnnsurrrqqrjmmmti7969sWTJkliyZEm88MILQx4eAACgFBVFURSlLKirq4tPf/rT8cADD0RERF9fX9TW1sbXvva1WL169XHnL126NI4dOxY//vGP+4/95V/+ZcyfPz82bdp0Utfs6uqKKVOmRMTqiKgqZVwAAGDc6o6IddHZ2RmTJ08elmecVMrJPT09sXv37lizZk3/sQkTJkRDQ0O0tbUNuqatrS2ampoGHGtsbIynnnrqhNfp7u6O7u7u/l93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sW/fvv7H5z//+f5vt6mtrR3N8Rknyvn77JJLLomXX365P7AjIl566aWYOXOm+GFQ5eyzt99++7jI+X10/+4z7jA0w9YApX0/w8jYsmVLUVVVVTz66KPFf/3XfxXXX399ccYZZxTt7e1FURTFsmXLitWrV/ef/+///u/FpEmTivvuu6/Yv39/0dzcXJxyyinF888/P1YvgXGg1H22bt26orKysnj88ceLX/3qV/2Pt956a6xeAuNAqfvsj/kWOE5Gqfvs8OHDxemnn1783d/9XXHgwIHixz/+cTF9+vTiW9/61li9BMaBUvdZc3Nzcfrppxff//73i4MHDxb/+q//WsydO7f44he/OFYvgQ+4t956q9i7d2+xd+/eIiKK9evXF3v37i1++ctfFkVRFKtXry6WLVvWf/7BgweL0047rfj7v//7Yv/+/cXGjRuLiRMnFjt27Cjpuh+IACqKovinf/qn4qyzzioqKyuLRYsWFf/xH//R/3uXXXZZsWLFigHn/+AHPyjOOeecorKysvjkJz9ZbNu2bZQnZjwqZZ999KMfLSLiuEdzc/PoD864UurfZ/8/AcTJKnWfPffcc0VdXV1RVVVVnH322cW3v/3t4t133x3lqRlvStln77zzTnHnnXcWc+fOLaqrq4va2triq1/9avE///M/oz8448Kzzz476L+1fr+vVqxYUVx22WXHrZk/f35RWVlZnH322cU///M/l3zdiqJwTxIAAMhhzD8DBAAAMFoEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGv8Pf1rAaS0ufY4AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.imshow(u.data[1], vmin=0, vmax=1, cmap=\"jet\", extent=[0,1,0,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## PrecomputedSparseFunction\n", + "\n", + "In some cases, simple linear interpolation may not be sufficient for two main reasons:\n", + "- The polynomial approximation isn't accurate enough\n", + "- The interpolation coefficients could be precomputed as they are not time-dependent\n", + "\n", + "`PrecomputedSparseFunction` offer the interface to answer these two points by allowing the user to provide arbitrary precomputed interpolation weights over an arbitrary large support. \n", + "\n", + "To illustrate this capability, we show in the following how to use `PrecomputedSparseFunction` to compute a simple local average over a `4x4` window centered on a sparse point ( average over `[x-1, x, x+1, x+2]` in 1D)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " Tensor symbol representing a sparse array in symbolic equations; unlike\n", + " SparseFunction, PrecomputedSparseFunction uses externally-defined data\n", + " for interpolation.\n", + "\n", + " Parameters\n", + " ----------\n", + " name : str\n", + " Name of the symbol.\n", + " npoint : int\n", + " Number of sparse points.\n", + " grid : Grid\n", + " The computational domain from which the sparse points are sampled.\n", + " r : int\n", + " Number of gridpoints in each Dimension to interpolate a single sparse\n", + " point to. E.g. `r=2` for linear interpolation.\n", + " coordinates : np.ndarray, optional\n", + " The coordinates of each sparse point.\n", + " gridpoints : np.ndarray, optional\n", + " An array carrying the *reference* grid point corresponding to each\n", + " sparse point. Of all the gridpoints that one sparse point would be\n", + " interpolated to, this is the grid point closest to the origin, i.e. the\n", + " one with the lowest value of each coordinate Dimension. Must be a\n", + " two-dimensional array of shape `(npoint, grid.ndim)`.\n", + " interpolation_coeffs : np.ndarray, optional\n", + " An array containing the coefficient for each of the r^2 (2D) or r^3\n", + " (3D) gridpoints that each sparse point will be interpolated to. The\n", + " coefficient is split across the n Dimensions such that the contribution\n", + " of the point (i, j, k) will be multiplied by\n", + " `interp_coeffs[..., i]*interp_coeffs[...,j]*interp_coeffs[...,k]`.\n", + " So for `r=6`, we will store 18 coefficients per sparse point (instead of\n", + " potentially 216). Must be a three-dimensional array of shape\n", + " `(npoint, grid.ndim, r)`.\n", + " space_order : int, optional\n", + " Discretisation order for space derivatives. Defaults to 0.\n", + " shape : tuple of ints, optional\n", + " Shape of the object. Defaults to `(npoint,)`.\n", + " dimensions : tuple of Dimension, optional\n", + " Dimensions associated with the object. Only necessary if the SparseFunction\n", + " defines a multi-dimensional tensor.\n", + " dtype : data-type, optional\n", + " Any object that can be interpreted as a numpy data type. Defaults\n", + " to `np.float32`.\n", + " initializer : callable or any object exposing the buffer interface, optional\n", + " Data initializer. If a callable is provided, data is allocated lazily.\n", + " allocator : MemoryAllocator, optional\n", + " Controller for memory allocation. To be used, for example, when one wants\n", + " to take advantage of the memory hierarchy in a NUMA architecture. Refer to\n", + " `default_allocator.__doc__` for more information.\n", + "\n", + " Notes\n", + " -----\n", + " The parameters must always be given as keyword arguments, since SymPy\n", + " uses `*args` to (re-)create the Dimension arguments of the symbolic object.\n", + " \n" + ] + } + ], + "source": [ + "print(PrecomputedSparseFunction.__doc__)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "coeffs = np.ones((5, 2, 5))\n", + "s = PrecomputedSparseTimeFunction(name=\"s\", grid=grid, npoint=npoint, nt=nt, \n", + " interpolation_coeffs=coeffs,\n", + " coordinates=coords, r=2)\n", + "\n", + "\n", + "pos = tuple(product((-grid.spacing[1], 0, grid.spacing[1],2*grid.spacing[1]),\n", + " (-grid.spacing[1], 0, grid.spacing[1],2*grid.spacing[1])))\n", + "interp_points = np.concatenate([base+p for p in pos])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAANECAYAAAB/24QQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACn1ElEQVR4nOzdeXhTZf7+8TulaSnQHNaWrRRQEREUfiAIuKCAqIDo6Kig4oILYxhRZhx0XAAdcV8YjeKCiKN8RUfHEUUQEVwKioC4oIKCFIECytKkUCBtz++PkExDS9ssPW163q/r6lU5yee5n/PkIfoxyYnDNE1TAAAAAGBTSTU9AQAAAACoSTRFAAAAAGyNpggAAACArdEUAQAAALA1miIAAAAAtkZTBAAAAMDWaIoAAAAA2BpNEQAAAABboykCAAAAYGs0RQBQji+//FL9+vVTw4YN5XA4tHr1aknS/Pnz1b17d9WvX18Oh0N79uyJeGyHw6Fx48bFd8LVZPLkyXI4HFW6r8Ph0OTJk6t3QqiSJUuWyOFwaMmSJZXed+PGjXI4HHrppZeqfV4AUFvRFAGwhTVr1ujyyy9XmzZtlJqaqtatW+uyyy7TmjVrytzX7/frj3/8o3bt2qXHH39c//rXv5Sdna2dO3fq4osvVlpamjwej/71r3+pYcOG5eYtXbpUkydPjqppAqrD7Nmz9cQTT9T0NACgVkqu6QkAQHV76623NHLkSDVt2lRjxoxRhw4dtHHjRs2YMUP//ve/9dprr+mCCy4I3X/9+vXKzc3V888/r2uvvTZ0fP78+fL5fLr33ns1aNCgCjOXLl2qKVOm6KqrrlLjxo2r69Sq3Z133qnbbrutpqeBCJ122mkqLCxUSkpK6Njs2bP13Xff6eabbw67b3Z2tgoLC+V0Oi2eJQDUHjRFAOq09evX64orrlDHjh31ySefqEWLFqHbxo8fr1NPPVVXXHGFvvnmG3Xs2FGStGPHDkkq08wc6XhdtHfvXjVs2FDJyclKTq57/6owTVP79+9XWlpaTU+lWiQlJal+/fpVuq/D4ajyfQGgruLtcwDqtIcfflj79u3Tc889F9YQSVLz5s317LPPau/evXrooYckSVdddZVOP/10SdIf//hHORwODRgwQAMGDNCVV14pSTrppJPkcDh01VVXlZs5efJk3XrrrZKkDh06yOFwyOFwaOPGjWH3e/vtt9W1a1elpqbq+OOP1/z588uMtWXLFl1zzTXKzMwM3e/FF1+s0rkXFhbqpptuUvPmzZWenq7zzjtPW7ZsKfPZn+Dnhr7//nuNGjVKTZo00SmnnBJ2W2kHDhzQLbfcohYtWoTG3bx5c5XmJElPPvmkjj/+eDVo0EBNmjRRr169NHv27DLz+fHHH3XxxRfL5XKpWbNmGj9+vPbv3x821syZM3XmmWcqIyNDqamp6tKli5555pkyme3bt9ewYcO0YMEC9erVS2lpaXr22WclSQsXLtQpp5yixo0bq1GjRjr22GP197//vcw5T5o0SUcffbRSU1OVlZWlv/3tbzpw4ECl5ztgwAB17dpVK1euVL9+/ZSWlqYOHTpo+vTpZe67Y8cOjRkzRpmZmapfv75OPPFEzZo1q8z9XnvtNfXs2VPp6elyuVzq1q2bpk2bFrr98M8UDRgwQO+9955yc3ND+7F9+/aSjvyZoo8++kinnnqqGjZsqMaNG2vEiBH64Ycfwu4TfKx+/vnn0KuihmHo6quv1r59+8LuW5V1BoCaUvf+9x8AlDJ37ly1b99ep556arm3n3baaWrfvr3ee+89SdINN9ygNm3aaOrUqbrpppt00kknKTMzU5J07LHH6rnnntM999yjDh066Kijjip3zD/84Q9at26d/u///k+PP/64mjdvLklhTdlnn32mt956SzfeeKPS09P1z3/+UxdeeKE2bdqkZs2aSZK2b9+uk08+OXRhhhYtWuj999/XmDFj5PV6y7wN6nBXXXWVXn/9dV1xxRU6+eST9fHHH2vo0KFHvP8f//hHHXPMMZo6dapM0zzi/a699lq98sorGjVqlPr166ePPvqownFLe/7553XTTTfpoosuCjU533zzjb744guNGjUq7L4XX3yx2rdvr/vvv1+ff/65/vnPf2r37t16+eWXQ/d55plndPzxx+u8885TcnKy5s6dqxtvvFElJSVyu91h461du1YjR47UDTfcoOuuu07HHnus1qxZo2HDhumEE07QPffco9TUVP3888/KyckJ1ZWUlOi8887TZ599puuvv17HHXecvv32Wz3++ONat26d3n777UrPe/fu3Tr33HN18cUXa+TIkXr99df1pz/9SSkpKbrmmmskBZrYAQMG6Oeff9a4cePUoUMHvfHGG7rqqqu0Z88ejR8/XlKguRg5cqQGDhyoBx98UJL0ww8/KCcnJ3Sfw91xxx3Kz8/X5s2b9fjjj0uSGjVqdMT5fvjhhzrnnHPUsWNHTZ48WYWFhXryySfVv39/rVq1KtRQlX6sOnTooPvvv1+rVq3SCy+8oIyMjND8qrLOAFCjTACoo/bs2WNKMkeMGFHh/c477zxTkun1ek3TNM3Fixebksw33ngj7H4zZ840JZlffvllpdkPP/ywKcn85ZdfytwmyUxJSTF//vnn0LGvv/7alGQ++eSToWNjxowxW7VqZf7+++9h9ZdeeqlpGIa5b9++I+avXLnSlGTefPPNYcevuuoqU5I5adKk0LFJkyaZksyRI0eWGSd4W9Dq1atNSeaNN94Ydr9Ro0aVGbc8I0aMMI8//vgK7xPMPO+888KO33jjjaYk8+uvvw4dK28NhgwZYnbs2DHsWHZ2tinJnD9/ftjxxx9/3JRk/vbbb0ecz7/+9S8zKSnJ/PTTT8OOT58+3ZRk5uTkVHg+p59+uinJfPTRR0PHDhw4YHbv3t3MyMgwDx48aJqmaT7xxBOmJPOVV14J3e/gwYNm3759zUaNGoX25/jx402Xy2UWFRUdMTO4hxcvXhw6NnToUDM7O7vMfX/55RdTkjlz5szQseDcdu7cGTr29ddfm0lJSebo0aNDx4KP1TXXXBM25gUXXGA2a9Ys9OeqrDMA1CTePgegzvL5fJKk9PT0Cu8XvN3r9Vb7nIIGDRoU9krTCSecIJfLpQ0bNkgKfOblzTff1PDhw2Wapn7//ffQz5AhQ5Sfn69Vq1YdcfzgW/FuvPHGsON//vOfj1gzduzYSuc9b948SdJNN90UdryyV62CGjdurM2bN+vLL7+s9L6Hv9ITnHtwDpLCPhOUn5+v33//Xaeffro2bNig/Pz8sPoOHTpoyJAhZeYjSf/9739VUlJS7jzeeOMNHXfccercuXPY43DmmWdKkhYvXlzpuSQnJ+uGG24I/TklJUU33HCDduzYoZUrV4bOq2XLlho5cmTofk6nUzfddJMKCgr08ccfh+a8d+9eLVy4sNLcaOTl5Wn16tW66qqr1LRp09DxE044QYMHDw5b/6DD986pp56qnTt3hv5OVWWdAaAm0RQBqLOCzU6wOTqSqjZP8dSuXbsyx5o0aaLdu3dLkn777Tft2bMn9Fmo0j9XX321pP9d+KE8ubm5SkpKUocOHcKOH3300UesOfy+FY17+FsHjz322EprJWnixIlq1KiRevfurWOOOUZut/uIb6E65phjwv581FFHKSkpKeyzWTk5ORo0aFDocy8tWrQIfU6lvKbocJdccon69++va6+9VpmZmbr00kv1+uuvh/2H+08//aQ1a9aUeRw6deokqeLHIah169ZlLt8erA+eT25uro455hglJYX/q/m4444L3S4FGt1OnTrpnHPOUdu2bXXNNdeU+3m0aAVzyntMjzvuOP3+++/au3dv2PHD93OTJk0kKbSfq7LOAFCT+EwRgDrLMAy1atVK33zzTYX3++abb9SmTRu5XC6LZibVq1ev3OPmoc/yBP9j8fLLLw9d4OFwJ5xwQlznZMWV2I477jitXbtW7777rubPn68333xTTz/9tO6++25NmTKlwtrDL/iwfv16DRw4UJ07d9Zjjz2mrKwspaSkaN68eXr88cfL/Ad3eeeXlpamTz75RIsXL9Z7772n+fPna86cOTrzzDP1wQcfqF69eiopKVG3bt302GOPlTuvrKysCFchNhkZGVq9erUWLFig999/X++//75mzpyp0aNHl3tRBitUtp+rss4AUJNoigDUacOGDdPzzz+vzz77LHRFtdI+/fRTbdy4MeytTfFw+H/ARyp4Zbfi4uJKvxOpPNnZ2SopKdEvv/wS9orLzz//HNO8guOuX78+7JWEtWvXVnmMhg0b6pJLLtEll1yigwcP6g9/+IPuu+8+3X777WGXhv7pp5/CXt35+eefVVJSEvqQ/9y5c3XgwAG98847Ya9UVOXtbKUlJSVp4MCBGjhwoB577DFNnTpVd9xxhxYvXhx6m+PXX3+tgQMHRv24bt26NXSZ86B169ZJUuh8srOz9c0336ikpCTs1aIff/wxdHtQSkqKhg8fruHDh6ukpEQ33nijnn32Wd11111HfDWwqnMP5pT3mP74449q3rz5Eb+0uCKVrTMA1CTePgegTrv11luVlpamG264QTt37gy7bdeuXRo7dqwaNGgQuoR2vAT/o3HPnj1R1derV08XXnih3nzzTX333Xdlbv/tt98qrA9+dubpp58OO/7kk09GNZ+gc845R5L0z3/+M+z4E088UaX6wx+DlJQUdenSRaZpyu/3h93m8XjC/hyce3AOwVcXzFJXysvPz9fMmTOrNBcpsAcO1717d0kKXW774osv1pYtW/T888+XuW9hYWGZt5KVp6ioKHQJcEk6ePCgnn32WbVo0UI9e/aUJJ177rnatm2b5syZE1b35JNPqlGjRqFLxR++hklJSaFXDSu6RHjDhg3LvKWwPK1atVL37t01a9assP373Xff6YMPPtC5555b6RiHq8o6A0BN4pUiAHXaMccco1mzZumyyy5Tt27dNGbMGHXo0EEbN27UjBkz9Pvvv+v//u//jnh57WgF/0P3jjvu0KWXXiqn06nhw4dH9H/YH3jgAS1evFh9+vTRddddpy5dumjXrl1atWqVPvzww3L/Q7N0/oUXXqgnnnhCO3fuDF2SO/jqRLSveHTv3l0jR47U008/rfz8fPXr10+LFi2q8itQZ511llq2bKn+/fsrMzNTP/zwg5566ikNHTq0zGe6fvnlF5133nk6++yztWzZstBlwE888cTQWMFXTG644QYVFBTo+eefV0ZGhvLy8qo0n3vuuUeffPKJhg4dquzsbO3YsUNPP/202rZtG3pl8YorrtDrr7+usWPHavHixerfv7+Ki4v1448/6vXXXw9991FFWrdurQcffFAbN25Up06dNGfOHK1evVrPPfecnE6nJOn666/Xs88+q6uuukorV65U+/bt9e9//1s5OTl64oknQutz7bXXateuXTrzzDPVtm1b5ebm6sknn1T37t1Dnz8qT8+ePTVnzhxNmDBBJ510kho1aqThw4eXe9+HH35Y55xzjvr27asxY8aELsltGEbYd1xVVVXWGQBqVE1e+g4ArPLNN9+YI0eONFu1amU6nU6zZcuW5siRI81vv/22zH3jcUlu0zTNe++912zTpo2ZlJQUdnluSabb7S5z/+zsbPPKK68MO7Z9+3bT7XabWVlZoXkPHDjQfO655yrN37t3r+l2u82mTZuajRo1Ms8//3xz7dq1piTzgQceCN0veFnl8i6XfPgluU3TNAsLC82bbrrJbNasmdmwYUNz+PDh5q+//lqlS3I/++yz5mmnnWY2a9bMTE1NNY866ijz1ltvNfPz88tkfv/99+ZFF11kpqenm02aNDHHjRtnFhYWho33zjvvmCeccIJZv359s3379uaDDz5ovvjii2Uuh56dnW0OHTq0zHwWLVpkjhgxwmzdurWZkpJitm7d2hw5cqS5bt26sPsdPHjQfPDBB83jjz/eTE1N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jRs3VsuWLWWaptLS0kKNVdDw4cM1ePBgFRYWKi0tLaLzAwAgVgn19jkAqG6ffvqpevbsGXZs2bJl6tatmzIzM0PHhgwZIp/PpzVr1lRp3F27dunVV19Vv379Qu+1//LLL9WhQwe9++676tChg9q3b69rr722zCtFM2fO1IYNGzRp0qSozmnlypXy+/0aNGhQ6FinTp3Url07LVu2rNyakpISvffee+rUqZOGDBmijIwM9enTp9KGLD8/Xy6Xq8yHrN1ut5o3b64+ffrolVdeKXPloF69eqmoqEhffPFFVOcIAEAsaIoAoJTc3Fy1bt067Ni2bdvCGiJJoT9v27atwvEmTpyohg0bqlmzZtq0aZP++9//hm7bvn27Nm3apDfeeEMvv/yyXnrpJa1cuVIXXXRR6D4//fSTbrvtNr3yyisRX82p9PxTUlLUuHHjMudwpPnv2LFDBQUFeuCBB3T22Wfrgw8+0AUXXFDhW+5+//133Xvvvbr++uvDjt9zzz16/fXXtXDhQv3hD3/QX//6Vz355JNh92nQoIEMw1Bubm5U5wgAQCx4+xwAlFJYWFjmrV2xuPXWWzVmzBjl5uZqypQpGj16tN59911JgVdjDhw4oJdfflmdOnWSJM2YMUM9e/bU2rVrdfTRR2vUqFGaMmVK6HarlJSUSJJGjBgRehtg9+7dtXTpUr344os699xzw+7v9Xo1dOhQdenSRZMnTw677a677gr9c/fu3bVr1y498sgjGj9+fNj90tLStG/fvmo4GwAAKsYrRQBQSvPmzbV79+6wYy1btixzcYPgn1u2bFnpeJ06ddLgwYP12muvad68efr8888lSU2bNlVycnJYw3PcccdJkjZt2iSfz6cVK1Zo3LhxSk5OVnJysu655x59/fXXat68uT766KMqnVPLli118OBB7dmzp8w5HGn+zZs3V3Jysrp06RJ2vHPnztq8eXPYMZ/Pp7PPPlvp6en6z3/+U+mleHv27KnNmzfrwIEDYcd37dqlFi1aVOmcAACIJ5oiAJD01abdemvVZmW0P1bff/992G19+/bVt99+qx07doSOLVy4UOnp6WWahooEX30JNgOdO3dWUVGR1q9fH7rPunXrJAUuzOByufTtt99q9erVoZ+xY8fq2GOP1SeffKI+ffpUKbdnz55yOp1atGhR6NhPP/2kTZs2qW/fvuXWpKSk6KSTTtLatWvDjv/000/KysoK/dnr9eqss85SSkqK3nnnnSq9yvbtt9+qSZMmSk393yUq1q9fr/3796tHjx5VOicAAOKJt88BsL0H3/9B0z/5RZJ08Ldm2v7dGu3evVtNmjSRJJ111lnq0qWLrrjiCj300EPatm2b7rrrLl177bWh/7Bfvny5Ro8erUWLFqlNmzb64osv9OWXX+qUU05RkyZNtH79et1111066qijQo3IiSeeqB49euiaa67RE088oZKSErndbg0ePDj06lHXrl3D5pqRkaH69eurS5cuatiwYZXOzzAMjRkzRhMmTFDTpk2Vnp4ut9utvn37hl15rnPnzrr//vt1wQUXSAq89e+SSy7RaaedpjPOOEPz58/X3LlzNXfuXEn/a4j27dunV155RV6vV16vV5LUokUL1atXT3PnztX27dt18sknq379+vrggw/0+OOP6y9/+UvYHD/99FN17NhRRx11VNUfOAAA4oRXigDY2tptXj37yYbQn1NatFdyRkc9Mv2l0LF69erp3XffVb169dS3b19dfvnluuKKK/T3v/89dJ99+/Zp7dq1oW90b9Cggd566y0NHDhQxx57rMaMGaMTTjhBH3/8caiRSkpK0n/+8x81b95cp512moYOHarjjjtOr732WkTn8NJLL1X6RXaPP/64hg0bpgsvvFCnn366MjMzwy6nLUlr164NXW5bki644AJNnz5dDz30kLp166YXXnhB//73v0NN3apVq/TFF1/o22+/1dFHH61WrVqFfn799VdJktPplMfjUd++fdW9e3c999xz+sc//lHmSnr/93//p+uuuy6i8wYAIF54pQiArW3ZU1jmmNF/pF5+/hndO3G8kpIC/+8oOztb8+bNC93HNM2wBmLAgAFhl5nu1q1blT7z07p16zLNSUUmT56sSZMmhWX/8ssvOv300yusq1+/vjwejzweT2juxmHf73T4ZbIl6ZprrtE111wTdp9g9uHnXJ6zzz5bZ599dpn64LpK0po1a7R69Wq9/vrrFY4FAEB14ZUiAIlr8wpp3YLA7yjrO/uWqbtjfdjhBkedpEuuuEpbtmypvuytX4X/jsH7778f9gWriSYvL08vv/xymSYNAACr8EoRgMS0cJKUM01Ky5YKc6X+46XBUyKub52WrbdSczW9aJgeLBopSfrT6R018Zyh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N27cEd8ut2TJkjLH+vbtq88//zyaKAAAAACoVkmV3wUAAAAA6i6aIgAAAAC2RlMEAAAAwNZoigCgFti5c6cyMjK0cePGmp6KLVx66aV69NFHa3oaAIBagqYIAGqB++67TyNGjFD79u1DxzZt2qShQ4eqQYMGysjI0K233qqioqIqjXfgwAF1795dDodDq1evDrvtm2++0TnnnKO0tDRlZWXpoYceCrv9+eef16mnnqomTZqoSZMmGjRokJYvXx7xOe3atUuXXXaZXC6XGjdurDFjxqigoKDCmgEDBsjhcIT9jB07NnT77NmzlZSUVOY+DodDO3bsKDNeTk6OkpOT1b1797Djd955p+677z7l5+dHfF4AgLqHpggAati+ffs0Y8YMjRkzJnSsuLhYQ4cO1cGDB7V06VLNmjVLL730ku6+++4qjfm3v/1NrVu3LnPc6/VqyJAhysrK0ooVK/Twww9r8uTJeu6550L3WbJkiUaOHKnFixdr2bJlysrK0llnnaUtW7ZEdF6XXXaZ1qxZo4ULF+rdd9/VJ598ohtuuKHSuuuuu055eXmhn9JN2wUXXKCtW7eG3T5kyBCdfvrpysjICBtnz549Gj16tAYOHFgmo2vXrjrqqKP0yiuvRHROAIC6iaYIAKKxeYW0bkHgdzS2fhX6PW/ePKWmpurkk08O3fzBBx/o+++/1yuvvKLu3bvrnHPO0b333iuPx6ODG5ZVmP3+++/rgw8+0COPPFLmtldffVUH9xfqqfEjdLxRqEsvvVQ33XSTHnvssbD73Hjjjerevbs6d+6sF154QSUlJVq0aFGVT++HH37Q/Pnz9cILL6hPnz465ZRT9OSTT+q1115TXl5ehbUNGjRQy5YtQz8ulyt0W1paWtht9erV00cffRTWUAaNHTtWo0aNUt++fcvNGT58uF577bUqnxMAoO6iKQKASC2cJM0YLC2eGvi9cFLk9bOGB/551nB9+urD6tmzZ9hdli1bpm7duoW+GFuShgwZIq/XqzUPDTli9vbt23XdddfpX//6lxo0aFAmetlb03Vay31K+eyhUP2QIUO0du1a7d69u9zp7tu3T36/X02bNq3yKS5btkyNGzdWr169QscGDRqkpKQkrVy5ssLaV199Vc2bN1fXrl11++23a9++fUe878svv6wGDRrooosuCjs+c+ZMbdiwQZMmHfmx6d27t5YvX64DBw5U8awAAHVVVF/eWlNM05RpmlHVRFoXj3qyEzO79DhWZ9t1zRMqe/MKKWeaTDlCP8qZJnUeJrXtVfX6pPqBOcih3B9WqVX3c8LmkZeXp8zMzLBjGf7NgdsKTHUoJ9s0TV111VW64YYb1LNnz9BFG0LnuHmFtm34Xu0bJ4XNPePULqHMxo0bl5ly8K14AwcOrPKa5eXlKSMjI+x+9erVU9OmTbV9+/Yj1o8cOVLZ2dlq3bq1vvnmG912221au3at3nzzzXKzZ8yYoZEjR6p+/fqh4z/99JNuu+02ffLJJ6pXr16Zv9fBP7dq1UoHDx5UXl6esrOzKzyfRN/npcexOjuh/n6TzV4jO2Gy461WN0Uej0cej0fFxcWSJJ/Pp+TkyKZsmmbog70OhyPiOcRST3biZQc/xO71etlrZJcvb4OUli1TDhWktgzUygwcTz+myvVFSSmSJG9alnwle9W86EDYh/79fr+KiorCju3b9oskaW9qRrnZzz77rHbv3q0bb7xR+fn58vl8kqSCgoLAOHkbVFSvvg4mp4TV+34LNFs+n6/MhQcef/xxvfbaa5o7d64OHDig/fv3V2nN9u/fr5KSkjLjmaapAwcC51pe/SWXXBL653bt2snlcmnEiBFavXq12rdvH5a9fPly/fDDD3r66adDOcXFxbr00ks1ceJEZWZmKj8/XwcOHFBxcbHy8/PD6oN/37dv315uM3j4vBN1n/O8RrZV2ew1sq3KDv77LZ5qdVPkdrvldrvl9XplGIbS09NlGEZEYwQ7ScMwon7Ao60nO/Gy/X6/JMnlcsnpdFqabdc1T7jsVh2lwtzAqyySjMLcQGPSqqNUleenQ/X+Q68UuQp/Vcv6B7SvSGHPb1lZWVq9enXYsV31Ap+tOcr5mxodcJXJXrZsmb788suwt9xJ0hlnnKHLLrtML/1jnNqmHdDu/P1qdGBbqH6fI/A2u2OOOSYs75FHHtG0adO0cOHC0Nvgqrpm7du31++//x42XlFRkXbv3q2srKwqr/mZZ54pKdC4nHjiiWHZr732mrp3767TTz89dP89e/boq6++0jfffKO//e1vkqSSkhKZpqkWLVrozTff1PDhw+VwOEJ/3zt27Fjpv1sSeZ/zvEa2VdnsNbKtyq7qlVgjUaubosMFL7sabV00tbHWk51Y2cEau5032RHUZ50k9R8v5Uz73xvo+t8cOB5BvWPZ9EC+TB3dvb/++832sDn069dPU6dO1W+//Ra6qtqHa3bI1SBVx7dI0v5ysv/5z3/qH//4R2iMrVu3asiQIZozZ4769OkjR9u26nv6YN3x/PsqKi4J1X+4+Fcde+yxYZ8Zeuihh3TfffdpwYIFOumk8HOrypr169dPe/bs0apVq0Kfl1q8eLFKSkrUq1evKq/5119/LUlq3bp1WO7evXv1xhtv6P777w8bxzAMffvtt2FjPP300/roo4/0xhtvqGnTpqEx1qxZo7Zt26pFixaVzqOq511d9TyvkZ0I2ew1sq2sjbeEaooAoFYYPCXwOZ68DYFXaaraEJWqn72nqxpLGnXwDuU462n7dzdr9+7datKkiSTprLPOUpcuXXTFFVfooYce0rZt23TnnXfKPX6CUm+4QPvzNmj59kJd+ecHtGjRdWrTpo3atWsXFtOoUSNJ0lFHHaW2bdtKkkbdO1tTXuuoP3/WWHdO+LvW7HRo2rRr9Pjjj4fqHnzwQd19992aPXu22rdvr23btoXGa9iwYZVO8bjjjtPZZ5+t6667TtOnT5ff79e4ceN06aWXqlWrVpKkLVu2aODAgXr55ZfVu3dvrV+/XrNnz9a5556rZs2a6ZtvvtEtt9yi0047TSeccELYe8jnzJmjoqIiXX755WG5SUlJ6tq1a9ixjIwM1a9fX127dg17O9+nn36qs846q0rnAwCo27j6HABEo20vqdOQql1c4TBfbdqtqavTJEnfmB2V0qK9kjM66pHpL4XuU69ePb377ruqV6+e+vbtq8svv1yjR4/WPffcE8re1yhba9euDb1lpSoMw9CChR8pd7dfvYZdpb/85S+6++67df3114fu88wzz+jgwYO66KKL1KpVq9BP6Ut8T548OeyLZsvz6quvqnPnzho4cKDOPfdcnXLKKXr22WdDt/v9fq1duzZ0dbmUlBR9+OGHOuuss9S5c2f95S9/0YUXXqi5c+eWGXvGjBn6wx/+UOlngY5k//79evvtt3XddddFVQ8AqFt4pQgALPbL73vLHDP6j9TLzz+jeyeOV1JS4P9XZWdna968eWXuG3zFZMCAARVegad9+/bl3n7CCSfo/fffP+J7uYNXrStPcLyNGzdqwIABR7yfJDVt2lSzZ88uUx98tebw+WVlZenjjz+ucMygpUuXVul+UqCBmzx5cljWzJkz1bt377DvhgIA2BdNEQBYrEPzsm9Ba3DUSbqoS4q2bNmirKysGphV1ZmmqSVLluizzz6r6alEzel06sknn6zpaQAAagmaIgCwWI92TTSmf3vJvz507E+nd9TEc4bW3KQi4HA4tHHjxmr5oKtVrr322pqeAgCgFqEpAoAacMvgYzVv3nrdf0E3dchwqUe7JjU9JQAAbIumCABq0PATW0f8fR4AACC+uPocAAAAAFujKQIAAABgazRFABCNzSukdQsCv6Ox9avw31Zmx1oPAEAdw2eKACBSCydJOdOktGypMFfqP14aPCWy+mXTpROfk2YNl/qOrXp9PLJjqQcAoA5KqKbINM0Kv6iwoppI6+JRT3ZiZpcex+psu655QmVvXiHlTJMpR+hHOdOkzsOktr2qXp9UPzAHOWRWtT5e2dHWy4aPdx3JLj2O1dl2XXO7Zpcex+psu665XbPjrVY3RR6PRx6PR8XFxZIkn8+n5OTIpmyapgoKCiQpqu/UiKWe7MTLLioqkiR5vV72Gtnly9sgpWXLlEMFqS0DtTIDx9OPqXJ9UVKKJMmblqXkkoNVq49TdtT1suHjXQeyeV4j26ps9hrZVmX7fL6IaypTq5sit9stt9str9crwzCUnp4uwzAiGiPYSRqGEfUDHm092YmX7ff7JUkulyviyyQn8nmTHUF9q45SYW7gVRZJRmFuoLFo1VGqyvPToXr/oVeKXIW/ylmyv2r1ccqOul42fLzrQDbPa2Rblc1eI9uq7GADHk+1uik6nMPhiGrhgnXRfvt6LPVkJ1Z2sMZu5012BPVZJwU+h5Mz7X9vQut/c+B4BPWOZdMD+ZHUxyk76vpDbPV414FsntfItrK29BhWZsdaT3ZiZUc734okVFMEALXC4CmBz+HkbQi8yhJhU6HBU6ROQ6XVedKVc6Xs3tZmx1IPAEAdRFMEANFo2yvwOZwI39Ib0rpHoClq3cP67FjrAQCoY/ieIgAAAAC2RlMEAAAAwNZoigAAAADYGk0RAAAAAFujKQIAAABgazRFAAAAAGyNpggAAACArdEUAUA0Nq+Q1i0I/I7G1q/Cf1uZHWt9LGLJrsnzrsk1AwBUO768FQAitXCSlDNNSsuWCnOl/uOlwVMiq182XTrxOWnWcKnv2KrXxyM7lvpYxJJdk+ddk2sGALBEQjVFpmnKNM2oaiKti0c92YmZXXocq7PtuuYJlb15hZQzTaYcoR/lTJM6D5Pa9qp6fVL9wBzkkFnV+nhlR1uvGNY8luyaPO84rJlU8/u89DhWZyfU32+y2WtkJ0x2vNXqpsjj8cjj8ai4uFiS5PP5lJwc2ZRN01RBQYEkyeFwRDyHWOrJTrzsoqIiSZLX62WvkV2+vA1SWrZMOVSQ2jJQKzNwPP2YKtcXJaVIkrxpWUouOVi1+jhlR12vGNY8luyaPO84rJnE81o09WQnXjZ7jWyrsn0+X8Q1lanVTZHb7Zbb7ZbX65VhGEpPT5dhGBGNEewkDcOI+gGPtp7sxMv2+/2SJJfLJafTaWm2Xdc84bJbdZQKcwOvGEgyCnMD/5HcqqNUleenQ/X+Q68UuQp/lbNkf9Xq45Qddb1iWPNYsmvyvOOwZhLPawnz95vsmLLZa2RblR1swOOpVjdFh3M4HFEtXLAumtpY68lOrOxgjd3Om+wI6rNOCnymJGfa/95Q1f/mwPEI6h3LpgfyI6mPU3bU9YdEteaxZNfkecdpzSSe18iu+9nsNbKtrI23hGqKAKBWGDwl8JmSvA2BVwwi/Q/kwVOkTkOl1XnSlXOl7N7WZsdSH4tYsmvyvGtyzQAAlqApAoBotO0V+ExJhG/pDWndI9AUte5hfXas9bGIJbsmz7sm1wwAUO34niIAAAAAtkZTBAAAAMDWaIoAAAlr586dysjI0MaNG2t6KrZw22236c9//nNNTwMA4o6mCACQsO677z6NGDFC7du3Dx3btGmThg4dqgYNGigjI0O33nprpZdvbd++fdiVkBwOhx544IGw+3z33Xc67bTTVL9+fWVlZemhhx4Ku/3555/XqaeeqiZNmqhJkyYaNGiQli9fHvE57dq1S5dddplcLpcaN26sMWPGhL7P40gGDBhQZv5jx44Nu88tt9yinj17KjU1Vd27dy8zxuTJk8uMkZSUpDZt2oTu89e//lWzZs3Shg0bIj4vAKjNaIoAAAlp3759mjFjhsaMGRM6VlxcrKFDh+rgwYNaunSpZs2apZdeekl33313pePdc889ysvLC/2UfkXE6/XqwgsvVHZ2tlauXKmHH35YkydP1nPPPRe6z5IlSzRy5EgtXrxYy5YtU1ZWls466yxt2bIlovO67LLLtGbNGi1cuFDvvvuuPv30U918882V1l133XVh8z+8aZOka665Rpdcckm59X/961/D6vPy8tSlSxeNGDEidJ/mzZtryJAheuaZZyI6JwCo7bj6HAAgIc2bN0+pqak6+eSTQ8c++OADff/99/rwww+VmZmp7t27695779XEiRM1adKkCsdLT09Xy5Yty73t1Vdf1cGDBzVjxgylpqbq+OOP1+rVq/XYY4/p+uuvD92ntBdeeEFvvvmmFi1apCuuuKJK5/TDDz9o/vz5+vLLL9WrVy9J0j//+U8NHTpUW7duDXvV5nANGjQ44vwl6fHHH5fT6dRvv/2mb775psztjRo1UqNGjUJ//vrrr/X999/r4YcfDrvf8OHDdccdd5Q5DgCJjFeKAAAJ6dNPP1XPnj3Dji1btkzdunVTZmZm6NiQIUPk9Xq1Zs2aCsd74IEH1KxZM/Xo0UMPP/xw2FvuPv/8c/Xr108pKSlh465du1a7d+8ud7x9+/bJ7/eradOmVT6nZcuWqXHjxqGGSJIGDRqkpKQkffHFFxXWvvrqq2revLm6du2q22+/Xfv27atybnleeOEFderUSf369Qs73rt3b23evJnPcQGoU3ilCACQkHJzc9W6deuwY9u2bQtriCSF/rxt2zZ17Nix3LFuuukm/b//9//UtGlTLV26VLfffrvy8vL02GOPhWoPzyo9bpMmTcqMOXHiRLVu3VqDBg2q8jlt27ZNGRkZYceSk5PVpEkTbdu27Yh1o0aNUnZ2tlq3bq1vvvlGEydO1Nq1a/XWW29VObu0/fv369VXX9XEiRPL3BZch9zc3LDPcgFAIqMpAgBYZ/MKKW+D1KqjlHVSTLWFhYWqX79+1et//0la5ys3e8KECaF/PuGEE5SSkqIbbrhB999/v1JTU6X9Xim/JDCHKsz7gQce0GuvvaYlS5aofv36Mk2z6vOMQvAtfJLUrVs3tWrVSgMHDtT69evVrl27iMf7z3/+I5/PpyuvvLLMbWlpaZIU8ytRAFCb0BQBAKyxcJKUM01Ky5YKc6X+46XBU6Kubd68eZm3rrVs2bLMFd+2b98euC3nTimvY5Wy+/Tpo6KiIm3cuFHHbpqtlvmr9NvONGnG4FBtaNzDPsfzyCOP6IEHHtCHH36oE044oWrnV2r+O3bsCDtWVFSk3bt3V/h5ofLmL0k///xzVE3RCy+8oGHDhikzM1P5+flht+3atUuS1KJFi4jHBYDaKqGaItM0I/6/bcGaaP8vXSz1ZCdmdulxrM6265rbNbv0OFZnW37em1dIOdNkyhH6Uc40qfMwqW2vqGrbNL9EH3z8RdhcTj75ZN13333avn176G1oH8x5Xq5U6bgW9bS/itlfffWVkpKS1OLgZpk509SnbbLuXLxXB4sbKeVQ7QcffKBjjz1WjRs3Ds3hoYce0tSpUzV//nz17NmzzONc2bqdfPLJ2rNnj1asWBH6vNSiRYtUUlKi3r17V3ndv/rqK0mBJutIczjSWL/88osWL16s//73v+XO+9tvv5XT6VSXLl0qnU9N/x0j2/rs0uNYnW3XNbdrdrzV6qbI4/HI4/GouLhYkuTz+ZScHNmUTdMMfb+Dw+GIeA6x1JOdeNnBD1Z7vV72GtnVmm27vZa3QUrLlimHClIDr3g4ZAaOpx8TVW3+7059+90a5ebmqnHjxpICr5Ace+yxGjVqlCZPnqwdO3bozoc8GtO3hfant1ZBakut/HWfbnx9k97utUKt04/R8uXLtXLlSp1yyilKT0/X8uXLdccdd+jiiy9WUuHvyk/L1rDeJZry6Tpd+V6Sxg9ooR9efkX//OcLuu+++0KvpDzxxBO6//779fzzz6tp06Zat26dJKlhw4Zq2LBhldatdevWGjhwoMaMGaPHHntMfr9f48aN03nnnaeGDRsqPz9fW7du1fnnn69nnnlGPXv21C+//KJ///vfGjx4sJo2barvvvtOd9xxh/r166fs7Gx5vV5J0urVq3XgwAFt2rRJe/fu1WeffSZJOvbYY8MuIPHMM8+oZcuW6tevn/Lz88vM+8MPP1Tfvn118OBBHTx4sMKHzq5/v+2abbvnNbJrLNvn80VcU5la3RS53W653W55vV4ZhqH09HQZhhHRGMFO0jCMqB/waOvJTrxsv98vSXK5XHI6nZZm23XN7Zptu73WKvC2NVOBGqMwN9AUteooVfa8foTaHenXKDmjo56f/Zb+cfstobvPmzdPN954o4YMGaKGDRtq9B+H64HMuapXmCtJSirYqp9+O6C0pq1lGIaaNWum//73v3rwwQd14MABdejQQbfccosmTJig1N++lQpz5ZJDb13TXrf/Z73O+OduNW+xR3fddZfGjx8fyn3ppZd08ODBMp/Dufvuu0OXA3/iiSc0a9Ys/fLLL0c83Tlz5ujPf/6zzj//fCUlJekPf/iD7rnnntCa7969Wz/99JOSkpJC8//ss880ffp07d27V1lZWbrooot05513yuVyhfbarbfeqk8++SSUc9ppp0mSNmzYEHorXElJiV577TVdddVVatq0abmP99tvv61JkyZV6d/Hdv37bdds2z2vkV1j2ZV9IXc0anVTdLjgN2xHWxdNbaz1ZCdWdrDGbudNNnut2muzTgp8Fidn2v/eBNf/5qpdbKGc2meKhukr82gZ/Ufq5Rem697bblZSUuBbJtq3b6958+aFj7FwksxD9We0T5b5wSSpX+BLSXv27KnPP/+80uyurerrk6sbBeY9eHKZu1Z0iWrTNOVwOLRx40YNGDCgwrVr1qyZZs+eHVabn58fWvMOHTqEvXWkXbt2+vjjj484XjDrww8/rPQ/VOvVq6dff/21TH3w5/3331dSUpL++Mc/Vvnxt+Pfb7tm2+55jewa32vxlFBNEQAggQ2eEvgcTzRXnxs8RWsbn6ZXFyzVdwdc+so8WpLU4KiTdFGXFG3ZskVZWVnVlh11bSmmaWrJkiWht60lor1792rmzJkRvzUKAGo7ntUAANZp2yvwGaII3wotScf2OlPNdjTV6k+3hI796fSOmnjO0GrPjqn2kOArRdXxfzitctFFF9X0FACgWtAUAQASxlX9O+i0rtnauHOfOjRvqB7tmtT0lAAAdQBNEQAgofRo10T/L7tpTU8DAFCHJNX0BAAAAACgJtEUAQAAALA1miIAAAAAtkZTBAAAAMDWaIoAAAAA2BpNEQDAOptXSOsWBH5bWVvT2QCAWo1LcgMArLFwkpQzTUrLlgpzpf7jpcFTqr+2prMBALVeQjVFpmnKNM2oaiKti0c92YmZXXocq7PtuuZ2zS49jtXZlp/35hVSzjSZcoR+lDNN6jxMatur+mprOvsQ9pr9/n7bNbv0OFZn23XN7Zodb7W6KfJ4PPJ4PCouLpYk+Xw+JSdHNmXTNFVQUCBJcjgcEc8hlnqyEy+7qKhIkuT1etlrZFdrtu32Wt4GKS1bphwqSG0ZqJcZOJ5+TPXV1nT2Iew1e/39tms2e41sq7J9Pl/ENZWp1U2R2+2W2+2W1+uVYRhKT0+XYRgRjRHsJA3DiPoBj7ae7MTL9vv9kiSXyyWn02lptl3X3K7ZtttrrTpKhbmBV1okGYW5geaiVUepsuf1WGprOvsQ9pq9/n7bNZu9RrZV2cEGPJ5qdVN0OIfDEdXCBeuiqY21nuzEyg7W2O28yWavVXtt1kmBz+LkTPvfG9H63xw4Xp21NZ1dCnuN7LqezV4j28raeEuopggAkMAGTwl8FidvQ+CVlkgai1hqazobAFDr0RQBAKzTtlfgszgRvhU65tqazgYA1Gp8TxEAAAAAW6MpAgAAAGBrNEUAAAAAbI2mCAAAAICt0RQBAAAAsDWaIgAAAAC2RlMEAAAAwNZoigAAAADYGk0RAMA6m1dI6xYEfltZW9PZAIBaLbmmJwAAsImFk6ScaVJatlSYK/UfLw2eUv21NZ0NAKj1EqopMk1TpmlGVRNpXTzqyU7M7NLjWJ1t1zW3a3bpcazOtvy8N6+QcqbJlCP0o5xpUudhUtte1Vdb09mHsNfs9/fbrtmlx7E6265rbtfseKvVTZHH45HH41FxcbEkyefzKTk5simbpqmCggJJksPhiHgOsdSTnXjZRUVFkiSv18teI7tas2231/I2SGnZMuVQQWrLQL3MwPH0Y6qvtqazD2Gv2evvt12z2WtkW5Xt8/kirqlMrW6K3G633G63vF6vDMNQenq6DMOIaIxgJ2kYRtQPeLT1ZCdett/vlyS5XC45nU5Ls+265nbNtt1ea9VRKswNvNIiySjMDTQXrTpKlT2vx1Jb09mHsNfs9ffbrtnsNbKtyg424PFUq5uiwzkcjqgWLlgXTW2s9WQnVnawxm7nTTZ7rdprs04KfBYnZ9r/3ojW/+bA8eqsrensUthrZNf1bPYa2VbWxltCNUUAgAQ2eErgszh5GwKvtETSWMRSW9PZAIBaj6YIAGCdtr0Cn8WJ8K3QMdfWdDYAoFbje4oAAAAA2BpNEQAAAABboykCAAAAYGs0RQAAAABsjaYIAAAAgK3RFAEAAACwNZoiAAAAALZGUwQAAADA1miKAAAAANhack1PIBKmaco0zahqIq2LRz3ZiZldehyrs+265nbNLj2O1dl2XXO7Zpcex+psu665XbNLj2N1tl3X3K7Z8VarmyKPxyOPx6Pi4mJJks/nU3JyZFM2TVMFBQWSJIfDEfEcYqknO/Gyi4qKJEler5e9Rna1ZrPXyLYqm71GtlXZ7DWyrcr2+XwR11SmVjdFbrdbbrdbXq9XhmEoPT1dhmFENEawkzQMI+oHPNp6shMv2+/3S5JcLpecTqel2XZdc7tms9fItiqbvUa2VdnsNbKtyg424PFUq5uiwzkcjqgWLlgXTW2s9WQnVnawxm7nTTZ7jey6m81eI9vK2tJjWJkdaz3ZiZUd7XwrwoUWAAAAANgaTREAAAAAW6MpAgAAAGBrNEUAAAAAbI2mCAAAAICt0RQBAAAAsDWaIgAAAAC2RlMEAAAAwNZoigAAAADYGk0RAAAAAFujKQIAAABga8k1PYFImKYp0zSjqom0Lh71ZCdmdulxrM6265rbNbv0OFZn23XN7Zpdehyrs+265nbNLj2O1dl2XXO7ZsdbrW6KPB6PPB6PiouLJUk+n0/JyZFN2TRNFRQUSJIcDkfEc4ilnuzEyy4qKpIkeb1e9hrZ1ZrNXiPbqmz2GtlWZbPXyLYq2+fzRVxTmVrdFLndbrndbnm9XhmGofT0dBmGEdEYwU7SMIyoH/Bo68lOvGy/3y9Jcrlccjqdlmbbdc3tms1eI9uqbPYa2VZls9fItio72IDHU61uig7ncDiiWrhgXTS1sdaTnVjZwRq7nTfZ7DWy6242e41sK2tLj2Fldqz1ZCdWdrTzrQgXWgAAAABgazRFAAAAAGyNpggAAACArdEUAQAAALA1miIAAAAAtkZTBAAAAMDWaIoAAAAA2BpNEQAAAABboykCAAAAYGs0RQAAAABsjaYIAAAAgK3RFAEAAACwteSankAkTNOUaZpR1URaF496shMzu/Q4Vmfbdc3tml16HKuz7brmds0uPY7V2XZdc7tmlx7H6my7rrlds+OtVjdFHo9HHo9HxcXFkiSfz6fk5MimbJqmCgoKJEkOhyPiOcRST3biZRcVFUmSvF4ve43sas1mr5FtVTZ7jWyrstlrZFuV7fP5Iq6pTK1uitxut9xut7xerwzDUHp6ugzDiGiMYCdpGEbUD3i09WQnXrbf75ckuVwuOZ1OS7PtuuZ2zWavkW1VNnuNbKuy2WtkW5UdbMDjqVY3RYdzOBxRLVywLpraWOvJTqzsYI3dzpts9hrZdTebvUa2lbWlx7AyO9Z6shMrO9r5VoQLLQAAAACwNZoiAAAAALZGUwQAAADA1miKAAAAANgaTREAAAAAW6MpAgAAAGBrNEUAAAAAbI2mCAAAAICtRdUUeTwetW/fXvXr11efPn20fPnyKtW99tprcjgcOv/886OJBQAAAIC4i7gpmjNnjiZMmKBJkyZp1apVOvHEEzVkyBDt2LGjwrqNGzfqr3/9q0499dSoJwsAAAAA8RZxU/TYY4/puuuu09VXX60uXbpo+vTpatCggV588cUj1hQXF+uyyy7TlClT1LFjx5gmDAAAAADxlBzJnQ8ePKiVK1fq9ttvDx1LSkrSoEGDtGzZsiPW3XPPPcrIyNCYMWP06aefVppz4MABHThwIPRnr9crSfL7/fL7/ZFMWaZpqqioSH6/Xw6HI6LaWOvJTrzs4P6KdJ/FI9uua27XbPYa2VZls9fItiqbvUa2VdnR7LHKRNQU/f777youLlZmZmbY8czMTP3444/l1nz22WeaMWOGVq9eXeWc+++/X1OmTClzfPHixWrQoEEkUwaisnDhwpqeAmyCvQarsNdgFfYaqtu+ffviPmZETVGkfD6frrjiCj3//PNq3rx5letuv/12TZgwIfRnr9errKwsnXHGGWrWrFlEczBNU16vVy6XK+ouONp6shMv2+/3a+HChRo8eLCcTqel2XZdc7tms9fItiqbvUa2VdnsNbKtyt65c2fENZWJqClq3ry56tWrp+3bt4cd3759u1q2bFnm/uvXr9fGjRs1fPjw0LGSkpJAcHKy1q5dq6OOOqpMXWpqqlJTU8scdzqdUf0lS05OltPpjPoBj7ae7MTLDmKvkV3d2UHsNbKrOzuIvUZ2dWcHsdfIru7sSPdXVUR0oYWUlBT17NlTixYtCh0rKSnRokWL1Ldv3zL379y5s7799lutXr069HPeeefpjDPO0OrVq5WVlRX7GQAAAABADCJ++9yECRN05ZVXqlevXurdu7eeeOIJ7d27V1dffbUkafTo0WrTpo3uv/9+1a9fX127dg2rb9y4sSSVOQ4AAAAANSHipuiSSy7Rb7/9prvvvlvbtm1T9+7dNX/+/NDFFzZt2qSkpKi+ExYAAAAALBfVhRbGjRuncePGlXvbkiVLKqx96aWXookEAAAAgGrBSzoAAAAAbI2mCAAAAICt0RQBAAAAsDWaIgAAAAC2RlMEAAAAwNZoigAAAADYGk0RgNhsXiGtWxD4bXV9TWYDAIA6I6rvKQIASdLCSVLONCktWyrMlfqPlwZPsaa+JrMBAECdklBNkWmaMk0zqppI6+JRT3ZiZpcex+rshFrzzSuknGky5Qj9KGea1HmY1LZX9dbXZPYh7DWyEym79DhWZ9t1ze2aXXocq7PtuuZ2zY63Wt0UeTweeTweFRcXS5J8Pp+SkyObsmmaKigokCQ5HI6I5xBLPdmJl11UVCRJ8nq97LXK5G2Q0rJlyqGC1JaBWpmB4+nHVG99TWYfwl4jO1Gy2WtkW5XNXiPbqmyfzxdxTWVqdVPkdrvldrvl9XplGIbS09NlGEZEYwQ7ScMwon7Ao60nO/Gy/X6/JMnlcsnpdFqanXBr3qqjVJgbeJVFklGYG2gsWnWUqvL3NJb6msw+hL1GdqJks9fItiqbvUa2VdnBBjyeanVTdDiHwxHVwgXroqmNtZ7sxMoO1tjtvKOqzzop8DmcnGn/exNa/5sDx6u7viazS2GvkZ0I2ew1sq2sLT2Gldmx1pOdWNnRzrciCdUUAahlBk8JfA4nb0PgVZYIm4qY6msyGwAA1Ck0RQBi07ZX4HM4Eb61NS71NZkNAADqDL6nCAAAAICt0RQBAAAAsDWaIgC1ys6dO5WRkaGNGzfW9FRs4dJLL9Wjjz5a09MAAKBG0RQBqFXuu+8+jRgxQu3btw8d27Rpk4YOHaoGDRooIyNDt956a6WX4zzvvPPUrl071a9fX61atdIVV1yhrVu3hm5fsmSJzj//fHXu3FmNGjVS9+7d9eqrr4aN8fzzz+vUU09VkyZN1KRJEw0aNEjLly+P+Jx27dqlyy67TC6XS40bN9aYMWNC389wJDfccIOOOuoopaWlqUWLFhoxYoR+/PHHsPskJSWFXb3H4XDotddeC91+1VVXlbnd4XCoa9euofvceeeduu+++5Sfnx/xeQEAUFfQFAGoNfbt26cZM2ZozJgxoWPFxcUaOnSoDh48qKVLl2rWrFl66aWXdPfdd1c41hlnnKHXX39da9eu1Ztvvqn169froosuCt2+dOlSdevWTbNmzdLXX3+tq6++WqNHj9a7774bus+SJUs0cuRILV68WMuWLVNWVpbOOussbdmyJaLzuuyyy7RmzRotXLhQ7777rj755BP96U9/qrCmZ8+emjlzpn744QctWLBApmnqrLPOCn2ZddDMmTOVl5cX+jn//PNDt02bNi3stl9//VVNmzYNW4euXbvqqKOO0iuvvBLROQEAUJdw9TkAtca8efOUmpqqk08+OXTsgw8+0Pfff68PP/xQmZmZ6t69u+69915NnDhRkyZNOuJYt9xyS+ifs7Ozddttt+n888+X3++X0+nU3//+d5mmqfz8fBmGofHjx+uDDz7QW2+9pWHDhklSmVeOXnjhBb355ptatGiRrrjiiiqd0w8//KD58+fryy+/VK9evSRJTz75pM4991wNGTLkiHXXX3996J/bt2+vf/zjHzrxxBO1ceNGdezYMXRb48aN1bJly3LHMAwj7Auv3377be3evVtXX3112P2GDx+u1157TW63u0rnBABAXcMrRQBqjU8//VQ9e/YMO7Zs2TJ169ZNmZmZoWNDhgyR1+vVmjVrqjTurl279Oqrr6pfv34Vfst6fn6+mjZtesTb9+3bJ7/fX+F9Drds2TI1btw41BBJ0qBBg5SUlKR169ZVaYy9e/dq5syZ6tChg7KyssJuc7vdat68uXr37q0XX3wx9C3h5ZkxY4YGDRqk7OzssOO9e/fW8uXLdeDAgSqfFwAAdQlNEYDYbF4hrVsQ+B1jfW5urlq3bh1287Zt28IaIkmhP2/77tMKsydOnKiGDRuqWbNm2rRpk/773/8eMfv111/Xl19+WeZVlMPHa926tQYNGlTl09u2bZsyMjLCjiUnJ6tp06bavXt3hbVPP/20GjVqpEaNGun999/XwoULlZKSErp9ypQpev3117Vw4UJdeOGFuvHGG/Xkk0+WO9bWrVv1/vvv69prry1zW+vWrXXw4EFt27atyucFAEBdwtvnAERv4SQpZ5qUli0V5kr9x0uDp0RdX7i5meq3Obvq9Qv+LuUdfcTsW2+9VWPGjFFubq6mTJkS+syQw+EIy178/XpdPeegnn/+BR1//PHlRj3wwAN67bXXtGTJEtWvX7/CV2Ti5bLLLtPgwYOVl5enRx55RBdffLFycnKUmpoqSbrrrrsC5yKpR48e2rt3rx5++GHddNNNZcaaNWuWGjduHPaZo6C0tDRJgVfCAACwo4RqikzTjPg/RII10f4HTCz1ZCdmdulxrM5OqDXfvELKmSZTjtCPcqZJnYdJbXtFVd/84K/aveXnsHlkZmZq+fLlYce2ffVB4LZGSRVmN2vWTM2aNdMxxxyjzp07q127dlq2bJn6ZjlD2Z9t2KtL/2+vHhuSpivOOK7cNXjkkUf0wAMPaOHCherWrVvYelW2ZpmZmdqxY0fY/YqKirRr1y41adKkwjFcLpdcLpeOPvpo9enTR02bNtVbb72lSy+9tNy63r17695779X+/ftDjZMUeHxffPFFXX755XI6nWXmvnPnTklS8+bNKz0f2+3zOpJdehyrs+265nbNLj2O1dl2XXO7ZsdbrW6KPB6PPB5P6GpLPp9PycmRTdk0zdClb4P/R9WqerITLzt4mWev18teq0zeBiktW6YcKkgNfNDfITNwPP2YqOo7Z+3Q69+vDbs89AknnKCpU6fq559/VosWLSRJ77z7ntJTk9SmXYcqZ+/Zs0dS4PNF+cl7pbRsfbp+ry6dtVGTz22jS/o2U3459dOmTdOjjz6qN998U8ccc0xoblVds65du2rPnj36+OOP1b17d0nSRx99pJKSEnXq1KnKe+3AgQMyTVN79uxRfn5+udmff/65GjdurP3792v//v2h45999pl+/vlnXXzxxcrPzy8z9y+//FKtW7eW0+ms9NLcttvndSCb5zWyrcpmr5FtVbbP54u4pjK1uilyu91yu93yer0yDEPp6elhV1KqimAnaRhG1A94tPVkJ1623++XFPg/9BV9IL86shNuzVt1lApzA6/SSDIKcwONSauOUlX+npZTP6JdkaYsKFRJSYmaNGkiSbrgggvUpUsXjRs3Tg8++KC2bdumqc+/KfdJTmX4f1X+gSSt/Xm9rvrPPn14ZiO1MQx98cUX+vLLL3XKKaeoSZMmWr9+ve6++24dddRRGjRokFJ/+1aLv1+vS/9vr27on6HLjvap8DevVM+llOLi0IUUHnzwQU2dOlWvvvqqunbtqsLCQklSo0aN1LBhwyqtWe/evXX22WdrwoQJeuaZZ+T3+3Xbbbfp4osvVtOmTeVyubRjxw4NGjRIs2bNUu/evbVhwwbNmTNHZ511llq0aKHNmzfrwQcfVFpami688EIZhqH58+fL5/Opb9++ql+/vhYuXKjHH39cf/nLX8o8T86ZM0d9+vRR3759y328V65cqSFDhlTp+dV2+7wOZPO8RrZV2ew1sq3Kruy7CqNRq5uiwwW/eDDaumhqY60nO7GygzV2O++o6rNOCnyOJ2fa/94A1//mwPEq1m/vdoMyvn02VP9ZsxGql/GlHn12lu67PXBJ7eTkZL377rv605/+pH79+qlhw4a68qprdO+gNDk+f1IOmSr0m1q7s0RFLY6Xw+FQw4YN9Z///EeTJ0/W3r171apVK5199tm68847Vb9+fSnrJL2cd7T2+b/W40t26PEl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uVkf+9jH9Nxzz8XObYihaMOGDers7FRXV5d27typWbNmacGCBTp8+PCQ97/++utasmSJli9frl27dmnRokVatGiR3nzzTcs7R9rE7bVt27ZpyZIl2rp1q3p6etTW1qZbb71V77zzjuWdI23i9lrFgQMH9I1vfEM33nijpZ0i7eL2Wn9/v2655RYdOHBAL730kvbt26d169bp0ksvtbxzpE3cXnv++ee1YsUKdXV1ac+ePXrmmWe0YcMGPfjgg5Z3jjT54IMPNGvWLIVheEH3/+Mf/9DChQt18803a/fu3fra176mu+66S7/97W/jBZsGMG/ePBMEwcDvy+WymTJlilmzZs2Q999+++1m4cKFg67Nnz/ffOUrXxnWfSL94vba6UqlksnlcubnP//5cG0Ro0SSXiuVSub66683Tz/9tFm2bJn5whe+YGGnSLu4vfbUU0+ZadOmmf7+fltbxCgRt9eCIDCf+cxnBl3r7Ow0N9xww7DuE6OHJPPyyy+f855vfvOb5uqrrx50bfHixWbBggWxskb8naL+/n7t2LFDHR0dA9fGjBmjjo4O9fT0DFnT09Mz6H5JWrBgwVnvB6RkvXa648ePq1gs6pJLLhmubWIUSNpr3/nOdzRx4kQtX77cxjYxCiTptV//+tdqb29XEARqbW3VNddco9WrV6tcLtvaNlIoSa9df/312rFjx8C32O3fv18bN27U5z73OSt7hhvqNRdk6rmpJI4cOaJyuazW1tZB11tbW7V3794ha3p7e4e8v7e3d9j2ifRL0mune+CBBzRlypQz/vAB1ZL02h//+Ec988wz2r17t4UdYrRI0mv79+/X73//e335y1/Wxo0b9dZbb+nee+9VsVhUV1eXjW0jhZL02pe+9CUdOXJEn/70p2WMUalU0le/+lW+fQ51dba5IIoiffjhh7rooosuaJ0Rf6cISIvu7m6tX79eL7/8slpaWkZ6OxhFCoWCli5dqnXr1mnChAkjvR2McidPntTEiRP105/+VHPmzNHixYv10EMPae3atSO9NYwy27Zt0+rVq/XjH/9YO3fu1K9+9Su9+uqrWrVq1UhvDTjDiL9TNGHCBI0dO1aHDh0adP3QoUOaNGnSkDWTJk2KdT8gJeu1iscff1zd3d167bXXdO211w7nNjEKxO21v//97zpw4IBuu+22gWsnT56UJGUyGe3bt09XXHHF8G4aqZTk69rkyZOVzWY1duzYgWtXXnmlent71d/fr6ampmHdM9IpSa99+9vf1tKlS3XXXXdJkmbOnKkPPvhA99xzjx566CGNGcP/m0ftzjYX5PP5C36XSGqAd4qampo0Z84cbdmyZeDayZMntWXLFrW3tw9Z097ePuh+Sdq8efNZ7wekZL0mSY899phWrVqlTZs2ae7cuTa2ipSL22szZszQG2+8od27dw/8+vznPz/wSTptbW02t48USfJ17YYbbtBbb701MHhL0t/+9jdNnjyZgQhnlaTXjh8/fsbgUxnGT/0MPVC7us0F8T4DYnisX7/eNDc3m+eee8789a9/Nffcc4/5yEc+Ynp7e40xxixdutSsWLFi4P4//elPJpPJmMcff9zs2bPHdHV1mWw2a954442RegSkRNxe6+7uNk1NTeall14y77777sCvQqEwUo+AlIjba6fj0+dwoeL22sGDB00ulzP33Xef2bdvn/nNb35jJk6caL773e+O1CMgJeL2WldXl8nlcuaXv/yl2b9/v/nd735nrrjiCnP77beP1CMgBQqFgtm1a5fZtWuXkWSeeOIJs2vXLvP2228bY4xZsWKFWbp06cD9+/fvN+PGjTP333+/2bNnjwnD0IwdO9Zs2rQpVm5DDEXGGPPDH/7QXHbZZaapqcnMmzfP/PnPfx74ZzfddJNZtmzZoPtfeOEFM336dNPU1GSuvvpq8+qrr1reMdIqTq9dfvnlRtIZv7q6uuxvHKkT9+taNYYixBG3115//XUzf/5809zcbKZNm2a+973vmVKpZHnXSKM4vVYsFs0jjzxirrjiCtPS0mLa2trMvffea/7973/b3zhSY+vWrUP+t1elt5YtW2ZuuummM2pmz55tmpqazLRp08zPfvaz2LmeMbx/CQAAAMBdI/4zRQAAAAAwkhiKAAAAADiNoQgAAACA0xiKAAAAADiNoQgAAACA0xiKAAAAADiNoQgAAACA0xiKAAAAADiNoQgAAACA0xiKAAAAADiNoQgAAACA0xiKAAAAADjt/wAs1EivK4wowwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.scatter(coords[:, 0], coords[:, 1], s=10)\n", + "ax.scatter(interp_points[:, 0], interp_points[:, 1], s=10)\n", + "ax.grid(which = \"major\")\n", + "ax.grid(which = \"minor\", alpha = 0.2)\n", + "ax.xaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.yaxis.set_minor_locator(FixedLocator(np.linspace(0, 1, 51)))\n", + "ax.set_title(\"Off the grid sparse positions\")\n", + "for i in range(npoint):\n", + " ax.annotate(\"(%.3f, %.3f)\" % (coords[i, 0], coords[i, 1]), coords[i, :])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "f.data.fill(0)\n", + "op = Operator([Eq(f.forward, f+1)] + s.interpolate(f/16))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Operator `Kernel` ran in 0.01 s\n" + ] + }, + { + "data": { + "text/plain": [ + "Data([[0., 0., 0., 0., 0.],\n", + " [1., 1., 1., 1., 1.],\n", + " [2., 2., 2., 2., 2.],\n", + " [3., 3., 3., 3., 3.],\n", + " [4., 4., 4., 4., 4.],\n", + " [5., 5., 5., 5., 5.],\n", + " [6., 6., 6., 6., 6.],\n", + " [7., 7., 7., 7., 7.],\n", + " [8., 8., 8., 8., 8.],\n", + " [9., 9., 9., 9., 9.],\n", + " [0., 0., 0., 0., 0.]], dtype=float32)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "op()\n", + "s.data" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Operator `Kernel` ran in 0.01 s\n" + ] + }, + { + "data": { + "text/plain": [ + "PerformanceSummary([(PerfKey(name='section0', rank=None),\n", + " PerfEntry(time=3.4e-05, gflopss=0.0, gpointss=0.0, oi=0.0, ops=0, itershapes=[]))])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u.data.fill(0)\n", + "op = Operator(s.inject(u, expr=s))\n", + "op()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0AAAAMzCAYAAACP1XItAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAoTklEQVR4nO3df2zV9b348VcpttVMEC+X8uPWcXXXuU0FB6O3OmO86Wwywy5/3IyrCxDij+vGXdRmd4IinZNR7qJekiuOyPS6f7ywmWmWQfC6Xsmya2/IQBLNVYxjDGLWAtdry61bK+3n/rGv3bdShFP6w/J6PJLzBx/en/N5neQN8vRzzmlZURRFAAAAJDBhrAcAAAAYLQIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIo+QA+vnPfx4LFy6MmTNnRllZWTz33HOnPGfnzp3x2c9+NiorK+MTn/hEPPXUU0MYFQAA4MyUHEBdXV0xZ86c2Lhx42mt//Wvfx033nhjXH/99bF3796466674tZbb43nn3++5GEBAADORFlRFMWQTy4ri2effTYWLVp00jX33HNPbNu2LV599dX+Y3/7t38b77zzTuzYsWOolwYAACjZxJG+QGtra9TX1w841tDQEHfddddJz+nu7o7u7u7+X/f19cXbb78df/InfxJlZWUjNSoAAPARUhRFHDt2LGbOnBkTJgzP1xeMeAC1tbVFdXX1gGPV1dXR2dkZv/vd7+Lcc8894Zzm5uZ44IEHRno0AABgHDh06FD82Z/92bA814gH0FCsWrUqGhsb+3/d0dERF110UUTcHRGVYzYXAAAwmroj4p/i/PPPH7ZnHPEAmj59erS3tw841t7eHpMmTRr07k9ERGVlZVRWDhY6lSGAAAAgl+H8GMyI/xygurq6aGlpGXDshRdeiLq6upG+NAAAwAAlB9D//u//xt69e2Pv3r0R8Yevud67d28cPHgwIv7w9rWlS5f2r7/jjjti//798c1vfjNef/31eOyxx+KHP/xh3H333cPzCgAAAE5TyQH0y1/+Mq666qq46qqrIiKisbExrrrqqlizZk1ERPz2t7/tj6GIiD//8z+Pbdu2xQsvvBBz5syJhx9+OL7//e9HQ0PDML0EAACA03NGPwdotHR2dsbkyZMjYmX4DBAAAGTRHRHro6OjIyZNmjQszzjinwECAAD4qBBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDSGFEAbN26M2bNnR1VVVdTW1sauXbs+dP2GDRvik5/8ZJx77rlRU1MTd999d/z+978f0sAAAABDVXIAbd26NRobG6OpqSn27NkTc+bMiYaGhjh8+PCg659++ulYuXJlNDU1xWuvvRZPPPFEbN26Ne69994zHh4AAKAUJQfQI488ErfddlssX748Pv3pT8emTZvivPPOiyeffHLQ9S+99FJcc801cfPNN8fs2bPjhhtuiJtuuumUd40AAACGW0kB1NPTE7t37476+vo/PsGECVFfXx+tra2DnnP11VfH7t27+4Nn//79sX379vjiF7940ut0d3dHZ2fngAcAAMCZmljK4qNHj0Zvb29UV1cPOF5dXR2vv/76oOfcfPPNcfTo0fj85z8fRVHE8ePH44477vjQt8A1NzfHAw88UMpoAAAApzTi3wK3c+fOWLduXTz22GOxZ8+e+PGPfxzbtm2LBx988KTnrFq1Kjo6Ovofhw4dGukxAQCABEq6AzR16tQoLy+P9vb2Acfb29tj+vTpg55z//33x5IlS+LWW2+NiIgrrrgiurq64vbbb4/77rsvJkw4scEqKyujsrKylNEAAABOqaQ7QBUVFTFv3rxoaWnpP9bX1xctLS1RV1c36DnvvvvuCZFTXl4eERFFUZQ6LwAAwJCVdAcoIqKxsTGWLVsW8+fPjwULFsSGDRuiq6srli9fHhERS5cujVmzZkVzc3NERCxcuDAeeeSRuOqqq6K2tjbefPPNuP/++2PhwoX9IQQAADAaSg6gxYsXx5EjR2LNmjXR1tYWc+fOjR07dvR/McLBgwcH3PFZvXp1lJWVxerVq+Ott96KP/3TP42FCxfGd77zneF7FQAAAKehrBgH70Pr7OyMyZMnR8TKiPDZIAAAyKE7ItZHR0dHTJo0aVieccS/BQ4AAOCjQgABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIY+JYDwDksbroGesRRtXasoqxHgEA+AB3gAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpTBzrAQCA0qwuesZ6hFG1tqxirEcAziLuAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQxsSxHgDIY21ZxViPACdYXfSM9QglKy9rHvK5vcWqYZwEYPxxBwgAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaQwqgjRs3xuzZs6Oqqipqa2tj165dH7r+nXfeiRUrVsSMGTOisrIyLr300ti+ffuQBgYAABiqiaWesHXr1mhsbIxNmzZFbW1tbNiwIRoaGmLfvn0xbdq0E9b39PTEF77whZg2bVo888wzMWvWrPjNb34TF1xwwXDMDwAAcNpKDqBHHnkkbrvttli+fHlERGzatCm2bdsWTz75ZKxcufKE9U8++WS8/fbb8dJLL8U555wTERGzZ88+s6kBAACGoKS3wPX09MTu3bujvr7+j08wYULU19dHa2vroOf85Cc/ibq6ulixYkVUV1fH5ZdfHuvWrYve3t6TXqe7uzs6OzsHPAAAAM5USQF09OjR6O3tjerq6gHHq6uro62tbdBz9u/fH88880z09vbG9u3b4/7774+HH3441q5de9Lr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kSNHYs2aNdHW1hZz586NHTt29H8xwsGDB2PChBH9aBEAAMCQlBVFUYz1EKfS2dkZkydPjoiVEeGzQZwdVhc9Yz3CqFtbVjHWIwAA40p3RKyPjo6OmDRp0rA8o1s1AABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQxcawHgKzWllWM9QgAAOm4AwQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQhgAAAgDQEEAAAkIYAAgAA0hBAAABAGgIIAABIQwABAABpCCAAACANAQQAAKQxpADauHFjzJ49O6qqqqK2tjZ27dp10rWbN2+Oa6+9NqZMmRJTpkyJ+vr6D10PAAAwUkoOoK1bt0ZjY2M0NTXFnj17Ys6cOdHQ0BCHDx8edP3OnTvjpptuihdffDFaW1ujpqYmbrjhhnjrrbfOeHgAAIBSlBVFUZRyQm1tbXzuc5+LRx99NCIi+vr6oqamJr7+9a/HypUrT3l+b29vTJkyJR599NFYunTpaV2zs7MzJk+eHBErI6KylHEBAIBxqzsi1kdHR0dMmjRpWJ6xpDtAPT09sXv37qivr//jE0yYEPX19dHa2npaz/Huu+/Ge++9FxdeeOFJ13R3d0dnZ+eABwAAwJkqKYCOHj0avb29UV1dPeB4dXV1tLW1ndZz3HPPPTFz5swBEfVBzc3NMXny5P5HTU1NKWMCAAAMalS/BW79+vWxZcuWePbZZ6Oqquqk61atWhUdHR39j0OHDo3ilAAAwNlqYimLp06dGuXl5dHe3j7geHt7e0yfPv1Dz33ooYdi/fr18bOf/SyuvPLKD11bWVkZlZU+6wMAAAyvku4AVVRUxLx586KlpaX/WF9fX7S0tERdXd1Jz/vud78bDz74YOzYsSPmz58/9GkBAADOQEl3gCIiGhsbY9myZTF//vxYsGBBbNiwIbq6umL58uUREbF06dKYNWtWNDc3R0TEP/7jP8aaNWvi6aefjtmzZ/d/VuhjH/tYfOxjHxvGlwIAAPDhSg6gxYsXx5EjR2LNmjXR1tYWc+fOjR07dvR/McLBgwdjwoQ/3lj63ve+Fz09PfE3f/M3A56nqakpvvWtb53Z9AAAACUo+ecAjQU/BwgAADIa458DBAAAMJ4JIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaQwqgjRs3xuzZs6Oqqipqa2tj165dH7r+Rz/6UVx22WVRVVUVV1xxRWzfvn1IwwIAAJyJkgNo69at0djYGE1NTbFnz56YM2dONDQ0xOHDhwdd/9JLL8VNN90Ut9xyS7z88suxaNGiWLRoUbz66qtnPDwAAEApyoqiKEo5oba2Nj73uc/Fo48+GhERfX19UVNTE1//+tdj5cqVJ6xfvHhxdHV1xU9/+tP+Y3/5l38Zc+fOjU2bNp3WNTs7O2Py5MkRsTIiKksZFwAAGLe6I2J9dHR0xKRJk4blGSeWsrinpyd2794dq1at6j82YcKEqK+vj9bW1kHPaW1tjcbGxgHHGhoa4rnnnjvpdbq7u6O7u7v/1x0dHe//TinjAgAA49of/v1f4j2bD1VSAB09ejR6e3ujurp6wPHq6up4/fXXBz2nra1t0PVtbW0nvU5zc3M88MADg/zOP5UyLgAAcBb47//+7//3jrAzV1IAjZZVq1YNuGv0zjvvxMc//vE4ePDgsL1w+KDOzs6oqamJQ4cODdstVvgg+4zRYJ8xGuwzRkNHR0dcdNFFceGFFw7bc5YUQFOnTo3y8vJob28fcLy9vT2mT58+6DnTp08vaX1ERGVlZVRWnvhZn8mTJ/sDxoibNGmSfcaIs88YDfYZo8E+YzRMmDB8P72npGeqqKiIefPmRUtLS/+xvr6+aGlpibq6ukHPqaurG7A+IuKFF1446XoAAICRUvJb4BobG2PZsmUxf/78WLBgQWzYsCG6urpi+fLlERGxdOnSmDVrVjQ3N0dExJ133hnXXXddPPzww3HjjTfGli1b4pe//GU8/vjjw/tKAAAATqHkAFq8eHEcOXIk1qxZE21tbTF37tzYsWNH/xcdHDx4cMAtqquvvjqefvrpWL16ddx7773xF3/xF/Hcc8/F5ZdfftrXrKysjKampkHfFgfDxT5jNNhnjAb7jNFgnzEaRmKflfxzgAAAAMar4fs0EQAAwEecAAIAANIQQAAAQBoCCAAASOMjE0AbN26M2bNnR1VVVdTW1sauXbs+dP2PfvSjuOyyy6KqqiquuOKK2L59+yhNynhWyj7bvHlzXHvttTFlypSYMmVK1NfXn3JfQkTpf5+9b8uWLVFWVhaLFi0a2QE5K5S6z955551YsWJFzJgxIyorK+PSSy/1305OqdR9tmHDhvjkJz8Z5557btTU1MTdd98dv//970dpWsabn//857Fw4cKYOXNmlJWVxXPPPXfKc3bu3Bmf/exno7KyMj7xiU/EU089VfJ1PxIBtHXr1mhsbIympqbYs2dPzJkzJxoaGuLw4cODrn/ppZfipptuiltuuSVefvnlWLRoUSxatCheffXVUZ6c8aTUfbZz58646aab4sUXX4zW1taoqamJG264Id56661RnpzxpNR99r4DBw7EN77xjbj22mtHaVLGs1L3WU9PT3zhC1+IAwcOxDPPPBP79u2LzZs3x6xZs0Z5csaTUvfZ008/HStXroympqZ47bXX4oknnoitW7fGvffeO8qTM150dXXFnDlzYuPGjae1/te//nXceOONcf3118fevXvjrrvuiltvvTWef/750i5cfAQsWLCgWLFiRf+ve3t7i5kzZxbNzc2Drv/yl79c3HjjjQOO1dbWFn/3d383onMyvpW6zz7o+PHjxfnnn1/84Ac/GKkROQsMZZ8dP368uPrqq4vvf//7xbJly4q//uu/HoVJGc9K3Wff+973iosvvrjo6ekZrRE5C5S6z1asWFH81V/91YBjjY2NxTXXXDOic3J2iIji2Wef/dA13/zmN4vPfOYzA44tXry4aGhoKOlaY34HqKenJ3bv3h319fX9xyZMmBD19fXR2to66Dmtra0D1kdENDQ0nHQ9DGWffdC7774b7733Xlx44YUjNSbj3FD32be//e2YNm1a3HLLLaMxJuPcUPbZT37yk6irq4sVK1ZEdXV1XH755bFu3bro7e0drbEZZ4ayz66++urYvXt3/9vk9u/fH9u3b48vfvGLozIzZ7/haoCJwznUUBw9ejR6e3ujurp6wPHq6up4/fXXBz2nra1t0PVtbW0jNifj21D22Qfdc889MXPmzBP+4MH7hrLPfvGLX8QTTzwRe/fuHYUJORsMZZ/t378//v3f/z2+8pWvxPbt2+PNN9+Mr33ta/Hee+9FU1PTaIzNODOUfXbzzTfH0aNH4/Of/3wURRHHjx+PO+64w1vgGDYna4DOzs743e9+F+eee+5pPc+Y3wGC8WD9+vWxZcuWePbZZ6Oqqmqsx+EscezYsViyZEls3rw5pk6dOtbjcBbr6+uLadOmxeOPPx7z5s2LxYsXx3333RebNm0a69E4i+zcuTPWrVsXjz32WOzZsyd+/OMfx7Zt2+LBBx8c69FggDG/AzR16tQoLy+P9vb2Acfb29tj+vTpg54zffr0ktbDUPbZ+x566KFYv359/OxnP4srr7xyJMdknCt1n/3qV7+KAwcOxMKFC/uP9fX1RUTExIkTY9++fXHJJZeM7NCMO0P5+2zGjBlxzjnnRHl5ef+xT33qU9HW1hY9PT1RUVExojMz/gxln91///2xZMmSuPXWWyMi4oorroiurq64/fbb47777osJE/x/d87MyRpg0qRJp333J+IjcAeooqIi5s2bFy0tLf3H+vr6oqWlJerq6gY9p66ubsD6iIgXXnjhpOthKPssIuK73/1uPPjgg7Fjx46YP3/+aIzKOFbqPrvsssvilVdeib179/Y/vvSlL/V/u01NTc1ojs84MZS/z6655pp48803+wM7IuKNN96IGTNmiB8GNZR99u67754QOe9H9x8+4w5nZtgaoLTvZxgZW7ZsKSorK4unnnqq+K//+q/i9ttvLy644IKira2tKIqiWLJkSbFy5cr+9f/xH/9RTJw4sXjooYeK1157rWhqairOOeec4pVXXhmrl8A4UOo+W79+fVFRUVE888wzxW9/+9v+x7Fjx8bqJTAOlLrPPsi3wHE6St1nBw8eLM4///zi7//+74t9+/YVP/3pT4tp06YVa9euHauXwDhQ6j5ramoqzj///OJf//Vfi/379xf/9m//VlxyySXFl7/85bF6CXzEHTt2rHj55ZeLl19+uYiI4pFHHilefvnl4je/+U1RFEWxcuXKYsmSJf3r9+/fX5x33nnFP/zDPxSvvfZasXHjxqK8vLzYsWNHSdf9SARQURTFP//zPxcXXXRRUVFRUSxYsKD4z//8z/7fu+6664ply5YNWP/DH/6wuPTSS4uKioriM5/5TLFt27ZRnpjxqJR99vGPf7yIiBMeTU1Noz8440qpf5/9/wQQp6vUffbSSy8VtbW1RWVlZXHxxRcX3/nOd4rjx4+P8tSMN6Xss/fee6/41re+VVxyySVFVVVVUVNTU3zta18r/ud//mf0B2dcePHFFwf9t9b7+2rZsmXFddddd8I5c+fOLSoqKoqLL764+Jd/+ZeSr1tWFO5JAgAAOYz5Z4AAAABGiwACAADSEEAAAEAaAggAAEhDAAEAAGkIIAAAIA0BBAAApCGAAACANAQQAACQhgACAADSEEAAAEAaAggAAEjj/wB6FbTMsFUIgAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 10))\n", + "ax.imshow(u.data[1], vmin=0, vmax=2, cmap=\"jet\", extent=[0,1,0,1])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}