Last active
October 18, 2020 19:04
-
-
Save guyer/6b7699531f75b353f49a0cf36d683aa4 to your computer and use it in GitHub Desktop.
IPython notebook illustrating some FiPy discretization and interpolation behavior
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline\n", | |
"\n", | |
"from matplotlib import pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import fipy as fp\n", | |
"from fipy import numerix as nmx" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We use a simple test function $\\cos\\left[\\frac{2\\pi}{\\lambda}(x - \\delta)\\right]$ to illustrate some properties of FiPy's interpolations and discretizations." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"wavelength = 12.\n", | |
"offset = 1.\n", | |
"\n", | |
"def fn(x):\n", | |
" \"\"\"manufactured solution\"\"\"\n", | |
" return nmx.cos(2*nmx.pi/wavelength * (x - offset))\n", | |
"\n", | |
"def fn_x(x):\n", | |
" \"\"\"x derivative of manufactured solution\"\"\"\n", | |
" return -(2*nmx.pi/wavelength) * nmx.sin(2*nmx.pi/wavelength * (x - offset)) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"def plotValueAndSlope(phi, title):\n", | |
" \"\"\"Utility function to plot various discretizations of phi and its slope\"\"\"\n", | |
" X, = phi.mesh.faceCenters\n", | |
" \n", | |
" xx = nmx.linspace(min(X), max(X), 100)\n", | |
" yy = fn(xx)\n", | |
" yy_x = fn_x(xx)\n", | |
" \n", | |
" fig = plt.figure(figsize=(10.0, 5.0))\n", | |
"\n", | |
" axes1 = fig.add_subplot(1, 2, 1)\n", | |
" axes2 = fig.add_subplot(1, 2, 2)\n", | |
"\n", | |
" axes1.plot(xx, yy, label=r'$\\phi$')\n", | |
" axes1.plot(mesh.x, phi.value, \n", | |
" linestyle='', marker='o', label='phi')\n", | |
" axes1.plot(mesh.faceCenters[0], phi.faceValue.value, \n", | |
" linestyle='', marker='x', label='phi.faceValue')\n", | |
" axes1.legend()\n", | |
" axes1.set_ylim(-1.1, 1.5)\n", | |
" axes1.set_xlabel('$x$')\n", | |
"\n", | |
" axes2.plot(xx, yy_x, label=r'$\\nabla\\phi\\cdot\\hat{\\i}$')\n", | |
" axes2.plot(mesh.x, phi.grad[0].value, \n", | |
" linestyle='', marker='o', label='phi.grad[0]')\n", | |
" axes2.plot(mesh.x, phi.leastSquaresGrad[0].value, \n", | |
" linestyle='', marker='s', fillstyle='none', \n", | |
" color='k', label='phi.leastSquaresGrad[0]')\n", | |
" axes2.plot(mesh.faceCenters[0], phi.faceGrad[0].value, \n", | |
" linestyle='', marker='x', color='r', \n", | |
" label='phi.faceGrad[0]')\n", | |
" axes2.plot(mesh.faceCenters[0], phi.faceGradAverage[0].value, \n", | |
" linestyle='', marker='+', color='c', \n", | |
" label='phi.faceGradAverage[0]')\n", | |
" axes2.legend(loc='upper center')\n", | |
" axes2.set_ylim(-1.1, 1.5)\n", | |
" axes2.set_xlabel('$x$')\n", | |
"\n", | |
" fig.suptitle(title)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"mesh = fp.Grid1D(nx=10, dx=1.)\n", | |
"\n", | |
"phi = fp.CellVariable(mesh=mesh, value=fn(mesh.x))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"FiPy solution values occur on cell centers; everything else is derived from these (and constraints).\n", | |
"\n", | |
"* `phi.faceValue` $\\equiv$ `phi.arithmeticFaceValue`:\n", | |
" $$\\phi_f \\equiv (\\phi_P - \\phi_A) \\frac{d_{fP}}{d_{AP}} + \\phi_A$$\n", | |
" where \n", | |
" * $\\phi_f$ is the value of $\\phi$ at a face $f$ between a control \n", | |
" volume (cell) centered on a point $P$ and an adjacent cell centered \n", | |
" on a point $A$. \n", | |
" * $\\phi_{P|A}$ is the average value of $\\phi$ in the \n", | |
" cell centered on a point $P|A$. \n", | |
" * $d_{fP}$ is the distance from the center \n", | |
" of the face $f$ to the center of the cell $P$. \n", | |
" * $d_{AP}$ is the distance from the center of the cell $A$ \n", | |
" to the center of the cell $P$. \n", | |
" \n", | |
" The default, conservative boundary condition for Finite Volume means that the default boundary gradient of $\\phi$ is zero, which is satisfied by setting $\\phi_A = \\phi_P$ for boundary faces.\n", | |
" \n", | |
"* `phi.grad` $\\equiv$ `phi.gaussGrad`\n", | |
" $$\\nabla_P \\phi \\equiv \\frac{1}{V_P} \\sum_f \\phi_f A_f \\hat{n}_f$$\n", | |
" where\n", | |
" * $\\nabla_P$ is the Gaussian gradient evaluated at the center of the cell $P$\n", | |
" * $V_P$ is the volume of the cell $P$\n", | |
" * $\\sum_f$ denotes summation over all of the faces bounding the cell $P$\n", | |
" * $A_f$ is the area of the face $f$\n", | |
" * $\\hat{n}_f$ is the unit normal to the face $f$\n", | |
"* `phi.faceGrad`\n", | |
"\n", | |
" $$\\nabla_f \\phi \\equiv \\frac{\\phi_A - \\phi_P}{d_{AP}} \\hat{n}_f+ \\left(\\hat{t}_1 \\hat{t}_1 + \\hat{t}_2 \\hat{t}_2\\right)\\cdot\\frac{\\nabla_A \\phi + \\nabla_P \\phi}{2}$$\n", | |
" and on boundaries\n", | |
" $$\\nabla_f \\phi \\equiv \\frac{\\phi_f - \\phi_P}{d_{fP}} \\hat{n}_f + \\left(\\hat{t}_1 \\hat{t}_1 + \\hat{t}_2 \\hat{t}_2\\right)\\cdot\\nabla_P \\phi$$ \n", | |
" where\n", | |
" * $\\hat{t}_1$ and $\\hat{t}_2$ are a pair of orthogonal unit vectors tangent to the face $f$\n", | |
"* `phi.leastSquaresGrad`\n", | |
"\n", | |
" Determined by solving for $\\nabla_\\text{LS} \\phi$ in\n", | |
" $$\\nabla_\\text{LS} \\phi \\cdot \n", | |
" \\sum_f d_{AP}^2 \\hat{n}_f \\otimes \\hat{n}_f \n", | |
" = \\sum_f d_{AP}^2 \\hat{n}_f \\cdot \\nabla_\\text{LS} \\phi$$\n", | |
" where $\\nabla_\\text{LS}$ is the Least Squares gradient evaluated at the center of the cell $P$\n", | |
" \n", | |
" I'm not aware that we ever use this.\n", | |
"* `phi.faceGradAverage` $\\equiv$ `phi.grad.faceValue`\n", | |
"\n", | |
" I don't see any point in this declaration (it's easier, and clearer, to just call the definition) and I'm not aware that we ever use it." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"From these definitions, we can see that the default, no-flux boundary condition propagates to all of these derived values near the domain boundaries." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAFfCAYAAACbYBKDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVWX+wPHPgwuI7KIobiDaWI6lbS5kmpbmkmk5ueQ6\npZmjZllZoiKTtFhaPxvTSnIrNRsdbUDTslCzlJlcSnMZUXFBLWVREFDh+/vj4o2rgCBc7hW+79fr\nvrz3LM/5nus9D9/znOc8x4gISimllFLKflwcHYBSSimlVHmnCZdSSimllJ1pwqWUUkopZWeacCml\nlFJK2ZkmXEoppZRSdqYJl1JKKaWUnWnCpZSyYYyZaowZf51lahpjthljfjLGhN7ANoYaY97Pfd/L\nGHNrAcstMMY8XtzyS8IYk3YD68QYY7zsEY9SqnzQhEspdbWiDM7XCfhZRO4SkS0l3EYv4LYSxFLa\nirxNk0tEuovIOXsGpZS6uWnCpZTCGBNmjNlvjNkM/CnP9BBjzFpjzH+NMZuMMX8yxrQA3gIeNcZs\nN8a4GWPmGGP+Y4zZbYyZmmf9I8YYv9z3dxtjvrsyK3daG+AR4G1jzA5jTKN8wnswt+z9xpjuueu5\nGWPmG2N+zo2hQ+50a8tZ7udoY8z9ue/TjDHTjDE7jTE/GmNq5U4Pzv38szFmWp51PYwx3+S24v1s\njOmZOz0oN5aFwC9A/av2c2Bu698OY8xcY4yLMaZSbmvdL7lljSvBf5dS6iakCZdSFZwx5i6gL3AH\n0A24hz9aeT4CxojI3cBLwAcishOYAiwTkTtFJBOYKCL35JbR3hjz59z1C20tEpEfgS+BF0WkpYgc\nujo8oGFu2d2BucYYV+BvQLaI3A70BxbmTr96e3k/uwM/ikgLYBMwPHf6/wGzc8tKzLN8BtBbRO4C\nOgIz8sxrnLvOn0Xk6JXt5F4afQJoKyItgWzgydzvJVBEmuduZ35h34tSqvyp7OgAlFIO1w5YmZs4\nZRpjvgQwxlQH2gJfGGOuLFs191+T+7qirzFmOJY6pQ6WS4S7ixGDKWC6AMsBROSgMeYQ0BQIBWbl\nTt9vjEkAbrnONi6KSEzu+5+Ah3LftwV6577/FEvrHVhOSN8wxrQDcoDAK61iQIKIxOWzD52Au4D/\n5n5n1YDTwL+BRsaYWUAMsP46sSqlyhlNuJRSgm3Cc+W9C5Cc21KT3zqWhY0JBsYDd4tIqjFmPuCW\nO/syf7Sku1Gw4vTVurLs1UmaXLW9q7d5Kc/7HK5f/z0J+AN3iki2MeZwnvLSC1lvoYhMvHqiMeZ2\n4GFgJJZWsKeus32lVDmilxSVUpuAXrn9ojyBHgAich44bIzpA9YO4rfnrpM32fHCkoCcM8YEAF3z\nzDsC3J37vqC7Dc/nlpEfA/wld9shQCNgH7AZS0KEMeYWoAGwP3d7LXKXrw/ce/3dZwvQL/f9k1ft\n12+5ydYDQMPrlCPABqCPMaZmbmx+xpgGxpgaQGURWQlMBu4sQlxKqXJEW7iUquBEZIcx5nNgF/Ab\nkPdS2ZPAHGPMJKAKsBT4GUtyIbnr7zLG7MCSCB0Dvs+zfgQQZYw5B8TyR+uU5Hm/DPjYGDMG+MtV\n/bgEOJobkxfwjIhcNMZ8kBvXz1hatYaIyCVgS25L1K/AXiyXDvOWlff9lc/PAUuMMROA1Xmmfwb8\nO3cb/80tL7+yrJ9FZG/ud7XeGOOCpVVtFJAJzM+dBvAKSqkKxYg44q5rpZRSSqmKQy8pKqWUUkrZ\nmSZcSimllFJ2pgmXUkoppZSdacKllFJKKWVnmnAppZRSStmZJlxKKaWUUnamCZdSSimllJ1pwqWU\nUkopZWeacCmllFJK2ZkmXEoppZRSdqYJl1JKKaWUnWnCpZRSSillZ5pwKaWUUkrZmSZcSimllFJ2\npgmXUkoppZSdlTjhMsZ8Yow5bYz5pYD5HYwxqcaYHbmvSSXdplJKlQatv5RSZaVyKZQxH3gfWFTI\nMhtFpGcpbEsppUqT1l9KqTJR4hYuEdkMJF9nMVPS7SilVGnT+kspVVbKog+XAG2NMbuMMWuMMbeV\nwTaVUqo0aP2llCoVpXFJ8Xq2A/VF5IIxpiuwCrilDLarlFIlpfWXUqpU2D3hEpHzed6vNcZ8YIzx\nE5GkvMsZY8TesSilnIuIOPXlOq2/lFKFKU4dZvdLisaYAGOMyX1/L2CurqyuEJGb/hUeHu7wGHRf\ndF9uhtfNoKLVX+Xp91We9qW87Ed525fiKnELlzFmKdAe8DfGHAPCgSq5FdCHQB/gWWPMZeAC0K+k\n21RKqdKg9ZdSqqyUOOESkf7XmT8bmF3S7SilVGnT+kspVVZ0pPlS1qFDB0eHUGp0X5xTedoX5XzK\n0++rvOxLedkPKF/7UlzmRq5D2oMxRpwlFqWU/RljECfvNF9UWn8pVfEUtw4ri2EhlMpXbl9kVQFo\nMmJ/ejypiuZmq1c04VIOdbMdMKr4NBEoO3o8qYriZqxXtA+XUkoppZSdacKllFJKKWVnmnAppZRS\nStmZJlxKKaVuWhkZGWRmZjo6DKWuSxMupZRSdvXtt9/i4uKCj48Pvr6+17zc3d3ZsmVLscvNzs5m\n6tSphIeHk5OTY4fIlSo9Og6XcpjcMUwcHUaR7NixAw8PD5o0aeLoUG46Bf0/6zhcpR6DUx9P9957\nL6NHj2bw4MHXzIuMjCQsLMxmWlGOuQ0bNtC8eXNycnLYs2cPnTp1KvW4lXNyht97ceswbeFSqgj2\n79+vyZZSJfDqq6/y+uuvX/NHcufOnbRo0eKa5YtyzHXq1IlatWpRu3ZtTbaU09OES6kiuBnHfFHK\nmfTq1QsXFxe++OILm+nR0dF07979muWLesydPXuW/fv3l0qMStmTJlzKaRlTOq8bde7cOebOnUt0\ndDQ7duzg73//O/v27Su9HVSqAjHGMGHCBF5//XXrtP3799O4cWPr56Iec1lZWQBcuHCBF154gQUL\nFtg9fqVKShMu5bRESud1Iy5cuMDgwYN5/PHHCQgIYOTIkYwePZpRo0aV7k4qVYE8+eSTJCcnEx0d\nDcDy5cvp27cvULxjrkmTJmzbtg13d3d+//33fFvIlHI2mnAplY/FixfTokULatasycGDBwkKCiIl\nJYVLly45OjSlboijW4wBKleuzIsvvkhkZCRHjx4lMDDQeumwOMdcbGws99xzD1lZWezatYu2bduW\nLDClyoAmXErlo0qVKnh5edlMi4iIYPr06Q6KSKmScWSLcV5PP/008fHxjB49mkGDBlmnF+eYa9So\nES4uLmzZsoXQ0FBOnTpV8sCUsjN9eLVS+RgyZAhvvPEGixYtYseOHfz222+MHz+e22+/3dGhKXVT\nq1atGi+88AJVq1alatWq1uk3cswlJSWRnp5OSkoKgYGBZRG+UjdMx+FSDuMM46hcz9q1a7n//vup\nXr26o0O5aek4XGUWg9MfT0Whx5wqCmf4ves4XEqVovPnz2vFr1QZ0mNOlVfawqUcxhnOUJT9aQtX\nmcWgx5OqMJzh964tXEoppZRSTkYTLqWUUkopO9OESymllFLKzjThUkoppZSyM024lFJKKaXsTBMu\npZRSSik704RLKaWUUsrONOFSqohiY2OpX79+gfOfffZZpk2bVoYRKaWUullowqVUKZkzZw6TJk1y\n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\nVrts/+GHHyY8PPya6atXr6ZOnTrk5OTYZbs3M62/HKckJzBTp07V5xY6sQULFtCuXTsAjhw5gouL\nC56ensybN69I64eHh+Ph4YGLi0u5qrfKog9XXSDvk0WPA9c+2t3OsrMhK/+H3itnEhMDKSm201JS\nLNPLsoxSlpCQQFBQEG5uRX/gb3ENHTqUTz/99JrpixcvZuDAgbi4aJfNG+AU9VdFVNgJTFk8szQo\nKIhvv/3WZlpUVBS33norXl5e1K5dm+7du5OWlmb3WErTyZMnGT58OHXr1sXT05OQkBCGDRvG/v37\n7brd1NRUnn76aevnDRs20LRpU6pXr07Hjh1tHpsWERHBnj177BqPI5RVDXz10ZHv4BlTp061vq5+\njlVRpaTAP/8J48ZB585Qvz64u0PVquDpCdWqQd260K4djBkD8+dDYuINbUrZQ2gohIX9kTClpFg+\nh4aWWRlBQUG8+eabNGvWDD8/P/7617+SlSdbnzlzJgEBAQQGBrJgwQLr9KFDhzJ58uRryouKimL4\n8OH8+OOPeHp6EhERQUpKCj169KBWrVr4+fnxyCOPcOLECes6SUlJDBs2jLp16+Ln50fv3r2t86Kj\no2nRogW+vr6Ehobyyy+W7kePPvooZ8+eZfPmzdZlk5OTiYmJYfDgwcTFxdGmTRt8fX0JDAxkzJgx\nXLp0Kd/voEOHDkRFRVk/5z1jBcvI2w899BA1atSgadOmfPHFF9f9XmNjY22O8ZtImdVfqmjKYvyl\nq8d52rhxI2FhYSxbtoxz586xd+/eIj2Eu7Rdvnz5htc9e/Ysbdu2JTMzk++//57z58+zfft22rdv\nz9dff13q2yvImTNnePzxx4mMjCQ5OZm7776bvn372izj6DG28lPiOkxESvwCgoBfCpg3F+iX5/M+\nICCf5URERJKTRaKjpSDR66Ol89DO0n5Ie+k8tLNEr4+W9HSR+fNF7r9fxNNTpGtXkbfeEomJETk5\nL1rSTyRLTo5ITo5IerrIsV+SZWdktMycKdK3r4ivr8jdd4u8847I2bMFb0eVLuv/+dWSk0VGjRI5\nfNjyb3Jy8QsvQRkNGzaU5s2by/HjxyUpKUlCQ0Nl0qRJEhsbK5UrV5bw8HC5fPmyrFmzRtzd3SUl\nJUVERIYOHSqTJ0/Ot8wFCxbIfffdZ/189uxZWblypWRkZMj58+flL3/5i/Tq1cs6v1u3btKvXz9J\n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\nXLmyTcL197//XVq1aiUiIs2bN5cZM2aIiMimTZukfv361uWSkpKkWrVqcvLkScnOzpY777xTXnvt\nNbl06ZIcOnRIGjVqJOvWrRMRS8JVpUoVWb16tYiIZGRkyE8//STbtm2T7OxsOXLkiNx6663y3nvv\niYjI77//Ll5eXvKvf/1LsrOz5f/+7/+kSpUqEhUVJSIiq1atksaNG8u+ffskOztbpk2bJm3bthWR\n/BOnsWPHyqhRo2y+u+bNm8uKFSusn8t7wqWXFJ3Q/fdDaChMn+7oSJRSqmSMMYwePZq6devi6+tL\nWFgYS5cuBaBKlSpMmTKFSpUq0bVrVzw8PNi/f791XcvftGtdPd3Pz4/evXvj5uaGh4cHEydOZOPG\njQCcPHmSr776irlz5+Lt7U3lypVp164dAB999BHPPPMM99xzD8YYBg8ejKurK1u3buXMmTP4+/vj\n4vLHn8m2bdvi6+uLu7s733//vXV6r169aNOmDQCurq60b9+eZs2aAdC8eXP69etnjeef//wnjzzy\nCPfddx9Vq1bltddes9kGwKJFixgwYAAAAwYMsF5WvO+++zDGsHnzZmtZbdu2pXbt2vznP//hzJkz\nTJo0icqVKxMcHMzTTz/NsmXLbOLv2bMnAG5ubtx5553ce++9uLi40LBhQ0aMGGGNc82aNfz5z3+m\nV69euLi4MHbsWGrXrm0ta+7cubz66qv86U9/wsXFhVdffZWdO3dy7NixfP/P0tPT8fLyspnm5eVF\nWlpavsuXRzoshJN66y1o2RKGD4d69RwdjVLqZhSbnExsSgoAEQkJ1ukdfHzo4OtbZmXkvRuxQYMG\nJCYmAlCjRg2bZMPd3f2G/gBfuHCB559/nnXr1pGcnAxAWloaIsKxY8fw8/PD29v7mvUSEhJYtGgR\n77//xyPVLl26xMmTJ/H39+fMmTPk5ORYY/zhhx+s+3Olr5YxhnpXVdLbtm3jlVdeYc+ePVy8eJGs\nrCyeeOIJABITE22Wd3d3p0aNGtbPW7Zs4ciRI9b+Tf379ycsLIyff/6Z22+/nX79+rF06VLatWvH\nkiVLGDx4sHVfEhMT8c3zf5Kdnc39999v/Xx1nAcOHOCFF17gp59+4sKFC1y+fJm777473zivXj8h\nIYHnnnuO8ePH2yxz4sQJm8TsCg8PD86dO2czLTU1FU9Pz2uWLa804XJSDRrAyJEQFgYLFzo6GqXU\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x109e92650>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plotValueAndSlope(phi, title='default boundaries')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Here we see that, because $\\phi_A = \\phi_P$ at the boundaries, $\\phi_f = \\phi_P$ at the boundaries, too, i.e., boundary faces have the value of their sole neighboring cell.\n", | |
"\n", | |
"As a result, `phi.faceGrad` is zero on the boundary faces, as intended, and all other calculated gradients are \"pulled\" toward zero near the boundaries." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# with constraints" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"phi.constrain(fn(mesh.faceCenters[0]), where=mesh.facesLeft)\n", | |
"phi.faceGrad.constrain(fn_x(mesh.faceCenters[0]), where=mesh.facesRight)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\ngg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x10cd3ce90>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plotValueAndSlope(phi, title='Dirichlet left - Neumann right')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In this case, we see that the left boundary value of `phi.faceValue` properly reflects the applied constraint, but at the right, $\\phi_f = \\phi_P$ as though there were no constraint. \n", | |
"\n", | |
"`phi.faceGrad` has the Neumann condition applied exactly at the right and it \"sees\" the Dirichlet condition on the left.\n", | |
"\n", | |
"`phi.grad` \"sees\" the Dirichlet condition, but not the Neumann condition.\n", | |
"\n", | |
"`phi.leastSquaresGrad` doesn't \"see\" either boundary condition." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"`phi.faceGrad` naturally \"sees\" constraints on `phi.faceValue`, but the reverse is not true. With appropriate upwinding, it should be possible (and desirable) to make `phi.faceValue` depend on constraints to `phi.faceGrad`, but there is a danger of circular definitions and the calculation would be comparatively expensive." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# upwinding" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As an illustration of how to approach upwinding, we can approximate the value at a face from its neighboring cell value and applied gradient as\n", | |
"$$\\phi_f \\approx \\phi_P + \\hat{n}_f\\cdot\\nabla_f\\phi\\,d_{fP}$$" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 48, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"R = mesh.facesRight\n", | |
"n = mesh.faceNormals\n", | |
"dfP = mesh._cellDistances[R.value][0]\n", | |
"cellsNearRight = (R * n).divergence\n", | |
"phi.constrain(phi[(cellsNearRight != 0).value].value \n", | |
" + (phi.faceGrad.dot(n) * dfP)[R.value].value, \n", | |
" where=R)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This is ugly, and not dynamic, but it does illustrate that we get the \"right\" value at the boundary and an improvement in $\\nabla_P\\phi$, too:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 49, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\ngwejadOmkMlkGDJkCO7evatcJjU1FX5+fnBycoJMJsPw4cOV06KiotChQwdIpVJ4enri0iVF96O3\n3noLjx8/xokTJ5TzpqWlITo6GuPHj0dcXBy6desGqVQKR0dHzJgxA0+fPi33M+jduzfCw8OV70ue\nsQKKkbfffPNN2NjYwN3dHTt37nzu5xobG6uyj9cjGjt+sarRxPhLpcd5OnbsGAIDA7F9+3Y8efIE\nV69erdJDuOtaQUFBjZd9/PgxunfvjtzcXJw8eRIZGRk4d+4cvLy8cOjQoTpfX0UePXqEkSNHIiws\nDGlpaXj11VcxevRolXm0PcZWeWp9DCOiWr8AuAC4VMG0DQB8Sry/BsCunPmoKqJioqjfxH7kNcGL\n+k3sR1ExUZSVRbRpE1GvXkQWFkTe3kSff04UHU10b2MUZd1No6IioqIioqwsotuX0uhCWBStWkU0\nejSRVEr06qtEK1YQPX5c8XpY3arwb56WRjR9OlFiouJnWlr1K69FHS1atKB27drRnTt3KDU1lTw9\nPSkoKIhiY2NJX1+fgoODqaCggPbt20empqYkl8uJiGjixIm0YMGCcuuMiIigHj16KN8/fvyYdu/e\nTTk5OZSRkUH/+te/aNiwYcrpAwcOJB8fH5LL5fT06VM6fvw4ERGdO3eOmjZtSnFxcVRUVESbN28m\nFxcXys/PJyKiyZMn06RJk5T1bNiwgTp27EhERL///judPXuWCgsL6datW/Tiiy/Sl19+qZxXCEEJ\nCQlERNS7d28KDw9XTtu0aZMy/szMTGrWrBlFRERQYWEhnT9/nmxtbenPP/8sd9sr+jsXl9fJMag2\nL00ev9SpvBiCg4MrfFVVbeto0aIFffbZZ9S2bVuSSqXk5+dHubm5dPToUWrWrBmtXLmSmjZtSg4O\nDrRp0yblchMmTKCgoKAKYxo7dqzy/enTp6lbt25kbW1N7du3p9jYWOW07777jl588UWysLCgli1b\n0tdff62c9vDhQxo0aBBZW1uTTCajnj17UlFREY0dO5YkEgmZmJiQubk5LVu2jFasWKGyj5b26NEj\nGjJkCFlaWlLnzp0pKChIuc8kJiaSEIIKCwuV83t5edHGjRuJiOjGjRv0+uuvk42NDdna2tI777yj\nPK48+ww///xzateuHRkbG1NhYWGl27xp0yZq2bIlWVhYkKurK/3www9ERBQYGEgdOnSo9O/1LNbw\n8HBydnYmLy8vIiIaNWoU2dvbk5WVFfXq1YuuXLlS423/+uuvydPTU/k+KyuLTExM6Pr162XiKLlc\nSTq0z1X9WFOdmSuspPID1kAA+4p/7wrgTAXzPXfjomKiyO0tN0IIlC9rTzcyl0XRoEFE//kPUXZ2\nqYWeffE++8It/Z6I8vOJjhwhGjeOyNqa6I2BUeTsrboet7fcOOmqY5X+zRMTFf+eiYk1X0EN63Bx\ncVE5KO/bt4/c3NwoNjaWTExMVA4ATZs2pbNnzxKRIuGq6AuiZMJSnvPnz5NUKiUiopSUFJJIJCoH\n3GemTp1aJql74YUX6NixY0REdPLkSbK2tqa8vDwiIurevbtKUlXSF198QcOHD1e+r2rCtX37durZ\ns6dKXVOmTKHQ0NBy11PPE646O36pW0UJV3mqm3DVpg51nMCUTLju3LlDNjY2tH//fiIiOnToENnY\n2NCjR4+IiCg6Oppu3rxJRETHjh0jU1NTOn/+PBERzZs3j6ZOnUoFBQVUUFBAJ0+eVK7DxcWFjhw5\nonx/4sQJMjExoeDgYDp58iTl5uaqxDR69GgaPXo0ZWdn0+XLl8nJyUm5n5SXPJTcx27cuEGHDx+m\n/Px8evjwIfXq1YtmzZql8hl27NiR7ty5Q7m5uZVuc2ZmJllaWlJ8fDwREd2/f1+ZHHXp0qXC/fSZ\nZ7FOmDCBsrOzldu5adMmyszMpPz8fJo1a5ZK4lbdbQ8ICKDp06errLddu3a0a9euMnE0pISrLoaF\n2AbgNwAvCCFuCyHeFUK8L4R4v/gotA/ATSHEDQBfA6jxA69Wb12NhI4JKmXyNxPwSv81iIoChg1T\nXDJUYW0NhIUpLinduqX4GRamKC9mYAD06QNERgLXrwOJGauR3EV1PQkdE7Bm25qahs6qQy4Hli8H\nEhMVP0v3x9JAHSU78zo7OyOl+LqzjY2NSl8oU1PTGvXhyM7Oxvvvvw8XFxdYWVnBy8sL6enpICLc\nvn0bMpkMVlZWZZZLSkrCypUrIZVKla87d+7g3r17AABPT0/Y2triP//5DxISEvDf//4Xvr6+AID4\n+HgMHjwYDg4OsLKyQmBgIB4/flzt2JOSknD27FmVGLZu3YoHDx5Uuy5t0+Txq7ESQsDf3x9OTk6Q\nSqUIDAzEtm3bAAAGBgZYuHAh9PT04O3tDXNzc5W+RIrvtMp9//33GDhwIAYMUNxs+sYbb+DVV19F\ndHGfzYEDB8LV1RUA0KtXL/Tr1w/Hjx8HABgaGuLevXu4desW9PT04FlJt4MePXpg9+7dOHfuHAYP\nHgxbW1vMnj0bRUVFKCwsxO7du/Hvf/8bJiYm8PDwwIQJE6oUPwC4ubmhb9++MDAwgK2tLT788EMc\nO3ZM5TMMCAiAk5MTjIyMKt1mIQQkEgkuXbqEnJwc2NnZoW3btgAUlxTt7e2V9f7888+QSqWwtLRE\n//79VWIKCQmBiYkJjIyMACi6TJiZmcHAwADBwcG4ePEiMjIyarTtWVlZsLS0VCmztLSsd/3hqqsu\n7lIcQ0SORGRIRM2J6Dsi+pqIvi4xjz8RtSKi9kR0rqbryqPye70Lw9zKF7S2BubMAVxdFT9LJFul\nNW0KNGtZ/npyi56zHlZ7z/pbhYUBLi7/JMvVSZjqoI6SHTiTk5Ph6OhY9fVXwcqVKxEfH4+4uDik\np6fj2LFjyrOg5s2bIzU1Fenp6WWWc3Z2RmBgINLS0pSvzMxMlf4P48ePR2RkJL7//nsMGDAATZo0\nAaC466tt27a4ceMG0tPTERYWVuEdQGZmZsjKylK+v3//vkoMXl5eKjFkZGRg7dq1dfXxaIwmj1+N\nmTpPYJKSkrBz506VE4BTp04p/2f379+Prl27wsbGBlKpFPv27VOeaMyZMwetWrVCv3794Obmhs8/\n/7zSdQ0YMAA///wz0tLSsHfvXkRERGDjxo14+PAhCgoKymxnVT148AA+Pj5o1qwZrKysMG7cuDIn\nQyXrrmybTU1N8eOPP2LDhg1wdHTE4MGDlUmsjY2N8rMHgKFDhyItLQ1ffPEF8vPzK1xfUVER5s2b\nh1atWsHKygqurq4QQuDRo0c12nZzc3M8efJEpSw9PR0WFhZV/MTqp3pz29KTJ0D8ZaNypxlLnnPn\nVzVbO4xE+euhfPXdYcaKnTql2gL5rIXy1CmN1UFEWLduHe7evYvU1FSEhYVVqXNsVc9mASAzMxMm\nJiawsrJCamoqQkNDldMcHBzg7e2N6dOnQy6X4+nTp8oz8smTJ2PDhg2Ii4sDESErKwvR0dEqX1Lj\nx4/HoUOHsHHjRkyYMEFlnRYWFjA1NcW1a9ewfn3FQ0p16NABu3fvRk5ODm7cuKHSgX7QoEGIj4/H\n999/j6dPn+Lp06f473//i2vXrlV5+1njos4TGGdnZ4wbN67MCcAnn3yCvLw8jBw5Ep988gn+/vtv\npKWlYeDAgcp91dzcHCtWrEBCQgJ+/vlnrFq1CkePHgXw/Dsh+/Tpgz59+uDKlSto2rQp9PX1y2zn\nM2ZmZgAULdvPlDyJmT9/PvT09HD58mWkp6djy5YtZU6GSsZT2TYDQL9+/RATE4P79+/D3d0dkydP\nBgD07dsXe/bsKXOsKu/YVXJ9P/zwA37++WccOXIE6enpSExMVJ4gNmnSpNJtL4+HhwcuXryofJ+V\nlYWEhAR4eHhUulx9Vy8Srv/9D3jlFeBlxwC0/N1NZZrbOTfMGDOj4oVr0NoR4BsAt/Oq65EdccPF\nwzOwb19ttoQ916BBZVsgra0V5RqqQwgBX19f5Vlv69atERQUBCKq9CAshFBOT05OhoWFBe7cuVNm\nGgDMmjULOTk5sLW1Rffu3eHt7a0yfcuWLTAwMIC7uzvs7OywevVqAECnTp3w7bffwt/fHzKZDK1b\nt0ZkZKRKHC1atICnpyeys7MxdOhQZfmKFSuwdetWWFpaYsqUKfDx8VFZZ8nfP/zwQxgaGsLOzg5+\nfn4YO3ascrqFhQViYmKwfft2ODk5wcHBAZ9++mmZM2TGAPWfwIwdOxa//PILYmJiUFhYiNzcXMTG\nxuLu3bvIz89Hfn4+bG1tIZFIsH//fsTExCiXjYqKwo0bN0BEsLS0hJ6enrLFzc7ODgkJ/3Qt+fnn\nn/Hjjz8iLS0NRIS4uDgcO3YMXbt2hUQiwYgRIxASEoKcnBz8+eefiIyMVO4zTZo0gZOTE7Zs2YLC\nwkJ89913KnVnZmbCzMwMlpaWuHv3LpYvX17jbf7777+xd+9eZGVlwcDAAGZmZtDT0wMAfPTRR0hL\nS8O4ceNw8+ZNEBEyMjJw4cKFSo9tmZmZMDIygkwmQ1ZWFubPn6+cpqenV2bbN2/eXGl9w4cPx+XL\nl7F7927k5uYiNDQUHTp0QJs2bSrd7nqvOh2+1PlCBR3gvvuOqEkToh9/VLyPiomi/n79yWuCF/X3\n6//8juxRUWXvUEtLU5RXtlg56zlxgqhZM6LAQKIK+vGxaqjob65tpTvLstqp6O8MHek0XxcvXfhf\nLi8GXbhL0cXFhZYuXUpt27Yla2trmjhxIuXk5NDRo0epefPmZeZ9tu+V7DSflJRE5ubmdPv2bSIi\nCgkJoXHjximXO3v2LHl5eZFMJqMmTZrQ4MGDlfOuXbuW7OzsyNramsaNG0djxoxR1vvFF1+Qi4sL\nmZmZUbNmzWjx4sXKOvfu3UvOzs5kbW1NK1eupOPHj1Pfvn3J1taWLCwsqE2bNrR8+XLl/A8fPqTB\ngweTpaWoLkAeAAAgAElEQVQldenShRYsWKByo8z+/fvJ1dWVrK2tafbs2Sqd5q9cuUKdOnUic3Nz\n6tixI61cuVLlsynvmFTRNt+7d4+8vLzIysqKrK2t6fXXX6erV68ql0tJSaH33nuPHBwcyNzcnNzc\n3GjixIl07do1IlJ0VpdIJCqd1TMzM+mtt94iCwsLcnFxocjISJJIJMqbbMrb9tKd5gsKClTiP3z4\nMLm7u5OJiQm9/vrrlJSUpDK9IXaaF1SNyyDqJISgkrEUFQGffgrs2gVERQHu7loMroS//wZGjFCM\n5bV5M6DGcSwbvNLj3OgKV1dXhIeHo0+fPtoOpUGo6O9cXK7+ESw1oPTxS0sx8P6kQyIiIhAeHq4y\nLl5jlJSUBHd3dxgbG2PFihV47733nrtMaGiosl9ZVlZWua1luvD/Xt1jmE5eUszPB0aPBk6fBs6c\n0Z1kC1B0qj98GBAC6NsXqMFNXowxxlij0KJFC+Tk5CAtLa1KyRageLSPXC5Hdna2Rp4qoCk6l3Dl\n5CiGdygsBA4dAmxttR1RWcbGwNatQPfuwOuvK1q9WMORmJjY6M7GGWN1q3S/TcZ06pJiRgZh8GCg\nWTMgIgLQ19d2VJUjAkJDgR07gCNHAAcHbUdUv+hCkzBTP76kqLEYeH9ijYYu/L/X60uKQ4cCHk5y\nbH47WueTLUBxWTEkBBg7FvDyAurhuI+MMcYY0wCdSrhcpXKssQqEXq9qPKhYB8yfD7zzDtC/f80G\nRWeMMcZYw6ZTlxQLpk6H3mdhlY4Er6uIgFmzgHPngIMHAVNTbUek+7h/Q+PBlxQ1EoPWL7Ewpim6\n8P9e3WOYTiVclJioGJy0vomOBjw9UWRpjYkTFaPi7wqXQ+/MqeoN2MlYI8IJV53HoPUvIMY0RRf+\n3+t1H64aP6hY2zw9gcBASJ7IsXEjUPBIjrNvBCrKGWOMMdbo6VbCVZMHFeuCZ8/qCwyEYcot/PRC\nIGY8CcO3O+vfpVHGGNOE2NhYlQcelzZt2jQsXry4wul+fn6QyWTo2rWrOsLTKBcXF/z6668AgIkT\nJ8LQ0BAtW7as0rJ5eXkwNzeHoaEhFixYoM4wWS3pVsJVkwcV6wpra2DOHMDVFcYL5mDbfmsEBQGN\nfJBhxhirkfXr1yMoKKjcaSdOnMDhw4eRkpKCM2fOqDWO7du3o0uXLjA3N4ednR26du1a6YPfa6L0\nM03nzZuHmzdvKsvy8vLw7rvvwsrKCg4ODvjiiy+U04yMjJCZmYl33nmH+8XqON1KuIDqP6hYV8jl\nikuiiYnA8uVo01SOiAjAxwe4d0/bwTHGWMORlJQEFxcXGKv52WorV67ErFmzMHfuXDx48AAPHjzA\nhg0bcOrUqQof1l5UVFTr9ZbumxQSEoKEhAQkJyfj6NGjWLZsGQ4ePPjc5Zhu0b2Eqz6SyxWXQsPC\nFJ3+iy8veneT4/33gbffBp4+1XaQjLFGJzq6bBcNuVxRrqE6XFxcsHTpUnh4eEAmk+Hdd99FXl6e\ncvqqVatgZ2cHR0dHREREKMsnTpxY7iWy8PBwTJ48GadPn4aFhQVCQ0Mhl8sxePBgNG3aFDKZDEOG\nDMHdu3eVy6SmpsLPzw9OTk6QyWQYPny4clpUVBQ6dOgAqVQKT09PXLp0CQCQnp6O4OBgrF+/HiNG\njICZmRkAoEOHDvj+++9haGiojHPatGkYOHAgzM3NERsbi+joaHTs2BFWVlZwdnZGaGioyjZs2bIF\nLVq0gK2tLZYsWfLczzAyMhILFiyAlZUV3N3dMWXKFJXPitUPnHDVhVOnFEnWs+EsSlwaDQpSvJ07\nV7shMsYaoeIbepQJ07OTw+rc0FMHdWzduhUxMTFISEhAfHw8Fi9eDCEE7t+/jydPniAlJQXh4eH4\n4IMPkJ6eDqDiR+O899572LBhA7p164aMjAwEBwejqKgI7733HpKTk5GcnAwTExP4+/srlxk3bhxy\nc3Px559/4u+//8ZHH30EADh//jzee+89fPvtt0hNTcX777+PoUOHIj8/H6dPn0ZeXh7eeuut527f\ntm3bsGDBAmRmZsLT0xPm5ub4/vvvkZ6ejujoaKxfvx579+4FAPz555+YPn06fvjhB6SkpODx48e4\nc+dOhXWnpaXh3r17aN++vbLs5ZdfxpUrV6r24TOdwQlXXRg0qOzYYcWXRiUSYPNmYNcuICpKO+Ex\nxhqpEjf04Natf1riqzPWYS3rEELA398fTk5OkEqlCAwMxLZt2wAABgYGWLhwIfT09ODt7Q1zc3Nc\nv35duWxFl8hKlz9rtTI2Noa5uTnmz5+PY8eOAQDu3buHAwcOYMOGDbCysoK+vj569uwJAPjmm2/w\n/vvv47XXXoMQAuPHj4eRkRHOnDmDR48ewdbWFhLJP1+T3bt3h1QqhampKU6ePKksHzZsGLp16wZA\n0afKy8sLHh4eAIB27drBx8dHGc9PP/2EIUOGoEePHjA0NMSiRYtU1lFaZmYmAMDKykpZZmlpiYyM\njMo+dqaD6sEDdOo/mQz44Qdg1Cjg998BJydtR8QYazRK3NCDxMSaDSxdyzpK3o3o7OyMlJQUAICN\njY1KsmFqaqpMMKojOzsbH374IQ4ePIi0tDQAikSFiHD79m3IZDKVhOWZpKQkREZGYs2aNcqyp0+f\n4t69e7C1tcWjR49QVFSkjPG3335Tbs+zvlpCCDRr1kyl3rNnz2LevHm4cuUK8vPzkZeXh7fffhsA\nkJKSojK/qakpbGxsKtw2c3NzAMCTJ09ga2sLQHG508LConofEtM6buHSkB49gA8+UDx3sbBQ29Ew\nxhqNUjf01GjYnVrWkZycrPK7o6Nj9WOoxMqVKxEfH4+4uDikp6fj2LFjICIQEZo3b47U1FTlpcqS\nnJ2dERgYiLS0NOUrMzMTo0ePRteuXWFkZIQ9e/ZUOx5fX18MGzYMd+7cgVwux9SpU5Wtco6Ojrh9\n+7Zy3uzsbDx+/LjCuqRSKRwcHHDhwgVl2cWLF/HSSy9VOy6mXZxwadD8+UBREbBqlbYjYYw1ChXc\n0FOthKmWdRAR1q1bh7t37yI1NRVhYWHw8fGp0nJVlZmZCRMTE1hZWSE1NVWlk7qDgwO8vb0xffp0\nyOVyPH36FMePHwcATJ48GRs2bEBcXByICFlZWYiOjkZmZiasra0RHByM6dOnY9euXcjIyEBRUREu\nXLiArKysSuPMzMyEVCqFoaEh4uLisHXrVuW0kSNHIioqSnmn48KFC8vc2Vi679r48eOxePFiyOVy\nXL16FRs3bsTEiROr/Pkw3cAJlwbp6QEREcCyZcDly9qOhjHW4FVyQ4+m6hBCwNfXF/369YObmxta\nt26NoKAgEFGl40aV7DSfnJwMCwsLZefy0h3qZ82ahZycHNja2qJ79+7w9vZWmb5lyxYYGBjA3d0d\ndnZ2WL16NQCgU6dO+Pbbb+Hv7w+ZTIbWrVsjMjJSudycOXOwatUqLFu2DPb29rC3t8fUqVOxbNky\nZZ+t8jr3r1u3DgsXLoSlpSUWLVqE0aNHK6d5eHhg7dq18PX1haOjI2Qymcol12ctcyWFhobCzc0N\nLVq0wOuvv465c+eiX79+KvPwkBC6T7eepagjsajbxo3A2rXA2bNA8Z3FjDU6/CzFOo9BJ790XV1d\nER4ejj59+mg7lHphypQp2LZtG+zt7fHXX389d/68vDzY2dmhsLAQn3zySaMZbV4X/t/r98OrdSQW\ndSMChgwBOnYEFi3SdjSMaQcnXHUeg9a/gMrDCRdTB134f6/uMYzvUtQCIYBvvwXc20fjyNXVMDTP\ng5EwQoBvAAa9WQ9H2WeMMcZYpTjh0pJzl6Nh9NJMnG6XoCxLWKv4nZMuxlhDkZiYqO0QGNMJ3Gle\nS1ZvXY2HXgkqZQkdE7Bm25oKlmCMMcZYfcUJl5bkUV655blFuRqOhDHGGGPqxgmXlhgJo3LLjSXG\nGo6EMcYYY+rGCZeWBPgGwO28m0qZ3XE3zBgzQ0sRMcYYY0xduNO8ljzrGL9m2xrkFuUi94kx/vpz\nBnp24Q7zjDHGWEPDLVxaNOjNQTjw3QHERsTizO4DGD5oEBrJmHWMsUYuNjZWZYT10qZNm4bFixdX\nON3Pzw8ymQxdu3ZVR3ga5eLigiNHjmg7jDpz69YtSCQSWFhYYOPGjVVaJjg4GObm5pBIJGUeddRQ\ncMKlQz7/HNi+Hbh0SduRMMaYdq1fvx5BQUHlTjtx4gQOHz6MlJQUnDlzRq1xbN++HV26dIG5uTns\n7OzQtWtXrF+/vk7XUd7jgSIiIiCRSLBjx446XZcmpaenY9KkScr3R44cgbu7O8zMzNCnTx+Vh5qH\nhobiypUr2ghTYzjh0iE2NkBICDBjhmI0esYYY2UlJSXBxcUFxsbqvclo5cqVmDVrFubOnYsHDx7g\nwYMH2LBhg/LB0+Wpq9aZzZs3QyaTqTzbsS4VFhaqpd6KPHr0CCNHjkRYWBjS0tLw6quvqjxjEmgE\nz4N89qBMbb8UobCCAqL27Yl+/FHbkTCmXsX7vNaPPXXx0oXj1/NiOJqaWut11KSOFi1a0GeffUZt\n27YlqVRKfn5+lJubS0ePHqVmzZrRypUrqWnTpuTg4ECbNm1SLjdhwgQKCgoqU9/GjRvJ2NiY9PT0\nyNzcnEJCQigtLY0GDRpETZo0IalUSoMHD6Y7d+4ol3n8+DFNnDiRHB0dSSqV0rBhw5TTfvnlF2rf\nvj1ZW1tT9+7d6Y8//iAiIrlcTmZmZrR79+5Kt2/ChAk0depU8vb2JjMzMzpy5AhFRUVRhw4dyNLS\nkpo3b04hISEqy0RGRpKzszPZ2NhQWFgYubi40JEjR5TTb926RRKJhHbv3k36+vr04MEDIiKaOnUq\nffzxxyp1DR06lFatWkVERHfv3qURI0ZQkyZNyNXVlVavXq2cLzg4mEaOHEljx44lS0tLCg8Pp7i4\nOOratStZW1uTg4MD+fv7U35+vnKZgwcPUps2bcjKyoqmT59OvXr1oo0bNyqnh4eH04svvkhSqZT6\n9+9PSUlJRESUmJhIQggqLCxUzvv111+Tp6en8n1WVhaZmJjQ9evXlWXlLVcRHdrnqn6cqM7M6nzp\nwoenK44dI2renCgzU9uRMKY+nHDVrefFEHzzZq3XUZM6WrRoQe3ataM7d+5QamoqeXp6UlBQEMXG\nxpK+vj4FBwdTQUEB7du3j0xNTUkulxMR0cSJE2nBggXl1hkREUE9evRQvn/8+DHt3r2bcnJyKCMj\ng/71r3+pJFUDBw4kHx8fksvl9PTpUzp+/DgREZ07d46aNm1KcXFxVFRURJs3byYXFxfKy8uj/fv3\nk76+/nO//CdMmEBWVlb022+/ERFRbm4uxcbG0uXLl4mI6I8//iA7Ozvas2cPERFduXKFzM3N6cSJ\nE5SXl0cfffQR6evrqyRc//73v6lLly5ERNSuXTtauXIlEREdP36cmjdvrpwvNTWVTExM6N69e1RY\nWEivvPIKLVq0iJ4+fUo3b96kli1b0sGDB4lIkXAZGBjQ3r17iYgoJyeHfv/9dzp79iwVFhbSrVu3\n6MUXX6Qvv/ySiIgePnxIlpaW9J///IcKCwvp//7v/8jAwIDCw8OJiGjPnj3UqlUrunbtGhUWFtLi\nxYupe/fuRFR+4hQQEEDTp09X+ezatWtHu3btUr5v6AkXX1LUQb16AZ6ewLJl2o6EMcZqRwgBf39/\nODk5QSqVIjAwENu2bQMAGBgYYOHChdDT04O3tzfMzc1x/fp15bKK77SySpfLZDIMHz4cxsbGMDc3\nx/z583Hs2DEAwL1793DgwAFs2LABVlZW0NfXR8+ePQEA33zzDd5//3289tprEEJg/PjxMDIywpkz\nZ/Do0SPY2tpCIvnna7J79+6QSqUwNTXFyZMnleXDhg1Dt27dAABGRkbw8vKCh4cHAKBdu3bw8fFR\nxvPTTz9hyJAh6NGjBwwNDbFo0SKVdQBAZGQkfH19AQC+vr7Ky4o9evSAEAInTpxQ1tW9e3fY29vj\nv//9Lx49eoSgoCDo6+vD1dUVkyZNwvbt21XiHzp0KADA2NgYr7zyCjp37gyJRIIWLVpgypQpyjj3\n7duHl156CcOGDYNEIkFAQADs7e2VdW3YsAGffvopXnjhBUgkEnz66ae4cOECbt++Xe7fLCsrC5aW\nlipllpaWyMzMLHf+hoiHhdBRn38OdOwITJ4MNGum7WgYY/VRbFoaYuVyAEBoUpKyvLe1NXpLpRqr\no+TdiM7OzkhJSQEA2NjYqCQbpqamNfoCzs7OxocffoiDBw8iLS0NAJCZmQkiwu3btyGTyWBlZVVm\nuaSkJERGRmLNmn8eqfb06VPcu3cPtra2ePToEYqKipQx/vbbb8rtedZXSwiBZqUO0mfPnsW8efNw\n5coV5OfnIy8vD2+//TYAICUlRWV+U1NT2NjYKN+fOnUKt27dUvZvGjNmDAIDA/HHH3/g5Zdfho+P\nD7Zt24aePXti69atGD9+vHJbUlJSIC3xNyksLESvXr2U70vHGR8fj48++gi///47srOzUVBQgFdf\nfbXcOEsvn5SUhJkzZ2L27Nkq89y9e1clMXvG3NwcT548USlLT0+HhYVFmXkbKk64dJSzMzB1KhAY\nCGzerO1oGGP1UW+pVCUpCnF11UodJe9GS05OhqOjY7XrqMzKlSsRHx+PuLg4NG3aFBcuXMArr7wC\nIkLz5s2RmpqK9PT0MkmXs7MzAgMDMX/+/DJ1yuVyGBkZYc+ePRgxYkS14vH19UVAQAAOHjwIQ0ND\nfPjhh3j8+DEAwNHREVevXlXOm52drZwGKDrLExE6dOigUmdERARWrVoFHx8f9O/fH3PnzkVcXBz2\n7t2r3BZXV1fEx8eXG1N5d0JOmzYNnTp1wo8//ggzMzN8+eWX2LVrlzLOX375RTkvEeHOnTvK987O\nzliwYAHGjBlTZl23bt0qU+bh4YHNJb7MsrKykJCQoGwJbAz4kqIOmzcPiIkB/vc/bUfCGGM1Q0RY\nt24d7t69i9TUVISFhcHHx6dKy1VVZmYmTExMYGVlhdTUVISGhiqnOTg4wNvbG9OnT4dcLsfTp09x\n/PhxAMDkyZOxYcMGxMXFgYiQlZWF6OhoZGZmwtraGsHBwZg+fTp27dqFjIwMFBUV4cKFC8jKyqo0\nzszMTEilUhgaGiIuLg5bt25VThs5ciSioqKUdzouXLhQ2VqWm5uLHTt24Ntvv8XFixeVrzVr1mDr\n1q0oKipCx44dYWtri0mTJmHAgAHKy3SdO3eGhYUFli1bhpycHBQWFuLy5cv4X/EXSEVxWlhYwNTU\nFNeuXVMZ7mLgwIG4dOkS9u7di4KCAqxduxb3799XTp86dSqWLFmCP//8E4CitWrnzp0V/o2GDx+O\ny5cvY/fu3cjNzUVoaCg6dOiANm3aVPKXbVg44dJhFhZAaCgwezYPE8EYq53e1tZaqUMIAV9fX/Tr\n1w9ubm5o3bo1goKCQERlWlxKL/dsenJyMiwsLJQtLKVba2bNmoWcnBzY2tqie/fu8Pb2Vpm+ZcsW\nGBgYwN3dHXZ2dli9ejUAoFOnTvj222/h7+8PmUyG1q1bqwzDMGfOHKxatQrLli2Dvb097O3tMXXq\nVCxbtkzZZ6u8lqN169Zh4cKFsLS0xKJFi1SGP/Dw8MDatWvh6+sLR0dHyGQy5SXXPXv2wMzMDOPH\nj0fTpk2VLz8/PxQUFODAgQMAFC1ov/76q7KfFwBIJBJERUXhwoULaNmyJZo0aYIpU6YoL+OVF+eK\nFSuwdetWWFpaYsqUKfDx8VHOY2tri507d+KTTz6Bra0trl69ildffRVGRornAA8bNgxz586Fj48P\nrKys0K5dOxw8eFCl/pJJnq2tLXbt2oXAwEDIZDL873//U+lf1hiI6pxFqJMQgnQlFl1SWAi8/DKw\ndCkwZIi2o2Gs7gghQEQVf+PWI7pw/Cr+PLUaQ3lcXV0RHh6OPn36aDsUVgtFRUVo3rw5tm7dCi8v\nr0rnTUpKgru7O4yNjbFixQq89957z60/NDQUX3zxBfLz85GVlVVpMg7oxv97dY9h3MKl4/T0FMnW\nvHlAQYG2o2GMMdZYxMTEQC6XIy8vD0uWLAGAKj1KqUWLFsjJyUFaWlqVki1A8WgfuVyO7Ozs5yZb\n9RUnXPXA4MGKUei58zxjjDFNOX36NFq1aoUmTZogOjoae/bsUV5SZNVX60uKQogBAL4EoAdgIxF9\nXmp6bwB7AdwsLtpFRGWeSKoLTfK67MwZYNQoID4eMDXVdjSM1Z6uXFKsi2OYLhy/dOESC2OaorX/\n9+hoxUCZ1taavaQohNAD8BWAAQDaAhgjhHixnFmPEVHH4lfFj39nFeraVfEq7uvJGKsDfAxjjFWL\np6divKbisemqo7bjcHUGcIOIbgGAEGI7gLcAXC01n9bPYhuCxYuBnj0V43PVwQ1HjDE+hjHGSiEC\nkpOBP/4Arl8H/voLSEkBHjwA0tKsYZgdhtnfBVa73tomXE4ASo7jfwdAl1LzEIDuQoiLAO4C+JiI\n/qzlehsld3dg6FBg+XIgLEzb0TDWIPAxjLFGjkjRXScmBjhyRNGFB1A87eWFF4D27YGBAwF7e0Am\nA0xMrGHyYA7ee3VdtdZT24SrKhdQzwFoTkTZQghvAHsANJ6RzupSdDRCZnmiQ29rBAQAdnZQNGue\nOgUMGqTt6Birj/gYxlgjRAScOwd8tjIa++JWo1AvD02sjODbPwCrVw9C8+ZAhTdLyuXAZ8urvc7a\nJlx3ATQv8b45FGeISkSUUeL3/UKIdUIIGRGllq4sJCRE+Xvv3r3Ru3fvWobXwHh6onlgIKa8HYYl\nS6zxf6FyxbVkbu5i9UBsbCxiY2O1HUZpdXYM04XjV0O9nZ6xuvL4MbBlC7BxI/AoIxp5zWciZ1wC\nAMXBYPf5BHhdB5ydyzZixMbGIvbAAUUzWN++1V53re5SFELoA7gOoC+AFABxAMYQ0dUS89gB+JuI\nSAjRGcAOInIppy6t3+VTL8jlyP4oEN13z8GJocthsTqMO3SxekkX7lKsq2MYH78Y023XrgFffgn8\n+KNiqKVJk4AlEf0R4xJTZt7+Sf1x4LsD5VdUi7sUa9XCRUQFQgh/AAehuKU6nIiuCiHeL57+NYBR\nAKYJIQoAZAN4/kO0WMWsrWG6cA4ubHLF/IJELOFki7Ea42MYYw3bpUuKR+SdOKG44ezateLuOACC\nN+WVu0xuUW6F9cV2747YtDQgLa3asfCjfeobueIyYtqkOdjdbTn6ngmDSwdOulj9owstXHWFj1+M\naVmJlicASEgAFn8sx9PYU+gYNAjTppUdw7K/Xw1auErgR/s0ZPJ/+mxJO7rg75lhuDmmZuOBMMYY\nYw1G8fhY6UlyzJ4NvPmaHB/cC8TXlz0xe3b5A4YH+AbA7bybSpnbOTfMGDNDLSFyC1d9UiqDl8uB\nV1rKcWLpKThN4bsUWf3CLVyMsbpCBPz4tRw5swMRP3QOFhgvh+kXz+/jHH0oGmu2rUFuUS6MJcaY\nMWYGBr1Zte/T6h7DOOGq5xYtUgzKFhmp7UgYqx5OuBhjdeHGDWDKFCA9HQhfcAvykGHovWcP4OKi\n1vXyJcVGJiAA2L9fkXQxxhhjjUVhoeLOw65dgSFDgLgYOTocWo7YTZsUI4TrWHcbTrjqOSsrYMYM\nxWN/GGOMscYgORno0wfYtQs4fRr40E8OvYXF41JaWyt+1vCZh+rClxQbALkcaNVK8TiCVq20HQ1j\nVcOXFBljNfHjj4qGho8/BmbPBvT0gNj9+xHr4gIYGyM0KQnBLVoAubnofesWent7qyUO7sPVSIWE\nAElJwKZN2o6EsarhhIsxVh25uYpuNLGxwLZtQKdO5c8XkpiIEFdXtcfDfbgaqVmzgF9+UYw9whhj\njDUkCQlAt26KjvH/+1/FyZYu4xauBmThQuD+feCbb7QdCWPPxy1cjLGq2L8fmDABCA4Gpk+v5KHS\nxWLT0tBbKn1uvSWff1qdac9o9NE+TLfMnAm0aQMsWAA0b/78+RljjDFdFBISgviEeBw8cRbyjELY\nN9HDqTNd8PBhm+cmQ1VJtkqupypldYETrgbExgZ47z3F3bCrV2s7GsYYY6xmrsbHY19iHDL9bgIo\nfrL8eQHU424z3IergfnoI+D77xWXFhljjLH65uFDYO+hs8gcoJpdJXRMQNzlOC1FVXuccDUw9vbA\n2LHAihXajoQxxhirnvh4xUCmRqaF5U4voAINR1R3OOFqgObMAb77Dnj8WNuRMMYYY1Vz5gzg5QXM\nnw/YSvXKnUdf1N+eUPU3clah5s2BESOAr75S3NXBGGOM6bKoKMDPD4iIAAYNAo7EdoE4L5DQ8Z/L\nim7n3ND5pc51ul51dZAvDydcDdTcuUD37oo+XRYW2o6GMcYYK98PPyhGjI+KArp0UZS1cWuj6CC/\nR3EZUV/oo/NLnRXldUSTyRbA43A1aD4+wGuvKf6RGdM1PA4XY+yrr4DPPwcOHAA8PLQdTfXwo32Y\n0oULiqbZmzcBIyNtR8OYKk64GGvcli4FNm4EDh8GXFy0HU318aN9mFKHDopXRIS2I2GMMcYUiBRP\nRtm8GTh+vH4mWzXBCVcD5/VmND5c3h9eE3qjv19/RB+K1nZIjDHGGpPoaEAuB6BItubNA37dLcfp\noGg4Omo5Ng3iTvMNWPShaHwTOxM54xJwvLgsYa3ijo9Bbw7SXmCMMcYaD09PIDAQtDgMnyyxxtmD\nchzuEgjjQWHajkyjuA9XA9bfrz9iXGLKlif1x4HvDmghIsb+0dD6cBUWEiR8zYCxclGaHL+9HoiP\nXf1xVPYVjFeGAdbW2g6rVrgPF1PKo7xyy3OLcjUcCWMN3wcfKC6XMMZUEQHzllpjydM56G/1OYwX\nzKn3yVZNcMLVgBmJ8m9NNJYYazgSxhq+CxeAgABOuhgrLTgYOBUtx66uy4GZM4Hly5V9uhoTTrga\nsNFDKxcAACAASURBVADfALidd1Mpc/rNDTPGzNBSRIw1XAcOKB5N8sknnHQx9kxYGPDThdvwmvwD\nln7sj9D0dIT4+yPkhx8Qe/u2tsPTKO4034A96xi/Ztsa5Bbl4sFtY8iKZnCHecbUwMoKiNkhR9Dr\np/Bv80H8WC3W6H35pWLoh7ML/4B08DuKy4jGxghxdQUcHIBTpxTPomskuNN8I5KVpRjv5LffgNat\ntR0Na+waWqd5SksDAgPx98ww9BpqjUmTgI8/1nZkjGnHxo3A4sWKcbacnf8pD0lMVCRcDQB3mmcV\nMjMDpk0DVq7UdiSMNUCBgUBYGJq2scbhw8DatYovHcYamx07FP22Dh1STbYAoHcj7Cz/DLdwNTJ/\n/w288AJw7RpgZ6ftaFhj1uBauBITVYbMvnED8PJSXFb517+0FxtjmnTgADBhgiLZevllbUejXtzC\nxSrVtCkwZgywerW2I2GsgSl151WrVsC+fYC/P3DwoBbjYkxDfvsNGDcO+M9/Gn6yVRPcwtUI3bgB\ndO0K3LoFmJtrOxrWWDW4Fq7iPlwIUx3Q8dQpYNgwICoK6NJFi0EypkaXLgFvvKHoJD9ggLaj0Qxu\n4WLP1aoV0Ls3EB6u7UgYa0CsrRXJ1qlTKsWensCmTcBbbwFXr2opNsbUKCkJGDhQcfm8sSRbNcEt\nXI3U2bPA6NGK1i59HhyEaUGDa+F6zvErMhJYsECRjzVrpqHAGFOzhw+BHj0UT1oICNB2NJpV3WMY\nf9U2Ul26AC1aADt3Kvp0McbUa/x44MEDwNtbcau8VKrtiBirvpCQEMQnxOPspbN4WlSIB/f04ObQ\nBampbQCEaDs8ncYJVyM2Z47ijNvHBxANop2BMd328cdASoqiT9fBg4AxP2WL1TPxCfGIy4jDzeE3\nlWX55wTiE7QYVD3BfbgasYEDgfx84NdftR0JY42DEIpx8BwcgLFjgcJCbUfEWPWcvXQWCR1Vs6uE\nVxIQdzlOSxHVH5xwNWISCTB7NrBihbYjYazx2H8kGo+N+uPwjd5o2aM/omKitR0SY1VWiPLPEgqo\nQMOR1D98SbGRe+cdxZ3sly4B7dppOxrGGrboQ9GYuXamooWgJZAOYGJYAjYL8DNOWb2QnaFXbrm+\n4HTiebiFq5EzMgJmzODH/TCmCau3ri5zOeZxnwTM/2KNliJirOoOHACe3O8C57NuKuVu59zQ+aXO\nWoqq/uCUlGHqVMXYXHfvAk5O2o6GsfopJDERgOJZcb0ruAUxj/LKLf/zr1ycOAH07Km28BirlXPn\nFKPIv+PTBjn5gMEexWVEfaGPzi91Rhu3NtoOUefxOFwMADBzpuKOqc8/13YkrLFobONwAUB/v/6I\ncYkpU97p9/64ffYAYv+/vTuPj6q6/z/+OiQKWpehat01EIzFBcEloKkatwIGUdxFqVKp/sqXACLB\nJbbGtqlL3NjcN7CCVFHUDiBUiVJQUBZFEAMhobhRkQyuQQjn98cJyBIgyWTmzJ15Px8PHmRubuZ+\nZu7Mmc+c87nnlELbtjEIUCQKy5e7CXyHDoWLLvIdTeLQTPPSKAMHupnnv/3WdyQiyat/z/5kztt2\nOOaO/Hzuvhvy8txcXSKJIhJxV7QPHqxkK1oaUhQAWrWCs85ySdfAgb6jEUlOGwvjh48dTvWGalo0\na0F+v/xN2ysq4LzzoLQUdt/dY6AiuGmDLrzQrZGoz4XoaUhRNpk9Gy69VMv9SHyk4pDizlgL11wD\na9bA+PGQVvcFYSIxp9fizmlIURotOxsOO8y9uUQk/oyBxx+Hb75xQzgivvzlL26x9eeeU7LVVKJO\nuIwxXYwxi40xS4wxN21nn2G1v//AGNMh2mNK7Nx4I5SUuG83IskuEduvXXd1X3pefx2Ga7YI8WD0\naHjmGXj1VfjFL3xHkzyiSriMMWnACKALcBRwhTGm7Vb7nAu0sdYeAVwHPBzNMSW2zjvPFc6/9Zbv\nSCQphcOuCjcBJHL71bIlTJwId97pPvRE4qW01K2zGw7DAQf4jia5RFupkw0stdZWAhhjngfOBz7e\nbJ/uwCgAa+0sY0zIGLO/tVbX4iSgZpPC3Pz/crjvvhC5ubUbIxGYMcNdQiUSjZwct7RBcbHvSMBD\n+1VUVFTv32VkwLTBYc7tncPBU0KccELtL/R+lKYUDrv3ZSjEqA+qGHJZS154PMJRFTPgKL3GmlK0\nQ4oHAys2u/1p7bad7XNIlMeVWMnJodfiQha/G2HxYlzjXljo3pAi0QqFXLJVWOg7EvDUfhUVFW3z\nb3uO/H0OU7MLuapbhHGfVOn9KE2v9kvQV0siDHwmwgO3Rzjtdb3GYiHahKu+lT5bV/GrQihRhUKk\n313McxmFjLqj8ufeiFDId2SSLEIhvuxV4DsKCEL7FQrRemwxY1sXcutjlawt0PtRmlgoxI+3FfP2\nqYWcdESEngv1GouVaIcUPwMO3ez2obhvgDva55DabdvY/Jtebm4uuZvGtCSuQiFaP1zAnSe14qvZ\nFeynN540gdLSUkpLS6G6mhWj3vAdDgSl/QqFOO4fBfS6o4g+5UU89YsQuzTNPYvw5uoq+j0bYc8B\nfZh91BqKTu4DVVXkWrvdJapS1aY2rLGstY3+h0vYyoEMYFdgPtB2q33OBSbW/twJeHc792UlQVRV\nWdu3r73ligr77ol93W2RplBVZdf26Wtbtayyte/5qNqgaP75aL9uv/32Bm2ftnq1vX3RInv7iBGW\nadPsFf1H2Oz7F9k3V6+u1/FEdqagwNquJ1fZ9df3tbfPnWttX7X59dXQNiyqIUVr7XqgH/A6sAgY\nZ6392BhzvTHm+tp9JgLLjDFLgUeBvtEcU2JsY41IcTFX357BlRXFrLupMGGuLJOAmzGDJ1sXc+LZ\n/ntNg9B+5RpD0YgRFF15JbcffjiPDr6SQX8fwQdDk2K+WPHskUfgzZcivNS2kLS7iressVSb3+Q0\n07xsabMrVgC6d4cLciP8/khdFSXRW78e2rSBceOgU6fUm2m+IVcpAlu8H4sqKihq1YrPF0W49fQZ\nnDsyj0svbXzMktomTYLevWHuX8McdIl7jZVWVblhRF0JWy8NnWleCZfs0NtvQ58+sHgxNNO6BBKl\nceNgxAiYPl1L+zTUpg9D4IMP4Jxz4OWXdTGZNNz8+e7188orcMopvqMJLi3tI03q1FNdZ9drr/mO\nRILOWrjvPreagTTc5gXMxx3nZgO/6CK39qlIfX36qZvg+qGHlGzFmxIu2SFj3Jpu997rOxIJuunT\n3UhF9+6+I0kOXbq49e7OPRdWrfIdjQTBN99At27Qrx9cconvaFKPEi7ZqQsvdN+KZs3yHYkE2b33\nut4tDU03neuuc71c558PP/7oOxpJZOvWuSSrUycYMsR3NKlJNVxSL0OHwn/+Ay+84DsSCaLFi+H0\n06GyEnbbzW1TDVfT2LABrrzSXZAwbpwSWtmWtfCHP8AXX7i6rfRoZ+AUQDVcEiPXXgvTpkF5ue9I\nJIjuvx/69v052ZKm06wZPP00rFypngupW3ExzJ3rEnIlW/6oh0vq7dZb4dtvYfhw35FIkKxcCb/+\nNZSVwX77/bxdPVxNa/Vqd8Vi376Qn+81FEkgo0fDn/8M77wDBx7oO5rkomkhJGa++AKOPhqWLIF9\n9vEdjQTFn/4EX33lJlncnBKupldZCcceW0T7E8r4PDKLGmpII42Ox3YkKzNrh/OASfAVFRVRVl7G\nrAXu3P/0YxqrP+3ItddkMXJkke/wkk5D2zB1Lkq9HXggXHCB++AsLPQdjQTB99+718vMmb4jSQ0Z\nGZBzWhlTP53NhguXbdpu5hm3iJEktbLyMmZ/O5tlPX4+9wfNNFR94zEo2UQ1XNIgN97oJq6srvYd\niQTB00+7udyOOMJ3JKljyWez2HDhltlVeYdyZn8021NEEi+zFsyivMOW5/7zU3TuE4USLmmQo4+G\n44+HZ5/1HYkkuvXrXbF8QYHvSFJLDTV1bl9v18c5Eok3nfvEpoRLGqygwM0YvmGD70gkkb38shuG\nPvlk35GkljTS6tyeblRBkuyaWZ37RKaESxrs9NNhjz203I9sn7VQUuJWKZD46nhsRzLnZW6xrcVr\nmZzQNttTRBIP69dDdVVH9pi85bnPnJtJ9jE694lAaa80mDGul6ukxM1wLbK1t9+GNWu0jI8PWZlZ\nrkB+ghtKSiOddWuyWTA/i5oaSKu7E0QCzFq4/nrYfdcsTmsN79ee+3STTvYx2e41Id5pWghplPXr\nXSH0mDEaMpJt5eW5ZPy667a/j6aFiJ+1a905ycx0V42apHjWZaObb3YTU7/xhht9kPjQTPMSF+np\n7orFkhLfkUii+egjmDMHfvc735HIRs2bu5q6OXPcvGiSPEpK4NVXYeJEJVuJTgmXNFrv3m59xU8+\n8R2JJJJ774X+/aFFC9+RyOb23BMmTYIXX3RXj0rwPfUUjBwJU6ZoMuog0JCiRKWoCD7/HB57zHck\nkgg+/RTatXNrbrZsueN9NaTox4oVbm60P/3JrZEqwfTCC+6LTWkpHHmk72hSk5b2kbhatQqysmDR\nIjjgAN/RiG+DB0NNDTzwwM73VcLlT1kZ5ObC0KFwySW+o5GGmjzZDdlPmQLt2/uOJnWphkviat99\n4corYdgw35GIb1VVbojjhht8RyI7k5Xlhhf79YNweMvflVZV+QlKtmvzc/L229CrF0yYoGQraJRw\nSdQGDXJDit9ova6U9vDD0K0bHHaY70ikPo47zhVb9+4N//73z9tLIxF/QUmdNp6Td9+Fiy+G55+H\nU07xHJQ0mBIuiVqrVnB0hzAnnd+Z3Gty6dy7M+Gp4Z3/oSSF8NQw51zdmaJncin/Uec+SDp2dEX0\nT10UZkZ4q0QrEtm2+0viJxx256DW3LnQ67wIE/8vzFlneYxLGk0Tn0rUwlPDLEsfwKe/Kaesdlv5\nSLeAat45ef4Ck5gLTw0zYOQAt2Bua5gJDNC5D5TTToO5z7XjnpefY7/mZ/Jk+kq3Ov2bb5LbvTu5\nvgNMUaXt2lH63HNw5pncsXIlw1+o5qoBb/Ld1ZpNOKhUNC9R69y7M1Mypmy7fXlnJj812UNEEi/R\nnHsVzSeWN8ZHWH5VIbNe6sOj/3oCioshFPIdVmqLRFh1fSHt9unD9GVPkPm8zkkiUdG8xN1au7bO\n7dUbquMcicSbzn3yOOuiEK0fLuDAcUOZc2aBPtgTwAfLQ3R9s4DrfhhK5iM6J0GnhEui1tw0r3N7\ni2aa+TLZ6dwnkUiE3PdKCHW5iQ+uKmHmRBXP+zRnDlx8doSxx5eQe9NNbkp5XdAQaEq4JGr9e/Yn\nc95WK9TPyST/inxPEUm8nHJkf3Z5ZatzP1fnPnAiESgshOJiBl7eltZji1l8USHTX9MHvA+zZsFl\nnSO8fmIhbcYVk9u2rRviLSxU0hVgquGSJhGeGmb42OH8WFPNnHdbcNO1+fxpiIqmk93pp8NJOWE+\n+nI41RuqadGsBflX5NerYF41XAkkHIacnC2GrP7zrwgPXTmDK8fkkae3cty89ZabjPZffwyTfcOW\n54RIBGbMQCckMWimefHu2WfdBJjTpvmORGJp5kw36e2SJW4x84ZSwpX4Zs2C7t1h+HC49FLf0SS/\niRPh6qth3Dg480zf0cjOqGhevLv8cqishHfe8R2JxNKdd0JBQeOSLQmGjh1h6lQYOBAefdR3NMnt\n+efdJLSvvaZkK1mph0ti4qGH3Hpfr77qOxKJhQ8+gK5dYdkyaNHI+nj1cAXH0qXQuTNccw3cdhuY\npDhriWPoUFcTP2kSHHus72ikvjSkKAnhxx+hdWt4/XVo1853NNLULrsMTjrJLVbdWEq4guXLL6FL\nF1fqtc8+RSytKGPWglnUUEMaaXQ8tiNZmVkUFRX5DjUhFRUVUVa+7XP234osvvqqiNdfh4wM31FK\nQzS0DdNggMTEbru5NRb//nfXVS7Jo6zM1ec9+aTvSCSeDjjAFXRffDEs/KSM3drPZlmPZZt+b+YZ\nKPcYYIIrKy9j9rdbPmf/m2RoXgGLF8K++3oMTuJCPVwSM99+C5mZMH06HHmk72ikqfz+9+6b+J//\nHN39qIcrmNatg18ensl31y/b5neZEzJZOm+ph6gSX2b7zC2SrY1avZzJsvl6zoJIRfOSMPbcE/Lz\n4a67fEciTWX5cnjlFXdeJTXtsgv8cr+aOn+33q6PczTBUUPdz9kG9JylCg0pSkz16wdt2rirFlWf\nEHx33w3XXQctW/qORHxKN2nb2a6PlO1JQ89ZqlMPl8RUy5Zw/fXq5UoGn33m6vEGDfIdifjW8diO\n26wusfeUTE46OttTRIltwwbYnY6kvbTtqgzZx+g5SxVKrSXmbrjB1XAVFsKhh/qORhrrnntc/dZ+\n+/mORHzLysxyBfIT3DCi2ZBO9eps3v08i5UrYf/9fUeYOFavhl69YM3qLM7LhgW1z1m6SSf7mGz3\nXEpKUNG8xMWQIfDDDzBihO9IpDG+/BKOOgoWLXJXqzUFFc0nl5oauOMOd/XqqFFw9tnb37e0qorc\nJBmX3tFj2bgaQ48ebjh+l13iHJzElIrmJSHdeCOMGeOGpSR47r0Xrrqq6ZItST5pafCXv8Do0W55\nmsJCd0VjXUqTaAHmuh5LTY2bEufCC92kpvffr2RLlHBJnOy/v5ul+p57fEciDbVypVsbc8gQ35FI\nEJx1Fsyd61Yj6NTJ9YqmkvJyyM2FKVPg/ffdWpQioCFFiaMvvoCjj4aFC+HAA31HI/U1eDCsXesW\nMG5KGlJMbtbC44+7nq4hQ+D4oyYxvXUGtGjBHcuXc/vhh0N1NbmVleR27eo73AYpnTSJ0oyMLR6L\n/bGaFuMquf+hrtx6KwwYAM3UpZHUtLSPJLQbbnAN8YMP+o5E6mPlSmjbFhYsgIMPbtr7VsKVGpYt\nc1OJrPsqwotHFrLfY8UUVVVR1LKly8aKiyEU8h1mw0Qim2Ivqqri8pUtWdSjkIcPKWbY6BBt2/oO\nUOJBCZcktI3F17H4AJemd+ONrg5n2LCmv28lXKnDWnjmGSguiPD0QYWEH+vDXc8+Ecxka6NIhJ8K\nCjn3uD70LHiCDX8t5veDQurVSiFKuCThDR4M1dW6YjHRbUyOP/oIDjqo6e9fCVfqWbUKHhhQyTkL\nL+CzSyZw6ZCMQBaT19TAP/4BDw2p5O4DL6DtoxPYv2OG77AkzuJ2laIx5pfGmKnGmDJjzBRjTJ1f\nU4wxlcaYD40x84wxsxt7PEkeQ4bAqlFhPv1oq6t7IhEIh/0EJe653+yKq7vugusvi3DQvOQ8J2rD\n4m/f9AjFoRL2/dsE9nykhE6/jvDPf7qJQetSVFREz149yWyfSUb7DDLbZ9KzV0+KiorqdbzSqqqd\n7tOQY1jrlrY67jgY81CEV35TQu6ECew/umSL945IXaLp/LwZmGqtzQLeqL1dFwvkWms7WGs1pa7w\nq1/Br6/NYellhT83UhtrInJy/AaXynJy3DmIRFixAl4ZFeG26qQ+J2rD4mmzuqdjumXQfUExE44u\n5JG7Ihx7LDz3HKzfalnBsvIyZn87m2U9lrG8x3KW9VjG7G9nU1ZeVq9D1mf6ifoco6YGXngBTjzR\nLdp+720RJp9QyAFPFrs1y4qLN713RLan0UOKxpjFwOnW2pXGmAOAUmvtr+vYrwI40Vr79U7uT13y\nKWTVKjjpiAjzuxWy918LoKQk2PUcyaL2Q7EwUkC3j0s4+c3YnRPfQ4pN2Yap/aqHcNgl75u/niIR\n7H9mMHXXPIqL3ZqrfftCnz6wzz6Q2T6TZT2WbXNXmRMyWTpv6U4PWVRRQVGrVjvcZ0fHeH/aUkaN\ngpEjXTy33ALdukGzSXU/FmbMgLy8ncYlySFuNVzGmCprbcvanw2weuPtrfZbBqwBaoBHrbWPb+f+\n1GClmKIi+HZBJfe91AoqKrS6dYL479uVHHZ6K6rmVtCyQ0bMjpMACVeTtWFqv5rG+++72s5XXoEu\nXeCNORl8deXybfY7/OXDqZxfWed91DVlw46mn8hon8HyHtse4xePH84u31fStatLAnNywCRFxaE0\nlYa2YTtcS9EYMxWoa27pws1vWGutMWZ7rU2OtfYLY8x+wFRjzGJr7fS6dtx8zDw3N5fc3NwdhScB\nN+j3EV48soQlUyo4Qj1ciSESYcl1JYzvX8ENTzTtOSktLaW0tLRJ7qu+4tmGqf2K3oknuqsZv/4a\nxo2Dl/6dVud+6Wb7H125J59M7sbpJmDL6SfqkEbdx2ixSzoLF2tdSPlZtG1YtEOKudbaL40xBwLT\n6uqO3+pvbge+s9beV8fv9A0xldQOXQ39VTHTF4R48YlIcOfkSRaRCKv/WEj21GLmlIfY28b2nCRA\nD1eTtWFqv2KjZ6+ezFw9m+XZ5Zu2NX81k1Zrs/nTrWNo3x7atIFdd93qD2vbl6I+fSh6YsvpJ9av\nhyVL4MMPYc4ceGpUT77+1Wy4+OdjZM7NJHuvbMY8OyYeD1MCqkl7uHbiVeBq4O7a/yfUEczuQJq1\n9ltjzC+A3wJ3RHFMSRYzZkBxMX/YNcTdbeD9pSFOLC5WDYRPM2aQ/00xf7wlxN57A4TcB1XynhO1\nYQkuKzMLgPQJsN6uJ410Wu2fjV2fxYQJcPvt8N//ul6oww93dVYtW8Luu4fY97sCzuh9AYPbTKDi\n2hCrVrl9P/8cDj0U2rWD9u0hr0sWP/4Ec2uPkW7SyT4me9OxRZpKND1cvwT+CRwGVAKXWmsjxpiD\ngMettXnGmNbAS7V/kg48Z629czv3p2+IKerhh+Gll2DqVN+RpLZ334VLLoGyMthtt9gfLwF6uJqs\nDVP75c+6dbBihUumVq+Gqiqo+TpCp9cKmXNmAZ2ml1B2dTF7HRbisMPgkEOgeXPfUUsy0MSnEjjr\n1rkJNh96CM45x3c0qclaOOMM6NULrr02Psf0nXA1JbVfCSSy1VD41rdFmogSLgmkF16AO+90Vylp\naYz4mzwZBg50s8qnR1No0ABKuCQmtjP9RBIPjYsnSrgkkKyFjh1h0CC4/HLf0aSWmhro0AHuuAN6\n9IjfcZVwiUiQxW1pH5GmZAzcfTfceiusXes7mtQyejTstRdccIHvSEREkpd6uCShdOsGZ57perok\n9n74AbKy4MUXoVOn+B5bPVwiEmQaUpRA+/hjOO00WLzYXeItsVVcDB98AP/8Z/yPrYRLRIJMCZcE\nXt++biLDBx/0HUly+/JLOOYYmDULMjPjf3wlXCISZEq4JPD+9z83TcQ778ARR/iOJnn16eMmiSwp\n8XN8JVwiEmRKuCQp3H03zJzpFrGVpjdvHnTtCp98Qu2s8vGnhEtEgkxXKUpSGDgQFi6EKVN8R5J8\nrHXP71/+4i/ZEhFJNUq4JCE1bw733+8Sg3XrfEeTXMaPd/NAxmtGeRERUcIlCey889wisyNH+o4k\neXz/Pdx4IwwdCmlpvqMREUkdquGShLZxmoiPPoL99/cdTfDddhuUl8PYsb4jUQ2XiASbiuYl6RQU\nuCsXR43yHUmwLVkCJ5/s5t06+GDf0SjhEpFgU8IlSee776BtW/jHP+D0031HE0zWunV7zzjDJbCJ\nQAmXiASZrlKUpLPHHm4S1L59VUDfWOPHQ2UlDBjgOxIRkdSkHi4JBGvhhFPCfNd8GAdlrKW5aU7/\nnv3JOyfPd2gJKzw1zLAxw/h+3Vrem9mcv/bvz5CBifN8qYdLRIKsoW1YeiyDEWkqE/8d5uuWA/hv\nx3KW1G4rH1kOoKSrDuGpYQaMHEB5B/cccQQ8VlrO0Ufr+RIR8UE9XBIInXt3ZkrGtrOgdl7emclP\nTfYQUWILwvOlHi4RCTLVcElSWmvX1rm9ekN1nCMJBj1fIiKJRQmXBEJz07zO7S2atYhzJMGg50tE\nJLEo4ZJA6N+zP5nzMrfYtns4k36X53uKKLF1Pak/zV7a8vnKnJtJ/hV6vkREfFDRvATCxkLv4WOH\nU72hml1pQdmafL7+QgXgW/vpJ3jqkTwG5sHC5e75atGsBfn98lUwLyLiiYrmJbDmz4ff/hbmzoVD\nDvEdTeK45RZYuBBeeQVMApekq2heRIJMM81LSvnb3+Ctt+D116GZBsh5+2247DK3fM+vfuU7mh1T\nwiUiQaarFCWl3Hwz/PAD3H+/70j8W7MGfvc7ePzxxE+2RERSjXq4JPAqKyE7GyZNghNO8B2NH9ZC\nr16w557w8MO+o6kf9XCJSJBppnlJORkZMGwYXHGFq+faYw/fEcXf00/DvHkwe7bvSEREpC7q4ZKk\nce218OOP8NxziV0s3tQWLIAzz3S1bEcd5Tua+lMPl4gEmWq4JGWNGAGLFsFDD/mOJH6++w4uuQTu\nuy9YyZaISKpRwiVJY7fdYPx4uOMOePddIByGSGTLnSIRtz1o6ngstirCsM5hfvMbVywvIiKJSwmX\nJJXMTHjiCdfr82VmDhQW/pyoRCLudk6O3yAbI2fbxzKnSyHTfsph5Ei/oYmIyM6phkuSUnGxm/jz\nrVci7Pa3QigogJIS94tQyHd4jbMxYSwooOL/SsibV8y/3w9x0EG+A2sc1XCJSJBp4lMR3DQJV10F\nNTUw9s5KTOtWUFHhLmkMsspKaNWKE35ZwchwBp06+Q6o8ZRwiUiQqWheBHeV4hNPwKqlEWZdXOKS\nrZKSbWu6giQS4ds/l3DyARWMO6mETr8O8GMREUkxSrgkae22NsJr7Qrpt6aY4a9luOHEzeuggiQS\nYe3gQn77XjGXDsmgzfMBfiwiIilIQ4qSvMJhyMmhMhLi1FPhnnvgiq4RmDED8vJ8R9cgP7wQ5oKS\nHI75TejnZYwiwXwsG2lIUUSCTDVcInVYsADOPtste3Phhb6jaZgffoBzz4WsLHj00eSZ1FUJl4gE\nmZb2EanDscfC5MnQtasrqL/oIt8R1c8PP8AFF8Bhh8EjjyRPsiUikmqUcEnK6NDBJV1dusC6Oud1\nFQAACMJJREFUdXD55b4j2rFIBLp1g9at4amnoJkqLkVEAktNuKSU9u1hyhQYPBgeeMB3NNu3ciWc\ncQYcfzw88wyk66uRiEigKeGSlNOuHcycCY8/DoMGubm6EsmHH0KnTtCjBwwdqp4tEZFkoKJ5SVlV\nVa6Wa5ddYMwY2Gcf3xHByy/DddfB8OGJP+QZLRXNi0iQaeJTkXpq2dINLx53HJxwAsye7baHp4bp\n3Lszudfk0rl3Z8JTd7DYdSMXyN76GC9PDDNoEAwYAJMmJX+yJSKSalQZIiktPd3Nz9WxI5x3HuR2\nDvP+mgEsO7580z7lI93PeefUMd/VxkWlN67RuHG9w+Li7R4zPDXMgJEDKO/w8zFKbyvn+L1g3ry8\nhOhpExGRptXoHi5jzCXGmIXGmBpjzPE72K+LMWaxMWaJMeamxh5PJJYuugjmz4dpHw7bItkCKO9Q\nzvCxw+v+w1Do5xnsKyu3TL62Y9iYYVskWwA/nV/O3q2HK9mKI7VhIhJP0fRwLQB6AI9ubwdjTBow\nAjgb+Ax4zxjzqrX24yiOKxITBx4IbY9by1d1/K56Q/X2/zAUgoICaFW7QPYOki2AH2vW1rl9h8eQ\nWFAbJiJx0+geLmvtYmtt2U52ywaWWmsrrbXrgOeB8xt7TJFYa9GseZ3bf4i0YLs10ZGIWxh7Jwtk\nr1oFDz4Is2fUfYwWzVo0JmRpJLVhIhJPsS6aPxhYsdntT2u3iSSk/j37kzkvc4tt+07L5IsF+bRp\nAzfdBO+8A2s3dlJtXrOVkbHNAtkrVsDo0W45oTZt4L334O+Dtj1G5txM8q/Ij8MjlAZSGyYiTWKH\nQ4rGmKnAAXX86lZr7Wv1uH9dJy2BsrEwfvjY4VRvqKZFsxbkF+Zz7tl5zJ8P48fDH/8IZWVwzDFw\n6S9msOaYYvZ4NIS18NNPIb5bV0yLs2bw7Oo8vvsOcnPdjPHPPAN77QWQx5FZWx2jX37dRfkSFbVh\nIpIodphwWWvPifL+PwMO3ez2obhviHUqKira9HNubi65ublRHl6k4fLOyasz+enQwf3729/g++9h\n3jwoL8+j5ks3XJiWBrvuCge2DXFE9zx6tnELTtc1cen2jpHMSktLKS0tjesx49mGqf0SSW7RtmFR\nT3xqjJkGDLbWzqnjd+nAJ8BZwOfAbOCKugpONXGgSGpJlIlPm6INU/slknriNvGpMaaHMWYF0AkI\nG2Mm1W4/yBgTBrDWrgf6Aa8Di4BxurpHRBKB2jARiSct7SMiXiRKD1dTUPslknq0tI+IiIhIglHC\nJSIiIhJjSrhEREREYkwJVxOL92XvsaTHkpiS6bFI4kmm11eyPJZkeRyQXI+loZRwNbFkejHpsSSm\nZHoskniS6fWVLI8lWR4HJNdjaSglXCIiIiIxpoRLREREJMYSah4u3zGISHwl0zxcvmMQkfhrSBuW\nMAmXiIiISLLSkKKIiIhIjCnhEhEREYkx7wmXMaaLMWaxMWaJMeYm3/E0ljHmUGPMNGPMQmPMR8aY\n/r5jipYxJs0YM88Y85rvWBrLGBMyxrxojPnYGLPIGNPJd0yNZYy5ofa1tcAYM8YY09x3TPVljHnK\nGLPSGLNgs22/NMZMNcaUGWOmGGNCPmNsLLVhiSkZ2i9InjZM7ZfnhMsYkwaMALoARwFXGGPa+owp\nCuuAG6y1RwOdgP8L8GPZaACwCAhyod9QYKK1ti3QDvjYczyNYow5GMgHTrDWHgukAZf7japBnsa9\nzzd3MzDVWpsFvFF7O1DUhiW0ZGi/IAnaMLVfju8ermxgqbW20lq7DngeON9zTI1irf3SWju/9ufv\ncG+Kg/xG1XjGmEOAc4EngEBeSWaM2Rs41Vr7FIC1dr21do3nsKKRDuxujEkHdgc+8xxPvVlrpwNV\nW23uDoyq/XkUcEFcg2oaasMSUDK0X5B0bVjKt1++E66DgRWb3f60dlugGWMygA7ALL+RROUBoADY\n4DuQKLQCvjLGPG2MmWuMedwYs7vvoBrDWvsZcB/wX+BzIGKt/bffqKK2v7V2Ze3PK4H9fQbTSGrD\nElMytF+QJG2Y2i/Hd8IV9K7ebRhj9gBeBAbUfksMHGNMN+B/1tp5BPjbIe4b1fHAQ9ba44HvCeCw\nFYAxpiXuG1UGrtdhD2PMlV6DakLWzU8TxPYgiDHvUNDbsCRqvyBJ2jC1X47vhOsz4NDNbh+K+4YY\nSMaYXYDxwD+stRN8xxOFU4DuxpgKYCxwpjFmtOeYGuNT4FNr7Xu1t1/ENV5BdDZQYa392lq7HngJ\nd56CbKUx5gAAY8yBwP88x9MYasMST7K0X5A8bZjaL/wnXO8DRxhjMowxuwKXAa96jqlRjDEGeBJY\nZK190Hc80bDW3mqtPdRa2wpX2PimtfZ3vuNqKGvtl8AKY0xW7aazgYUeQ4rGcqCTMWa32tfa2biC\n4CB7Fbi69uergSB+wKsNSzDJ0n5BUrVhar9w3ZXeWGvXG2P6Aa/jrlp40lobuCswauUAVwEfGmPm\n1W67xVo72WNMTSXIwyb5wHO1H4blQG/P8TSKtXa2MeZFYC6wvvb/x/xGVX/GmLHA6cC+xpgVwJ+B\nu4B/GmOuBSqBS/1F2DhqwwIhyO0XJEEbpvar9n60tI+IiIhIbPkeUhQRERFJekq4RERERGJMCZeI\niIhIjCnhEhEREYkxJVwiIiIiMaaES0RERCTGlHCJiIiIxJgSLhEREZEYU8IlIiIiEmNel/aR1GWM\nScOtO9caWAFkA/dZa5d5DUxEZCfUfkljqIdLfGkPjAeW4V6HLwBfeI1IRKR+1H5Jg2ktRfHKGDMc\nuN9aW+E7FhGRhlD7JQ2hHi7xwhhzkjFmX+AYa22FMeZU3zGJiNSH2i9pDNVwiS9dgJXADGNMD2CV\n53hEROpL7Zc0mIYURURERGJMQ4oiIiIiMaaES0RERCTGlHCJiIiIxJgSLhEREZEYU8IlIiIiEmNK\nuERERERiTAmXiIiISIwp4RIRERGJsf8P9+TAieMZbeoAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x10c2721d0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plotValueAndSlope(phi, title='Upwinding')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.12" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 1 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment