{ "cells": [ { "cell_type": "markdown", "id": "46843e2b60855a11", "metadata": {}, "source": [ "# Introduction to the `crunchflow.output` package\n", "\n", "The `crunchflow.output` package is designed to support analyses with the reactive transport code CrunchFlow. It provides classes for analyzing spatial and time series output from CrunchFlow simulations.\n", "\n", "## 1. Loading and Plotting `TimeSeries` Data\n", "\n", "The `TimeSeries` class is designed to work with time series data output from CrunchFlow simulations using the `time_series_print` key. The output contains time-varying concentrations at an individual grid cell. Here's an example:" ] }, { "cell_type": "code", "id": "bf5d3b25b67fa669", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:51.734442Z", "start_time": "2025-06-01T11:35:51.049410Z" } }, "source": [ "# Import the TimeSeries class\n", "from crunchflow.output import TimeSeries\n", "\n", "# Load a sample time series file as a TimeSeries object\n", "# We simply provide the name and location of the file\n", "ts = TimeSeries(\"ObservationWell01.txt\", folder=\"output_files\")\n", "\n", "# Now that we've loaded it in, this TimeSeries object has methods\n", "# and attributes associated with it. For example, we can print the\n", "# coordinate (grid cell) at which this time series was recorded\n", "print(\"(x, y, z):\", ts.coords)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(x, y, z): (100, 1, 1)\n" ] } ], "execution_count": 1 }, { "cell_type": "code", "id": "25a5b819ba25559", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:51.811177Z", "start_time": "2025-06-01T11:35:51.808655Z" } }, "source": [ "# We can also print a list of the species included in this file\n", "print(\"Species:\", ts.species)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Species: ['pH', 'H+', 'CO3--', 'SO4--', 'Cl-', 'Ca++', 'Mg++', 'Na+', 'K+', 'Fe++', 'Fe+++', 'HS-', 'CH3COO-', 'O2(aq)', 'S(aq)', 'Br-', 'CH3COOH(aq)', 'CaOH+', 'CaCH3COO+', 'CaHCO3+', 'CaCO3(aq)', 'CaSO4(aq)', 'H2CO3(aq)', 'HCO3-', 'FeOH+', 'FeCH3COO+', 'FeHCO3+', 'FeCO3(aq)', 'Fe(CO3)2--', 'FeSO4(aq)', 'FeCl+', 'Fe(HS)2(aq)', 'Fe(HS)3-', 'H2S(aq)', 'S--', 'KSO4-', 'MgOH+', 'MgCH3COO+', 'MgHCO3+', 'MgCO3(aq)', 'MgSO4(aq)', 'NaCH3COO(aq)', 'NaHCO3(aq)', 'NaCO3-', 'NaSO4-', 'HSO4-', 'OH-']\n" ] } ], "execution_count": 2 }, { "cell_type": "code", "id": "9053fb7187e00936", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:51.860739Z", "start_time": "2025-06-01T11:35:51.858114Z" } }, "source": [ "# These are a couple of the attributes associated with the object. To\n", "# get a list of all of the object's attributes, we can use the `__dict__`\n", "# method, which prints a dictionary of all the object's attributes and their\n", "# values. Note that we're only printing out the keys (the attribute names)\n", "# of the dictionary, since the values can be quite long.\n", "print(\"Current attributes:\", ts.__dict__.keys())" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Current attributes: dict_keys(['coords', 'columns', 'species', 'timeunit', 'unit', 'data', 'df'])\n" ] } ], "execution_count": 3 }, { "cell_type": "code", "id": "8c75d3dcfaabc57f", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:51.918291Z", "start_time": "2025-06-01T11:35:51.911448Z" } }, "source": [ "# From the keys above, we can see that another TimeSeries object attribute\n", "# is the concentration unit, which is mol/L by default\n", "print(\"Units before conversion:\", ts.unit)\n", "\n", "# There are also some useful methods associated with TimeSeries objects. One of these\n", "# is TimeSeries.convert_mgL(), which converts concentration units from mol/L to mg/L.\n", "# The convert_mgL() method reads the geochemical database ('datacom.dbs') to determine\n", "# the molecular weights of the species, so we need to specify the location of that file.\n", "ts.convert_mgL(\"datacom.dbs\", folder=\"output_files\", warnings=False)\n", "\n", "# Note that this method modifies the object in place, so we can see that the unit has changed\n", "# (And if we run this cell again without first re-loading the data, the \"Units before conversion\"\n", "# will already be in mg/L)\n", "print(\"Units after conversion:\", ts.unit)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Units before conversion: mol/L\n", "Units after conversion: mg/L\n" ] } ], "execution_count": 4 }, { "cell_type": "code", "id": "2c83155a9681cdb1", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:51.974120Z", "start_time": "2025-06-01T11:35:51.962379Z" } }, "source": [ "# We can also extract TimeSeries data to more common formats, such as a pandas DataFrame\n", "\n", "# Create a DataFrame object from the time series data\n", "# A DataFrame is similar to a spreadsheet, with rows and columns. In this case, the\n", "# index (or row labels) are the time steps, and the columns are the species concentrations\n", "df = ts.df\n", "\n", "# Print the first few rows of the DataFrame\n", "print(df.head())" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " pH H+ CO3-- SO4-- Cl- \\\n", "time \n", "6.700000e-07 7.999961 0.000012 0.279317 4125.053652 599.138834 \n", "6.553900e-04 8.000170 0.000012 0.279451 4124.028641 599.138834 \n", "2.297420e-02 8.000515 0.000012 0.279668 4123.437587 599.138834 \n", "8.601720e-02 8.000515 0.000012 0.279668 4123.437590 599.138834 \n", "1.954520e-01 8.000516 0.000012 0.279668 4123.437598 599.138834 \n", "\n", " Ca++ Mg++ Na+ K+ Fe++ \\\n", "time \n", "6.700000e-07 282.854554 258.861717 2253.310221 18.485284 1.511896e-12 \n", "6.553900e-04 282.361626 258.876408 2253.334040 18.485539 1.265156e-08 \n", "2.297420e-02 282.104305 258.875386 2253.341453 18.485613 4.680757e-07 \n", "8.601720e-02 282.104304 258.875386 2253.341453 18.485613 1.752481e-06 \n", "1.954520e-01 282.104303 258.875386 2253.341453 18.485613 3.975027e-06 \n", "\n", " ... MgCH3COO+ MgHCO3+ MgCO3(aq) MgSO4(aq) NaCH3COO(aq) \\\n", "time ... \n", "6.700000e-07 ... 0.000039 1.527211 0.405924 941.992747 0.000025 \n", "6.553900e-04 ... 0.000039 1.527433 0.406186 941.919251 0.000025 \n", "2.297420e-02 ... 0.000039 1.527573 0.406558 941.923499 0.000025 \n", "8.601720e-02 ... 0.000039 1.527573 0.406558 941.923500 0.000025 \n", "1.954520e-01 ... 0.000039 1.527573 0.406558 941.923501 0.000025 \n", "\n", " NaHCO3(aq) NaCO3- NaSO4- HSO4- OH- \n", "time \n", "6.700000e-07 0.975702 0.211004 711.132470 0.001573 0.023396 \n", "6.553900e-04 0.975791 0.211120 711.008838 0.001572 0.023407 \n", "2.297420e-02 0.975877 0.211301 710.970069 0.001570 0.023425 \n", "8.601720e-02 0.975877 0.211301 710.970070 0.001570 0.023425 \n", "1.954520e-01 0.975877 0.211301 710.970071 0.001570 0.023425 \n", "\n", "[5 rows x 47 columns]\n" ] } ], "execution_count": 5 }, { "cell_type": "code", "id": "4cc8d98187efb505", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:52.137011Z", "start_time": "2025-06-01T11:35:52.018679Z" } }, "source": [ "import matplotlib.pyplot as plt\n", "\n", "# Plot the data using matplotlib\n", "# (The only change from the first example plot is that now we're\n", "# specifying the figure size, in inches)\n", "fig, ax = plt.subplots(figsize=(10, 6))\n", "\n", "# The index of the dataframe is the time step, so we'll plot that along the x-axis\n", "ax.plot(df.index, df[\"Br-\"], label=\"Bromide\")\n", "\n", "# In the example above, we used separate commands to set the title, x-axis label, y-axis label,\n", "# and x-axis limits. We can also do this in a single command\n", "ax.set(\n", " title=\"Conservative tracer\",\n", " xlabel=\"Time (%s)\" % ts.timeunit,\n", " ylabel=\"Concentration (%s)\" % ts.unit,\n", " xlim=(0, 5000),\n", " ylim=(0, 9000),\n", ")\n", "\n", "# Show the plot\n", "plt.show()" ], "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAIhCAYAAADdH1JpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAf3ZJREFUeJzs3Xd4VGX6xvF70gvJkF4gQIBQQhMpIVhAqUpEtgiKRgQEFAUjIIq7rri6ILiCBdeyKqysirs/xYoINhQh9Cgl9A4JCRAmvU3O74/ArEMoCSaZSfL9XNdcIec8M+c5eITcvOe8r8kwDEMAAAAAAKfk4ugGAAAAAAAXR2gDAAAAACdGaAMAAAAAJ0ZoAwAAAAAnRmgDAAAAACdGaAMAAAAAJ0ZoAwAAAAAnRmgDAAAAACdGaAMAAAAAJ0ZoA4AG6JdfftHo0aMVHR0tLy8vNWrUSFdffbXmzp2r06dPO7o9p3P8+HHNnDlTKSkpFfbNnDlTJpOp1ntas2aNZs6cqTNnztT6sQEAtYvQBgANzD//+U9169ZNGzZs0COPPKLly5dr6dKluu222/Taa69p7Nixjm7R6Rw/flxPPfXUBUPbvffeq7Vr19Z6T2vWrNFTTz1FaAOABsDN0Q0AAGrP2rVrdf/992vAgAH6+OOP5enpads3YMAATZ06VcuXL3dgh79NSUmJTCaT3Nxq76+3pk2bqmnTprV2vCtVUFAgb29vR7dhU1BQIC8vL4eMUgJAXcNIGwA0ILNmzZLJZNIbb7xhF9jO8fDw0NChQ23fl5WVae7cuWrXrp08PT0VGhqqu+++W0ePHrV7X9++fdWxY0dt2LBB1113nXx8fNSyZUs9++yzKisrs/u8Z555Rm3btpW3t7caN26szp0768UXX7T7vD179mjkyJEKDQ2Vp6en2rdvr1deecWu5vvvv5fJZNLixYs1depUNWnSRJ6entq+fbtMJpPeeuutCuf35ZdfymQy6dNPP5Uk7d27V6NHj1ZMTIx8fHzUpEkT3XLLLdq6davdcXr06CFJGj16tEwmk0wmk2bOnCmp4u2Rw4YNU/Pmze3O+5y4uDhdffXVtu8Nw9A//vEPXXXVVfL29lZAQID++Mc/av/+/RXe+2szZ87UI488IkmKjo629fT9999Lklq0aKGEhAR99NFH6tq1q7y8vPTUU09Jkl555RVdf/31Cg0Nla+vrzp16qS5c+eqpKSkwnGWL1+ufv36yWw2y8fHR+3bt9fs2bPtajZu3KihQ4cqMDBQXl5e6tq1q/7zn//Y1SxatEgmk0krVqzQmDFjFBISIh8fHxUVFV3yPAEA5RhpA4AGwmq16ttvv1W3bt0UFRVVqffcf//9euONN/Tggw8qISFBBw8e1BNPPKHvv/9emzdvVnBwsK02PT1dd955p6ZOnaonn3xSS5cu1YwZMxQZGam7775bkjR37lzNnDlTf/7zn3X99derpKREO3futLvFb8eOHerdu7eaNWum559/XuHh4frqq680efJknTx5Uk8++aRdjzNmzFB8fLxee+01ubi4KCoqSl27dtXChQsr3Oq5aNEihYaG6uabb5ZUfttjUFCQnn32WYWEhOj06dP617/+pbi4OG3ZskVt27bV1VdfrYULF2r06NH685//rCFDhkjSRUfXxowZo1tvvVXffvut+vfvb9u+c+dOrV+/Xi+99JJt24QJE7Ro0SJNnjxZc+bM0enTp/XXv/5VvXv31s8//6ywsLALHuPee+/V6dOn9fLLL+ujjz5SRESEJCk2NtZWs3nzZqWmpurPf/6zoqOj5evrK0nat2+fRo4cqejoaHl4eOjnn3/W3/72N+3cuVNvv/227f1vvfWWxo0bpz59+ui1115TaGiodu/erW3bttlqvvvuOw0ePFhxcXF67bXXZDabtWTJEo0YMUL5+fm65557KvzeDBkyRIsXL1ZeXp7c3d0veH4AgPMYAIAGIT093ZBk3H777ZWqT01NNSQZEydOtNu+bt06Q5Lx+OOP27b16dPHkGSsW7fOrjY2NtYYNGiQ7fuEhATjqquuuuRxBw0aZDRt2tSwWCx22x988EHDy8vLOH36tGEYhvHdd98Zkozrr7++wme89NJLhiRj165dtm2nT582PD09jalTp1702KWlpUZxcbERExNjPPzww7btGzZsMCQZCxcurPCeJ5980vj1X6clJSVGWFiYMXLkSLu66dOnGx4eHsbJkycNwzCMtWvXGpKM559/3q7uyJEjhre3tzF9+vSL9mkYhvHcc88ZkowDBw5U2Ne8eXPD1dXV7vwvxGq1GiUlJcY777xjuLq62n5vc3JyDH9/f+Paa681ysrKLvr+du3aGV27djVKSkrstickJBgRERGG1Wo1DMMwFi5caEgy7r777kv2AwC4MG6PBABc0HfffSdJFUZLevbsqfbt2+ubb76x2x4eHq6ePXvabevcubMOHTpk996ff/5ZEydO1FdffaXs7Gy7+sLCQn3zzTf63e9+Jx8fH5WWltpeN998swoLC5WcnGz3nj/84Q8Ver/zzjvl6empRYsW2ba9//77Kioq0ujRo23bSktLNWvWLMXGxsrDw0Nubm7y8PDQnj17lJqaevnfpAtwc3PTXXfdpY8++kgWi0VS+Sjn4sWLdeuttyooKEiS9Pnnn8tkMumuu+6yO8/w8HB16dLFdqvjlercubPatGlTYfuWLVs0dOhQBQUFydXVVe7u7rr77rtltVq1e/duSeWTnGRnZ2vixIkXfeZs79692rlzp+68805JqvDfKi0tTbt27bJ7z4X+WwEALo/QBgANRHBwsHx8fHTgwIFK1Z86dUqSbLfe/VpkZKRt/znnwsiveXp6qqCgwPb9jBkz9Pe//13Jycm66aabFBQUpH79+mnjxo22Y5aWlurll1+Wu7u73evcLY0nT560O8aF+gsMDNTQoUP1zjvvyGq1Siq/NbJnz57q0KGDrW7KlCl64oknNGzYMH322Wdat26dNmzYoC5dutj1XVVjxoxRYWGhlixZIkn66quvlJaWZhcYT5w4IcMwFBYWVuFck5OTK5xnVV3o9+Xw4cO67rrrdOzYMb344ov68ccftWHDBtvzgufOOTMzU9LFbwE9178kTZs2rUL/EydOlFS5/1YAgMvjmTYAaCBcXV3Vr18/ffnllzp69OhlZzw8F8LS0tIq1B4/ftzuebbKcnNz05QpUzRlyhSdOXNGX3/9tR5//HENGjRIR44cUUBAgFxdXZWYmKgHHnjggp8RHR1t9/3FRoJGjx6t//73v1q5cqWaNWumDRs26NVXX7Wr+fe//627775bs2bNstt+8uRJNW7cuMrnd05sbKx69uyphQsXasKECVq4cKEiIyM1cOBAW01wcLBMJpN+/PHHC04Kc6FtVXGh35ePP/5YeXl5+uijj9S8eXPb9vOXMggJCZGkChPO/Nq5//4zZszQ73//+wvWtG3b9rI9AQAuj9AGAA3IjBkztGzZMo0bN06ffPKJPDw87PaXlJRo+fLluuWWW3TjjTdKKg8252ZPlKQNGzYoNTVVf/rTn35TL40bN9Yf//hHHTt2TElJSTp48KBiY2N1ww03aMuWLercuXOF/qpi4MCBatKkiRYuXKhmzZrJy8tLd9xxh12NyWSqEI6++OILHTt2TK1bt7ZtO1dTldG30aNH6/7779fq1av12WefacqUKXJ1dbXtT0hI0LPPPqtjx45p+PDhVT6/K+npXGj69TkbhqF//vOfdnW9e/eW2WzWa6+9pttvv/2CYatt27aKiYnRzz//XCH0AgCqF6ENABqQ+Ph4vfrqq5o4caK6deum+++/Xx06dFBJSYm2bNmiN954Qx07dtQtt9yitm3bavz48Xr55Zfl4uKim266yTZ7ZFRUlB5++OEqH/+WW25Rx44d1b17d4WEhOjQoUN64YUX1Lx5c8XExEiSXnzxRV177bW67rrrdP/996tFixbKycnR3r179dlnn+nbb7+t1LFcXV119913a968efL399fvf/97mc1mu5qEhAQtWrRI7dq1U+fOnbVp0yY999xzFUYWW7VqJW9vb7377rtq3769GjVqpMjISEVGRl70+HfccYemTJmiO+64Q0VFRRWeDbzmmms0fvx4jR49Whs3btT1118vX19fpaWlafXq1erUqZPuv//+i35+p06dbL9fo0aNkru7u9q2bSs/P7+LvmfAgAHy8PDQHXfcoenTp6uwsFCvvvqqsrKy7OoaNWqk559/Xvfee6/69++vcePGKSwsTHv37tXPP/+sBQsWSJJef/113XTTTRo0aJDuueceNWnSRKdPn1Zqaqo2b96s//73vxftBQBQBY6eCQUAUPtSUlKMUaNGGc2aNTM8PDwMX19fo2vXrsZf/vIXIyMjw1ZntVqNOXPmGG3atDHc3d2N4OBg46677jKOHDli93l9+vQxOnToUOE4o0aNMpo3b277/vnnnzd69+5tBAcHGx4eHkazZs2MsWPHGgcPHrR734EDB4wxY8YYTZo0Mdzd3Y2QkBCjd+/exjPPPGOrOTd75H//+9+Lnufu3bsNSYYkY+XKlRX2Z2VlGWPHjjVCQ0MNHx8f49prrzV+/PFHo0+fPkafPn3sat9//32jXbt2hru7uyHJePLJJw3DqDh75K+NHDnSkGRcc801F+3x7bffNuLi4gxfX1/D29vbaNWqlXH33XcbGzduvOh7zpkxY4YRGRlpuLi4GJKM7777zjCM8tkjhwwZcsH3fPbZZ0aXLl0MLy8vo0mTJsYjjzxi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ryOnCxRp9tJbo7rrlZFXE9gAAE7PoaEtKytL11xzjdzd3fXll19qx44dev7559W4cWNbzdy5czVv3jwtWLBAGzZsUHh4uAYMGKCcnBxbTVJSkpYuXaolS5Zo9erVys3NVUJCgqxWq61m5MiRSklJ0fLly7V8+XKlpKQoMTGxNk8XAFDLDMPQ/206qn7zVmnplmNyMUljronWyil91K99mKPbAwCgUkyGYRiOOvhjjz2mn376ST/++OMF9xuGocjISCUlJenRRx+VVD6qFhYWpjlz5mjChAmyWCwKCQnR4sWLNWLECEnS8ePHFRUVpWXLlmnQoEFKTU1VbGyskpOTFRcXJ0lKTk5WfHy8du7cqbZt21621+zsbJnNZlksFvn7s14PADi7o1n5euzDrVq996QkqV24n+b8obO6RDV2bGMAgDqvtrOBQ0faPv30U3Xv3l233XabQkND1bVrV/3zn/+07T9w4IDS09M1cOBA2zZPT0/16dNHa9askSRt2rRJJSUldjWRkZHq2LGjrWbt2rUym822wCZJvXr1ktlsttWcr6ioSNnZ2XYvAIDzMwxD7607rEHzf9DqvSfl6eaiRwe302eTriWwAQDqJIeGtv379+vVV19VTEyMvvrqK913332aPHmy3nnnHUlSenq6JCkszP4WlrCwMNu+9PR0eXh4KCAg4JI1oaGhFY4fGhpqqznf7Nmzbc+/mc1mRUVF/baTBQDUuGNnCnT32+v1+NKtyiu2qnvzAC1Pul73920ld1eHP8YNAMAVcejskWVlZerevbtmzZolSeratau2b9+uV199VXfffbetzmSyn4LZMIwK2853fs2F6i/1OTNmzNCUKVNs32dnZxPcAMBJGYahDzYc0TNfpCq3qFSebi56ZFBbjb4mWq5M4w8AqOMcGtoiIiIUGxtrt619+/b68MMPJUnh4eGSykfKIiIibDUZGRm20bfw8HAVFxcrKyvLbrQtIyNDvXv3ttWcOHGiwvEzMzMrjOKd4+npKU9Pz99wdgCA2pBmKdCjH27VD7szJUndmgfouT92VsuQRg7uDACA6uHQe0WuueYa7dq1y27b7t271bx5c0lSdHS0wsPDtXLlStv+4uJirVq1yhbIunXrJnd3d7uatLQ0bdu2zVYTHx8vi8Wi9evX22rWrVsni8ViqwEA1C3nZoYcOO8H/bA7U55u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hw5GWlqa7ZWRkWHb72zXGaHtMnr27Gncd999dtvatWtnPPbYYw7qCHXN+aGtrKzMCA8PN5599lnbtsLCQsNsNhuvvfaaYRiGcebMGcPd3d1YsmSJrebYsWOGi4uLsXz5csMwDGPHjh2GJCM5OdlWs3btWkOSsXPnzho+KzijjIwMQ5KxatUqwzC41lCzAgICjDfffJPrDDUiJyfHiImJMVauXGn06dPHFtq43lBdnnzySaNLly4X3OeM1xm3R15CcXGxNm3apIEDB9ptHzhwoNasWeOgrlDXHThwQOnp6XbXlaenp/r06WO7rjZt2qSSkhK7msjISHXs2NFWs3btWpnNZsXFxdlqevXqJbPZzPXZQFksFklSYGCgJK411Ayr1aolS5YoLy9P8fHxXGeoEQ888ICGDBmi/v37223nekN12rNnjyIjIxUdHa3bb79d+/fvl+Sc15nbFZ9lA3Dy5ElZrVaFhYXZbQ8LC1N6erqDukJdd+7audB1dejQIVuNh4eHAgICKtSce396erpCQ0MrfH5oaCjXZwNkGIamTJmia6+9Vh07dpTEtYbqtXXrVsXHx6uwsFCNGjXS0qVLFRsba/vBg+sM1WXJkiXavHmzNmzYUGEff66husTFxemdd95RmzZtdOLECT3zzDPq3bu3tm/f7pTXGaGtEkwmk933hmFU2AZU1ZVcV+fXXKie67NhevDBB/XLL79o9erVFfZxraE6tG3bVikpKTpz5ow+/PBDjRo1SqtWrbLt5zpDdThy5IgeeughrVixQl5eXhet43rDb3XTTTfZft2pUyfFx8erVatW+te//qVevXpJcq7rjNsjLyE4OFiurq4VknBGRkaF5A1U1rmZiS51XYWHh6u4uFhZWVmXrDlx4kSFz8/MzOT6bGAmTZqkTz/9VN99952aNm1q2861hurk4eGh1q1bq3v37po9e7a6dOmiF198kesM1WrTpk3KyMhQt27d5ObmJjc3N61atUovvfSS3NzcbNcC1xuqm6+vrzp16qQ9e/Y45Z9rhLZL8PDwULdu3bRy5Uq77StXrlTv3r0d1BXquujoaIWHh9tdV8XFxVq1apXtuurWrZvc3d3tatLS0rRt2zZbTXx8vCwWi9avX2+rWbdunSwWC9dnA2EYhh588EF99NFH+vbbbxUdHW23n2sNNckwDBUVFXGdoVr169dP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" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 6 }, { "cell_type": "markdown", "id": "9939d2940bf654d2", "metadata": {}, "source": [ "## 2. Loading and Plotting `SpatialProfile` Data\n", "\n", "While `TimeSeries` objects plot time-varying data from a single grid cell, `SpatialProfile` objects plot spatially varying data at a single snapshot in time. These can include porosity, permeability, mineral volume fractions, reaction rates, and more. Here's an example where we plot bromide concentrations from a 2D simulation:" ] }, { "cell_type": "code", "id": "93f0ab4d953eb4dd", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:52.160280Z", "start_time": "2025-06-01T11:35:52.155821Z" } }, "source": [ "# Import the SpatialProfile class\n", "from crunchflow.output import SpatialProfile\n", "\n", "# Initialize a SpatialProfile object\n", "# Typically, we'll have CrunchFlow output multiple profiles over the course of\n", "# a simulation. Since these are named sequentially ('conc1.out', 'conc2.out', etc),\n", "# we just have to provide the prefix ('conc') and the folder containing the files\n", "conc = SpatialProfile(\"conc\", folder=\"output_files\")\n", "\n", "# These output files are from a 2D simulation of a conservative tracer,\n", "# so that should be reflected in the nx, ny, nz and column attributes\n", "print(\"Dimensions:\", conc.nx, conc.ny, conc.nz)\n", "print(\"Columns:\", conc.columns)\n", "\n", "# We can also print the \"times\" attribute, which is a list of each file's output\n", "# number (i.e., the \"1\", \"2\", \"3\" in 'conc1.out', 'conc2.out', 'conc3.out', etc.)\n", "# There is also the \"output_times\" attribute, which is the time (in simulation time units)\n", "# that each file was output, but that isn't always read in automatically (it depends\n", "# on the version of CrunchFlow/CrunchTope you have)\n", "print(\"Output numbers:\", conc.times)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dimensions: 100 20 1\n", "Columns: ['Br-']\n", "Output numbers: [1, 2, 3, 4, 5, 6]\n" ] } ], "execution_count": 7 }, { "cell_type": "code", "id": "ca51eef104b00737", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:52.199562Z", "start_time": "2025-06-01T11:35:52.195193Z" } }, "source": [ "# To save computation time, the data is not read in immediately. Instead, we can read\n", "# in the data to a numpy array using the `extract` method. Simply provide the name of\n", "# the variable to extract and the time step at which to extract it.\n", "data = conc.extract(\"Br-\", time=1)\n", "print(\"Minimum concentration (mol/L): %0.5f\" % 10 ** data.min())\n", "print(\"Maximum concentration (mol/L): %0.5f\" % 10 ** data.max())" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Minimum concentration (mol/L): 0.00100\n", "Maximum concentration (mol/L): 0.00124\n" ] } ], "execution_count": 8 }, { "cell_type": "code", "id": "c2f1c6e40f5a8a2c", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:52.529697Z", "start_time": "2025-06-01T11:35:52.260813Z" } }, "source": [ "# Create a plot of Br- concentrations for the first 4 time steps\n", "# Note: the (4, 1) specifies that we want 4 rows and 1 column. `sharex`\n", "# specifies that all subplots should share the same x-axis\n", "fig, axs = plt.subplots(4, 1, figsize=(8, 8), sharex=True)\n", "\n", "# Loop over each axis object in the list\n", "# Note that `i` is a counter\n", "for i, ax in enumerate(axs):\n", " # Extract the data for the current time step\n", " # (Note that `i` starts at zero, but the time steps start at 1)\n", " data = conc.extract(\"Br-\", time=i + 1)\n", "\n", " # Plot the data as an image, saving the handle of the image\n", " # object (`im`) since we will use that later.\n", " # Note that CrunchFlow outputs logged values, so we need to\n", " # take 10 to the power of the data to get the actual concentrations.\n", " # Also, note that we set vmin and vmax (min and max color ranges) to\n", " # ensure that the colorbar is consistent across all subplots.\n", " im = ax.imshow(10**data, origin=\"lower\", vmin=0.001, vmax=0.1)\n", "\n", " # Set the ylabel and title for the current subplot\n", " ax.set(ylabel=\"Y\", title=\"Time %d\" % (i + 1))\n", "\n", "# Add x-axis label to the last subplot\n", "axs[-1].set(xlabel=\"X\")\n", "\n", "# Add a colorbar to the plot\n", "fig.colorbar(im, ax=axs, label=\"Concentration (mol/L)\", shrink=0.7)\n", "\n", "# Show the plot\n", "plt.show()" ], "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqMAAAKYCAYAAABHIvEGAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdmpJREFUeJzt3Xt0VNX5//HPzOQGkgQRCKQEjC1aEKsI1Sq2XomCWlDsT2tVbNWvFLDc+lXxBrUtKLaWKoKiorZWpava1lqsRAVEwYogVoRvlcpNIXI1CQm5zZzfH5TIZD/ASTLJGZL3a61ZizzZZ5995kzCk33Oc3bI8zxPAAAAQADCQQ8AAAAArRfJKAAAAAJDMgoAAIDAkIwCAAAgMCSjAAAACAzJKAAAAAJDMgoAAIDAkIwCAAAgMCSjAAAACAzJKICECoVCvl4LFy7Utddeq6OPPjroIceZPn26Lr30UuXn5ysUCumss84KekgA0KKFWA4UQCK9/fbbcV///Oc/14IFC/T666/HxXv37q1t27appKREffv2bc4hHtTXv/51HXHEETrppJP0t7/9Tb1799bChQuDHhYAtFgpQQ8AQMvyrW99K+7rTp06KRwOO3FJysrKaq5h+bZ69WqFw3svGvXp0yfg0QBAy8dlegCBsS7Th0IhjR49Wk888YSOO+44tWnTRv3799fbb78tz/N03333KT8/X+3atdM555yjtWvXOv2++uqrOvfcc5WVlaW2bdtqwIABeu2113yNaV8iCgBoHvzWBZB0XnrpJT322GO655579Oyzz6q0tFQXXnihJkyYoLfeekszZszQ7NmztXr1ag0bNkz732309NNPq6CgQFlZWXrqqaf0xz/+UR06dND555/vOyEFADQfLtMDSDqVlZWaP3++jjjiCEl7Z0uHDh2qBQsWaMWKFQqFQpKkbdu2aezYsVq1apVOOOEElZeXa8yYMbrooov05z//uba/wYMH6+STT9Ztt92mf/7zn4EcEwDAxswogKRz9tln1yaiktSrVy9J0qBBg2oT0f3jGzZskCQtWbJEO3fu1PDhw1VTU1P7isViuuCCC7Rs2TKVlZU145EAAA6FmVEASadDhw5xX6elpR00XlFRIUn6/PPPJUmXXXbZAfveuXNnXKILAAgWySiAFqNjx46SpAcffNCs3peknJyc5hwSAOAQSEYBtBgDBgxQ+/bttXr1ao0ePTro4QAAfCAZBdBitGvXTg8++KCGDx+unTt36rLLLlPnzp21bds2vf/++9q2bZtmzZp10D7effddrV+/XpJUUlIiz/P0pz/9SZL0zW9+Uz169GjqwwCAVoVkFECLctVVV6l79+6aNm2abrzxRpWWlqpz58466aSTdO211x5y+xkzZuipp56Ki33ve9+TJD3xxBO++gAA+MdyoAAAAAgMj3YCAABAYEhGAQAAEBiSUQAAAASGZBQAAACBIRkFAABAYFr8o51isZg2b96szMzMuDWtAQBA8vI8T6WlpcrNzVU4zNxZS9bik9HNmzcrLy8v6GEAAIAG2LRpk7p16xb0MNCEWnwympmZKUk6Q4OVotSARwMAAPyoUbXe1Lza/8fRcrX4ZHTfpfkUpSolRDIKAMBh4b9L8nCLXcvHTRgAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAITKDJ6BtvvKGLL75Yubm5CoVC+stf/hL3fc/zNHnyZOXm5qpNmzY666yz9OGHHwYzWAAAACRcoMloWVmZTjzxRM2YMcP8/rRp03T//fdrxowZWrZsmbp06aKBAweqtLS0mUcKAACAppDit+Gnn36qbt26JXTngwYN0qBBg8zveZ6n6dOn6/bbb9ell14qSXrqqaeUk5OjZ555RjfeeGNCxwIAAIDm53tmtE+fPvr973/flGOJs27dOhUVFamgoKA2lp6erjPPPFNLliw54HaVlZUqKSmJewEAACA5+U5Gp0yZolGjRmnYsGHasWNHU45JklRUVCRJysnJiYvn5OTUfs8ydepUZWdn177y8vKadJwAAABoON/J6MiRI/X+++9r165dOv744/Xiiy825bhqhUKhuK89z3Ni+5s4caKKi4trX5s2bWrqIQIAAKCBfN8zKkn5+fl6/fXXNWPGDA0bNky9evVSSkp8FytWrEjIwLp06SJp7wxp165da+Nbt251Zkv3l56ervT09ISMAQAAAE2rXsmoJG3YsEHPP/+8OnTooCFDhjjJaKLk5+erS5cuKiwsVN++fSVJVVVVWrRoke69994m2ScAAACaV70yyUcffVQTJkzQeeedp1WrVqlTp06N2vnu3bu1du3a2q/XrVunlStXqkOHDurevbvGjh2rKVOmqGfPnurZs6emTJmitm3b6sorr2zUfgEAAJAcfCejF1xwgd555x3NmDFD11xzTUJ2/u677+rss8+u/Xr8+PGSpOHDh+vJJ5/UzTffrD179mjkyJHatWuXTj31VM2fP1+ZmZkJ2T8AAACCFfI8z/PTcODAgXriiScS/qzRplZSUqLs7GydpSFKCaUGPRwAAOBDjVethfqriouLlZWVFfRw0IR8z4wWFhY25TgAAADQCgW6HCgAAABaN5JRAAAABIZkFAAAAIEhGQUAAEBgSEYBAAAQGJJRAAAABIZkFAAAAIEhGQUAAEBgSEYBAAAQGJJRAAAABIZkFAAAAIEhGQUAAEBgSEYBAAAQGJJRAAAABIZkFAAAAIEhGQUAAEBgSEYBAACS1MyZM5Wfn6+MjAz169dPixcvPmDbLVu26Morr9Rxxx2ncDissWPHmu2ef/559e7dW+np6erdu7f+/Oc/N9Ho/SEZBQAASEJz587V2LFjdfvtt+u9997Tt7/9bQ0aNEgbN24021dWVqpTp066/fbbdeKJJ5ptli5dqssvv1xXX3213n//fV199dX6f//v/+mf//xnUx7KQYU8z/MC23szKCkpUXZ2ts7SEKWEUoMeDgAA8KHGq9ZC/VXFxcXKyspq9v1XVFSoqqoq4f16nqdQKBQXS09PV3p6utP21FNP1cknn6xZs2bVxnr16qWhQ4dq6tSpB93PWWedpZNOOknTp0+Pi19++eUqKSnRyy+/XBu74IILdOSRR+rZZ59twBE1XkogewUAAEhSFRUVyu/RTkVbownvu127dtq9e3dcbNKkSZo8eXJcrKqqSsuXL9ett94aFy8oKNCSJUsavP+lS5dq3LhxcbHzzz/fSVqbE8koAADAfqqqqlS0NaoNy49WVmbi7mgsKY2pR7/12rRpU9xsrzUrun37dkWjUeXk5MTFc3JyVFRU1OAxFBUVJbzPxiIZBQAAMLTLDKldZujQDX2KaW9fWVlZvm89qHtJ37rMX19N0WdjUMAEAACQZDp27KhIJOLMWG7dutWZ2ayPLl26JLzPxiIZBQAAMES9WMJffqWlpalfv34qLCyMixcWFur0009v8DGddtppTp/z589vVJ+NxWV6AACAJDR+/HhdffXV6t+/v0477TTNnj1bGzdu1IgRIyRJEydO1Geffabf/e53tdusXLlSkrR7925t27ZNK1euVFpamnr37i1JGjNmjL7zne/o3nvv1ZAhQ/TXv/5Vr776qt58881mP759SEYBAAAMMXmKKXFPwKxvX5dffrl27Nihu+++W1u2bFGfPn00b9489ejRQ9Leh9zXfeZo3759a/+9fPlyPfPMM+rRo4fWr18vSTr99NP13HPP6Y477tCdd96pr371q5o7d65OPfXUxh1cI/CcUQAAkHSCfM7ovtxh87+7JbyaPve4TwN7dmqy4p5RAAAABIbL9AAAAIao5ymawAvIieyrJWFmFAAAAIFhZhQAAMAQdAFTa0EyCgAAYIjJU5RktMlxmR4AAACBYWYUAADAwGX65sHMKAAAAALDzCgAAICBRzs1D5JRAAAAQ+y/r0T2BxeX6QEAABCYwyIZnTlzpvLz85WRkaF+/fpp8eLFQQ8JAAC0cNH/PtopkS+4kj4ZnTt3rsaOHavbb79d7733nr797W9r0KBB2rhxY9BDAwAAQCMlfTJ6//3367rrrtP111+vXr16afr06crLy9OsWbPM9pWVlSopKYl7AQAA1FfUS/wLrqRORquqqrR8+XIVFBTExQsKCrRkyRJzm6lTpyo7O7v2lZeX1xxDBQAALUysCV5wJXUyun37dkWjUeXk5MTFc3JyVFRUZG4zceJEFRcX1742bdrUHEMFAABAAxwWj3YKhUJxX3ue58T2SU9PV3p6elxbSapRtbhvGACAw0ONqiV9+f94EGIKKSo732hof3AldTLasWNHRSIRZxZ069atzmzpgZSWlkqS3tS8hI8PAAA0rdLSUmVnZwc9DDShpE5G09LS1K9fPxUWFuqSSy6pjRcWFmrIkCG++sjNzdWmTZuUmZmp0tJS5eXladOmTcrKymqqYcOHkpISzkWS4FwkD85F8uBcBM/zPJWWlio3NzewMcS8va9E9gdXUiejkjR+/HhdffXV6t+/v0477TTNnj1bGzdu1IgRI3xtHw6H1a1bN0lfXu7Pysril0uS4FwkD85F8uBcJA/ORbCCnhGNJvgyfSL7akmSPhm9/PLLtWPHDt19993asmWL+vTpo3nz5qlHjx5BDw0AAACNlPTJqCSNHDlSI0eODHoYAACgFWFmtHkk9aOdEi09PV2TJk2Kq7ZHMDgXyYNzkTw4F8mDcwE0n5AX5DMTAAAAkkxJSYmys7P15qpctctM3Lzd7tKYzuizWcXFxdyLvJ/D4jI9AABAc+MyffNoVZfpAQAAkFyYGQUAADBEFVY0gfN20YT11LIwMwoAAIDAMDMKAABg8LyQYl7i7vP0EthXS8LMKAAAAALDzCgAAICBavrmQTIKAABgiHphRb0EFjDxZHcTl+kBAAAQGGZGAQAADDGFFEvgvF1MTI1amBkFAABAYJgZBQAAMFDA1DxIRgEAAAyJL2DiMr2Fy/QAAAAIDDOjAAAAhr0FTIm7tJ7IvloSZkYBAAAQGGZGAQAADDGFFeXRTk2OZBQAAMBAAVPz4DI9AAAAAsPMKAAAgCGmMCswNQNmRgEAABAYZkYBAAAMUS+kqJfAFZgS2FdLQjIKAABgiCa4mj7KZXoTl+kBAAAQGGZGAQAADDEvrFgCH+0U49FOJmZGAQAAEBhmRgEAAAzcM9o8SEYBAAAMMSW2Aj6WsJ5aFi7TAwAAIDDMjAIAABgSvwITc4AW3hUAAAAEhplRAAAAQ9QLK5rARzslsq+WhGQUAADAEFNIMSWygInlQC2k6AAAAAgMM6MAAAAGLtM3D94VAAkVCoV8vRYuXKhrr71WRx99dNBDrvXRRx/ppz/9qfr166f27durQ4cOGjBggP70pz8FPTQAaLGYGQWQUEuXLo37+uc//7kWLFig119/PS7eu3dv5eXlacyYMc05vIOaP3++/v73v+vqq6/WN7/5TdXU1Gju3Ln63ve+p5/97Ge66667gh4igGaU+BWYmAO0hDzPY20qAE3m2muv1Z/+9Cft3r076KEc0vbt23XUUUcpFIovMrjooou0YMEC7dy5U+np6QGNDkBzKSkpUXZ2tn717hlq0y5x83Z7dtfop/3fVHFxsbKyshLW7+GOFB1AYKzL9KFQSKNHj9YTTzyh4447Tm3atFH//v319ttvy/M83XfffcrPz1e7du10zjnnaO3atU6/r776qs4991xlZWWpbdu2GjBggF577bVDjqdjx45OIipJp5xyisrLy7Vz584GHyuAw0/MCyX8BRfJKICk89JLL+mxxx7TPffco2effValpaW68MILNWHCBL311luaMWOGZs+erdWrV2vYsGHa/wLP008/rYKCAmVlZempp57SH//4R3Xo0EHnn3++r4TUsmDBAnXq1EmdO3dO1CECOAzE/nuZPlEvVmCycc8ogKRTWVmp+fPn64gjjpC0d7Z06NChWrBggVasWFE7e7lt2zaNHTtWq1at0gknnKDy8nKNGTNGF110kf785z/X9jd48GCdfPLJuu222/TPf/6zXmN57LHHtHDhQv32t79VJBJJ3EECACQxMwogCZ199tm1iagk9erVS5I0aNCguMvo++IbNmyQJC1ZskQ7d+7U8OHDVVNTU/uKxWK64IILtGzZMpWVlfkex8svv6xRo0bpsssu00033ZSIQwNwGIl54YS/4GJmFEDS6dChQ9zXaWlpB41XVFRIkj7//HNJ0mWXXXbAvnfu3BmX6B7IK6+8oksvvVQDBw7UH/7wB/NeUgBA45GMAmgxOnbsKEl68MEH9a1vfctsk5OTc8h+XnnlFQ0dOlRnnnmmnn/++dqkF0DrElVI0QQu4ZnIvloSklEALcaAAQPUvn17rV69WqNHj25QH/Pnz9fQoUN1xhln6C9/+QuPcgJasURfWucyvY1kFECL0a5dOz344IMaPny4du7cqcsuu0ydO3fWtm3b9P7772vbtm2aNWvWAbd/8803NXToUHXp0kW33XabVq5cGff93r1782xAAEgwklEALcpVV12l7t27a9q0abrxxhtVWlqqzp0766STTtK111570G1fffVV7dmzR+vXr9c555zjfH/BggU666yzmmbgAJJOVIm9tB5NWE8tCyswAQAA7GffCkx3/fM8ZbRLTVi/Fburdfepr7ICUx3MjAIAABi4Z7R5kIwCAAAYol5Y0QQmkInsqyXhXQEAAEBgmBkFAAAweAoplsACJo/njJqYGQUAAEhSM2fOVH5+vjIyMtSvXz8tXrz4oO0XLVqkfv36KSMjQ8ccc4wefvhhp8306dN13HHHqU2bNsrLy9O4ceNqV7ILQoufGY3FYtq8ebMyMzNZzg8AgMOE53kq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MjMKAAAAX2KxmFJTU514amqqYjHjdkIfSEYBAAAsib5E3wIu059zzjkaM2aMNm/eXBv77LPPNG7cuAY98F5qRZfp+6V/qnYZX+beVUe5hUQ1MTc3X1HtFjWV73FXVkotd/9KSClLd2Lh3WlOLLRnjxPzwsYHNmT87eC5K0kBAAA0hRkzZmjIkCE6+uijlZeXp1AopI0bN+qEE07Q008/3aA+mRkFAAAwJMPa9DNnzlR+fr4yMjLUr18/LV68+KDtFy1apH79+ikjI0PHHHOMHn74YafNF198oVGjRqlr167KyMhQr169NG/ePF/jycvL04oVK/T3v/9dY8eO1U9+8hPNmzdPy5cvV7du3ep/gGpFM6MAAAD1EfQKTHPnztXYsWM1c+ZMDRgwQI888ogGDRqk1atXq3t398rtunXrNHjwYN1www16+umn9dZbb2nkyJHq1KmThg0bJkmqqqrSwIED1blzZ/3pT39St27dtGnTJmVmZtZrbAMHDtTAgQPrtc2BkIwCAAAkofvvv1/XXXedrr/+eknS9OnT9corr2jWrFmaOnWq0/7hhx9W9+7dNX36dElSr1699O677+pXv/pVbTI6Z84c7dy5U0uWLKktROrRo0e9xvXOO+9o4cKF2rp1q1O0dP/999f3MElGAQAATIkuOvpvXyUlJXHh9PR0pafH15lUVVVp+fLluvXWW+PiBQUFWrJkidn90qVLnccrnX/++Xr88cdVXV2t1NRUvfjiizrttNM0atQo/fWvf1WnTp105ZVX6pZbblEk4tbT1DVlyhTdcccdOu6445STk6NQ6Mv3Z/9/10erSUbTQlL6fu/REWF3xaTMVHfVo3Cq+5iCmPGuedb5s86JdaKswiQAANAi5eXlxX09adIkTZ48OS62fft2RaNR5eTkxMVzcnJUVFRk9ltUVGS2r6mp0fbt29W1a1d98sknev311/WDH/xA8+bN08cff6xRo0appqZGd9111yHH/tvf/lZz5szRtddee+gD9anVJKMAAAD10dCio4P1J0mbNm1SVlZWbbzurOj+6s42ep530BlIq/3+8Vgsps6dO2v27NmKRCLq16+fNm/erPvuu89XMhoOhzVgwIBDtqsPpuQAAAAsXhO8JGVlZcW9rGS0Y8eOikQizizo1q1bndnPfbp06WK2T0lJ0VFHHSVJ6tq1q4499ti4S/K9evVSUVGRqqrcq8Z1jRs3Tg899NAh29UHM6MAAABJJi0tTf369VNhYaEuueSS2nhhYaGGDBlibnPaaafpb3/7W1xs/vz56t+/f22x0oABA/TMM88oFospHN47J/nRRx+pa9euSktzn4Ve109/+lNdeOGF+upXv6revXs7qzG98MIL9TpO6TCZGa3vM7YAAAAaK5GrLzXkMVHjx4/XY489pjlz5mjNmjUaN26cNm7cqBEjRkiSJk6cqGuuuaa2/YgRI7RhwwaNHz9ea9as0Zw5c/T444/rpz/9aW2bH//4x9qxY4fGjBmjjz76SH//+981ZcoUjRo1yteYbrrpJi1YsEDHHnusjjrqKGVnZ8e9GiLpZ0br+4wtvyKhhq2fCgAA0Bwuv/xy7dixQ3fffbe2bNmiPn36aN68ebWPYtqyZYs2btxY2z4/P1/z5s2rvZSem5urBx54oPaxTtLe4qn58+dr3Lhx+sY3vqGvfOUrGjNmjG655RZfY/rd736n559/XhdeeGHCjjPkeYm8NTfxTj31VJ188smaNWtWbaxXr14aOnSo+YytukpKSpSdna1VqzsrM/PLieB3K7s4bf+6o68TW/zJV51Y6v+1dWLt17rJbeZ6d5nP1C1fODHvixInFisvd9tV1zgxxVgOFADQ8tR41Vqov6q4uDiu2Kc57Msdus++S+E27hLgDRXbU6GN/3N3IMeUKD169NArr7yir3/96wnrM6kv0+97xlbdZ2Yd7BlblZWVKikpiXsBAADUV9CX6ZPR5MmTNWnSJJUbk2YNldSX6RvyjK2pU6fqZz/7WXMMDwAAoFV54IEH9J///Ec5OTk6+uijnQKmFStW1LvPpE5G96nPM7YmTpyo8ePH135dXFys7t27a/fu+Mvo5ZXu5e2q3e4jDWLlFU4sWulOKEer3cv0NTXutqGY+2B9zzP261Ub7YzL9B6X6QEALU+N9v4/GOjdhPs9jilh/R3mhg4dmvA+kzoZbcgztuouqbXvMv23Ttlep+VWY+sPGjNcAACQYKWlpQ2u0kbiTZo0KeF9JnUy2pBnbNWVm5urTZs2KTMzU6WlpcrLy3NWPkDzKykp4VwkCc5F8uBcJA/ORfA8z1Npaalyc3MDHEVI9trejemv5TvUKlF1JXUyKu19xtbVV1+t/v3767TTTtPs2bPjnrF1KOFwWN26dZP05eX+fSseIHici+TBuUgenIvkwbkIVuAzolyml7T3KUZ33nmnLrvssoM+GP/jjz/W/fffrx49eujWW2/13X/SJ6OHesYWAAAAms5DDz2kW265RaNGjVJBQYH69++v3NxcZWRkaNeuXVq9erXefPNNrV69WqNHj9bIkSPr1X/SJ6OSNHLkyHofGAAAQKMwMypJOuecc7Rs2TItWbJEc+fO1TPPPKP169drz5496tixo/r27atrrrlGV111ldq3b1/v/g+LZDRR0tPTNWnSpLgCJwSDc5E8OBfJg3ORPDgXgOv000/X6aefnvB+k34FJgAAgOa0bwWmvId+lvAVmDaNmnRYr8DUFFrVzCgAAIBfnrf3lcj+4Erq5UABAADQsjEzCgAAYKGAqVkwMwoAAIDAMDMKAABg8UJ7X4nsrwWIxWJau3attm7dqlgsFve973znO/Xuj2QUAAAAvrz99tu68sortWHDBtV9IFMoFFI0Gq13nySjAAAAhpC395XI/g53I0aMUP/+/fX3v/9dXbt2rdca9AdCMgoAAGChgMnx8ccf609/+pO+9rWvJaxPCpgAAADgy6mnnqq1a9cmtE9mRgEAACwUMDluuukmTZgwQUVFRTrhhBOUmpoa9/1vfOMb9e6TZBQAAAC+DBs2TJL0ox/9qDYWCoXkeR4FTAAAAAnFPaOOdevWJbxPklEAAAALyaijR48eCe+TZBQAAAC+/ec//9H06dO1Zs0ahUIh9erVS2PGjNFXv/rVBvVHNT0AAIDFa4LXYe6VV15R79699c477+gb3/iG+vTpo3/+8586/vjjVVhY2KA+mRkFAACAL7feeqvGjRune+65x4nfcsstGjhwYL37ZGYUAADAsu/RTol8HebWrFmj6667zon/6Ec/0urVqxvUJ8koAACAYd9yoIl8He46deqklStXOvGVK1eqc+fODeqTy/QAAADw5YYbbtD//M//6JNPPtHpp5+uUCikN998U/fee68mTJjQoD5JRgEAACw82slx5513KjMzU7/+9a81ceJESVJubq4mT56sn/zkJw3qk2QUAAAAvoRCIY0bN07jxo1TaWmpJCkzM7NRfZKMAgAAoN4am4TuQzIKAABgCCmxRUeHay39ySefrNdee01HHnmk+vbtq1DowEeyYsWKevdPMgoAAIADGjJkiNLT02v/fbBktCFCnue1gNtpAQAAEqOkpETZ2dnqcc8vFc7ISFi/sYoKbbj1dhUXFysrKyth/R7ueM4oAAAAfDnmmGO0Y8cOJ/7FF1/omGOOaVCfXKYHAACw8Ggnx/r16xWNRp14ZWWlPv300wb1STIKAABgIRmt9eKLL9b++5VXXlF2dnbt19FoVK+99pry8/Mb1DfJKAAAAA5q6NChkvY+Z3T48OFx30tNTdXRRx+tX//61w3qm2QUAADAkOj15A/nteljsZgkKT8/X8uWLVPHjh0T1jfJKAAAAHxZt25dwvskGQUAALBwz6iprKxMixYt0saNG1VVVRX3vYasT08yCgAAAF/ee+89DR48WOXl5SorK1OHDh20fft2tW3bVp07d25QMspzRgEAACxeE7wOc+PGjdPFF1+snTt3qk2bNnr77be1YcMG9evXT7/61a8a1CfJKAAAgGFfAVMiX4e7lStXasKECYpEIopEIqqsrFReXp6mTZum2267rUF9kowCSKhQKOTrtXDhQl177bU6+uijgx5yrbKyMl1xxRU67rjjlJmZqSOOOELHH3+8fvGLX6isrCzo4QFA4FJTU2vXps/JydHGjRslSdnZ2bX/ri/uGQWQUEuXLo37+uc//7kWLFig119/PS7eu3dv5eXlacyYMc05vIOqrq6W53kaP3688vPzFQ6H9cYbb+juu+/WwoUL9eqrrwY9RADNyQvtfSWyv8Nc37599e677+rYY4/V2Wefrbvuukvbt2/X73//e51wwgkN6pNkFEBCfetb34r7ulOnTgqHw05ckrKyspprWL60b99ec+fOjYudd955qqys1LRp0/TJJ580eO1lAGgJpkyZotLSUkl7JxuGDx+uH//4x/ra176mJ554okF9cpkeQGCsy/ShUEijR4/WE088oeOOO05t2rRR//799fbbb8vzPN13333Kz89Xu3btdM4552jt2rVOv6+++qrOPfdcZWVlqW3bthowYIBee+21Bo+zU6dOkqSUFP5+B1oVCpjieJ6nTp061U4udOrUSfPmzVNJSYlWrFihE088sUH9kowCSDovvfSSHnvsMd1zzz169tlnVVpaqgsvvFATJkzQW2+9pRkzZmj27NlavXq1hg0bJs/78jf8008/rYKCAmVlZempp57SH//4R3Xo0EHnn3++74TU8zzV1NSopKRE//jHP/TrX/9a3//+99W9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VRgFI+XGh6nMc9/K8phbNGQVEpXG3JWKyoziotKoW+hjFSFVxNxVlKqNQqfKmDvm3VG3vy+q48f3RZW72tLOPcaqTHuM8Za5/cd2u+NNKXbHm1rqXpZIK3VCSt3tnqDUcvc8puxxY+FKtzApVGEs6WQshWYWNVntrBWYrGKlRGuOfQAAEmb8+PG6+uqr1b9/f5122mmaPXu2Nm7cqBEjRkiSJk6cqM8++0y/+93vJEkjRozQjBkzNH78eN1www1aunSpHn/88dqH0WdkZKhPnz5x+2jfvr0kOfEDCYVCuvfee3XnnXdqzZo1atOmjXr27HnQWw0OpdUkowAAAPXRVPeM+nX55Zdrx44duvvuu7Vlyxb16dNH8+bNU48ePSRJW7Zs0caNG2vb5+fna968eRo3bpweeugh5ebm6oEHHnCeMZoI7dq10ze/+c2E9EUyCgAAYEmC5UBHjhypkSNHmt978sknndiZZ56pFStW+O7f6uNgysrKdM899+i1117T1q1ba+853eeTTz6pV38SySgAAAB8uv7667Vo0SJdffXV6tq160Er+/0iGQUAALAkwcxosnn55Zf197//XQMGDEhYn60mGd1YU652NV8+4/+zaDunzeZq91EJ22rcRy9sr3G33VHlxnYahT4l1W5Rz+4qo1ip0i10qqw2CpOq3UIfq04lLc0tpAmHjZWkou46CNVV8R+TmipjnxVuLLzHjVkrJqWXubGUMiek1DKjMMkoVkorM4qVdrvHn1LmFiZFyt2lmkKVVsxdI8urMtbNqnH34RlFTVbMKnTyzOInVmUCADSPI488Uh06dEhon6zABAAAYAg1wetw9/Of/1x33XWXysvLE9Znq5kZBQAAqBcu0zt+/etf6z//+Y9ycnJ09NFH1653v099iqf2IRkFAACAL0OHDk14nySjAAAAhqCfM5qMJk2alPA+W00yesXKHynS9stCIavwp8aIxaqN22qNWKjKjYWNYp1IpRHbY7Vzd5tixFKtuhe3zkmlxxgrC9UY+6069PjSjHFEKoxYpftTFzYWMwpXue1SKqyYv1WUInvcY43scYuLrJWVQhXuwdnFSm5Rk12sZBQX+V6VqRGFSay2BABoQsuXL9eaNWsUCoXUu3dv9e3bt8F9tZpkFAAAoF64Z9SxdetWXXHFFVq4cKHat28vz/NUXFyss88+W88995w6depU7z6ppgcAADgQL4GvFuCmm25SSUmJPvzwQ+3cuVO7du3SqlWrVFJSop/85CcN6pOZUQAAAPjyj3/8Q6+++qp69epVG+vdu7ceeughFRQUNKhPklEAAAADBUyuWCzmPM5JklJTU5116v1qNclo+a4MhSv2W/0oajx61oiFPDfmWZ8ma1srZhQNhYx6FrPQp9ooCDIW/bGKiY5cZRRdGftNMYqOIpXxH66UPUabKvcDGIq67SqPdD9y1nFZxU+RSmMVKTPmvnlho1hJxopJVrGSqv2trGQWJlmrLVnFRUaxEqstAQCSzTnnnKMxY8bo2WefVW5uriTps88+07hx43Tuuec2qE/uGQUAALAk8n7RFnLf6IwZM1RaWqqjjz5aX/3qV/W1r31N+fn5Ki0t1YMPPtigPlvNzCgAAEB9cJnelZeXpxUrVqiwsFD/93//J8/z1Lt3b5133nkN7pNkFAAAAPUycOBADRw4MCF9cZkeAADAwmX6Wq+//rp69+6tkpIS53vFxcU6/vjjtXjx4gb13WpmRtseWaFI2y8/BTU1bh4ei7nFRanGEkff+soGJ1YWTXNiX1S2cWKlVelurMKN7dnj9ldT6Z4ur8JdNSpkrKIUrvYZq3Tfl7oFUdbqUH5XYIpYBVdGO8koiIoZRVjVRkFPyChOs/hcpcgsODKKi+x2xviswiQAAJLY9OnTdcMNNygrK8v5XnZ2tm688Ubdf//9+va3v13vvpkZBQAAMOy7ZzSRr8PV+++/rwsuuOCA3y8oKNDy5csb1DfJKAAAAA7q888/N58vuk9KSoq2bdvWoL5JRgEAACzcM1rrK1/5ij744IMDfv9f//qXunbt2qC+A01G33jjDV188cXKzc1VKBTSX/7yl7jve56nyZMnKzc3V23atNFZZ52lDz/8MJjBAgCA1oVktNbgwYN11113qaLCLRLZs2ePJk2apIsuuqhBfQdawFRWVqYTTzxRP/zhDzVs2DDn+9OmTdP999+vJ598Uscee6x+8YtfaODAgfr3v/+tzMzMeu3ruZPmqF3ml7n3Z9F2TpttNe5NuWUxt5Aow1j2KOa5eX2F505nl0bdoqZiI7aruq0T+8KI7ag8wu2vKsON7XFju8vcWOUed8yhPfFFUpEy91hTyt2iITNW5oSUavxJFDKKyayCq0jEKFYyCpg8I+azzMm/Bi6D1mg+C7EAAGioO+64Qy+88IKOPfZYjR49Wscdd5xCoZDWrFmjhx56SNFoVLfffnuD+g40GR00aJAGDRpkfs/zPE2fPl233367Lr30UknSU089pZycHD3zzDO68cYbm3OoAACgleGh91/KycnRkiVL9OMf/1gTJ06sfYJMKBTS+eefr5kzZyonJ6dBfftORj/99FN169atQTtpiHXr1qmoqEgFBQW1sfT0dJ155plasmTJAZPRyspKVVZ++ewh63lYAAAAqJ8ePXpo3rx52rVrl9auXSvP89SzZ08deeSRjerX9z2jffr00e9///tG7aw+ioqKJMnJsnNycmq/Z5k6daqys7NrX3l5eU06TgAA0EJxz6jpyCOP1De/+U2dcsopjU5EpXoko1OmTNGoUaM0bNgw7dixo9E79itU514/z/Oc2P4mTpyo4uLi2temTZuaeogAAKAFCnlewl9w+b5MP3LkSA0aNEjXXXedjj/+eM2ePVvf/e53m2xgXbp0kbR3hnT/RwVs3br1oPckpKenKz3dXdGoW0obZaV8mXt3jVQ5barTPndilZ5blBI1PkwVxuer3HNXRyo1CqK+iBmFSUaB1efV2U5sS5ob+2xPeydWHXXHUlLq7ldVxgpMdQqWUkv9FSallbpvSmqZFXPf49Td7spXkfIaI+aex1CFW2AWqjKWfqpx96Fqq527X8+IWYVE5qpMxmfKs1ZlMtoBANDS1KuAKT8/X6+//rpmzJihYcOGqVevXkpJie9ixYoVCRlYfn6+unTposLCQvXt21eSVFVVpUWLFunee+9NyD4AAAAOKNGX1pkYNdW7mn7Dhg16/vnn1aFDBw0ZMsRJRutj9+7dWrt2be3X69at08qVK9WhQwd1795dY8eO1ZQpU9SzZ0/17NlTU6ZMUdu2bXXllVc2eJ8AAABIHvXKJB999FFNmDBB5513nlatWqVOnTo1aufvvvuuzj777Nqvx48fL0kaPny4nnzySd18883as2ePRo4cqV27dunUU0/V/Pnz6/2MUQAAgPri0U7Nw3cyesEFF+idd97RjBkzdM011yRk52eddZZ9T91/hUIhTZ48WZMnT07I/gAAAHzjMn2z8J2MRqNR/etf/2rWZ40mUmoootRQOO7ruqJGwUhb48+YSs8tcol4bjFMtbEiT9RY96ck5q6EZBUrbazs4MQ+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jaZNm6b77rtPDz74YG0bzgXQDLxW4JRTTvFGjBgRF/v617/u3XrrrQGNqHXaunWrJ8lbtGiR53meF4vFvC5dunj33HNPbZuKigovOzvbe/jhh4MaZotWWlrq9ezZ0yssLPTOPPNMb8yYMZ7ncS6a0y233OKdccYZB/w+56L5XHjhhd6PfvSjuNill17qXXXVVZ7ncS6A5tLiZ0arqqq0fPlyFRQUxMULCgq0ZMmSgEbVOhUXF0uSOnToIElat26dioqK4s5Nenq6zjzzTM5NExk1apQuvPBCnXfeeXFxzkXzefHFF9W/f39973vfU+fOndW3b189+uijtd/nXDSfM844Q6+99po++ugjSdL777+vN998U4MHD5bEuQCay2GxHGhjbN++XdFoVDk5OXHxnJwcFRUVBTSq1sfzPI0fP15nnHGG+vTpI0m17791bjZs2NDsY2zpnnvuOa1YsULLli1zvse5aD6ffPKJZs2apfHjx+u2227TO++8o5/85CdKT0/XNddcw7loRrfccouKi4v19a9/XZFIRNFoVL/85S/1/e9/XxI/F0BzafHJ6D6hUCjua8/znBiazujRo/Wvf/1Lb775pvM9zk3T27Rpk8aMGaP58+crIyPjgO04F00vFoupf//+mjJliiSpb9+++vDDDzVr1ixdc801te04F01v7ty5evrpp/XMM8/o+OOP18qVKzV27Fjl5uZq+PDhte04F0DTavGX6Tt27KhIJOLMgm7dutX5axdN46abbtKLL76oBQsWqFu3brXxLl26SBLnphksX75cW7duVb9+/ZSSkqKUlBQtWrRIDzzwgFJSUmrfb85F0+vatat69+4dF+vVq1dtQSU/F83nf//3f3Xrrbfqiiuu0AknnKCrr75a48aN09SpUyVxLoDm0uKT0bS0NPXr10+FhYVx8cLCQp1++ukBjap18DxPo0eP1gsvvKDXX39d+fn5cd/Pz89Xly5d4s5NVVWVFi1axLlJsHPPPVcffPCBVq5cWfvq37+/fvCDH2jlypU65phjOBfNZMCAAc4jzj766CP16NFDEj8Xzam8vFzhcPx/g5FIpPbRTpwLoJkEWDzVbJ577jkvNTXVe/zxx73Vq1d7Y8eO9Y444ghv/fr1QQ+tRfvxj3/sZWdnewsXLvS2bNlS+yovL69tc88993jZ2dneCy+84H3wwQfe97//fa9r165eSUlJgCNvHfavpvc8zkVzeeedd7yUlBTvl7/8pffxxx97f/jDH7y2bdt6Tz/9dG0bzkXzGD58uPeVr3zFe+mll7x169Z5L7zwgtexY0fv5ptvrm3DuQCaXqtIRj3P8x566CGvR48eXlpamnfyySfXPl4ITUeS+XriiSdq28RiMW/SpElely5dvPT0dO873/mO98EHHwQ36FakbjLKuWg+f/vb37w+ffp46enp3te//nVv9uzZcd/nXDSPkpISb8yYMV737t29jIwM75hjjvFuv/12r7KysrYN5wJoeiHP87wgZ2YBAADQerX4e0YBAACQvEhGAQAAEBiSUQAAAASGZBQAAACBIRkFAABAYEhGAQAAEBiSUQAAAASGZBQAAACBIRkFAABAYEhGARxWotGoTj/9dA0bNiwuXlxcrLy8PN1xxx0BjQwA0BAsBwrgsPPxxx/rpJNO0uzZs/WDH/xAknTNNdfo/fff17Jly5SWlhbwCAEAfpGMAjgsPfDAA5o8ebJWrVqlZcuW6Xvf+57eeecdnXTSSUEPDQBQDySjAA5LnufpnHPOUSQS0QcffKCbbrqJS/QAcBgiGQVw2Pq///s/9erVSyeccIJWrFihlJSUoIcEAKgnCpgAHLbmzJmjtm3bat26dfr000+DHg4AoAGYGQVwWFq6dKm+853v6OWXX9a0adMUjUb16quvKhQKBT00AEA9MDMK4LCzZ88eDR8+XDfeeKPOO+88PfbYY1q2bJkeeeSRoIcGAKgnklEAh51bb71VsVhM9957rySpe/fu+vWvf63//d//1fr164MdHACgXrhMD+CwsmjRIp177rlauHChzjjjjLjvnX/++aqpqeFyPQAcRkhGAQAAEBgu0wMAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAkMyCgAAgMCQjAIAACAwJKMAAAAIDMkoAAAAAvP/AdpFWjxIrzExAAAAAElFTkSuQmCC" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 9 }, { "cell_type": "code", "id": "55b71ca1a2ce12bb", "metadata": { "ExecuteTime": { "end_time": "2025-06-01T11:35:52.634652Z", "start_time": "2025-06-01T11:35:52.556338Z" } }, "source": [ "# To understand the concentration patterns in the plot above,\n", "# we can plot permeability and see that the tracer is moving\n", "# around some low-permeability zones\n", "perm = SpatialProfile(\"permeability\", folder=\"output_files\")\n", "\n", "# Plot permeability at the first time step\n", "fig, ax = plt.subplots(figsize=(8, 6))\n", "\n", "# Extract the permeability data\n", "data = perm.extract(\"X-Perm\", time=1)\n", "\n", "# Plot it using a different cmap (colormap) to differentiate it\n", "# from the concentration plots above.\n", "im = ax.imshow(data, origin=\"lower\", cmap=\"cividis\")\n", "\n", "# Add a colorbar\n", "fig.colorbar(im, ax=ax, label=\"log(permeability)\", orientation=\"horizontal\", shrink=0.7)\n", "\n", "# Add axis labels\n", "ax.set(xlabel=\"X\", ylabel=\"Y\")\n", "\n", "plt.show()" ], "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "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wTU6kb9es2W6du2qwsJCffvtt4qJibngcZymOvfr+++/rx07duj111+XJJmf/yf26OhopaWl6YknnrioWp3EH6/X2NhYxcbGqm3btmrcuLF69eqlyZMnuz8nENgIr6jzoqOjFR0dXa1jnjhxQq+++qrS09OrdVynqc5926NHD0nSnj171Lx5c0nS0aNHdfjwYSUkJFTLNpzCH6/Z8j799FOFhYVVegmoQFOd+/Wvf/2rTp486X6clZWlUaNGacOGDfrFL35RLdtwCn+/Xst+MSgqKvLbNlC7EF6B85Cbm6ujR48qNzdXJSUlys7OliRdfvnlioyMdPdbuXKlTp8+reHDh9tUqfNUtm/btGmjlJQUjRs3TgsWLFCDBg00adIktW3bVn369LG3+Fqssv369ttv69ChQ+rWrZvCw8O1bt06paWl6Te/+Y1cLpe9xddile3XswPq4cOHJUlJSUl17peC81HZfn333Xf17bff6tprr1VkZKR27dqlRx99VD169LiovzbAYey+3AHgJKmpqUaS123dunUe/bp162buvPNOe4p0qKrs24KCAjNq1Chz6aWXmkaNGpkBAwaY3Nxc+4p2gMr26+rVq03Hjh1NZGSkiYiIMO3atTOzZs0yP/30k72F13JV/Swos27dOi6VVQWV7df333/fdOvWzURFRZmwsDDTunVrM3HiRPZrHWMZ8/PxdgAAAKCW42oDAAAAcAzCKwAAAByD8AoAAADHILwCAADAMQivAAAAcAzCKwAAAByD8AoAAADHILwCCBg33nijxo8fX+3j3nDDDVq2bFm1j1ubTJ06VR07djxnn5EjR+r22293Pz57f7ds2VKzZs26qDp27Nih5s2b64cffriocQAELsIrAJzDO++8o0OHDmno0KF2l2K72bNna/HixRUuz8rK0m9+8xv3Y8uy9NZbb53XNtq3b6/rrrtOzz333AVWCSDQEV4B4BzmzJmje+65R0FB/v24LC4u9uv41SEqKkqXXnpphcubNGmiiIiIi97OPffco3nz5qmkpOSixwIQeAivAALSsWPHNGLECDVs2FARERFKTk7Wvn37PPosXLhQ8fHxioiI0IABAzRz5kyPcHb48GGtWbNG//mf/+mxnmVZmjdvnpKTkxUeHq7ExES99tprHn2+/vprDRkyRA0bNlTjxo2VkpKiAwcOuJeX/Qk+PT1dcXFxatOmjQ4cOCDLsvTqq6+qV69eCg8P17XXXqu9e/cqKytLXbp0UWRkpG6++WZ99913HtvLyMhQUlKSwsLC1LZtW82dO9dj+cSJE9WmTRtFRESoVatWmjx5sn766Sev/fbiiy+698ngwYP1/fffe9VckfKnDbRs2VKSNGDAAFmWpZYtW+rAgQMKCgrSli1bPNZ7/vnnlZCQoLL/rbx///46cuSI1q9fX+G2ANRdhFcAAWnkyJHasmWLVq1apY8//ljGGN1yyy3uwLZp0yaNGTNG48aNU3Z2tm666SZNmzbNY4yNGzcqIiJCSUlJXuNPnjxZgwYN0vbt23XXXXdp2LBh2r17tyTpxx9/VJ8+fRQZGakPP/xQGzdudIfO8kdY165dq927dyszM1PvvPOOu33KlCl6/PHHtW3bNoWEhGjYsGF69NFHNXv2bG3YsEGff/65/vu//9vdf+HChUpLS9O0adO0e/duTZ8+XZMnT9aSJUvcferXr6/Fixdr165dmj17thYuXOj1p/n9+/fr1Vdf1dtvv62///3vys7O1gMPPHBB+z8rK0vSv0P1wYMHlZWVpZYtW6pv377KyMjw6JuRkaGRI0fKsixJUmhoqK6++mpt2LDhgrYNIMAZAAgQvXv3NuPGjTN79+41ksymTZvcyw4fPmzCw8PNq6++aowxZsiQIebWW2/1WH/48OEmKirK/fi5554zrVq18tqOJDNmzBiPtuuvv97cf//9xhhjXnrpJXPFFVeY0tJS9/KioiITHh5u/vGPfxhjjElNTTUxMTGmqKjI3ScnJ8dIMosWLXK3LV++3Egya9eudbelp6ebK664wv04Pj7eLFu2zKOeP/7xj6Zbt24V7CljZsyYYTp37ux+PGXKFBMcHGzy8vLcbatXrzZBQUHm4MGD7ppTUlLcy8v2d5mEhATz3HPPeeynN99802O7K1euNA0bNjSnTp0yxhiTnZ1tLMsyOTk5Hv0GDBhgRo4cWWH9AOoujrwCCDi7d+9WSEiIrr/+endb48aNdcUVV7iPju7Zs0fXXXedx3pnPz558qTCwsJ8bqNbt25ej8vG3rp1q/bv36/69esrMjJSkZGRatSokU6dOqXPP//cvU779u0VGhrqNXaHDh3cP8fExLj7lm/Lz8+XJH333XfKy8vT6NGj3duKjIzUU0895bGt119/XT179lRsbKwiIyM1efJk5ebmemy3RYsWat68ucdzKi0t1Z49e3zugwtx++23KyQkRG+++aYk6eWXX1afPn3cpxmUCQ8P148//lht2wUQOELsLgAAqpv5+dxJX+1lf5ou/3NF60VHR+vYsWNV3m7ZeKWlpercubNeeeUVrz5NmjRx/3zJJZf4HKdevXpeY57dVlpa6t6W9O9TB8qHdUkKDg6WJH3yyScaOnSonnjiCfXv319RUVFasWKFnn322So9n7P308UIDQ3V3XffrYyMDA0cOFDLli3zeXmto0eP6he/+EW1bRdA4CC8Agg4V155pU6fPq3/+7//U/fu3SVJR44c0d69e93nr7Zt21abN2/2WO/sLxJ16tRJhw4d0rFjx9SwYUOPZZ988olGjBjh8bhTp06SpGuuuUYrV65U06ZN1aBBg2p/fuXFxMTosssu0xdffKHhw4f77LNp0yYlJCQoLS3N3fbll1969cvNzdU333yjuLg4SdLHH3+soKAgtWnT5oJqq1evns8rBtx7771q166d5s6dq59++kkDBw706vPZZ5/p17/+9QVtF0Bg47QBAAGndevWSklJ0X333aeNGze6v1R12WWXKSUlRZL04IMP6t1339XMmTO1b98+vfjii1q9erXHUcZOnTqpSZMm2rRpk9c2XnvtNb388svau3evpkyZos2bN2vs2LGSpOHDhys6OlopKSnasGGDcnJytH79eo0bN05fffVVtT/fqVOnKj09XbNnz9bevXu1Y8cOZWRkaObMmZKkyy+/XLm5uVqxYoU+//xzzZkzx/1n+/LCwsKUmpqq7du3a8OGDXrooYd0xx13KDY29oLqatmypdauXev+BaBMUlKSunbtqokTJ2rYsGEKDw/3WO/AgQP6+uuv1bdv3wvaLoDARngFEJAyMjLUuXNn/cd//Ie6desmY4zeffdd95/fe/Toofnz52vmzJm6+uqr9fe//10PP/ywxzmuwcHBGjVqlM8//z/xxBNasWKFOnTooCVLluiVV17RlVdeKUmKiIjQhx9+qBYtWmjgwIFKSkrSqFGjdPLkSb8cib333nu1aNEiLV68WO3bt1fv3r21ePFiJSYmSpJSUlL08MMPa+zYserYsaM++ugjTZ482Wucyy+/XAMHDtQtt9yifv36uY+OXqhnn31WmZmZio+Pdx+VLjN69GgVFxdr1KhRXustX75c/fr1U0JCwgVvG0DgskxFJ4cBQB1z33336V//+pfHJZq+/fZbXXXVVdq6das7TFmWpTfffPOc1zzFuU2bNk0rVqzQjh07PNqLiorUunVrLV++XD169LCpOgC1GUdeAdRZf/7zn7V9+3bt379fzz//vJYsWaLU1FSPPjExMXrppZe8vpmPC3PixAllZWXp+eef10MPPeS1/Msvv1RaWhrBFUCFOPIKoM6644479MEHH+j48eNq1aqVHnzwQY0ZM6bS9TjyeuFGjhyp5cuX6/bbb9eyZcvcV0QAgKoivAIAAMAxOG0AAAAAjkF4BQAAgGMQXgEAAOAYhFcAAAA4BuEVAAAAjkF4BQAAgGMQXgEAAOAYhFcAAAA4BuEVAAAAjvH/xnn7ylkT3JoAAAAASUVORK5CYII=" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 10 } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }