diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8d2fa800d..1f8ce209a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,7 +11,7 @@ repos: - id: check-symlinks - id: mixed-line-ending - repo: https://github.com/pre-commit/mirrors-clang-format - rev: v18.1.8 + rev: v19.1.0 hooks: - id: clang-format ci: diff --git a/extern/sedov/sedov.ipynb b/extern/sedov/sedov.ipynb index c227c84ca..b2995bd0e 100644 --- a/extern/sedov/sedov.ipynb +++ b/extern/sedov/sedov.ipynb @@ -1,177 +1,1204 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ + "cells" : [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "yt : [INFO ] 2022-06-07 16:08:58,456 Parameters: current_time = 1.0\n", - "yt : [INFO ] 2022-06-07 16:08:58,457 Parameters: domain_dimensions = [128 128 128]\n", - "yt : [INFO ] 2022-06-07 16:08:58,457 Parameters: domain_left_edge = [0. 0. 0.]\n", - "yt : [INFO ] 2022-06-07 16:08:58,458 Parameters: domain_right_edge = [1.2 1.2 1.2]\n" - ] - } - ], - "source": [ - "import yt\n", - "ds = yt.load(\"../../tests/blast128_pltfile\")\n", - "my_sphere = ds.sphere([0., 0., 0.], 1.2)\n", - "plot = yt.ProfilePlot(my_sphere, \"radius\", [(\"boxlib\", \"gasDensity\")], weight_field=\"ones\")\n", - "plot.set_log((\"boxlib\", \"gasDensity\"), False)\n", - "plot.set_log(\"radius\", False);" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" + "cell_type" : "code", + "execution_count" : 15, + "metadata" : {}, + "outputs" : [ { + "name" : "stderr", + "output_type" : "stream", + "text" : [ + "yt : [INFO ] 2022-06-07 16:08:58,456 Parameters: current_time " + " = 1.0\n", + "yt : [INFO ] 2022-06-07 16:08:58,457 Parameters: " + "domain_dimensions = [128 128 128]\n", + "yt : [INFO ] 2022-06-07 16:08:58,457 Parameters: " + "domain_left_edge = [0. 0. 0.]\n", + "yt : [INFO ] 2022-06-07 16:08:58,458 Parameters: " + "domain_right_edge = [1.2 1.2 1.2]\n" + ] + } ], + "source" : [ + "import yt\n", "ds = yt.load(\"../../tests/blast128_pltfile\")\n", + "my_sphere = ds.sphere([0., 0., 0.], 1.2)\n", + "plot = yt.ProfilePlot(my_sphere, \"radius\", [(\"boxlib\", " + "\"gasDensity\")], weight_field=\"ones\")\n", + "plot.set_log((\"boxlib\", \"gasDensity\"), False)\n", + "plot.set_log(\"radius\", False);" ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" }, { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "cell_type" : "code", + "execution_count" : 16, + "metadata" : {}, + "outputs" : [ + { + "data" : + {"text/plain" : [""]}, + "execution_count" : 16, + "metadata" : {}, + "output_type" : "execute_result" + }, + { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEHCAYAAACp9y31AAAAOXRFWHRTb2Z0d2" + "FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGli" + "Lm9yZy/" + "YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAqlElEQVR4nO3de3xU9Z3/" + "8ddnJhMS7iA3ATV4Q+4Xo6VeKXjBS5FarVpsbbettn1sd3/b/" + "WWLrdvL1tbbbn/" + "Wx7bdUtu1VtuyVUS23qoVi4KiXAW5lIoiBJQESYCQhGTy+" + "f0xkxBgMjMnmWSSzPv5ePBg5pwz53wPCe988j3f8z3m7oiISO4IZbsBIiLSsRT" + "8IiI5RsEvIpJjFPwiIjlGwS8ikmMU/CIiOSYvGwc1s/7Ag8B4wIG/c/" + "dXE207aNAgLyoq6rjGiYh0A6tWrSp398GJ1mUl+IEfA8+6+3Vmlg/" + "0bGnDoqIiVq5c2XEtExHpBsxse0vrOjz4zawfcBHwOQB3Pwwc7uh2iIjkqmz08" + "Y8CyoD/" + "NrM1ZvagmfVqvoGZ3WpmK81sZVlZWRaaKCLSfWUj+" + "POAqcDP3H0KUAXMa76Bu89392J3Lx48OGEXlYiItFI2+vh3AjvdfUX8/WMcE/" + "yp1NXVsXPnTmpqajLeOIGCggJGjhxJJBLJdlNEpB10ePC7+/" + "tmtsPMRrv7FmAmsDHIPnbu3EmfPn0oKirCzNqnoTnK3dm7dy87d+" + "5k1KhR2W6OiLSDbI3q+RrwaHxEzzbg80E+XFNTo9BvJ2bGCSecgK6tiHRfWQl+" + "d18LFLdlHwr99qN/" + "W5HuTXfuiki3sWTLHnZ8eCjbzej0FPwZ9MUvfpGNGwNdrmhRUVER5eXlSbf54Q" + "9/eNT78847LyPHFumK3J2vPrKah199N9tN6fQU/" + "Bn04IMPMnbs2A473rHBv3z58g47tkhnU1PXQHVdlMP1DdluSqeXE8G/aE0p59/" + "9IqPmPcX5d7/" + "IojWlbd5nVVUVV111FZMmTWL8+" + "PEsWLCA6dOnN00v0bt3b0pKShg3bhyXXHIJr7/" + "+OtOnT+fUU09l8eLFADz00EP8/d//" + "fdM+r776al566aXjjjVnzhzOPvtsxo0bx/" + "z58wGYN28e1dXVTJ48mblz5zYdE2KVT0lJCePHj2fChAksWLAAgJdeeonp06dz" + "3XXXcdZZZzF37lz06E3pLvYdik0AUN+g7+" + "lUun3wL1pTyu0L11NaUY0DpRXV3L5wfZvD/" + "9lnn2X48OGsW7eODRs2MGvWrKPWV1VVMWPGDN566y369OnDHXfcwfPPP88TTzz" + "Bt7/97UDH+tWvfsWqVatYuXIlDzzwAHv37uXuu++msLCQtWvX8uijjx61/" + "cKFC1m7di3r1q3jhRdeoKSkhN27dwOwZs0a7r//fjZu3Mi2bdtYtmxZm/" + "4dRDqLikN1AEQV/Cl1++C/77ktVNdFj1pWXRflvue2tGm/EyZM4Pnnn+cb3/" + "gGL7/" + "8Mv369TtqfX5+" + "ftMPgwkTJnDxxRcTiUSYMGEC7777bqBjPfDAA0yaNIlp06axY8cOtm7dmnT7V1" + "55hZtuuolwOMzQoUO5+" + "OKLeeONNwA499xzGTlyJKFQiMmTJwdui0hnVVGtij9d2RrH32F2VVQHWp6uM88" + "8k9WrV/P0009zxx13MHPmzKPWRyKRpmGRoVCIHj16NL2ur68HIC8vj4aGI/" + "2Rie5Efumll3jhhRd49dVX6dmzJ9OnT2/" + "THcuN7QAIh8NNbRHp6ipV8aet21f8w/" + "sXBlqerl27dtGzZ09uvvlmSkpKWL16deB9FBUVsXbtWhoaGtixYwevv/" + "76cdtUVlYyYMAAevbsyebNm3nttdea1kUiEerq6o77zIUXXsiCBQuIRqOUlZWx" + "dOlSzj333MDtE+lK9sWDXxV/" + "at0++EsuH01hJHzUssJImJLLR7dpv+vXr+fcc89l8uTJfO973+OOO+4IvI/" + "zzz+fUaNGMXbsWP7hH/" + "6BqVOnHrfNrFmzqK+vZ8yYMcybN49p06Y1rbv11luZOHFi08XdRp/" + "4xCeYOHEikyZNYsaMGdx7770MGzYs+EmKdCGNXT3RBo3qScU6+6iO4uJiP/" + "ZBLJs2bWLMmDFp72PRmlLue24LuyqqGd6/" + "kJLLRzNnyohMN7VbCfpvLJJtdz29iZ8v3cZlY4cy/7NtmhigWzCzVe6e8B+i2/" + "fxA8yZMkJBL9LNaVRP+rp9V4+" + "I5AaN6kmfgl9EuoV9qvjTpuAXkW6hsmlUjy7upqLgF5Fu4cioHlX8qSj4RaRbq" + "NA4/rQp+DuhRYsWZWx6Z5FcUH04Sm18Vk5V/Kkp+DshBb9IMI3dPAD1UQV/" + "Kgr+" + "NnjkkUea7t697bbbWLFiBRMnTqSmpoaqqirGjRvHhg0bOHjwIDNnzmTq1KlMmD" + "CBJ598smkfDz/8cNNdtp/5zGdYvnw5ixcvpqSkhMmTJ/" + "P2229n8QxFuobGbh4zVfzp6PI3cH3vf99i4679Gd3n2OF9+" + "c7HxyXdZtOmTSxYsIBly5YRiUT46le/" + "ypYtW5g9ezZ33HEH1dXV3HzzzYwfP576+nqeeOIJ+" + "vbtS3l5OdOmTWP27Nls3LiRO++8k+XLlzNo0CA+/" + "PBDBg4cyOzZs7n66qu57rrrMnpeIt1VY/AP6JmvUT1p6PLBny1//" + "vOfWbVqFeeccw4A1dXVDBkyhG9/" + "+9ucc845FBQU8MADDwCxB6N885vfZOnSpYRCIUpLS/" + "nggw948cUXuf766xk0aBAAAwcOzNr5iHRllfGunhN65VMXVfCn0uWDP1Vl3l7c" + "nVtuuYW77rrrqOW7d+/" + "m4MGD1NXVUVNTQ69evXj00UcpKytj1apVRCIRioqK2jS1sogcrfHmrUG9e7Bjn" + "x62nor6+Ftp5syZPPbYY+zZsweADz/8kO3bt3Pbbbfx/e9/n7lz5/" + "KNb3wDiE2tPGTIECKRCEuWLGH79u0AzJgxgz/84Q/" + "s3bu3aR8Affr04cCBA1k4K5GuqbGr54Te+erjT0OXr/" + "izZezYsdx5551cdtllNDQ0EIlEuOaaa4hEInz6058mGo1y3nnn8eKLLzJ37lw+" + "/vGPM2HCBIqLiznrrLMAGDduHN/" + "61re4+OKLCYfDTJkyhYceeogbb7yRL33pSzzwwAM89thjnHbaaVk+" + "W5HOraL6MPl5IXr3yNM4/" + "jQo+Nvghhtu4IYbbki4LhwOs2LFiqb3r776asLtbrnlFm655Zajlp1//" + "vkazikSQOWhOvoXRsgLmyr+NGQl+" + "M3sXeAAEAXqW5ozWkQkHfsOHWZAz3zyQiHqdXE3pWxW/B9z9/" + "IsHl9EuomKQ3X06xkhHFLFn44ue3G3sz85rCvTv610NZXV8a6ekKmPPw3ZCn4H" + "/mRmq8zs1mNXmtmtZrbSzFaWlZUd9+" + "GCggL27t2rgGoH7s7evXspKCjIdlNE0lZxqI7+" + "qvjTlq2ungvcvdTMhgDPm9lmd1/auNLd5wPzIfbM3WM/" + "PHLkSHbu3EmiHwrSdgUFBYwcOTLbzRBJ25E+/" + "ljF7+6YWbab1WllJfjdvTT+9x4zewI4F1ia/" + "FNHRCIRRo0a1V7NE5EupKYuNjNnv54R6upjdWKDQ1i536IO7+" + "oxs15m1qfxNXAZsKGj2yEi3UPjzVv9C/PJi6e95utJLhsV/" + "1DgifivYXnAb9392Sy0Q0S6gcYpmQf0jLC/Rs/" + "dTUeHB7+7bwMmdfRxRaR7aqz4+/" + "WMkFfRWPEr+JPpssM5RUQAKg7FKv7+hfmEQ7Hgj+phLEkp+EWkS2vq4+" + "8ZG8cPqvhTUfCLSJdWUX3kISzhUCzS1MefnIJfRLq0D6sO0yMvREEk1Kzi16ie" + "ZBT8ItKllR+oZXCfHpjZkT5+" + "VfxJKfhFpEsrOxgLfqDZOH4FfzIKfhHp0soO1DK4dyz4VfGnR8EvIl1a+" + "cFaBjVW/I19/BrOmZSCX0S6rPpoA3urDjer+DWqJx0KfhHpsj6sOow7R/" + "r4NaonLQp+Eemy9hyoBWCQ+vgDUfCLSJdVfjAW/MdW/Ar+5BT8ItJllcUr/" + "iF9VPEHoeAXkS6r7ODRXT0ax58eBb+IdFnlBw7Tu0cehflhQKN60qXgF5Euq/" + "ldu4Bm50yTgl9EuqyyAzUM6p3f9P5IH7+Gcyaj4BeRLqvsgCr+" + "1lDwi0iXVX7wyF27oFE96VLwi0iXVFsfpbK6rmlED0Be/" + "OKu5upJTsEvIl1S+cHYs3abd/" + "WEw6r406HgF5EuqfzA0Xftgvr406XgF5EuqeyYeXpAo3rSpeAXkS6p7KAq/" + "tZS8ItIl9RY8Z+QcBy/gj+ZrAW/mYXNbI2Z/" + "TFbbRCRrqv8YC39CiP0yAs3LWsa1aPgT6pVwW9mvcwsnHrLpP4R2NTGfYhIjjr" + "25i1QxZ+" + "utILfzEJm9mkze8rM9gCbgd1mttHM7jOz04Mc1MxGAlcBDwZvsojI0Q9Zb6Rn7" + "qYn3Yp/CXAacDswzN1PcvchwAXAa8A9ZnZzgOPeD/" + "wLkPDSu5ndamYrzWxlWVlZgN2KSK5o/pD1RqGQYaZRPankpbndJe5ed+xCd/" + "8QeBx43Mwi6ezIzK4G9rj7KjObnmgbd58PzAcoLi7Wj24ROU6iih9iVb/" + "6+JNLq+JPFPqt2SbufGC2mb0L/" + "B6YYWaPpPlZEREOHa6n6nCUQX3yj1sXDpn6+" + "FNIGfxm9mUze9jMbjSzP5rZV9pyQHe/" + "3d1HunsRcCPworsH6SYSkRy3q6IGgOH9Co9blxcKqeJPIZ2KfwZwC/" + "AZd78amNS+TRIRSW5XRTUAw/sfH/yq+FNLp49/r7u7mf1X/" + "H1tpg7u7i8BL2VqfyKSG44Ef8Fx62J9/" + "Lq4m0w6Ff+PAdz9f+PvF7Zfc0REUttVUU3IYGjf44NfFX9qKYPf3TcDmNmg+" + "Pu/tHejRESS2VlRzbC+BUTCx0dYXsg0jj+FIHfu/qrdWiEiEsCuiuqE/" + "fsQm5NfFX9yQYLf2q0VIiIB7KqoaTH4NaontSDBr39JEcm6hgZnd2WSil99/" + "Cmp4heRLqXsYC11UWdEghE9oFE96QgS/Le3WytERNJUGh/" + "KOWKAKv7WSjv43X1DezZERCQdyW7eAs3Vk450J2kDwMyKgW8Bp8Q/" + "a4C7+8R2aJuIyHFSBb8q/tQCBT/" + "wKFACrKeFKZVFRNrTrooa+" + "vTIo29B4gmB80IhjeNPIWjwl7n74nZpiYhIGnbuq26xfx9U8acjaPB/" + "x8weBP5Mszl73F3TOIhIh0h28xZAXtiorY92YIu6nqDB/3ngLCDCka4eR/" + "P3iEgH2VVZzdRT+re4XhV/akGD/" + "xx3H90uLRERSaGqtp6KQ3XJK36N6kkpyDh+" + "gOVmNrZdWiIikkLjiJ4RSYJfFX9qQSv+acBaM3uHWB+/" + "hnOKSIcpTSP4NVdPakGDf1a7tEJEJA1Nj1xUxd8mQbt6/g2odPft7r4d2A98J/" + "PNEhE53q6KasIhY0ifHi1uo7l6Ugsa/BPdvaLxjbvvA6ZktEUiIi3Yue8Qw/" + "oWkJfgASyNwiEjqhu4kgoa/" + "CEzG9D4xswGEry7SESkVd4pr2LUoF5Jt8kLa1RPKkFD+z+AV83sD/H31wM/" + "yGyTRESO5+5sK69izuQRSbdTH39qgYLf3R82s5XAjPiia919Y+" + "abJSJytL1VhzlQU5+64teonpQCd9PEg15hLyId6p3yKgBGDU4e/" + "Kr4Uwvaxy8ikhXvlMWC/" + "9SUFb9G9aSi4BeRLmFbeRWRsCW9eQtU8adDI3JEpEt4p/wgJw/" + "sedRQzkVrSrnvuS1NM3aWXD5ac/" + "WkIegTuL6eYHElsMrd16a5jwJgKdAjfvzH3F03gYlIUu+" + "UV3Hq4N5N7xetKeX2heuprotNwVxaUc3tC9dz8ejBuENDgxMKWbaa26kF7eopB" + "r4MjIj/uY3YNA6/MLN/" + "SXMftcAMd58ETAZmmdm0gO0QkRwSbXDe3XvoqP79+57b0hT6jarroiz/" + "WzmAqv4kgnb1jASmuvtBADP7DvAUcBGwCrg31Q7c3YGD8beR+" + "B99hUSkRbsqqjlc33DUUM7GmTqPtb+mHkD9/" + "EkErfiH0OzJW0AdMNTdq49ZnpSZhc1sLbAHeN7dVxyz/" + "lYzW2lmK8vKygI2UUS6m6ahnM2Cv6WJ2voWxOpZjexpWdDgfxRYYWbfiVf7y4D" + "fmlkvAoztd/eou08m9hvEuWY2/" + "pj189292N2LBw8eHLCJItLdJBrDX3L5aAoj4aO2K4yEmTlmKKCKP5mgd+5+" + "38yeAc6PL/" + "qyu6+Mv54b9ODuXmFmS4hdJ9gQ9PMikhveKa+id488Bvc+" + "MivnnCmxqRuOHdVzoKaOJ9aUqo8/" + "ibSC38ws3jdPPOhXJtsmxb4GA3Xx0C8ELgXuCdZsEckl2+" + "KTs5kdPUpnzpQRTT8AGv12xXuAKv5k0u3qWWJmXzOzk5svNLN8M5thZr8Gbklz" + "XyfG9/cm8AaxPv4/" + "pt9kEck175QfTDlHT6O8+" + "BBOVfwtS7erZxbwd8DvzGwUUAEUEvvB8Sfgfndfk86O3P1NNIe/" + "iKSptj7Kzn3VXDtlZFrbh+" + "PBrzn5W5ZW8Lt7DfBT4KdmFgEGAdXNH8oiItIe3i0/hDvpV/" + "zhxopfo3pa0prZOeuA3e3QFhGR42x+" + "fz8Ao4f1SWv7popfXT0t0iRtItKpbdy9n0jYOK3ZdA3JqI8/NQW/" + "iHRqm3Yf4PQhfcjPSy+uwqHYdqr4WxYo+" + "OMjewak3lJEJDM27d7P2BP7pr29Kv7Uglb8Q4E3zOx/" + "zGyWHTuoVkQkg8oP1lJ2oJYxJ6bXvw/N+/" + "h1cbclgYLf3e8AzgB+CXwO2GpmPzSz09qhbSKS4zbtjl3YbVXFr+GcLQrcxx+/" + "O/" + "f9+" + "J96YADwmJmlnJlTRCSIxuAfEyD4NaontaAPYvlH4LNAOfAgUOLudWYWArYC6c7" + "JLyKS0qbdBxjWt4ABvfLT/syRcfwK/pYEHcc/" + "ELjW3bc3X+juDWZ2deaaJSICG3ftD9S/" + "DxrVk46gXT0Fx4a+md0D4O6bMtYqEcl5tfVR3i47GKibBzSqJx1Bg//" + "SBMuuyERDRESa2/rBQeobnLHDgwW/" + "RvWklu60zF8BvgqcFp9Vs3EYZx9iD2MREcmo1lzYBVX86Ui3j/" + "9R4Bngh8A8YsHvwAF339dObRORHLZp9wEKIiGKTkhvcrZGGtWTWrrB/" + "7S7X2Bms4HmF3Ebn78S7EeyiEgKb+2qZPSwvk1Bnq68+MVdjeNvWbrTMl8Q/" + "zu9WZJERNqgPtrAmzsrueGckwJ/NhxWxZ+KJmkTkU5n8/" + "sHqK6LcvYpwacGUx9/akEnabvezPrEX/" + "+rmS00s6nt0zQRyVWrtscuHbYm+DWqJ7WgFf+/" + "uvsBM7sAmElszp6fZb5ZIpLLVm3fx7C+BQzvXxj4s6r4Uwsa/" + "NH431cB8939KSD9e6lFRNKwavu+VlX7oFE96Qga/" + "KVm9nPgRuBpM+vRin2IiLTog/" + "01lFZUM7WVwd80qkfB36Kgof0p4DngsviD1gcAJZlulIjkrtVt6N8HVfzpCDpJ" + "WxQoAK43s+af/VPmmiQiuWzV9n30yAsFmoO/" + "Oc3Hn1rQ4H8SqABWA7UZb42I5LxV7+1j4sh+aT9j91ihkGGmUT3JBA3+ke4+" + "q11aIiI5r6Yuylul+/" + "n8BUVt2k9eyNTHn0TQH6nLzWxCWw5oZieZ2RIz22hmb8Uf7iIiwobSSg5HGzj7" + "5Nb17zcKh0x9/" + "EkErfgvAD5vZtuIdfUYsacxTgywj3rgn919dfxmsFVm9ry7bwzYFhHpZpb9bS9" + "mcE7RwDbtJy8UUsWfRNDgb/" + "Pc++6+G9gdf33AzDYBIwAFv0iOe3lrGRNH9Av0qMVEVPEnF7Sr5z3gQuCW+" + "JO4HBja2oObWREwBVhxzPJbzWylma0sKytr7e5FpAvZX1PHmh0VXHjG4DbvK9b" + "Hr4u7LQka/D8FPgrcFH9/APhJaw5sZr2Bx4H/4+77m69z9/nuXuzuxYMHt/" + "2bQEQ6v1ff3ku0wbnwjEFt3pcq/uSCdvV8xN2nmtkaAHffZ2aBfyczswix0H/" + "U3RcG/byIdD8vby2jV36YKW28sAvxil/" + "j+" + "FsUtOKvM7MwsS4ezGwwEOj3KTMzYpO7bXL3HwU8voh0Uy9vLeejp53Q6vH7zYX" + "DqviTCfov/" + "ADwBDDUzH4AvELscYxBnA98BphhZmvjf64MuA8R6Ua2761i+" + "95DGenfB43qSSVQV4+7P2pmq4hNyQwwx903BdzHKxx5WLuICC9vLQfISP8+" + "qI8/lbSC38y+3sKqK8zsCnXZiEhbvLy1jBH9Cxk1KNiD1VuiUT3JpVvx94n/" + "PRo4B1gcf/9x4PVMN0pEckdNXZRXtpYze/" + "IIYpcA204Vf3LpPmz9ewBmthSY6u4H4u+/" + "CzzVbq0TkW7v5a3lVB2OcsX4YRnbp+bqSS7oxd2hwOFm7w/" + "Thhu4RESeWb+bfoURPnraCRnbpyr+5IKO438YeN3Mnoi/" + "nwM8lMkGiUjuqK2P8vymD5g1bhiRcOYe5pcXCmkcfxJBR/" + "X8wMyeITZtA8Dn3X1N5pslIrlg+d/2cqCmnisnnJjR/" + "ariTy5oxY+7ryb2IBYRkTZ5ZsNu+" + "hTkcd7pmevmAcgLG7X10YzuszvRg9JFJCvqog38aeMHXDpmKD3ywhndtyr+" + "5BT8IpIVr769l4pDdVyR4W4e0KieVBT8IpIVC1fvpE9BXsbu1m1OFX9yCn4R6X" + "CVh+" + "p4esP7fGLKCAoime3mAc3Vk4qCX0Q61KI1pVx03xIO1zfwzPr3WbSmNOPHUMWf" + "XOBRPSIirbVoTSnzHn+" + "TmvrYPDplB2u5feF6AOZMGZGx42iunuRU8YtIh7nvuS1Nod+" + "oui7Kfc9tyehxwiEjqhu4WqTgF5EOs6uiOtDy1soLa1RPMgp+Eekww/" + "oVJFw+vH9hRo+" + "jPv7kFPwi0mHOLRp43LLCSJiSy0dn9Dga1ZOcLu6KSIeoizbw+" + "rsfcvqQ3lQfjrKroprh/QspuXx0Ri/sgir+VBT8ItIh/" + "nfdLnZX1vDfnzuHj501pF2PpVE9yamrR0Tanbszf+k2Rg/tw/" + "TRmXmgejKq+JNT8ItIu/vLX8vY/P4BvnTRqRl7vGIymqsnOQW/iLQrd+f/" + "vbCV4f0KmD1peIccMxwK4Q4NCv+EFPwi0q6e3fA+" + "63ZU8H8uPZP8vI6JnLxw7LcKVf2JKfhFpN3URxu477ktnDGkN5+" + "cOrLDjhsOxYJf/" + "fyJKfhFpN38z8qdbCuvouTy0U1h3BHyQo0Vv0b2JNLhwznN7FfA1cAedx/" + "f0ccXkY5RVVvPj//8V84+ZQCXjh3aocduS8W/aE0p9z23JeP3GbTXflsjGxX/" + "Q8CsLBxXRDrQ/S/8lQ/21/LNK8/qkJE8zR2p+IMF/" + "6I1pdy+cD2lFdU4UFpRze0L17d56uj22m9rmXvH94GZWRHwx3Qq/" + "uLiYl+5cmX7N0pEMuatXZXM/s9lfKr4JO66dkKHH//3r7/" + "HvIXr6ZkfJhTgh05VbT2JEtGAXj1a30HS2v1eeMYgfnbz2a06ppmtcvfiROs65" + "Z27ZnYrcCvAySefnOXWiEgQ0Qbnm09sYEDPCPNmnZWVNswcM5QvX3yIumiwPv5" + "fvvJOwuUO3HDOSa1uT2v3e/" + "qQ3q0+ZjKdMvjdfT4wH2IVf5abIyIBPPLadtbtqOD+" + "GybTr2ckK20Y3KcH864I/kPn2Q3vU5pgiugR/" + "Qv516vHtro97bXf1tKoHhHJmL/" + "tOcBdz2ziojMHc83kjrlZK5NKLh9N4THPAM7E7KHttd/" + "W6pQVv4h0PbX1Ub72u7X0zM/j36+b2OEXdDOhcZRNpkfftNd+Wysbwzl/" + "B0wHBpnZTuA77v7Ljm6HiGTWvc9uYdPu/" + "fzylmKG9E38wJWuYM6UEe0SyO2139bo8OB395s6+pgi0r6ee+" + "t9fvnKO9zy0VOYOaZjx+xLcOrjF5E22bR7P/" + "+0YC2TTurP7VeOyXZzJA0KfhFptb0Ha/" + "nir1fSpyCPX3zmbAqOuYApnZMu7opIqxw6XM+tv1lF+cFa/" + "vDlj3bpfv1co4pfRAKrrY9y229Wsea9fdx/" + "w2Qmjuyf7SZJAKr4RSRti9aUcu+" + "zm9lVWQPATeecxBUTTsxyqyQoVfwikpZFa0qZ9/" + "ibTaEPsGjtrqxNNCatp+AXkbTc8+xmauqPnvumui7Kfc9tyVKLpLUU/" + "CKS0p4DNexuVuk3tyvBHDTSuSn4RSSpDaWVXPOfy2hpAobh/" + "Qs7tD3Sdgp+EWnRE2t2ct1/" + "LceAf77szE410Zi0nkb1iMhxqmrr+" + "dcnN7BwdSnnFg3kJ3OnMrhPD0YO6NlpJhqT1lPwi8hRXn/" + "nQ77x+Jts31vFP848g6/" + "NOJ28cKxzoDNNNCatp+AXEQAO1tZzzzOb+c1r2zlpYCG//" + "dI0pp16QrabJe1AwS+S4xoanIVrSrnn2c2UH6zl8+" + "cXUXL5aHrmKx66K31lRXLY8rfLuefZLazbUcGkk/rzi88WM/mk/" + "tlulrQzBb9IDlm0ppT7nttCaUU1PfJC1NY3MKxvAf9+/" + "SSunTKCUKjrPTVLglPwi+SIhat3Mu/x9RyOxu6+ra1vIBIy/" + "vmyM7nu7JFZbp10JI3jF+nm9lUd5hdLt1Hy2JtNod+orsG5/" + "4WtWWqZZIsqfpFuqC7awCtby3ls1U6e3/" + "jBcYHfnKZcyD0KfpFu4nB9Ayve2cvT63fz7Ib32XeojoG98pk77WQ+VXwSX/" + "z1SkoThLymXMg9Cn6RLqbxAu2uimqG9i3gY2cNZn9NPUu3lHGgtp5e+" + "WEuGTuUqycO5+IzB5OfF+vRLbl8NLcvXE91XbRpX5pyITcp+" + "EW6kF8vf5c7n9pIXdQBeH9/Db97fQd9C/" + "K4etKJzDxrKBecMSjhs28b77jVlAui4BfJkuaVe6IQrqyu461dlWworWTdzkrW" + "vleRsKsGoHePPO66dmLKY2rKBQEFv0hGpArxRNs373Ypraim5LF1LF63CwM2v3" + "/gqJAf0b+QySf3bzH4W5orXyQRBb9IC9IN80QhfvvC9QBcM3k4+6vr2b2/" + "mt2VNZTuq2ZXRTX/vezdo/" + "raAeqizoub9zB6aB+" + "KiwZw87BTGDu8LxNG9GNgr3wA1r73oi7QSpuZu3f8Qc1mAT8GwsCD7n53S9sWF" + "xf7ypUrW32sS3/" + "0Elv3VLX684mEDBocwmZE3Vv8u39hBDPYd6juuGUVh+ro1+" + "z18P6FfOyswSzZXMauiuqk6xK9b7xAd2xQpbtszpQRSYOupXWpwrG917fndoku" + "hN45ZzwfO2sIldV1VFbXUXHoMP+0YC37DtUdt49wyIiEjZq6o4dS5oWM+oaW/" + "9+9e/" + "dVLa5rqV13XTtBXThyFDNb5e7FCdd1dPCbWRj4K3ApsBN4A7jJ3Tcm2r4twd8e" + "od9ZRUIGRtNFvyDLCiNhPnn2CB5fVZowUICEYZPsM40/" + "FJKFVGvWF+SF+N4147hywolEG5xog/" + "PHN3fzw6c3UdvsebA98kJ8dfppnHf6IOrqG6iNNvDyX8v4zWvbjzr3vJBxyZih" + "nDKoJzWHoxw6HOVQXZQXNn5w1P5a64sXjGJYvwKG9SvgxH4FjOjfk8F9enDRvU" + "sSVu4j+heybN6MpPsM2q0kuamzBf9Hge+6++Xx97cDuPtdibZvbfC/t/" + "cQF923pC1NFWLB6EA0SYV6rHDIGNa3gPcra4gm+P4KGQzslc+" + "HVYdJtFsD8uPzyHSUHnkhCvPDFOSF6dkjzLaylguG7358LH0KIgzoFaFfYT5fe" + "WQVew7UHrddshBX5S7tLVnwZ6OPfwSwo9n7ncBHmm9gZrcCtwKcfPLJrTpI49h" + "laZtkXRItiTY4Hzl1IAtXlyZc3+Bw2bhh/HbFewnXO/" + "C584r4+dJtLR7jjqvGEDIjL2x8+" + "8m3WtzukS98hEjYiOSFuPany1vcbsudVxz1/vy7E/" + "elj+hfyOfOH3XUsm9eOSbw+HgNrZRs6pQXd919PjAfYhV/a/" + "YxrF9BRtvU3TVegzjWiPhFw0QhmOwzP/rUZFZs+7DF8PzhJybwly1lLa6//" + "cox/PHN3S2u/+KFpza9//" + "lftrW43QVnDDrqfUvbHSvIzU6tDXENrZRsyUZZXAqc1Oz9yPiyjDtjSK/" + "22G2nFIlfSGzNssJImJs+clKLD9IuuXx0wnXJPgO0+LlMrW+" + "U6e0gFsp3XTuBEf0LMWI/" + "HJJ1w8yZMoJl82bwzt1XsWzeDAW6dGrZqPjfAM4ws1HEAv9G4NPtcaDnvz5do3" + "rSXDZnygiKTxmYtGoN+plUlXBb1zfK9HbNt1eAS3eUreGcVwL3ExvO+St3/" + "0FL27Z1OKeISC7qbBd3cfengaezcWwRkVynoS8iIjlGwS8ikmMU/" + "CIiOUbBLyKSY7IyqicIMysDtrdhF4OA8gw1J5u6y3mAzqWz6i7n0l3OA9p2Lqe" + "4++BEKzp98LeVma1saUhTV9JdzgN0Lp1VdzmX7nIe0H7noq4eEZEco+" + "AXEckxuRD887PdgAzpLucBOpfOqrucS3c5D2inc+n2ffwiInK0XKj4RUSkGQW/" + "iEiO6RbBb2azzGyLmf3NzOYlWN/DzBbE168ws6IsNDMtaZzL181so5m9aWZ/" + "NrNTstHOdKQ6l2bbfdLM3Mw65RC8dM7DzD4V/7q8ZWa/" + "7eg2piuN76+TzWyJma2Jf49dmY12pmJmvzKzPWa2oYX1ZmYPxM/" + "zTTOb2tFtTFca5zI3fg7rzWy5mU1q80HdvUv/" + "ITa189vAqUA+sA4Ye8w2XwX+K/76RmBBttvdhnP5GNAz/" + "vorXflc4tv1AZYCrwHF2W53K78mZwBrgAHx90Oy3e42nMt84Cvx12OBd7Pd7hb" + "O5SJgKrChhfVXAs8Qe4TzNGBFttvchnM5r9n31hWZOJfuUPGfC/" + "zN3be5+2Hg98A1x2xzDfDr+OvHgJlmZnQ+Kc/" + "F3Ze4+" + "6H429eIPcGsM0rn6wLwfeAeoKYjGxdAOufxJeAn7r4PwN33dHAb05XOuTjQN/" + "66H7CrA9uXNndfCnyYZJNrgIc95jWgv5md2DGtCybVubj78sbvLTL0f747BH+" + "ih7cf+9ikpm3cvR6oBE7okNYFk865NPcFYlVNZ5TyXOK/fp/" + "k7k91ZMMCSudrciZwppktM7PXzGxWh7UumHTO5bvAzWa2k9gzM77WMU3LuKD/" + "l7qKjPyf75QPW5fUzOxmoBi4ONttaQ0zCwE/" + "Aj6X5aZkQh6x7p7pxKqxpWY2wd0rstmoVroJeMjd/" + "8PMPgr8xszGu3tDthuW68zsY8SC/" + "4K27qs7VPzpPLy9aRszyyP2K+zeDmldMGk9iN7MLgG+" + "Bcx299oOaltQqc6lDzAeeMnM3iXWD7u4E17gTedrshNY7O517v4O8FdiPwg6m3" + "TO5QvA/" + "wC4+6tAAbGJwrqatP4vdRVmNhF4ELjG3ducXd0h+Jse3m5m+cQu3i4+" + "ZpvFwC3x19cBL3r8Skknk/" + "JczGwK8HNiod9Z+5Ihxbm4e6W7D3L3IncvItZ3OdvdO9sDltP5/" + "lpErNrHzAYR6/rZ1oFtTFc65/IeMBPAzMYQC/" + "6yDm1lZiwGPhsf3TMNqHT33dluVGuY2cnAQuAz7v7XjOw021e0M3RV/" + "EpiVdbbwLfiy/6NWJBA7Jv3D8DfgNeBU7Pd5jacywvAB8Da+J/F2W5za8/" + "lmG1fohOO6knza2LEuq02AuuBG7Pd5jacy1hgGbERP2uBy7Ld5hbO43fAbqCO2" + "G9cXwC+DHy52dfkJ/HzXN9Zv7fSPJcHgX3N/" + "s+" + "vbOsxNWWDiEiO6Q5dPSIiEoCCX0Qkxyj4RURyjIJfRCTHKPhFRHKMgl9ynplNN" + "7M/xl/PTjaTaMD9PmZmp2ZgP783s854Q5h0UQp+6ZbiN+4E/" + "v5298XufncGjj8OCLt7Jm7k+hnwLxnYjwig4JduxMyK4nPNPwxsAE4ys5+" + "Z2cr4PPnfa7btLDPbbGargWubLf+cmf1n/" + "PVDZnZds3UH43+faGZLzWytmW0wswsTNGcu8OQxx1ttZuvM7M/" + "xZd81s1+b2ctmtt3MrjWze+Pzrj9rZpH4x18GLolPNyLSZgp+" + "6W7OAH7q7uPcfTuxu1OLgYnAxWY20cwKgF8AHwfOBoYFPMangefcfTIwidjdlM" + "c6H1gFYGaD48f7pLtPAq5vtt1pwAxgNvAIsMTdJwDVwFUAHpsg7W/" + "xY4m0mYJfupvtHpt/vdGn4lX9GmAcsSkJzgLecfetHrt1/" + "ZGAx3gD+LyZfReY4O4HEmxzIkfmuJkGLPXYBG64e/" + "O5159x9zpi0wqEgWfjy9cDRc222wMMD9hOkYQU/" + "NLdVDW+MLNRwP8FZrr7ROApYvM2paue+P+R+" + "PWCfGh6cMZFxGZ7fMjMPpvgs9VpHqs2vs8GoM6PzKHSwNHTphfE9ynSZgp+" + "6c76EvtBUGlmQ4k9tg5gM1BkZqfF39/UwuffJdYVBLGumAiAxZ5z/IG7/" + "4LYBFqJnue6CTg9/" + "vo14KL4DyLMbGArzuVMYtctRNpMF4uk23L3dWa2hljQ7yA26yTuXmNmtwJPmdk" + "hYhdP+yTYxS+AJ81sHbEumMbfJqYDJWZWBxwEElX8T8W3e8Hdy+LHWxj/" + "zWEPcGm65xH/oVXt7u+n+xmRZDQ7p0g7MLNCYAlwvrtH27ivfwL2u/" + "svM9I4yXnq6hFpB+5eDXyHzDzntQL4dQb2IwKo4hcRyTmq+" + "EVEcoyCX0Qkxyj4RURyjIJfRCTHKPhFRHLM/wfFa1IJr/" + "OxdwAAAABJRU5ErkJggg==", + "text/plain" : ["
"] + }, + "metadata" : {"needs_background" : "light"}, + "output_type" : "display_data" + } + ], + "source" : [ + "# see https://cococubed.com/research_pages/sedov.shtml\n", + "# for exact solutions\n", "\n", "import numpy as np\n", + "i, x, den, ener, pres, vel, cs = " + "np.loadtxt(\"spherical_standard_omega0p00.dat\", unpack=True, " + "skiprows=2)\n", + "\n", "profile = plot.profiles[0]\n", "r = profile.x\n", + "rho = profile[(\"boxlib\",\"gasDensity\")]\n", "\n", + "import matplotlib.pyplot as plt\n", + "plt.scatter(r, rho, label='simulation')\n", + "plt.plot(x, den, label='exact')\n", "\n", + "plt.xlabel(r\"radius (cm)\")\n", + "plt.ylabel(r\"density (g cm$^{-3}$)\")\n", "plt.legend(loc='best')" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# see https://cococubed.com/research_pages/sedov.shtml\n", - "# for exact solutions\n", - "\n", - "import numpy as np\n", - "i, x, den, ener, pres, vel, cs = np.loadtxt(\"spherical_standard_omega0p00.dat\", unpack=True, skiprows=2)\n", - "\n", - "profile = plot.profiles[0]\n", - "r = profile.x\n", - "rho = profile[(\"boxlib\",\"gasDensity\")]\n", - "\n", - "import matplotlib.pyplot as plt\n", - "plt.scatter(r, rho, label='simulation')\n", - "plt.plot(x, den, label='exact')\n", - "\n", - "plt.xlabel(r\"radius (cm)\")\n", - "plt.ylabel(r\"density (g cm$^{-3}$)\")\n", - "plt.legend(loc='best')" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0 dimensionless 26844572019.077103 dimensionless\n" - ] }, { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "cell_type" : "code", + "execution_count" : 17, + "metadata" : {}, + "outputs" : [ + { + "name" : "stdout", + "output_type" : "stream", + "text" : ["0.0 dimensionless 26844572019.077103 dimensionless\n"] + }, + { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEICAYAAAC55kg0AAAAOXRFWHRTb2Z0d2" + "FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGli" + "Lm9yZy/" + "YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAtm0lEQVR4nO3deXhU5dnH8e+" + "dPSEhISsSQsJOIghKQHBBVBRwAdxBxaJUqlattbVC7Vtt1WJd6tJSkQriCipSB" + "EFtXdjEhSAg+76FNSwJSxKyPe8fM9BxzCSTzJoz9+e6cjHnzFnuA2F+" + "c57nnOeIMQallFKhKSzQBSillAocDQGllAphGgJKKRXCNASUUiqEaQgopVQI0x" + "BQSqkQpiGgLEVE5ovIzxu5bhsROS4i4d6uS6lgpSGgQpaIbBeRAaemjTE7jTHx" + "xpjqQNallD9pCKgmQ0QiAl2Dr9V2jA097lD4e1LeoyGggpr92/" + "rDIvIDcEJEIkSkj4gsEZFiEVkpIv1drNteRL4QkUMiclBE3haRJPt7bwJtgDn2" + "JqDfiUiOiBj7Pm4SkQKn7f1aRGbbX0eLyLMislNE9ovIRBGJreM47hCRdSJyRE" + "Q+FZFsh/eMiPxSRDYBm0Skv4gU2o97H/CafX8viMge+88LIhJtX/" + "8ny3vwV65CjIaAagpGAFcCSUAGMBd4AkgGfgt8ICJptawnwHigFZALZAGPARhj" + "RgI7gavtTUBPO607B+gsIh0d5t0MvGN//RTQCegBdAAygT/" + "WVryIDAV+D1wLpAGLgGlOiw0DzgXy7NMt7ceXDYwBHgH62PfXHegN/" + "MFhfefllXKPMUZ/9Cdof4DtwB0O0w8Dbzot8ynwM/" + "vr+" + "cDPXWxrGLDcadsDHKZzAANE2KffAv5of90ROAbEYQuXE0B7h3X7Attc7PdjYLT" + "DdBhQCmTbpw1wicP7/YEKIMZh3hbgCofpgcB2V8vrj/" + "64+6NnAqop2OXwOhu4wd4UVCwixcAFwBnOK4lIhohMF5HdInIU24d6agP2+" + "w62sxCwnQXMMsaUYvs2Hwcsc6jhE/" + "v82mQDLzosexhbkGS6OEaAImNMucN0K2CHw/" + "QO+zxXyyvlFg0B1RQ4DnW7C9uZQJLDTzNjzFO1rPcX+" + "7rdjDHNgVuxffjWtt3a/" + "BdIE5Ee2MLgVFPQQaAMONOhhkRjTLyL7ewCfuFUc6wxZkkdtThP78EWJqe0sc9" + "z91iUqpWGgGpq3gKuFpGBIhIuIjH2jtHWtSybABwHSkQkE3jI6f39QDtXOzLGV" + "ALvA89ga2//" + "r31+" + "DfAv4HkRSQcQkUwRGehiUxOBcSJypn3ZRBG5wc3jPWUa8AcRSRORVGz9D281cB" + "tK/YSGgGpSjDG7gFMdrUXYvmU/RO2/" + "y38CzgFKsHUmz3R6fzy2D9ZiEfmti12+" + "AwwA3jfGVDnMfxjYDHxjb2r6DOjsouZ/A38FptuXXQ0MrudQnT0BFAA/" + "AKuA7+" + "3zlPKIGKNnkUopFar0TEAppUKYhoBSSoUwDQGllAphGgJKKRXCgnqgqdTUVJOT" + "k9Pg9bYfPEFVjaGs0jYYZLfMRC9XppRSwWvZsmUHjTGubl78kaAOgZycHAoKCu" + "pf0Mntr33HoRMV/FBYAkDBU1d6uzSllApaIrKj/qVsQqI5SC+DVUqp2lk2BBw/" + "99uOmxe4QpRSKohZMgREpP6FlFJKBXefgFIqtFVWVlJYWEh5uQ6QWpuYmBhat2" + "5NZGRko7dh2RAwOqiiUk1eYWEhCQkJ5OTk6Bm+" + "E2MMhw4dorCwkLZt2zZ6O9ZsDgp0AUoprygvLyclJUUDoBYiQkpKisdnSZYMAa" + "WUdWgAuOaNvxvLhoBeFaqUUvWzZAjUFo5//WQ9x8or/" + "V+MUsoyHnvsMZ599lmvbe+KK66guLiY4uJi/vnPf3ptuw1hyRCozcvzt/" + "DIv1cHugyllDpt3rx5JCUlhUYIiEieiLwnIi+LyPW+" + "3l9tzUEfr97r690qpSzmySefpFOnTlxwwQVs2LABgC1btjBo0CB69uzJhRdeyP" + "r16wEYNWoU999/P+eddx7t2rVjxowZAOzdu5d+/" + "frRo0cPunbtyqJFiwDb0DgHDx5k7NixbNmyhR49evDQQw9x2223MWvWrNM13HL" + "LLXz44Yc+OT6PLhEVkSnAVcABY0xXh/mDgBeBcOBV+0PABwN/" + "N8YsEpHZwAxP9l1PZbXOrazWjgKlmqo/" + "zVnD2j1HvbrNvFbNefTqM12+" + "v2zZMqZPn86KFSuoqqrinHPOoWfPnowZM4aJEyfSsWNHvv32W+655x6++" + "OILwPaBv3jxYtavX8+QIUO4/vrreeeddxg4cCCPPPII1dXVlJaW/mg/" + "Tz31FKtXr2bFihUALFiwgOeff55hw4ZRUlLCkiVLeP3117167Kd4ep/" + "AVOAfwBunZohIODABuAwoBJbaP/" + "TfBB4VkSFAiof7VUopn1u0aBHXXHMNcXFxAAwZMoTy8nKWLFnCDTfccHq5kydP" + "nn49bNgwwsLCyMvLY//+/" + "QD06tWLO+64g8rKSoYNG0aPHj3q3O9FF13EPffcQ1FRER988AHXXXcdERG+" + "ua3Lo60aYxaKSI7T7N7AZmPMVgARmQ4MNcaMB35pDwnnB36fJiJjgDEAbdq08a" + "Q8pZSF1PWN3Z9qampISko6/" + "a3dWXR09OnXpwav7NevHwsXLmTu3LmMGjWKBx98kNtuu63O/" + "dx222289dZbTJ8+" + "nddee81r9TvzRZ9AJrDLYboQyBSRHBGZhO2s4RlXKxtjJhlj8o0x+" + "Wlpbg2HXft2Gr2mUkrZ9OvXj1mzZlFWVsaxY8eYM2cOcXFxtG3blvfffx+" + "wfdCvXLmyzu3s2LGDjIwM7rzzTn7+85/z/fff/" + "+j9hIQEjh079qN5o0aN4oUXXgAgLy/PewflxG/DRhhjtmP/" + "hu9rem+JUsobzjnnHG666Sa6d+9Oeno6vXr1AuDtt9/" + "m7rvv5oknnqCyspLhw4fTvXt3l9uZP38+zzzzDJGRkcTHx/PGG2/" + "86P2UlBTOP/98unbtyuDBg3nmmWfIyMggNzeXYcOG+fIQEU/" + "H2rc3B310qmNYRPoCjxljBtqnxwHYm4MaJD8/" + "3zTmoTJ3vlFA4ZEy1u39aSfSdn3AjFJNxrp168jNzQ10GQFRWlpKt27d+" + "P7770lMdP10xNr+jkRkmTEm3539+" + "KI5aCnQUUTaikgUMByY7YP91EkfJKOUaqo+++wzcnNzue++++oMAG/" + "w9BLRaUB/" + "IFVECoFHjTGTReRe4FNsl4hOMcas8bjShtRVx3s5Y+" + "ey6cnBRIaHzH1ySqkmZsCAAezY4fYTIj3i6dVBI1zMnwcE7eO8figspmd2cqDL" + "UEq5wRijg8i54I0Wj5D8OvzV5kOBLkEp5YaYmBgOHTqkzbu1OPU8gZiYGI+" + "2Y8mHytT3peHLDQe4/9KO/" + "ilGKdVorVu3prCwkKKiokCXEpROPVnME5YMgfos31nM7uIyMpNiA12KUqoOkZG" + "RHj01S9XPss1B9Z09frhit38KUUqpIGbJEJA6rg+" + "Kjgijd9tk3lu6S9sZlVIhz5IhUBcRGN4ri+" + "2HSllZWBLocpRSKqBCLwQQere1XR66Zo+" + "GgFIqtFk2BIyLIeTCBDKTYomPjmDDvmO1LqOUUqHCkiFQ1yWiIoKI0CkjnvUaA" + "kqpEGfJEKjLqXzo3LI5G/" + "Yd085hpVRIs2wIuPxst6dA7hkJlJRVUnikzG81KaVUsLFkCNTVHBRmf/NU5/" + "DXW3UICaVU6LJkCNTlVEB0zkggNT6KJZsPBrYgpZQKIMuGQD2tQYgIfdun8tUW" + "HZxKKRW6LBkCdd0xHObQVnRx5zSKjp1k6fYj/ihLKaWCjiVDoC6O/" + "QWDurYkPjqCd5fuClxBSikVQJYNAddNPP9LgbioCK7u3oq5q/" + "ZQVlHtn8KUUiqIWDME6rw66MfTl+dlUF5Zw/" + "Jd2iSklAo91gyBOjhfPnpOdgtEYOk2DQGlVOjx20NlRORC4Bb7PvOMMef5cn+" + "uG4N+nAKJsZF0admcpdsP+" + "7IcpZQKSh6dCYjIFBE5ICKrneYPEpENIrJZRMYCGGMWGWPuAj4CXvdkv/" + "XWVdd7tbzZO6cFy3YcobK6xmc1KaVUMPK0OWgqMMhxhoiEAxOAwUAeMEJE8hwW" + "uRl4x8P9NlpYLSnQp10KZZXVejaglAo5HoWAMWYh4PzJ2RvYbIzZaoypAKYDQw" + "FEpA1QYoxxOXyniIwRkQIRKfDXw6X7d06nWVQ4c1bu8cv+" + "lFIqWPiiYzgTcLzwvtA+D2A08FpdKxtjJhlj8o0x+" + "WlpaY2vwkWnQG3NQbFR4VyWl8G8VfuoqNImIaVU6PDr1UHGmEeNMUt8vR+" + "pYwS52pqDAIb2yKSkrJLFm/" + "1z9qGUUsHAFyGwG8hymG5tnxcUXOXDeR1SiIsK54v1B/" + "xbkFJKBZAvQmAp0FFE2opIFDAcmO2D/dSp/" + "vuFfyw6Ipzz2qcyf0ORDiinlAoZnl4iOg34GugsIoUiMtoYUwXcC3wKrAPeM8a" + "s8bzUBtRVx3uumoMA+ndOo/BIGVuKTni/KKWUCkIe3SxmjBnhYv48YJ4n2/" + "aZOhKif2dbR/" + "T8DQfokB7vp4KUUipwLDtshKsmnbrOElq3iKNzRgKfrtnnm6KUUirIWDIE6nq8" + "ZF1XDgEM6dGKpduPUHik1MtVKaVU8LFkCNTFeRRRZ0O6twJgtt44ppQKAZYNAX" + "cHkHOWlRxHz+wWfLhcQ0ApZX2WDIGGDiDn7KqzzmDD/" + "mNsO6hXCSmlrM2SIVCX+voEAAbkZgDojWNKKcsLvRBwY5ms5Dg6ZcTz+" + "br9Pq9HKaUCybIh4OqmX3eagwAu6ZLBd9sOc7S80ntFKaVUkLFkCDRmADlnl+" + "amU1VjWLhRB5RTSlmXJUOgLu6eCZydlUTL5jFMXrxNxxJSSlmWZUPAuLhI1M0M" + "ICI8jF8N6MjyncX8d632DSilrMmSIVDnB727pwLADT1b0y61Gc/" + "+ZwPVNXo2oJSyHkuGQF3qu2PYUUR4GPde0oGN+4+" + "zfOcR3xWllFIBYtkQcHl1UAO3c2luBuFhovcMKKUsyZoh0NBP+" + "jokxkaSn91CQ0ApZUnWDAEvu6RLOuv3HWNPcVmgS1FKKa+ybAh486rOS7qkA/" + "DlBj0bUEpZiyVDoL6RQhuqQ3o8rVvE8sU6DQGllLVYMgS8TUQYdGZLFm4q4sDR" + "8kCXo5RSXuO3EBCR/iKySEQmikh/" + "f+23ljoatd7IvtlU1Rje+HqHlytSSqnA8SgERGSKiBwQkdVO8weJyAYR2SwiY+" + "2zDXAciAEKPdlvIGSnNOOy3Aze/" + "nYH5ZXVgS5HKaW8wtMzganAIMcZIhIOTAAGA3nACBHJAxYZYwYDDwN/8nC/" + "dWrkl/16jb6gLUdKK5n5/" + "W7f7EAppfzMoxAwxiwEDjvN7g1sNsZsNcZUANOBocaYGvv7R4BoV9sUkTEiUiA" + "iBUVFwTWCZ++2yXTLTGTSwi1UVdfUv4JSSgU5X/" + "QJZAK7HKYLgUwRuVZEXgHeBP7hamVjzCRjTL4xJj8tLa3RRfhi5E8R4f5LO7L9" + "UKmeDSilLCHCXzsyxswEZvpjXz5qDQJgQG463Vsn8uLnmxh6diuiI8J9uDellP" + "ItX5wJ7AayHKZb2+dZgojwm8s7s7u4jHeX7qp/" + "BaWUCmK+" + "CIGlQEcRaSsiUcBwYLYP9lMnV41B3jhLuLBjKr3bJvP3LzZTWlHlhS0qpVRgeH" + "qJ6DTga6CziBSKyGhjTBVwL/" + "ApsA54zxizxvNSG1KXr7cvPDyoC0XHTvLqom2+3ZlSSvmQR30CxpgRLubPA+" + "Z5su1g1zO7BYPObMkrC7Zw87ltSI13ecGTUkoFLcsOG+" + "HyeQJePEv43aDOlFfV8NLnm7y3UaWU8iNLhkBdA8h588rRdmnxjOidxTvf7qTw" + "SKn3NqyUUn5iyRDwp3v6dwDQvgGlVJNk2RAwLq8P8q5WSbEMOzuT6Ut3cvhEhV" + "/2qZRS3mLJEKir3d8XVw7ddVE7yitrmLpku/" + "c3rpRSPmTJEPC3DukJXJ6XwetLtnPipN43oJRqOjQEvOTu/" + "u0pKatk0sKtgS5FKaXcZtkQcHmJqI9GFjq7TQuG9WjFhC83s3p3iU/" + "2oZRS3mbJEPD1HcOuPDbkTJKbRfHb91dyskofPKOUCn6WDIFASYqL4qnrurF+" + "3zH+/vnmQJejlFL1smwI+OcC0Z+6pEsGN/" + "RszcsLtrB2z9EAVaGUUu6xaAgEqD3I7pErc0mKjeQPs1ZRUxOoOFJKqfpZNAQC" + "KykuinFX5PL9zmLeX6bPHFBKBS/" + "LhoAPni7ZINedk0nvnGTGf7xe7yRWSgUtS4ZAnVcH+amlSER44pquHC+" + "v4vGP1vrkmcdKKeUpS4ZAsOiUkcAvL+7Av5fv1pvIlFJByW8Pmve/4Pjm/" + "atLO7Kl6DjjP15P6xZxXHnWGYEuSSmlTrNkCAT22qAfCwsTnr2hO/" + "tKyvn1eytomRhNz+" + "zkQJellFKANgf5RUxkOJNuyyczKZa73vqeI9pRrJQKEn4LARHJFZGJIjJDRO72" + "136DRXKzKCbcfA7FpRX8cfaaQJejlFKAhyEgIlNE5ICIrHaaP0hENojIZhEZC2" + "CMWWeMuQu4ETjfk/26w/UAcoGT16o5v7q0I3NW7uGjH/" + "YEsBKllLLx9ExgKjDIcYaIhAMTgMFAHjBCRPLs7w0B5gLzPNxvnQI1gJw77rqo" + "Pd2zkvi/" + "Was5cKw80OUopUKcRyFgjFkIHHaa3RvYbIzZaoypAKYDQ+" + "3LzzbGDAZucbVNERkjIgUiUlBUVORJeUEpIjyM527oTmlFNb+" + "fuUrvH1BKBZQv+" + "gQyAcexEgqBTBHpLyIvicgr1HEmYIyZZIzJN8bkp6WlNbqIYP5o7ZAez8ODuvD" + "ZugM8OnuNBoFSKmD8domoMWY+MN8f+/LVg2O86fbzc9hbUsa/" + "Fm0jTIRHr85DgrkdSyllSb4Igd1AlsN0a/" + "s8vwr2b9ciwu+vyMUYeHXxNgANAqWU3/kiBJYCHUWkLbYP/" + "+HAzT7YT52COwJsRIRHrszFAJMXb6O6xvDYkDMJD9MgUEr5h0chICLTgP5Aqog" + "UAo8aYyaLyL3Ap0A4MMUY49cL40XquEQ0yD5fRYQ/" + "XJlLRLjwyoKt7D9azksjziYmMjzQpSmlQoBHIWCMGeFi/" + "jx8fBlofYK9OciRiDBucC5nNI/hTx+tZcS/" + "vmHyz3qR3Cwq0KUppSzOssNGNJ0I+" + "J9R57fl5Vt6snbPUa57eQk7D5UGuiSllMVZMgQEXKZAsF85NKhrS96581yOlFZ" + "w3cQlrN+nzylWSvmOJUOgLqYJnCP0zE7m/V/" + "0JVyEGyd+zbIdzvfjKaWUd1g2BIL/" + "o75uHTMSmHF3X1Lio7nl1W+Zv+FAoEtSSlmQdUOgCXUMu9K6RRzv/" + "aIv7VLjufONAub+" + "sDfQJSmlLMaSISAiLs8Egr1PwFlaQjTTf9GHHllJ3D99OXNW6uijSinvsWQIWE" + "3zmEim3t6bnm1a8MC7KzQIlFJeY9kQsEBr0I80i47gtdt70TO7Bb+" + "avpzZGgRKKS+wbgi4aBAKtjuGG6JZdASvjepFfk4yD0xfzocr/" + "D4kk1LKYqwbAi7OBJr6GUKz6Aim3m4Lgl+/" + "u4LXvtoW6JKUUk2YdUMg0AX4UFxUBK/" + "f3psBuRn8ac5aHpu9huoaKx+xUspXLBkCIri+Y7gJNwc5io0K5+" + "Vbe3LnhW2ZumQ7Y94o4MTJqkCXpZRqYiwZAtA07gz2VHiY8MiVeTw+" + "rCvzNxZx4ytfs69En1uslHKfdUPA+hlw2sg+2Uz+" + "WT47DpVy9T8Ws2iT9Z7NrJTyDUuGgOD6ZjGr6t85nQ/" + "uPo+k2EhGTv6OJ+" + "eu5WRVdaDLUkoFOUuGQF2s0idQm84tE5hz3wWM7JPNvxZt49p/" + "LmHzgeOBLkspFcQsGwKuxg6yejNRTGQ4jw/ryr9uy2dvSTlX/" + "X0Rb3+7wxJjKSmlvM+SISBi7UtE3XFZXgaf/OpCeuUk88i/V3PTpG/" + "YuP9YoMtSSgUZS4YANJ1nDPtSevMYXr+9N09d242N+49xxYuLGP/" + "xOr2UVCl1mt9CQETaichkEZnhr30qCAsThvduwxe/" + "6c+152TyyoKtXPa3BXyyep82ESmlPAsBEZkiIgdEZLXT/" + "EEiskFENovIWABjzFZjzGhP9qcaL7lZFE9f350Zd/" + "WleWwkd721jDumLmX7wROBLk0pFUCenglMBQY5zhCRcGACMBjIA0aISJ6H+" + "2mQulp8mtrzBLwtPyeZOfddwB+uzGXp9iNc/" + "vxCnvl0PaUV2kSkVCjyKASMMQsB5wfg9gY227/" + "5VwDTgaHublNExohIgYgUFBXpTU++" + "EBkexs8vbMcXv7mIq846gwlfbuHS5xYw94e92kSkVIjxRZ9AJrDLYboQyBSRFB" + "GZCJwtIuNcrWyMmWSMyTfG5KelpXm9uFAYTsJd6c1j+NtNPZhxV19axEXxy3e+" + "5+Z/" + "fcuGfXoVkVKhwm8dw8aYQ8aYu4wx7Y0x4325r1C6AsgbTjURPT6sK2v3HmXwiw" + "v59bsr2Kb9BUpZXoQPtrkbyHKYbm2fFxRCvU/" + "AlfAwYWSfbK7sdgavLNzC60u2M3vlHq49O5P7L+" + "1IVnJcoEtUSvmAL84ElgIdRaStiEQBw4HZPtiP8oHkZlGMG5zLot9dws/" + "65vDhyj1c/" + "Ox8xs1cxZ7iskCXp5TyMk8vEZ0GfA10FpFCERltjKkC7gU+" + "BdYB7xlj1nheaoPq8ufuLCktIZo/Xp3HwocuZkTvNsxYtov+z8zn/" + "mnL+XL9ASqrawJdolLKCzxqDjLGjHAxfx4wz5Nt+4rmQ8O0TIzh8WFduat/" + "e15ZsIUPV+xh9so9JDeL4uqzzmDo2ZmcnZWkwatUE+WLPgFlQZlJsfx5aFf+" + "cGUeCzYWMWv5bqYt3cXrX+8gOyWOoT0yuebsTNqmNgt0qUqpBrBkCOh3Ut+" + "JigjjsrwMLsvL4Gh5JZ+s3ses5bv5+" + "xebeOnzTXRvnciwszO56qxWpCVEB7pcpVQ9LBkCyj+ax0RyY34WN+" + "ZnsbekjDkr9zBr+R7+NGctT8xdx/kdUrnm7FZcnteSZtH6q6ZUMNL/" + "mcorzkiMZUy/9ozp156N+48xa/luPlyxh1+/" + "u5LYyNVcfmYGD17WiewUbS5SKphoCCiv65SRwO8GdeG3l3dm2c4jzFq+" + "m9kr9vD5ugOMv7YbV3dvFegSlVJ21nyegHYKBIWwMKFXTjJPXtONjx+" + "4kE4Z8dw3bTnjZv5AWYU+/1ipYGDNEFBBp3WLON79RV/u7t+ead/" + "tYuiExfqkM6WCgCVDIDMp9ifz8rNbAHB9z9b+" + "LkfZRYaH8fCgLrxxR28On6hgyD8WM/27nTpyqVIBJMH8HzA/" + "P98UFBQ0at2SskrCBCLCwjAYYiLCCQvTdqJgceBYOQ++u5LFmw9ydfdW/" + "OWariTERAa6LKUsQUSWGWPy3VnWkmcCAImxkSTERBIbFU5cVIQGQJBJT4jhjTt" + "689DAzsxbtZer/r6Y1btLAl2WUiHHsiGggl9YmPDLizvw7pg+VFbVcPO/" + "vmHd3qOBLkupkKIhoAIuPyeZ9+7qS7PoCEZO/" + "k6fY6CUH2kIqKDQukUcb44+" + "lxpjuPXVb3XYaqX8RENABY0O6fG8cUdvjpZVcuvkbzl0/" + "GSgS1JN3O7iMkZPXcqdbxToVWguaAiooNI1M5HJo3qx+" + "0gZt035jqPllYEuSTVBxhimfbeTgc8vZP7GIv67dj8fr94X6LKCkoaACjq92yY" + "zcWRPNuw7xuipS312d/HWouO8PH+LNj1ZzO5i2xeIcTNX0S0zkc8fvIhOGfE8/" + "cl6Kqr0YUjONARUULq4czrP39SDgh1HuPvtZV7/z2uM4aEZP/DXT9Zz4dNfcs/" + "by/hu22FtMmjCHL/9L9txhMeHnsnbPz+XnNRmjBucy/" + "ZDpbzz7Y5Alxl0dAA5FbSu7t6K4yerGDdzFb9+bwUvDT+bcC/d7/" + "Hpmv0s23GEXw/" + "oRGlFFdO+" + "28m8VfvIO6M5o87PYUj3VsREhntlX8r3dheXMfaDH1i06SB92iXzzPXdyUqOO/" + "1+/85pnNc+hRc/38S1PVvTXG9MPM2ydwwr65i0cAt/" + "mbee4b2yGH9tN48fZVlVXcPlLyxEgE8f6EdEeBilFVXMWr6H15dsZ8P+" + "YyQ3i2JE7yxu7ZPNGYk/" + "HYZEBQdjDO8u3cUTc9dRYwzjBnfhlnOza705dPXuEq76+2Lu7t+ehwd1CUC1/" + "tOQO4b9diYgIu2AR4BEY8z1/" + "tqvavrG9GtPSVklE77cQnrzGB68rJNH23u3YBdbi07wysieRITbWkTjoiK4+" + "dw2jOidxddbDzH1q+28PH8LExdsZVDXltx+" + "Xg49s1vos5SDyJ7iMsbOXMXCjUX0aZfM09d1p01KnMvlu2YmMqxHK6Ys3sbIPt" + "m0qmWMsVDkVgiIyBTgKuCAMaarw/" + "xBwItAOPCqMeYpV9swxmwFRovIDM9KVqHot5d3Zm9JORO+" + "3MzAMzM4s1Vio7ZTWlHFC59tIj+7BZfnZfzkfRHhvPapnNc+lV2HS3nzmx1M/" + "24nc3/YS94Zzema2ZykuCgSYyNJioskKTaKpLjI/" + "03HRdEsKlzDwoeMMbxXsIsnPlpHVY3hz0PP5FYX3/6d/XZgZ+at3sdz/" + "9nIczd290O1wc+" + "t5iAR6QccB944FQIiEg5sBC4DCoGlwAhsgTDeaRN3GGMO2Neb4e6ZgDYHKUfFp" + "RUM+NsCMlvEMfPu8xrVP/" + "DS55v423838sHdfemZnezWOqUVVfx7+" + "W7eLyhkb0kZxaWVnKyjozoiTE4HQ1xUBBHhQmRYGBHhQkR4GJFh4vQ6jMhwIcK" + "+TExkOCnNokhLiCYtIZr0hGhS46NJjI0M+XDZU1zGuJmrWLCxiHPb2tr+6/" + "r2X5vx89YxadFW5t53IXmtmvuo0sBqSHOQ230CIpIDfOQQAn2Bx4wxA+" + "3T4wCMMc4B4LydOkNARMYAYwDatGnTc8cO7c1X//" + "Phit38avoKHh96JiP75jRo3YPHT3LR019yQcdUXhnp1v8Pl8orqykpq6S4tJLi" + "0gqKyyopKa2kuKzCNq/MNr+0opqqakNldQ1VNcb2U11jm1dj+7OquoZKh/" + "llldVU1fz0/" + "2VUeBip8bZwSI2PPh0SjtMpzaJIbhZF85hISw2a6Pztf+" + "zgLozs4963f2clZZVc9MyXdMtM5M3R5/" + "qg2sDzV59AJrDLYboQcPk3KiIpwJPA2SIyzlVYGGMmAZPAdibgQX3KgoZ0b8WM" + "ZYU8/" + "ckGLj+" + "zJRnNY9xe96XPN1FeVcPvvNApGBMZTkxkeIP27y5jDCVllRw8fpIDx05SZP85e" + "LzC9vr4SfaUlPPD7hIOHT9JLXlBmECLuCha2EMh+fTrSJKbRZPcLJIWcfb37D+" + "xkcHZjLW3pIyxH9i+/fdum8wz15/" + "l0bOqE2MjuffiDjwxdx0LNxbRr1OaF6ttevzWMWyMOQTc5a/" + "9KWsSEZ4Y1pXLn1/" + "In+" + "esZcIt57i13raDJ3jn253c1CuL9mnxPq7SMyJCUlwUSXFRdEhPqHPZ6hrD4RP/" + "C4cjJyo4dKKCIycqOFxq//" + "NEBVuKjnNkRwVHSiupri01gKiIMBKiI4iPiSA+2uEn5n9/" + "JtjnNYuOICEmgvjoyNPvJ9j/jPNSn4gxhvcLCnn8o7VU1RgeuzqP2/" + "rmeOUMZ2TfbF7/ejt/" + "mbeO8zukeu3S46bIkxDYDWQ5TLe2z1PKp7JTmnHfJR149j8buW79fi7p8tMOXm" + "fPfrqByPAwHri0ox8q9J/" + "wMDndJOSOmhrDsfIqDpfawuGwY2CUVnC8vIoTJ6s4frKKY+" + "VV7DtazvGiKo6X2+" + "bV1RdySmS4kBgbRWJsxP860WMjaX66Mz2SRHunuuO85rGRRNqv1tpbYmv7n7/" + "BO9/" + "+nUVHhPO7gV24b9pyZn5fyA35WfWvZFGehMBSoKOItMX24T8cuNkrVSlVjzH92" + "jNrxR7+b9Ya+jyYQlyU61/l5TuPMHfVXu6/" + "tCPpPmi+aUrCwoTEONuHcNvUhn+oVlTV/" + "Cgkjp+0hcaxk7agOFpeebqv5GiZrY9k/9FyNu4/RklpJcdOVtW5/" + "fjoCBJjIykuraDG4NVv/" + "86uOusMXl28jef+s5GrzmpFbFRo3hzo7iWi04D+" + "QKqIFAKPGmMmi8i9wKfYrgiaYoxZ47NKlXIQFRHGX67pxo2vfM2Ln21i3BW5tS" + "5njGH8x+tJjY9iTL92fq7SeqIiwoiKsPUvNEZVdQ1Hy6soLq2whYW9Q/" + "1UcJTYgyNchHsv6eDVb//ORITfD+7CTZO+YcpX2/jlxR18tq9g5lYIGGNGuJg/" + "D5jn1YqUclPvtskM75XFq4u3MbRHZq2X+32x/" + "gDfbTvMn4eeSXy0jpISaBHhYac7ooPBue1SGJCbwcvztzC8VxYp8e41q1mJDiC" + "nmrSxg7uQFBvJ7/" + "+96icdntU1hr9+" + "sp6clDhG9G4ToApVsBs7uAtlldW89PmmQJcSEBoCqklLiovi/" + "67KY8Wu4p+MEPnBskI27j/OQwO7nO5wVMpZh/R4hvfK4u1vd7K16Higy/E7/" + "Z+hmryhPVpxQYdUnv5kA/uPlgNQVlHN3/" + "67ke5ZSVzRrWWAK1TB7oEBnYiKCOPpTzYEuhS/" + "0xBQTd6pewdOVtfw5zlrAZjy1Tb2HS1n3OAuQXkDlAouaQnR/" + "KJfez5Zs49lOw4Huhy/" + "0hBQlpCT2oz7L+nA3FV7+WBZIRPnb+" + "HSLun0aZcS6NJUE3Fnv7akJ0Tz5Nx1IfVwIQ0BZRlj+rWnQ3o8v3l/" + "JScqqnh4sLXHjFfeFRcVwYOXdeL7ncV8EkLPI9YQUJYRFRHG+" + "Gu7AXB9z9Z0yqh7yAWlnN2Qn0WnjHj+GkLPI9YQUJbSKyeZTx64kMeHda1/" + "YaWchIdJyD2PWENAWU6Xls2JjgjNIQCU5/" + "p3TqNvuxRe+" + "mIzR8srA12Oz2kIKKWUAxHh91fkcvhEBRPnbwl0OT6nIaCUUk66tbY9j3jy4m3" + "sKS4LdDk+pSGglFK1+O3AzhgDz/" + "1nY6BL8SkNAaWUqkXrFnGMOj+HmcsLWbvnaKDL8RkNAaWUcuGX/" + "TvQPCaS8R+" + "vC3QpPqMhoJRSLiTGRXLfJR1YtOkgCzcWBbocn9AQUEqpOozsm01Wcix/" + "mbfO5fOZmzINAaWUqsOp5xGv33eMfy+33mPUNQSUUqoeV511Bt1bJ/" + "LcfzZQXlkd6HK8SkNAKaXqceoGsr0l5UxevC3Q5XiV30JARHJFZKKIzBCRu/" + "21X6WU8gbH5xEfOn4y0OV4jVshICJTROSAiKx2mj9IRDaIyGYRGVvXNowx64wx" + "dwE3Auc3vmSllAoMKz6P2N0zganAIMcZIhIOTAAGA3nACBHJE5FuIvKR00+" + "6fZ0hwFxgnteOQCml/KRDejw32Z9HvO3giUCX4xVuhYAxZiHg/" + "My13sBmY8xWY0wFMB0YaoxZZYy5yunngH07s40xg4FbXO1LRMaISIGIFBQVWfO" + "6XKVU0/" + "XAgI725xGvD3QpXuFJn0AmsMthutA+r1Yi0l9EXhKRV6jjTMAYM8kYk2+" + "MyU9LS/OgPKWU8r70hBjuOL8tH6/ex4Fj5YEux2MR/tqRMWY+MN9f+1NKKV/" + "JTokD4GRl03/" + "6mCdnAruBLIfp1vZ5SimlmghPQmAp0FFE2opIFDAcmO2dspRSSvmDu5eITgO+" + "BjqLSKGIjDbGVAH3Ap8C64D3jDFrfFeqUkoFBxEJdAle41afgDFmhIv589DLPZ" + "VSIcpYYDw5HTZCKaUayDrnARoCSikV0jQElFKqkQxNvz1IQ0AppRrIQv3CGgJK" + "KdVY2jGslFIhSM8ElFJKWYKGgFJKNZIFWoM0BJRSqqHEQncKaAgopVQjGQv0DG" + "sIKKVUA2nHsFJKKUvQEFBKqUZq+" + "o1BGgJKKRXSNASUUqqRLNAvrCGglFINZaWHymgIKKVUCNMQUEqpRmv67UEaAko" + "p1UDWaQzyYwiISH8RWSQiE0Wkv7/" + "2q5RSvhIyHcMiMkVEDojIaqf5g0Rkg4hsFpGx9WzGAMeBGKCwceUqpVTgWahfm" + "Ag3l5sK/AN449QMEQkHJgCXYftQXyois4FwYLzT+ncAi4wxC0QkA/" + "gbcItnpSulVGBZ4ETAvRAwxiwUkRyn2b2BzcaYrQAiMh0YaowZD1xVx+" + "aOANGu3hSRMcAY++RxEdngTo0OUoGDDVwn2OkxNQ16TE2D146p81+" + "9sRWvcD6mbHdXdPdMoDaZwC6H6ULgXFcLi8i1wEAgCdtZRa2MMZOASY0tSkQKj" + "DH5jV0/" + "GOkxNQ16TE2DHtOPeRICDWKMmQnM9Nf+lFJK1c+" + "Tq4N2A1kO063t85RSSjURnoTAUqCjiLQVkShgODDbO2V5pNFNSUFMj6lp0GNqG" + "vSYHIg7T8YRkWlAf2ydD/" + "uBR40xk0XkCuAFbFcETTHGPNnYQpRSSvmfWyGglFLKmnTYCKWUCmFNNgTqu1tZ" + "RKJF5F37+9/" + "Wcp9D0HHjmB4UkbUi8oOIfC4ibl8LHCju3lUuIteJiBGRoL90z51jEpEb7f9Wa" + "0TkHX/X2FBu/O61EZEvRWS5/" + "ffvikDU6S5Xoxw4vC8i8pL9eH8QkXP8XWNDuXFMt9iPZZWILBGR7m5t2BjT5H6" + "w9UFsAdoBUcBKIM9pmXuAifbXw4F3A123F47pYiDO/" + "vpuKxyTfbkEYCHwDZAf6Lq98O/" + "UEVgOtLBPpwe6bi8c0yTgbvvrPGB7oOuu55j6AecAq128fwXwMbax4PoA3wa6Z" + "i8c03kOv3OD3T2mpnomcPpuZWNMBTAdGOq0zFDgdfvrGcClEtxPgqj3mIwxXxp" + "jSu2T32C7LDeYufPvBPA48Feg3J/" + "FNZI7x3QnMMEYcwTAGHPAzzU2lDvHZIDm9teJwB4/" + "1tdgxpiFwOE6FhkKvGFsvgGSROQM/" + "1TXOPUdkzFmyanfORrw+" + "dBUQ6C2u5UzXS1jjKkCSoAUv1TXOO4ck6PR2L7JBLN6j8l+" + "Gp5ljJnrz8I84M6/" + "Uyegk4h8JSLfiMggv1XXOO4c02PArSJSCMwD7vNPaT7T0P9vTY3bnw9+" + "u2NYeY+I3ArkAxcFuhZPiEgYtsEERwW4FG+LwNYk1B/" + "bt7GFItLNGFMcyKI8NAKYaox5TkT6Am+KSFdjTE2gC1M/" + "JiIXYwuBC9xZvqmeCbhzt/LpZUQkAtsp7CG/" + "VNc4bt2BLSIDgEeAIcaYk36qrbHqO6YEoCswX0S2Y2ubnR3kncPu/" + "DsVArONMZXGmG3ARmyhEKzcOabRwHsAxpivsQ0Jn+" + "qX6nzDkiMeiMhZwKvYBvN06/" + "OuqYaAO3crzwZ+" + "Zn99PfCFsfeYBKl6j0lEzgZewRYAwd7ODPUckzGmxBiTaozJMcbkYGvHHGKMKQ" + "hMuW5x53dvFrazAEQkFVvz0FY/" + "1thQ7hzTTuBSABHJxRYCRX6t0rtmA7fZrxLqA5QYY/" + "YGuihPiEgbbOOzjTTGbHR7xUD3eHvQU34Ftm9YW4BH7PP+jO1DBGy/" + "pO8Dm4HvgHaBrtkLx/QZtju2V9h/Zge6Zk+PyWnZ+QT51UFu/" + "jsJtmautcAqYHiga/bCMeUBX2G7cmgFcHmga67neKYBe4FKbGdmo4G7gLsc/" + "o0m2I93VRP5vavvmF7FNlT/" + "qc+" + "HAne2q3cMK6VUCGuqzUFKKaW8QENAKaVCmIaAUkqFMA0BpZQKYRoCSikVwjQEl" + "FIqhGkIKKVUCPt/w8MPACkgX4YAAAAASUVORK5CYII=", + "text/plain" : ["
"] + }, + "metadata" : {"needs_background" : "light"}, + "output_type" : "display_data" + } + ], + "source" : [ + "# interpolate exact solution\n", + "exact_at_sim = np.interp(r, x, den)\n", + "diff = np.abs(rho - exact_at_sim)\n", + "rel_diff = diff / exact_at_sim\n", "\n", + "print(np.min(rel_diff), np.max(rel_diff))\n", + "plt.plot(r, rel_diff, label='density')\n", "plt.yscale('log')\n", + "plt.ylim(1e-5, 1e10)\n", "plt.title('relative error')\n", + "plt.legend(loc='upper right')\n", "plt.show()" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# interpolate exact solution\n", - "exact_at_sim = np.interp(r, x, den)\n", - "diff = np.abs(rho - exact_at_sim)\n", - "rel_diff = diff / exact_at_sim\n", - "\n", - "print(np.min(rel_diff), np.max(rel_diff))\n", - "plt.plot(r, rel_diff, label='density')\n", - "plt.yscale('log')\n", - "plt.ylim(1e-5, 1e10)\n", - "plt.title('relative error')\n", - "plt.legend(loc='upper right')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0 dimensionless 1.6895137149977217 dimensionless\n" - ] }, { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "cell_type" : "code", + "execution_count" : 18, + "metadata" : {}, + "outputs" : [ + { + "name" : "stdout", + "output_type" : "stream", + "text" : ["0.0 dimensionless 1.6895137149977217 dimensionless\n"] + }, + { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEICAYAAAC55kg0AAAAOXRFWHRTb2Z0d2" + "FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGli" + "Lm9yZy/" + "YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAxL0lEQVR4nO3deXxU9b34/" + "9c7O0mGBJKQAcIekrDJjoqKWFEBC2JVkNpa1Mpt/" + "Vp79fdta9t7f7W316u97dXWamu5xaq1irhUQVFcKILgAiIokATCmkAgCZCNkGU" + "yn+8fM8EQskwy25mZ9/" + "PxyIPMmbO8D0nOez7LeR8xxqCUUioyRQU7AKWUUsGjSUAppSKYJgGllIpgmgSU" + "UiqCaRJQSqkIpklAKaUimCYBFVJEZImIfOjjfQ4VESMiMb7cr1KhQJOAUt2gCU" + "OFG00CSlmUuES1Wdat5KPJSnVFk4CyHBG5X0T2iUiNiOwWkevPX0UeF5EqESkQ" + "kStbvbFERPa7tz0gIre4l0eJyL+" + "JyCERKRORZ0UkpYPjHxSRWa1ePyAiz7lfbnD/" + "WykitSJysXud20UkX0ROichaERnSyfldJCKbRaRSRHaIyMxW760XkQdFZBNQBw" + "x3tzz+" + "j4jsBfa617tTRIpE5KSIrBKRAa32cd76SnVEk4Cyon3AZUAK8EvgORHp3+" + "r9C93rpAO/AF4Vkb4ikgQ8BswxxtiA6cB29zZL3F9XAMOBZODxHsQ2w/" + "1vqjEm2RjzkYhcB/wM+AaQAWwEXmhvYxEZCLwJ/CfQF/i/" + "wCsiktFqtW8DSwEbcMi9bIH7vEeLyNeAh4CFQH/" + "3OivaHOrs+" + "j04RxVBNAkoyzHGvGSMOWqMcRpjXsT1aXZaq1XKgN8ZY5rc7xcC17rfcwJjRaS" + "XMabUGLPLvfwW4BFjzH5jTC3wU+" + "BmH3WXfA94yBiTb4xxAP8FTOigNfAtYI0xZo37/" + "N4FtgJzW63ztDFmlzHGYYxpci97yBhz0hhzxn0uTxljthljGtzncrGIDG21j9b" + "rK9UhTQLKckTkVhHZ7u4uqQTG4vrU3+" + "KIObfy4SFggDHmNLAI10W5VETeFJE89zoD+OpTdcs2MUCmD0IeAvy+" + "VbwnAQEGdrDuTS3rute/" + "FNcn+hbF7WzXetk55+JOaifaHK+9fSh1Hk0CylLcn57/" + "F7gbSDPGpAI7cV1UWwwUkdavBwNHAYwxa40xV+G6qBa494X7/" + "SFttnEAx9sJ4zSQ2Oq1vdX37ZXdLQb+xRiT2uqrlzFmcwfr/" + "q3NuknGmIe7OEbrZeeci7sbLA040sU+" + "lDqPJgFlNUm4LmDlACJyG66WQGv9gHtEJFZEbgJGAWtEJFNErnNfFBuAWlzdQ+" + "Dqo79XRIaJSDKuLpsX3d03bW3H1VUUKyJTgBtbvVfu3ufwVsueBH4qImPcMae4" + "42rPc8A8EblGRKJFJEFEZopIVpf/" + "M195AbhNRCaISLz7XD4xxhzsxj6UAjQJKIsxxuwG/" + "gf4CNen9HHApjarfQKMBCqAB4EbjTEncP0+34frk/" + "JJ4HLg++5tngL+hmt2zwGgHvhBB2H8OzACOIVrYPr5VvHVuY+5yd2dc5Ex5h/" + "Ar4EVIlKNq+Uyp4PzKwZaBpLLcbUMfkQ3/" + "haNMe+" + "5Y3wFKHXHerOn2yvVmuhDZZRSKnJpS0AppSJYwJKAiAwXkeUi8nKgjqmUUqpzX" + "iUBEXnKffflzjbLZ4tIofuOxvsB3POz7/" + "DmeEoppXzL25bA08Ds1gtEJBp4AtfA2GhgsYjoXYtKKWVBXt0taYzZ0OYuRXDd" + "2VlkjNkPICIrcM2G2O3JPkVkKa5b5klKSpqcl5fXxRZKKaVa++yzzyqMMRldr+" + "llEujAQM69W7EEuFBE0nBNrZsoIj81xjzU3sbGmGXAMoApU6aYrVu3+" + "iFEpZQKXyJyqOu1XAJWZtY9j/t7nqwrIvOAednZ2f4NSimlIpw/" + "ZgcdAQa1ep3Fubezd8kYs9oYszQlpd1Kv0oppXzEH0lgCzDSfXt+" + "HK47GVd1ZwciMk9EllVVVfkhPKWUUi286g4SkReAmUC6iJQAvzDGLBeRu4G1QD" + "Sukre7OtnNeYwxq4HVU6ZMubPte01NTZSUlFBfX+" + "9N6GErISGBrKwsYmNjgx2KUioEeDs7aHEHy9cAa3q6387GBEpKSrDZbAwdOpRz" + "C0kqYwwnTpygpKSEYcOGBTscpVQIsGTZiM7GBOrr60lLS9ME0A4RIS0tTVtJSi" + "mPWTIJdDUmoAmgY/p/o5TqDksmAZ0dpJRSgWHJJBBKHnjgAX7729/" + "6bH9z586lsrKSyspK/vjHP/" + "psv0op1R5LJoFIniK6Zs0aUlNTNQkopQLCkknA6t1BDz74IDk5OVx66aUUFhYC" + "sG/fPmbPns3kyZO57LLLKCgoAGDJkiXcc889TJ8+neHDh/" + "Pyy65K2qWlpcyYMYMJEyYwduxYNm7cCMDQoUOpqKjg/vvvZ9++fUyYMIEf/" + "ehH3Hrrrbz22mtnY7jlllt4/" + "fXXA3viSqmwE7CyEf7wy9W72H202qf7HD2gN7+YN6bD9z/" + "77DNWrFjB9u3bcTgcTJo0icmTJ7N06VKefPJJRo4cySeffMJdd93FunXrANcF/" + "8MPP6SgoID58+dz44038vzzz3PNNdfw85//" + "nObmZurq6s45zsMPP8zOnTvZvn07AB988AGPPvooCxYsoKqqis2bN/PMM8/" + "49NyVUpEnpJNAMGzcuJHrr7+exMREAObPn099fT2bN2/" + "mppu+erZ4Q0PD2e8XLFhAVFQUo0eP5vjx4wBMnTqV22+/" + "naamJhYsWMCECRM6Pe7ll1/" + "OXXfdRXl5Oa+88go33HADMTH641NKeceSVxFPC8h19ok9kJxOJ6mpqWc/" + "tbcVHx9/9vuWZzrPmDGDDRs28Oabb7JkyRLuu+8+br311k6Pc+utt/" + "Lcc8+xYsUK/vrXv/" + "osfqVU5NIxgW6aMWMGr732GmfOnKGmpobVq1eTmJjIsGHDeOmllwDXhX7Hjh2d" + "7ufQoUNkZmZy55138t3vfpdt27ad877NZqOmpuacZUuWLOF3v/" + "sdAKNH63N6lFLes2QSsLJJkyaxaNEixo8fz5w5c5g6dSoAf//" + "731m+fDnjx49nzJgxXQ7arl+/" + "nvHjxzNx4kRefPFFfvjDH57zflpaGpdccgljx47lRz/" + "6EQCZmZmMGjWK2267zT8np5SKONLSPWFF7T1UJj8/" + "n1GjRgUpouCqq6tj3LhxbNu2jc5aSZH8f6SUAhH5zBgzxZN1LdkSiOT7BDry3n" + "vvMWrUKH7wgx90mgCUUqo7LDkw3Fkp6Ug1a9YsDh3y+" + "IlxSinlEUu2BLpi5S6sYNP/G6VUd4RcEkhISODEiRN6sWtHy/" + "MEEhISgh2KUipEWLI7qDNZWVmUlJRQXl4e7FAsqeXJYkop5YmQSwKxsbH61Cyl" + "lPKRkOsOUkop5TuWTAI6RVQppQLDkknAymUjlFKhpay6ns8Pnwp2GJZlySSglF" + "K+8rN/7OTbyz/F6dQZhe3RJKCUCltl1fX8s7CM2gYHh0/" + "Wdb1BBNIkoJQKW69+" + "foRmdwug4FhNF2tHJk0CSqmwZIxh5ZZixg7sDUChJoF2aRJQSoWlzw6dYn/" + "Fab5z8VAG902k8LhvH0UbLgKWBEQkSUSeEZH/" + "FZFbAnVcpVRkenFLMUlx0cwd159cu027gzrgVRIQkadEpExEdrZZPltECkWkSE" + "Tudy/" + "+BvCyMeZOYL43x1VKqc7UNjh488tS5o0fQFJ8DHl2GwcrTlPf1Bzs0CzH25bA0" + "8Ds1gtEJBp4ApgDjAYWi8hoIAsodq+mPwmllN+8+" + "cVR6hqbuWnKIABy7TacBorKaoMcmfV4lQSMMRuAk20WTwOKjDH7jTGNwArgOqA" + "EVyLw+rhKKdWZlVtLyO6XzKTBqQDk2W2ADg63xx8X44F89YkfXBf/" + "gcCrwA0i8idgdUcbi8hSEdkqIlu1UqhSqruKymr47NApFk7JQkQAGJqWRFxMFI" + "XHNQm0FbAqosaY00CXT0g3xiwTkVJgXlxc3GT/R6aUCicrt5YQEyVcP/" + "Grkuox0VFkZyTr4HA7/NESOAIMavU6y73MY1o7SCnVE03NTl7dVsLX8vqRYYs/" + "5708u43CYzpNtC1/" + "JIEtwEgRGSYiccDNwKru7ECriCqlemJdQRkVtY0smjrovPdy7TaOVzdQWdcYhM" + "isy9spoi8AHwG5IlIiIncYYxzA3cBaIB9YaYzZ1Z39aktAKdUTL20tpp8tnstz" + "Ms57L9c9OKxdQufyakzAGLO4g+VrgDU93a+" + "IzAPmZWdn93QXSqkI4yoWV87SGcOJiT7/822e/" + "avyERcNTwt0eJZlyama2hJQSnXXK9tcxeJumtz+" + "M7Yze8eT0itWWwJtWDIJKKVUdxhjeGlrMdOG9mV4RnK764gIuTo4fB5LJgEdGF" + "ZKdcdWd7G4m6a03wpokWe3sed4LcboA2ZaWDIJaHeQUqo7WorFXXtB/" + "07Xy7XbqG1wUHLqTIAisz5LJgGllPJUbYODN79wFYtLjOt8rouWjzifJZOAdgc" + "ppTz1xo6jnGlqZmE79wa0lZPpTgJaPuIsSyYB7Q5SSnlq5dZisvslM3FQapfr2" + "hJiGZjaS2cItWLJJKCUUp4oKqth2+" + "FKFk0ZdLZYXFe0fMS5LJkEtDtIKeWJs8XiJg30eJtcu4395adpdDj9GFnosGQS" + "0O4gpVRXWorFXTmqH+nJ8V1v4JZrt+" + "FwGvaV6wNmwKJJQCmlutJSLG7hlK4HhFtrXT5CaRJQSoWolVs6LhbXmeEZScRG" + "iw4Ou2kSUEqFnOPV9fyzsIwbJme1WyyuM7HRUYzISNbBYTdLJgEdGFZKdeaVbS" + "U4Dd3uCmrhqiGkLQGwaBLQgWGlVEdcxeJKmDa0L8PSk3q0j5xMG0er6qk60+" + "Tj6EKPJZOAUkp1ZMvBUxyoOO3RHcIdaSkfsUfvHNYkoJQKLSu3FpMcH8PccfYe" + "70OfMvYVTQJKqZBRU9/kLhbXv8ticZ0ZmNoLW3yMDg6jSUApFULe/" + "KKUM03N3NTDAeEWIkKODg4DFk0COjtIKdWeF7cWM9LDYnFdaZkhFOkPmLFkEtD" + "ZQUqptvYer+" + "Hzw5Usmup5sbjO5NltVNc7OFZd74PoQpclk4BSSrW1cmsxMVHCgomeF4vrTG6m" + "Dg6DJgGlVAhodDh5ddsRZo3K7FaxuM5oDSEXTQJKKctbV1DGidONLJza+" + "YPkuyMlMRZ77wRNAsEOQCmlurJyazGZveOZMbJ7xeK6kmu3aXdQsANQSqnOHK+" + "uZ31hGTdM6n6xuK7k2W3sK6ulqTlyHzCjSUApZWkvf+" + "ZdsbjO5NptNDY7OVhx2uf7DhUBSwIiMlxElovIy4E6plIqtLmKxRUzbVhfhvaw" + "WFxntHyEh0lARJ4SkTIR2dlm+WwRKRSRIhG5v7N9GGP2G2Pu8CZYpVRk+" + "fTASQ6eqGORH1oBANn9komOkogeHPa0+" + "MbTwOPAsy0LRCQaeAK4CigBtojIKiAaeKjN9rcbY8q8jlYpFVFWbi0hOT6GOV4" + "Ui+" + "tMfEw0w9KTIrol4FESMMZsEJGhbRZPA4qMMfsBRGQFcJ0x5iHg6z0NSESWAksB" + "Bg8e3NPdKKVCXE19E2u+" + "LGXBxIFeFYvrSq7dxhcllX7bv9V5MyYwEChu9brEvaxdIpImIk8CE0Xkpx2tZ4" + "xZBvwS2BYXF+dFeEqpUPaGu1jcwim+" + "uzegPXmZNopPnqG2weHX41hVwAaGjTEnjDHfM8aMcLcWOltXawcpFeFe3FJMTm" + "YyE3xQLK4zuRH+" + "gBlvksARoPVoTZZ7mde0iqhSkW3P8Rq2F1eycIpvisV1JtLLR3iTBLYAI0VkmI" + "jEATcDq3wRlLYElIpsK7e4isVd76NicZ3J6tOLxLhoTQKdEZEXgI+" + "AXBEpEZE7jDEO4G5gLZAPrDTG7PJFUNoSUCpyNTqc/" + "ONzV7G4NB8Vi+tMVJSQk2mjIEKfMubp7KDFHSxfA6zxaUSu/" + "a4GVk+ZMuVOX+9bKWVdm4oqeOitfE6cbuTmaf65N6A9eXYba3cdwxjj9+" + "4nq9GyEUqpoNt9tJpbn/qUW/7yCadON/" + "G7RROYmdsvYMfPtds4VddEeU1DwI5pFf6bfOsFEZkHzMvOzg52KEopPyo5Vccj" + "7+zhH9uP0Dshlp/" + "PHcW3Lx5CQmx0QONoXT6iX++EgB472CyZBLQ7SKnwVlnXyBP/" + "LOKZzYdAYOmM4dx1eTYpibFBiaf1DKEZOb4tV211lkwCSqnwVN/UzNObD/" + "LHfxZR0+" + "DghklZ3HdVDgNSewU1rr5JcWTY4iOyfIQlk4B2BykVXpqdhle3lfDIu3sorarn" + "itwMfjIn7+wncCvIs9soPB55M4QsmQS0O0ip8GCMYX1hOb9+" + "u4CCYzWMz0rhkYUTuHhEWrBDO09upo2/" + "fXyIZqchOipyZghZMgkopULfjuJKHnorn4/" + "3n2RIWiKPf3Mi147rb9kpmDl2Gw0OJwdPnGZERnKwwwkYSyYB7Q5SKnQdOnGa/" + "15byJtflJKWFMcv549h8bTBxMVYe0Z6nnuGUOGxGk0CwabdQUqFnoraBh5fV8R" + "zHx8iNjqKe76WzZ0zhmNLCM6Mn+4a2c+" + "GiCsJzB3XP9jhBIwlk4BSKnScOt3Inzfs55nNB2lsdrJo6iD+" + "9cqRITffvldcNEPTkiKuhpAmAaVUj1SdaeIvG/" + "fz1IcHqGtqZv74Adxz5ciQ7krJzbRRGGElpTUJKKW6paa+ib9uOsj/" + "btxPTb2DuePs/OusHHIybcEOzWu5dhtrdx/" + "jTGMzveICe9dysFgyCejAsFLWU9fo4JnNh/" + "jzhn1U1jVx1ehM7p2Vw+gB1pnr7608uw1jYG9ZDRdkpQY7nICwZBLQgWGlrKO+" + "qZnnPj7En9bv48TpRmbmZnDfVTlheZFsXUMoHM+vPZZMAkqp4GtwNLPi02Ke+" + "GcRZTUNXJqdzr1X5TB5SJ9gh+Y3Q9KSSIiNiqjBYU0CSqlzNDU7eWlrCY+" + "v28vRqnqmDevLY4snctFw693l62vRUcLIfjZNAkqpyONodj3R67F1eyk+" + "eYaJg1P57xvHc0l2mmXv8vWHXLuN9YXlwQ4jYDQJKBXh6pua+" + "cfnR1i2YT8HKk4zbmAK/" + "3HbWGbmZETUxb9Fnt3Gy5+VcKK2ISCPtww2SyYBnR2klP+" + "V1dTz3EeHeO6Tw5w83ciYAb1Z9u3JXDU6MyIv/" + "i1yW5WPmJ6tSSAodHaQUv6TX1rN8g8PsGr7UZqcTq7My+S7lw3jwmF9I/" + "ri36L1DKHp2elBjsb/LJkElFK+5XQaPthbzvKNB/" + "iwqIJesdHcPG0Qt10yjGHpScEOz1IykuPpmxQXMYPDmgSUCmP1Tc28uu0Iyz/" + "cz77y02T2jufHs3P55rTBpCbGBTs8SxIRcjNtFERI+QhNAkqFobKaev720SGe+" + "/gQp+qaGDuwN79bNIG54/" + "pbvqSzFeTabazcWozTaYgK8wfMaBJQKozsPuru799xBIfTMGtUJt+9dBjTtL+/" + "W/LsNuoamyk+VceQtPDuLtMkoFSIa3Ya1hWU8ddNB9i87wS9YqP55rTBLNH+/" + "h5rPTisSUApZUnV9U2s3FLMsx8d4vDJOvqnJPDj2bncMm0IKYmh8SAXq2qpiFp" + "4rIZrxtiDHI1/" + "BTQJiMgC4FqgN7DcGPNOII+vVDjYX17LM5sP8vJnJZxubGbKkD78ZHYeV4/" + "JJDZa+/t9ISk+hsF9EyNihpDHSUBEngK+DpQZY8a2Wj4b+D0QDfzFGPNwR/" + "swxrwGvCYifYDfApoElPKA02nYWFTBXzcdYH1hOXHRUXx9fH9umz6McVkpwQ4v" + "LOXabRQcqw52GH7XnZbA08DjwLMtC0QkGngCuAooAbaIyCpcCeGhNtvfbowpc3" + "//" + "b+7tlFKdON3g4NVtJTy9+SD7yk+" + "TYYvn3lk5fPPCwWTYwv9u1mDKs9tYV1BGfVMzCbHh+" + "4AZj5OAMWaDiAxts3gaUGSM2Q8gIiuA64wxD+FqNZxDXNMTHgbeMsZsa+" + "84IrIUWAowePBgT8Prtsq6Rl7ddoTF0wZHzBOEVOgoPlnHM5sP8uLWYmrqHYzP" + "StEpngGWa7fR7DQUldUydmD4tra8HRMYCBS3el0CXNjJ+" + "j8AZgEpIpJtjHmy7QrGmGXAMoApU6YYL+" + "Nr1wd7ynnwzd3sOV7L27uOkRAbzcDUBP7v1bkRUTBKWVdRWQ3//" + "XYh7+UfJ0qEOeP6s2T6UCYNTtUpngGW16qGkCYBHzHGPAY81tV6/" + "iwg9+7u49z57FYALshK4dMDJ8mz2/" + "h43wmKT57hmdunER3mN4co62lqdrJsw35+/" + "95eesVFc9fMbL510RDsKQnBDi1iDU1LIi4mKuwfPO9tEjgCDGr1Osu9zCv+" + "KCD3P+8Ucqyqnn3ltQxM7cWjiyYwZUgfahocpPSK5cUth/" + "nJK19y7WMb+fm1o7hsZIavDq1Up3YdreLHL3/BrqPVXDuuPw/MH6P9/" + "RYQEx1FdkYyBWE+Q8jbJLAFGCkiw3Bd/" + "G8GvultUL5uCTQ7DX9YVwRAfEwU375oCNOG9QUgpZdrPvWiqYOJi4nisfeLuOv" + "v23j//7ucfjb9FKb8p8HRzBPrivjj+n2kJsbxp1smMWdc/" + "2CHpVrJs9vYvO9EsMPwK49HmETkBeAjIFdESkTkDmOMA7gbWAvkAyuNMbu8Dco" + "Ys9oYszQlxTf9cPvLa89+3+Bwdjil7vqJWSz/" + "zhQaHE5+9Ua+" + "T46tVHu2F1cy7w8f8ti6IuZPGMB7983QBGBBuXYbx6rrqaprCnYoftOd2UGLO1" + "i+Bljjs4jwfUvA4Tx3fHnMgI6Ty/CMZO6+IptH3t3D9RMH8LW8TJ/" + "EoBS4qno+8u4e/rJxP5m9E/" + "jrkqlckdcv2GGpDuScLR9RzYVh+oxlS84183VLoK3ULm6p/" + "97lI8jNtPGzV3fyRUklH+07gTF+maikIsinB04y5/" + "cbWbZhP4umDmbtvTM0AVjc2RlCYTw4bMkkICLzRGRZVVWVT/" + "bX3et3XEwUv77xAspq6pn/+CYW/+/HfFhU4ZNYVOQ53eDgF6/" + "vZOGfP8LhdPL3717IQ98YR+8Ere9jdfbeCfROiAnrwWFLJgF/" + "twQ8mQA6YVAqy78zlUcXjccWH8PqHUf9EosKbx/ureDqRzfw7MeHWDJ9KG//" + "cAaXRMAjC8OFiJBn7x3WNYQiooqooWddOS1N9Y17Kli76zj/ucCpd2sqj5RV1/" + "Prtwt5ZVsJw9OTeOlfLmbK0L7BDkv1QK7dxmufH8EYE5Y37Fnyiubr7qB29t+" + "t9a+9oD9VZ5rYpF1CqgsNjmb+tH4fV/" + "x2Pat3HOWumSNY88PLNAGEsFy7jZoGB0cqzwQ7FL+" + "wZBLwd3dQd106Mh1bQgxvfFEa7FCURRljeGfXMa5+dAO/" + "fruA6dnpvHPvDH48Oy+" + "si49FgtblI8JRZHQHtekN6m6DLj4mmmvG2Fm94ygXDe/" + "LjZOzwrJZqHqm8FgNv3pjNx8WVTCyXzJ/" + "u2Oa3nEeRnJaPWXsylHhN2U8IpKAL/x4di7FJ+v40ctfsK6gjJ/" + "NHcWgvonBDkt5YX95LX9YV8S4gSlckp1OTmZyt5J7ZV0jj767h+c+" + "OUxSXDQPzBvNLRcN0Qe7hJneCbEMTO2lLYFA8mcBOdf+u79NP1sCz995EU9+" + "sI8/rNvL+/" + "ll3HHZMH545Uht7oeo17cf5R+fH+" + "Efn7vKXaUnxzN9RBqXZqczPTuNrD7tJ3lHs5PnPz3MI+/" + "uofpME7dcOIR7r8qhb1JcIMNXAZRrt2kSCCR/" + "FJDzhego4f9ckc03Jg3kN2sL+" + "dP6fbyff5xHFk4I61Kz4argWDXD05N49o5pbC46waZ9FWwqOsEq93TgIWmJTB+" + "RzqXZ6Vw8Io2+SXFsKqrgl6t3sed4LRcPT+MX80eTZ+8d5DNR/" + "pZrt7FhTzmNjvCbIWjJJOBv0u1RgXP1T+nFIwsnMH/8AH7yyhdc/" + "8dNvPy96YwflOqbAFVA5JfWMG5gCll9Elk4NZGFUwdhjGFvWS0f7q1g874KVu8" + "4ygufHgZcSeHQiToG9e3Fk9+azDVjMnVsKELk2W04nIb9FbVhl/" + "QjIgn4q+LDzNx+" + "vPXDGVz72EbufXE7b9xzKYlxEfFfGvJq6ps4fLKOmyZnnbNcRMjJtJGTaeP2S4" + "fhaHayo6SKzUUVfHb4FAunDOKOS4dpF2CEyW01Q0iTQAD4e0zAy4bAOfomxfE/" + "C8dzy18+4T/fzOe/rh/nu50rv2np3x3Vv/M/" + "6JjoKCYP6cPkIX0CEZayqOHpycRECQXHargu2MH4mCWTgK/" + "GBBzNzh7eK9w900eks/" + "Sy4fx5w37qGhyMzLQxun9vZuZmaHeBReWXVgMwakB4fapT/" + "hEXE8WIjOSwHBy2ZBLwldm/" + "30hRWS2r7r7knOX+" + "uC7fd3UOR6vq2bTvBK9tdw0s3jg5iwevH0t8TGR2HTianXx26BTvF5Sx9eBJrr" + "1gALdfMtQSiTH/" + "WA29E2IYoI9vVB7Ktdv47NCpYIfhc2GdBIrKarteyUfiY6L5w+" + "KJANQ1Oli2YT+/e28v+8trefiGCzhR28iBitP0SYxl9li7JS6E/" + "lBd38QHheW8n3+c9XvKqaxrIjZaGJKWxK/" + "e2M1H+yr4zY3j6RPk6ZT5pdXk9e8dtj8H5Xu5dhurdhylur4prCrAhnUS6Ii//" + "+wT42L411k55GTauG/ldq5+dMM5718/cSD/df04esWFRwuhur6J17cf5a0vS/" + "n0wEkcTkPfpDiuzMtk1qh+XDoyneT4GJ7efJCH1hQw97GNPLZ4IlODVE/" + "H6TQUHqth4ZRBXa+slFtL+Yg9x2rCqhZURCSB+" + "Y9vCspx547rT05mMp8cOMmQvkkMTU/" + "k1W1HePS9Pew5XsOT35pMVp9eVJ1poqK2gaOV9Rw+" + "WUfxyTqKT9XR7DT0io2mV1w0CbHRjBuYwtcvGGCJecrGGLYXV/" + "LCp4dZvaOUM03NjOyXzJ0zhjNrVD8mDOpDdNS56fa2S4YxZUhf7n5hGzcv+" + "5h7Z43k+zOzz1vP3w6drKOusZlR/W0BPa4KbbmtykdoEvAz/98xHLiLTnY/" + "G9n9vrrY3HPlSMYM6M2/rtjOlY98gDGGpuZzh6/joqPI6tOL2OgozjQ1U9/" + "UzOkGB3/ddJCH3yrgO9OHcsuFg0lNDHyXSnV9E69/foS/" + "f3KYgmM1JMZFs2DiAL45bUiHz25ubVxWCm/84FJ+9o+d/PadPXy8/" + "ySPLBpPP1vg+uYLWgaFu5gZpFRrA1N7YYuPCbvBYUsmAaveMewrV47K5PW7L+" + "HZjw6REBtNhi2e9OQ47L0TGJKWRD9bPFFtPh0bY9iwt4K/" + "bNzPb9YW8vi6Ir4xaSCzRmUybVhfkuJ996N0Oo2rZVJVz7GqMxytrOdYdT2HT9" + "Sxfk8Z9U1OxgzozYPXj+" + "W6CQNJ7uaxbQmxPHbzBC4ZkcYvVu1i7u838uiiCQErupZfWk2UQE6mtgSU50SE" + "nDAsH2HJJOBvVhgKHJ6RzAPzx3i8vohweU4Gl+dkUHCsmuUbD/DSZyX8/" + "ZPDxEQJkwb3YXp2GhMGpZIYF0N8TBTxsVHERUcRJUJZTQOlVWc4VlVPaVU9pVV" + "nOHW6iQZHM/VNTuodzTS4/" + "62td+BwtmmdxETRPyWBBRMG8s0LBzNuYIpXLSoR4eZpg5k4uA93P7+NW5/" + "6lPtn5/Evl4/o8T49tbu0hmHpSXrDl+q2XLuNN3YcDasHzERkEgh1efbe/" + "Oam8fzHdWPZeugkm4pOsKmogt+/" + "v9eju6OT42Pon5JA36Q4UhPjSIiNIiE2mvgY178t7/" + "dP6YU9JYEBqb3okxjrl1/" + "6XLuN1+++hHtf3M6v3y7gspEZjPbz3P380momDk716zFUeMqz23j+" + "EwfHquvpn9Ir2OH4REQmgTBJ4PSKi+" + "aykRlnu1Eq6xrZW1ZLQ5OTBkczjQ4nDQ4nDqchwxbPgJQE7CkJ2Cw2vS0xLoZf" + "33ABWw5+wL+/vpOX/uXi87rDfKW6vokjlWf45oWD/bJ/" + "Fd5yM78aHNYkoCwnNTEuaNMuvZWaGMf9s/" + "P48Stf8PK2Er9N3ywodfXnjtZBYdUDLXWD9hyr4YrcfkGOxjeCP9cwCLytIqr8" + "48bJWUwanMrDbxVQWdfol2O0lIvI0+" + "mhqgdSEmOx904Iq8HhiEwCypqiooRfLRhLZV0jv1lb6Jdj5JdWk+r+" + "Q1aqJ3LtNgo0CXSfiIwSkSdF5GUR+X6gjtt+LME8uurMmAEpfGf6UJ7/" + "9DA7iit9vv/" + "80mpG2bVchOq5PLuNovJaHM3OYIfiEx4lARF5SkTKRGRnm+" + "WzRaRQRIpE5P7O9mGMyTfGfA9YCFzS2boqst17VQ7pyfH8++" + "s7aXb6rg5ss9NQeLxGbxJTXsm122h0ODl44nSwQ/" + "EJT1sCTwOzWy8QkWjgCWAOMBpYLCKjRWSciLzR5qufe5v5wJvAGp+" + "dgQo7vRNi+bdrR/" + "FFSdXZp3r5wsETp6lvcmq5COWV1uUjwoFHScAYswE42WbxNKDIGLPfGNMIrACu" + "M8Z8aYz5epuvMvd+Vhlj5gC3dHQsEVkqIltFZGt5eXnPzkqFvPnjB3Dx8DR+" + "s7aQE7UNPtlnvpaLUD4wIiOZ6CgJm8Fhb8YEBgLFrV6XuJe1S0RmishjIvJnOm" + "kJGGOWGWOmGGOmZGT4p4yAdgdbn4jwH9eN4XSDg4ffKvDJPvNLq4mOErL7Jftk" + "fyoyJcRGMzQtMWxaAgG7T8AYsx5Y78m6fn+" + "8pAoJIzNt3HHZMP78wX4WTR3kdeXGgtIaRmRouQjlvTx7b748UhXsMHzCm5bAE" + "aD1HT1Z7mVeM8asNsYsTUnpuiplT+h9AqHjnq+NpH9KAv/" + "22k6vZ2Pkl1ZrV5DyiVy7jcMn6zjd4Ah2KF7zJglsAUaKyDARiQNuBlb5IigRm" + "Sciy6qqwiPTqp5Lio/h///6aAqO1fDsR4d6vJ/" + "KukaOVtVrElA+" + "kZPp6lI8UBH6M4Q8nSL6AvARkCsiJSJyhzHGAdwNrAXygZXGmF2+" + "CMrvLQFtCISU2WPtzMjJ4JF391BWXd+jfeS7y0W0PB1KKW+" + "0dCk2hsG9Ap7ODlpsjOlvjIk1xmQZY5a7l68xxuQYY0YYYx70VVDaElCtiQi/" + "nD+GRoeTh9/u2SBxy8wgrRmk1LksWTbC/2MCKtQMS0/" + "i5mmDeOOLUmp70A9bcKyatKQ4MmzxfohOqdBlySSgLQHVnq9fMIBGh5N/" + "FpR1e9v8UtedwlouQqlzWTIJ+" + "H9MQC8EoWjykD6kJ8fz9s5j3drO0eyk8HiNjgco1Q5LJgGl2hMdJcwem8m6gjL" + "ONDZ7vN2BitM0Opw6M0j5nCdP8rM6SyYBf3cHaTsgdM0d258zTc18sMfzLqF89" + "52dmgSUr4RTb4Ilk4C/" + "u4NU6Jo2rC99k+JY86XnXUL5pdXERmu5CKXaY8kk4G9hlMQjTkx0FFePzuT9/" + "OPUN3nWJZRfWs2IjGTiYiLy112pTulfhQo5c8b153RjMx/" + "urfBofS0XoVTHLJkE/" + "D4moE2BkDZ9RBopvWJZs7O0y3VPnm7keHWDPkNAqQ5YMgnomIDqTGx0FFeNzuT" + "d3cdpdHR+236BPkNAqU5ZMgko1ZW54+zU1DvYtK/" + "zLqHdmgSUX4X+HFFNAiokXZKdji0+hre+7LxLKL+" + "0hvTkeNKTtVyE8p1w6lC2ZBLw55iADgeEh/" + "iYaK4c1Y93dh+nqZNKjq5BYR0PUKojlkwCOiagPDFnXH8q65r4ZH/" + "bx1+7NDU7KSqr1cqhSnXCkknAn7QhED4uz8kgMS66w1lC+" + "8tP09is5SKU6kzEJQEVPhJio/laXj/W7jxGs/" + "P8Abp8HRRWqksRlwT0HoHwMmdsf06cbuTTA+" + "d3CeWXVhMXHcXwjKQgRKYigRaQUyrIZuZmkBAbxVvtdAntLq0mu18ysdH6a658" + "K5w+S0bcX0cY/" + "ewUrgfRz8zpx9s7j+Fs0yVUcKxGu4KU6oIlk4A+WUx1x5xxdspqGth2+" + "NTZZRW1DZTXaLkIpbpiySTgzymi4dSMUy5fy+" + "tHXHTUOeWldVBYKc9YMgko1R22hFhm5KTz1s7Ss11CmgSU8kzEJQHRUYGwNGds" + "f0qr6tlRUglAQWkNmb3j6ZsUF9zAVFgLg8lBkZcEVHiaNSqT2Gg5+" + "xD63foMAeVH4fRhMvKSQPj87FQrKYmxXJKdzpqdpTQ4mtlXXqtJQCkPRF4SUGF" + "rzlg7xSfP8Pr2ozQ1G/" + "LsOjNIqa4ENAmISJKIbBWRrwfyuOfEEKwDK7+" + "7arSd6Cjhsff3AmjhOKU84FESEJGnRKRMRHa2WT5bRApFpEhE7vdgVz8BVvYkU" + "KW60jcpjouHp1Fy6gxxMVEMS9dyEUp1xdOWwNPA7NYLRCQaeAKYA4wGFovIaBE" + "ZJyJvtPnqJyJXAbuBMh/G3216n0B4mzPODkBupo0YLReh/" + "CwcagfFeLKSMWaDiAxts3gaUGSM2Q8gIiuA64wxDwHndfeIyEwgCVfCOCMia4w" + "xnT8gVqluunq0nX9/" + "bafeKaz8Kpw+" + "THqUBDowEChu9boEuLCjlY0xPwcQkSVARUcJQESWAksBBg8e7EV47QunqV3qfB" + "m2eP70rck6KKyUh7xJAj1ijHm6i/" + "eXiUgpMC8uLm5yYKJS4eSaMfZgh6BUyPCm0/" + "QIMKjV6yz3Mq9p7SCllAoMb5LAFmCkiAwTkTjgZmCVL4LSKqJKKRUYnk4RfQH4" + "CMgVkRIRucMY4wDuBtYC+cBKY8wuXwTl15aAz/" + "eolIpUJgymB3k6O2hxB8vXAGt8GhGulgAwLzs729e7Vkopr4XTh0lLTqT2Z0tA" + "KaXUVyyZBJRSSgWGJZOADgwrpVRgWDIJaHeQUkoFhiWTgLYElFIqMCyZBLxtCb" + "yz6xjLPzzg46iUUupcoT9BNAhlIwLhnd3H+" + "WjfiWCHoZQKV2E0R9SSLQGllFKBYckkoGMCSikVGJZMAjo7SCmlAsOSSUAppVR" + "gaBJQSqkeCoP6cZoElFKqu8LpCYWWTAK+" + "GBgOhxKvSinlb5ZMAt4ODIdPjlZKKf+" + "yZBJQSikVGBGXBEQfMqyUUmdFXBJQSilfMWFQPUiTgFJKdVM4dShYMglo2Qill" + "AoMSyYBLRuhlFKBYckk4Auh31OnlFL+F5ZJIJz665RSyp/" + "CMgkopVRAhEGXgyYBpZTqpnDqbNAkoJRSEUyTgFJKRbCAJQERmSkiG0XkSRGZG" + "ajjKqWU6phHSUBEnhKRMhHZ2Wb5bBEpFJEiEbm/" + "i90YoBZIAEp6Fq5SSilfivFwvaeBx4FnWxaISDTwBHAVrov6FhFZBUQDD7XZ/" + "nZgozHmAxHJBB4BbvEu9M519DgBfc6AUspXwuFqIp5eFEVkKPCGMWas+/" + "XFwAPGmGvcr38KYIxpmwDa7icOeN4Yc2MH7y8Flrpf5gKFHgX4lXSgopvbWJ2e" + "U2jQcwoNkXBOQ4wxGZ5s6GlLoD0DgeJWr0uACztaWUS+" + "AVwDpOJqVbTLGLMMWNbToERkqzFmSk+" + "3tyI9p9Cg5xQa9JzO5U0S6BZjzKvAq4E6nlJKqa55MzvoCDCo1ess9zKllFIhw" + "psksAUYKSLD3P38NwOrfBOWV3rclWRhek6hQc8pNOg5teLRwLCIvADMxDX4cBz" + "4hTFmuYjMBX6Ha0bQU8aYB3saiFJKqcDzeHaQUkqp8KNlI5RSKoKFbBLo6m5lE" + "YkXkRfd73/ivs/B0jw4p/tEZLeIfCEi74vIkGDE2R2e3lUuIjeIiBERy0/" + "d8+ScRGSh+2e1S0SeD3SM3eXB795gEfmniHzu/" + "v2bG4w4u6OjSget3hcRecx9zl+IyKRAx9hdHpzTLe5z+VJENovI+" + "C53aowJuS9cYxD7gOFAHLADGN1mnbuAJ93f3wy8GOy4fXBOVwCJ7u+/" + "Hw7n5F7PBmwAPgamBDtuH/ycRgKfA33cr/" + "sFO24fnNMy4Pvu70cDB4MdtwfnNQOYBOzs4P25wFu4KkNfBHwS7Jh9cE7TW/" + "3ezfHknEK1JTANKDLG7DfGNAIrgOvarHMd8Iz7+5eBK0Us/cyxLs/" + "JGPNPY0yd++XHuKblWpknPyeAXwG/" + "BuoDGVwPeXJOdwJPGGNOARhjygIcY3d5ck4G6O3+" + "PgU4GsD4esQYswE42ckq1wHPGpePgVQR6R+Y6Hqmq3Myxmxu+" + "b3Dw2tEqCaB9u5WHtjROsYYB1AFpAUkup7x5JxauwPXpxgr6/" + "Kc3E3wQcaYNwMZmBc8+TnlADkisklEPhaR2QGLrmc8OacHgG+" + "JSAmwBvhBYELzq+7+zYUaj64RAbtjWPmOiHwLmAJcHuxYvCEiUbiKCS4Jcii+" + "FoOrS2gmrk9iG0RknDGmMphBeWkx8LQx5n/" + "cdcP+JiJjjTHOYAemziciV+" + "BKApd2tW6otgQ8uVv57DoiEoOrCXsiINH1jEd3YIvILODnwHxjTEOAYuuprs7J" + "BowF1ovIQVz9sqssPjjsyc+" + "pBFhljGkyxhwA9uBKClblyTndAawEMMZ8hKskfHpAovOfsKx6ICIXAH8BrjPGd" + "HnNC9Uk4MndyquA77i/" + "vxFYZ9yjJRbV5TmJyETgz7gSgNX7maGLczLGVBlj0o0xQ40xQ3H1Yc43xmwNTr" + "ge8eR37zVcrQBEJB1X99D+" + "AMbYXZ6c02HgSgARGYUrCZQHNErfWwXc6p4ldBFQZYwpDXZQ3hCRwbhqtH3bGL" + "PHo42CPdrtxSj5XFyfsPYBP3cv+w9cFxFw/" + "ZK+BBQBnwLDgx2zD87pPVx3bG93f60KdszenlObdddj8dlBHv6cBFc3127gS+" + "DmYMfsg3MaDWzCNXNoO3B1sGP24JxeAEqBJlytszuA7wHfa/" + "VzesJ9zl+GyO9eV+f0F+BUq2vE1q72qXcMK6VUBAvV7iCllFI+" + "oElAKaUimCYBpZSKYJoElFIqgmkSUEqpCKZJQCmlIpgmAaWUimD/" + "D3Bw1ezxA5FWAAAAAElFTkSuQmCC", + "text/plain" : ["
"] + }, + "metadata" : {"needs_background" : "light"}, + "output_type" : "display_data" + } + ], + "source" : [ + "print(np.min(diff), np.max(diff))\n", + "plt.plot(r, diff, label='density')\n", "plt.yscale('log')\n", + "plt.ylim(1e-5, 10)\n", "plt.title('absolute error')\n", + "plt.legend(loc='upper left')\n", "plt.show()" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" } - ], - "source": [ - "print(np.min(diff), np.max(diff))\n", - "plt.plot(r, diff, label='density')\n", - "plt.yscale('log')\n", - "plt.ylim(1e-5, 10)\n", - "plt.title('absolute error')\n", - "plt.legend(loc='upper left')\n", - "plt.show()" - ] - } - ], - "metadata": { - "interpreter": { - "hash": "5d21aa510141f516aa4589cf93de6e254d300587727b9d0aa72219f1336bba5f" - }, - "kernelspec": { - "display_name": "Python 3.9.7 ('base')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" + ], + "metadata" : { + "interpreter" : { + "hash" : + "5d21aa510141f516aa4589cf93de6e254d300587727b9d0aa72219f1336bba5f" + }, + "kernelspec" : { + "display_name" : "Python 3.9.7 ('base')", + "language" : "python", + "name" : "python3" + }, + "language_info" : { + "codemirror_mode" : {"name" : "ipython", "version" : 3}, + "file_extension" : ".py", + "mimetype" : "text/x-python", + "name" : "python", + "nbconvert_exporter" : "python", + "pygments_lexer" : "ipython3", + "version" : "3.9.7" + }, + "orig_nbformat" : 4 }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 + "nbformat" : 4, + "nbformat_minor" : 2 } diff --git a/src/QuokkaSimulation.hpp b/src/QuokkaSimulation.hpp index 7177e675d..a16bca36a 100644 --- a/src/QuokkaSimulation.hpp +++ b/src/QuokkaSimulation.hpp @@ -221,8 +221,8 @@ template class QuokkaSimulation : public AMRSimulation &dstfluxes, std::array &srcfluxes, int srccomp, int dstcomp); - auto expandFluxArrays(std::array &fluxes, int nstartNew, - int ncompNew) -> std::array; + auto expandFluxArrays(std::array &fluxes, int nstartNew, int ncompNew) + -> std::array; void printCoordinates(int lev, const amrex::IntVect &cell_idx); @@ -258,11 +258,11 @@ template class QuokkaSimulation : public AMRSimulation dx) -> std::tuple, std::array>; - auto computeHydroFluxes(amrex::MultiFab const &consVar, int nvars, - int lev) -> std::pair, std::array>; + auto computeHydroFluxes(amrex::MultiFab const &consVar, int nvars, int lev) + -> std::pair, std::array>; - auto computeFOHydroFluxes(amrex::MultiFab const &consVar, int nvars, - int lev) -> std::pair, std::array>; + auto computeFOHydroFluxes(amrex::MultiFab const &consVar, int nvars, int lev) + -> std::pair, std::array>; template void fluxFunction(amrex::Array4 const &consState, amrex::FArrayBox &x1Flux, amrex::FArrayBox &x1FluxDiffusive, @@ -1381,8 +1381,8 @@ void QuokkaSimulation::addFluxArrays(std::array -auto QuokkaSimulation::expandFluxArrays(std::array &fluxes, const int nstartNew, - const int ncompNew) -> std::array +auto QuokkaSimulation::expandFluxArrays(std::array &fluxes, const int nstartNew, const int ncompNew) + -> std::array { BL_PROFILE("QuokkaSimulation::expandFluxArrays()"); diff --git a/src/hydro/EOS.hpp b/src/hydro/EOS.hpp index e52648712..a8c5a5e60 100644 --- a/src/hydro/EOS.hpp +++ b/src/hydro/EOS.hpp @@ -48,12 +48,12 @@ template class EOS ComputeEintFromTgas(amrex::Real rho, amrex::Real Tgas, std::optional> const &massScalars = {}) -> amrex::Real; [[nodiscard]] AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE static auto - ComputeEintFromPres(amrex::Real rho, amrex::Real Pressure, - std::optional> const &massScalars = {}) -> amrex::Real; + ComputeEintFromPres(amrex::Real rho, amrex::Real Pressure, std::optional> const &massScalars = {}) + -> amrex::Real; [[nodiscard]] AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE static auto - ComputeEintTempDerivative(amrex::Real rho, amrex::Real Tgas, - std::optional> const &massScalars = {}) -> amrex::Real; + ComputeEintTempDerivative(amrex::Real rho, amrex::Real Tgas, std::optional> const &massScalars = {}) + -> amrex::Real; [[nodiscard]] AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE static auto ComputeOtherDerivatives(amrex::Real rho, amrex::Real P, std::optional> const &massScalars = {}); @@ -62,8 +62,8 @@ template class EOS ComputePressure(amrex::Real rho, amrex::Real Eint, std::optional> const &massScalars = {}) -> amrex::Real; [[nodiscard]] AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE static auto - ComputeSoundSpeed(amrex::Real rho, amrex::Real Pressure, - std::optional> const &massScalars = {}) -> amrex::Real; + ComputeSoundSpeed(amrex::Real rho, amrex::Real Pressure, std::optional> const &massScalars = {}) + -> amrex::Real; private: static constexpr amrex::Real gamma_ = EOS_Traits::gamma; @@ -72,9 +72,9 @@ template class EOS }; template -AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto -EOS::ComputeTgasFromEint(amrex::Real rho, amrex::Real Eint, - std::optional> const &massScalars) -> amrex::Real +AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto EOS::ComputeTgasFromEint(amrex::Real rho, amrex::Real Eint, + std::optional> const &massScalars) + -> amrex::Real { // return temperature for an ideal gas given density and internal energy amrex::Real Tgas = NAN; @@ -114,9 +114,9 @@ EOS::ComputeTgasFromEint(amrex::Real rho, amrex::Real Eint, } template -AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto -EOS::ComputeEintFromTgas(amrex::Real rho, amrex::Real Tgas, - std::optional> const &massScalars) -> amrex::Real +AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto EOS::ComputeEintFromTgas(amrex::Real rho, amrex::Real Tgas, + std::optional> const &massScalars) + -> amrex::Real { // return internal energy density given density and temperature amrex::Real Eint = NAN; @@ -157,9 +157,9 @@ EOS::ComputeEintFromTgas(amrex::Real rho, amrex::Real Tgas, } template -AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto -EOS::ComputeEintFromPres(amrex::Real rho, amrex::Real Pressure, - std::optional> const &massScalars) -> amrex::Real +AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto EOS::ComputeEintFromPres(amrex::Real rho, amrex::Real Pressure, + std::optional> const &massScalars) + -> amrex::Real { // return internal energy density given density and pressure amrex::Real Eint = NAN; @@ -297,8 +297,9 @@ EOS::ComputeOtherDerivatives(const amrex::Real rho, const amrex::Real } template -AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto -EOS::ComputePressure(amrex::Real rho, amrex::Real Eint, std::optional> const &massScalars) -> amrex::Real +AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto EOS::ComputePressure(amrex::Real rho, amrex::Real Eint, + std::optional> const &massScalars) + -> amrex::Real { // return pressure for an ideal gas amrex::Real P = NAN; @@ -341,9 +342,9 @@ EOS::ComputePressure(amrex::Real rho, amrex::Real Eint, std::optional } template -AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto -EOS::ComputeSoundSpeed(amrex::Real rho, amrex::Real Pressure, - std::optional> const &massScalars) -> amrex::Real +AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE auto EOS::ComputeSoundSpeed(amrex::Real rho, amrex::Real Pressure, + std::optional> const &massScalars) + -> amrex::Real { // return sound speed for an ideal gas amrex::Real cs = NAN; diff --git a/src/hydro/LLF.hpp b/src/hydro/LLF.hpp index f0c5b54c4..f6fa06564 100644 --- a/src/hydro/LLF.hpp +++ b/src/hydro/LLF.hpp @@ -13,8 +13,8 @@ namespace quokka::Riemann { // Local Lax-Friedrichs (LLF) / Rusanov solver template -AMREX_FORCE_INLINE AMREX_GPU_DEVICE auto LLF(quokka::HydroState const &sL, - quokka::HydroState const &sR) -> quokka::valarray +AMREX_FORCE_INLINE AMREX_GPU_DEVICE auto LLF(quokka::HydroState const &sL, quokka::HydroState const &sR) + -> quokka::valarray { // Toro (Eq. 10.56) const amrex::Real Sp = std::max(std::abs(sL.u) + sL.cs, std::abs(sR.u) + sR.cs); diff --git a/src/hydro/NSCBC_inflow.hpp b/src/hydro/NSCBC_inflow.hpp index 02afaa5ad..19b308fae 100644 --- a/src/hydro/NSCBC_inflow.hpp +++ b/src/hydro/NSCBC_inflow.hpp @@ -21,10 +21,11 @@ namespace NSCBC namespace detail { template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto -dQ_dx_inflow_x1_lower(quokka::valarray::nvar_> const &Q, quokka::valarray::nvar_> const &dQ_dx_data, - const Real T_t, const Real u_t, const Real v_t, const Real w_t, amrex::GpuArray::nscalars_> const &s_t, - const Real L_x) -> quokka::valarray::nvar_> +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto dQ_dx_inflow_x1_lower(quokka::valarray::nvar_> const &Q, + quokka::valarray::nvar_> const &dQ_dx_data, const Real T_t, + const Real u_t, const Real v_t, const Real w_t, + amrex::GpuArray::nscalars_> const &s_t, const Real L_x) + -> quokka::valarray::nvar_> { // return dQ/dx corresponding to subsonic inflow on the x1 lower boundary // (This is only necessary for continuous inflows, i.e., where a shock or contact discontinuity is not desired.) diff --git a/src/hydro/NSCBC_outflow.hpp b/src/hydro/NSCBC_outflow.hpp index 16d9966df..c081b11cf 100644 --- a/src/hydro/NSCBC_outflow.hpp +++ b/src/hydro/NSCBC_outflow.hpp @@ -206,8 +206,8 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto transverse_zdir_dQ_data(const amrex::In } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto -permute_vel(quokka::valarray::nvar_> const &Q) -> quokka::valarray::nvar_> +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto permute_vel(quokka::valarray::nvar_> const &Q) + -> quokka::valarray::nvar_> { // with normal direction DIR, permutes the velocity components so that // u, v, w are the normal and transverse components, respectively. @@ -232,8 +232,8 @@ permute_vel(quokka::valarray::nvar_> const & } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto -unpermute_vel(quokka::valarray::nvar_> const &Q) -> quokka::valarray::nvar_> +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto unpermute_vel(quokka::valarray::nvar_> const &Q) + -> quokka::valarray::nvar_> { // with normal direction DIR, un-permutes the velocity components so that // u, v, w are the normal and transverse components *prior to calling permute_vel*. diff --git a/src/hydro/hydro_system.hpp b/src/hydro/hydro_system.hpp index 01a8b5a76..02b374e0f 100644 --- a/src/hydro/hydro_system.hpp +++ b/src/hydro/hydro_system.hpp @@ -291,8 +291,8 @@ template auto HydroSystem::CheckStatesValid(amre } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputePrimVars(amrex::Array4 const &cons, int i, int j, - int k) -> quokka::valarray +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputePrimVars(amrex::Array4 const &cons, int i, int j, int k) + -> quokka::valarray { // convert to primitive vars const auto rho = cons(i, j, k, density_index); @@ -324,8 +324,8 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputePrimVars } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto -HydroSystem::ComputeConsVars(quokka::valarray const &prim) -> quokka::valarray +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeConsVars(quokka::valarray const &prim) + -> quokka::valarray { // convert to conserved vars Real const rho = prim[0]; @@ -347,8 +347,8 @@ HydroSystem::ComputeConsVars(quokka::valarray con } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputePressure(amrex::Array4 const &cons, int i, int j, - int k) -> amrex::Real +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputePressure(amrex::Array4 const &cons, int i, int j, int k) + -> amrex::Real { const auto rho = cons(i, j, k, density_index); const auto px = cons(i, j, k, x1Momentum_index); @@ -372,8 +372,8 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputePressure } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeSoundSpeed(amrex::Array4 const &cons, int i, int j, - int k) -> amrex::Real +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeSoundSpeed(amrex::Array4 const &cons, int i, int j, int k) + -> amrex::Real { const auto rho = cons(i, j, k, density_index); const auto px = cons(i, j, k, x1Momentum_index); @@ -394,8 +394,8 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeSoundSpe } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeVelocityX1(amrex::Array4 const &cons, int i, int j, - int k) -> amrex::Real +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeVelocityX1(amrex::Array4 const &cons, int i, int j, int k) + -> amrex::Real { amrex::Real const rho = cons(i, j, k, density_index); amrex::Real const vel_x = cons(i, j, k, x1Momentum_index) / rho; @@ -403,8 +403,8 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeVelocity } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeVelocityX2(amrex::Array4 const &cons, int i, int j, - int k) -> amrex::Real +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeVelocityX2(amrex::Array4 const &cons, int i, int j, int k) + -> amrex::Real { amrex::Real const rho = cons(i, j, k, density_index); amrex::Real const vel_y = cons(i, j, k, x2Momentum_index) / rho; @@ -412,8 +412,8 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeVelocity } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeVelocityX3(amrex::Array4 const &cons, int i, int j, - int k) -> amrex::Real +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto HydroSystem::ComputeVelocityX3(amrex::Array4 const &cons, int i, int j, int k) + -> amrex::Real { amrex::Real const rho = cons(i, j, k, density_index); amrex::Real const vel_z = cons(i, j, k, x3Momentum_index) / rho; diff --git a/src/hyperbolic_system.hpp b/src/hyperbolic_system.hpp index 03f556223..6e9fca156 100644 --- a/src/hyperbolic_system.hpp +++ b/src/hyperbolic_system.hpp @@ -65,8 +65,8 @@ template class HyperbolicSystem return 0.5 * (sgn(a) + sgn(b)) * std::min(std::abs(a), std::abs(b)); } - [[nodiscard]] AMREX_GPU_DEVICE AMREX_FORCE_INLINE static auto GetMinmaxSurroundingCell(arrayconst_t &q, int i, int j, int k, - int n) -> std::pair; + [[nodiscard]] AMREX_GPU_DEVICE AMREX_FORCE_INLINE static auto GetMinmaxSurroundingCell(arrayconst_t &q, int i, int j, int k, int n) + -> std::pair; template static void ReconstructStatesConstant(amrex::MultiFab const &q, amrex::MultiFab &leftState, amrex::MultiFab &rightState, int nghost, int nvars); diff --git a/src/linear_advection/AdvectionSimulation.hpp b/src/linear_advection/AdvectionSimulation.hpp index c26d5afdc..13f4325a5 100644 --- a/src/linear_advection/AdvectionSimulation.hpp +++ b/src/linear_advection/AdvectionSimulation.hpp @@ -380,8 +380,8 @@ template void AdvectionSimulation::advanceSingle } template -auto AdvectionSimulation::computeFluxes(amrex::MultiFab const &consVar, const int nvars, - const int lev) -> std::array +auto AdvectionSimulation::computeFluxes(amrex::MultiFab const &consVar, const int nvars, const int lev) + -> std::array { auto ba = grids[lev]; auto dm = dmap[lev]; diff --git a/src/linear_advection/linear_advection.hpp b/src/linear_advection/linear_advection.hpp index 153e862b5..a7046e539 100644 --- a/src/linear_advection/linear_advection.hpp +++ b/src/linear_advection/linear_advection.hpp @@ -72,8 +72,8 @@ void LinearAdvectionSystem::ConservedToPrimitive(amrex::MultiFab cons } template -AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto LinearAdvectionSystem::isStateValid(amrex::Array4 const &cons, int i, int j, - int k) -> bool +AMREX_GPU_DEVICE AMREX_FORCE_INLINE auto LinearAdvectionSystem::isStateValid(amrex::Array4 const &cons, int i, int j, int k) + -> bool { // check if cons(i, j, k) is a valid state const auto rho = cons(i, j, k, density_index); diff --git a/src/math/quadrature.hpp b/src/math/quadrature.hpp index adfd8c1da..71a3bddf4 100644 --- a/src/math/quadrature.hpp +++ b/src/math/quadrature.hpp @@ -22,8 +22,8 @@ AMREX_FORCE_INLINE AMREX_GPU_DEVICE auto kernel_wendland_c2(const amrex::Real r) } template -AMREX_FORCE_INLINE AMREX_GPU_DEVICE auto quad_3d(F &&f, amrex::Real x0, amrex::Real x1, amrex::Real y0, amrex::Real y1, amrex::Real z0, - amrex::Real z1) -> amrex::Real +AMREX_FORCE_INLINE AMREX_GPU_DEVICE auto quad_3d(F &&f, amrex::Real x0, amrex::Real x1, amrex::Real y0, amrex::Real y1, amrex::Real z0, amrex::Real z1) + -> amrex::Real { // integrate F over the rectangular domain [x0, y0, z0] -> [x1, y1, z1]. auto integrand = [=] AMREX_GPU_DEVICE(amrex::Real z) { diff --git a/src/problems/NSCBC/dQ_dx_inflow.ipynb b/src/problems/NSCBC/dQ_dx_inflow.ipynb index 755dd8719..602527f1b 100644 --- a/src/problems/NSCBC/dQ_dx_inflow.ipynb +++ b/src/problems/NSCBC/dQ_dx_inflow.ipynb @@ -1,597 +1,1615 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from sympy import *\n", - "init_printing(use_unicode=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Primitive variable system" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# \\partial_t q + F \\partial_x q + G \\partial_y q + H \\partial_z q = 0\n", - "\n", - "rho = Symbol('rho', positive=True) # density\n", - "p = Symbol('P', positive=True) # pressure\n", - "u = Symbol('u') # normal velocity\n", - "v = Symbol('v') # transverse velocity\n", - "w = Symbol('w') # transverse velocity\n", - "s = Symbol('s') # passive scalar\n", - "c = Symbol('c') # sound speed\n", - "\n", - "F = Matrix([\n", - "[u, rho, 0, 0, 0, 0],\n", - "[0, u , 0, 0, 1/rho, 0],\n", - "[0, 0, u, 0, 0, 0],\n", - "[0, 0, 0, u, 0, 0],\n", - "[0, rho*c*c, 0, 0, u, 0],\n", - "[0, 0, 0, 0, 0, u]])" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}0 & - c \\rho & 0 & 0 & 1 & 0\\\\- c^{2} & 0 & 0 & 0 & 1 & 0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 & 0\\\\0 & c \\rho & 0 & 0 & 1 & 0\\\\0 & 0 & 0 & 0 & 0 & 1\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 0 -c⋅ρ 0 0 1 0⎤\n", - "⎢ ⎥\n", - "⎢ 2 ⎥\n", - "⎢-c 0 0 0 1 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 1 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 1 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 c⋅ρ 0 0 1 0⎥\n", - "⎢ ⎥\n", - "⎣ 0 0 0 0 0 1⎦" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the eigenvector matrix S\n", - "c = Symbol('c')\n", - "rho = Symbol('rho')\n", - "lambda_list = [eval for (eval, n, es) in F.left_eigenvects()]\n", - "Sinv_list = [[ev for ev in es] for (v, n, es) in F.left_eigenvects()]\n", - "Sinv = Matrix([Sinv_list[1][0], Sinv_list[0][2], Sinv_list[0][0], Sinv_list[0][1], Sinv_list[2][0], Sinv_list[0][3]])\n", - "Sinv" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}- c + u & 0 & 0 & 0 & 0 & 0\\\\0 & u & 0 & 0 & 0 & 0\\\\0 & 0 & u & 0 & 0 & 0\\\\0 & 0 & 0 & u & 0 & 0\\\\0 & 0 & 0 & 0 & c + u & 0\\\\0 & 0 & 0 & 0 & 0 & u\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡-c + u 0 0 0 0 0⎤\n", - "⎢ ⎥\n", - "⎢ 0 u 0 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 u 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 u 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 0 c + u 0⎥\n", - "⎢ ⎥\n", - "⎣ 0 0 0 0 0 u⎦" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute eigenvalue matrix \\lambda\n", - "lambda_waves = diag(lambda_list[1], lambda_list[0], lambda_list[0], lambda_list[0], lambda_list[2], lambda_list[0])\n", - "lambda_waves" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2 c^{2}} & - \\frac{1}{c^{2}} & 0 & 0 & \\frac{1}{2 c^{2}} & 0\\\\- \\frac{1}{2 c \\rho} & 0 & 0 & 0 & \\frac{1}{2 c \\rho} & 0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 & 0\\\\\\frac{1}{2} & 0 & 0 & 0 & \\frac{1}{2} & 0\\\\0 & 0 & 0 & 0 & 0 & 1\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 1 -1 1 ⎤\n", - "⎢──── ─── 0 0 ──── 0⎥\n", - "⎢ 2 2 2 ⎥\n", - "⎢2⋅c c 2⋅c ⎥\n", - "⎢ ⎥\n", - "⎢ -1 1 ⎥\n", - "⎢───── 0 0 0 ───── 0⎥\n", - "⎢2⋅c⋅ρ 2⋅c⋅ρ ⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 1 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 1 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 1/2 0 0 0 1/2 0⎥\n", - "⎢ ⎥\n", - "⎣ 0 0 0 0 0 1⎦" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute S\n", - "S = Sinv.inv()\n", - "S" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right)\\\\u \\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\\\left(c + u\\right) \\left(c du_{dx} \\rho + dP_{dx}\\right)\\\\ds_{dx} u\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡(c - u)⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", - "⎢ ⎥\n", - "⎢ ⎛ 2 ⎞ ⎥\n", - "⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠ ⎥\n", - "⎢ ⎥\n", - "⎢ dv_dx⋅u ⎥\n", - "⎢ ⎥\n", - "⎢ dw_dx⋅u ⎥\n", - "⎢ ⎥\n", - "⎢(c + u)⋅(c⋅du_dx⋅ρ + dP_dx)⎥\n", - "⎢ ⎥\n", - "⎣ ds_dx⋅u ⎦" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the \\mathcal{L} matrix\n", - "\n", - "#drho_dx = Symbol(r'\\frac{d\\rho}{dx}')\n", - "#du_dx = Symbol(r'\\frac{du}{dx}')\n", - "#dv_dx = Symbol(r'\\frac{dv}{dx}')\n", - "#dw_dx = Symbol(r'\\frac{dw}{dx}')\n", - "#dp_dx = Symbol(r'\\frac{dP}{dx}')\n", - "#ds_dx = Symbol(r'\\frac{ds}{dx}')\n", - "\n", - "drho_dx = Symbol('drho_dx')\n", - "du_dx = Symbol('du_dx')\n", - "dv_dx = Symbol('dv_dx')\n", - "dw_dx = Symbol('dw_dx')\n", - "dp_dx = Symbol('dP_dx')\n", - "ds_dx = Symbol('ds_dx')\n", - "\n", - "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", - "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", - "L" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### x1 lower inflow (with relaxation term)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right)\\\\\\frac{R c \\eta_{2} \\rho \\left(t - t_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{3} \\left(v - v_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{4} \\left(w - w_{t}\\right)}{L_{x}}\\\\\\frac{c^{2} \\eta_{5} \\rho \\left(1 - M^{2}\\right) \\left(u - u_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x}}\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡(c - u)⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", - "⎢ ⎥\n", - "⎢ R⋅c⋅η₂⋅ρ⋅(t - tₜ) ⎥\n", - "⎢ ───────────────── ⎥\n", - "⎢ Lₓ ⎥\n", - "⎢ ⎥\n", - "⎢ c⋅η₃⋅(v - vₜ) ⎥\n", - "⎢ ───────────── ⎥\n", - "⎢ Lₓ ⎥\n", - "⎢ ⎥\n", - "⎢ c⋅η₄⋅(w - wₜ) ⎥\n", - "⎢ ───────────── ⎥\n", - "⎢ Lₓ ⎥\n", - "⎢ ⎥\n", - "⎢ 2 ⎛ 2⎞ ⎥\n", - "⎢ c ⋅η₅⋅ρ⋅⎝1 - M ⎠⋅(u - uₜ) ⎥\n", - "⎢ ───────────────────────── ⎥\n", - "⎢ Lₓ ⎥\n", - "⎢ ⎥\n", - "⎢ c⋅η₆⋅(s - sₜ) ⎥\n", - "⎢ ───────────── ⎥\n", - "⎣ Lₓ ⎦" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "eta_2 = Symbol('eta_2')\n", - "eta_3 = Symbol('eta_3')\n", - "eta_4 = Symbol('eta_4')\n", - "eta_5 = Symbol('eta_5')\n", - "eta_6 = Symbol('eta_6')\n", - "Lx = Symbol('L_x')\n", - "M = Symbol('M')\n", - "u_t = Symbol('u_t')\n", - "v = Symbol('v')\n", - "v_t = Symbol('v_t')\n", - "w = Symbol('w')\n", - "w_t = Symbol('w_t')\n", - "s = Symbol('s')\n", - "s_t = Symbol('s_t')\n", - "t = Symbol('t') # gas temperature\n", - "t_t = Symbol('t_t')\n", - "R = Symbol('R') # gas constant (kB/mu)\n", - "L_inflow_x1_lower = Matrix([L[0],\n", - " eta_2*(c/Lx)*(rho*R)*(t-t_t),\n", - " eta_3*(c/Lx)*(v-v_t),\n", - " eta_4*(c/Lx)*(w-w_t),\n", - " eta_5*(rho*c**2 * (1 - M**2) / Lx)*(u - u_t),\n", - " eta_6*(c/Lx)*(s-s_t)])\n", - "L_inflow_x1_lower" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\frac{L_{x} u \\left(c + u\\right) \\left(- c du_{dx} \\rho + dP_{dx}\\right) - 2 R c \\eta_{2} \\rho \\left(c + u\\right) \\left(t - t_{t}\\right) - c^{2} \\eta_{5} \\rho u \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} c^{2} u \\left(c + u\\right)}\\\\\\frac{L_{x} \\left(c + u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right) - c^{2} \\eta_{5} \\rho \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} c \\rho \\left(c + u\\right)}\\\\\\frac{c \\eta_{3} \\left(v - v_{t}\\right)}{L_{x} u}\\\\\\frac{c \\eta_{4} \\left(w - w_{t}\\right)}{L_{x} u}\\\\\\frac{L_{x} \\left(c + u\\right) \\left(- c du_{dx} \\rho + dP_{dx}\\right) - c^{2} \\eta_{5} \\rho \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} \\left(c + u\\right)}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x} u}\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 2 ⎛\n", - "⎢Lₓ⋅u⋅(c + u)⋅(-c⋅du_dx⋅ρ + dP_dx) - 2⋅R⋅c⋅η₂⋅ρ⋅(c + u)⋅(t - tₜ) - c ⋅η₅⋅ρ⋅u⋅⎝\n", - "⎢─────────────────────────────────────────────────────────────────────────────\n", - "⎢ 2 \n", - "⎢ 2⋅Lₓ⋅c ⋅u⋅(c + u) \n", - "⎢ \n", - "⎢ 2 ⎛ 2 ⎞ \n", - "⎢ Lₓ⋅(c + u)⋅(c⋅du_dx⋅ρ - dP_dx) - c ⋅η₅⋅ρ⋅⎝M - 1⎠⋅(u - uₜ) \n", - "⎢ ────────────────────────────────────────────────────────── \n", - "⎢ 2⋅Lₓ⋅c⋅ρ⋅(c + u) \n", - "⎢ \n", - "⎢ c⋅η₃⋅(v - vₜ) \n", - "⎢ ───────────── \n", - "⎢ Lₓ⋅u \n", - "⎢ \n", - "⎢ c⋅η₄⋅(w - wₜ) \n", - "⎢ ───────────── \n", - "⎢ Lₓ⋅u \n", - "⎢ \n", - "⎢ 2 ⎛ 2 ⎞ \n", - "⎢ Lₓ⋅(c + u)⋅(-c⋅du_dx⋅ρ + dP_dx) - c ⋅η₅⋅ρ⋅⎝M - 1⎠⋅(u - uₜ) \n", - "⎢ ─────────────────────────────────────────────────────────── \n", - "⎢ 2⋅Lₓ⋅(c + u) \n", - "⎢ \n", - "⎢ c⋅η₆⋅(s - sₜ) \n", - "⎢ ───────────── \n", - "⎣ Lₓ⋅u \n", - "\n", - " 2 ⎞ ⎤\n", - "M - 1⎠⋅(u - uₜ)⎥\n", - "────────────────⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎦" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dQ_dx_inflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_inflow_x1_lower)\n", - "dQ_dx_inflow_x1_lower" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dQ_dx[0] = (1.0/2.0)*(L_x*u*(c + u)*(-c*du_dx*rho + dP_dx) - 2*R*c*eta_2*rho*(c + u)*(t - t_t) - std::pow(c, 2)*eta_5*rho*u*(std::pow(M, 2) - 1)*(u - u_t))/(L_x*std::pow(c, 2)*u*(c + u));\n", - "dQ_dx[1] = (1.0/2.0)*(L_x*(c + u)*(c*du_dx*rho - dP_dx) - std::pow(c, 2)*eta_5*rho*(std::pow(M, 2) - 1)*(u - u_t))/(L_x*c*rho*(c + u));\n", - "dQ_dx[2] = c*eta_3*(v - v_t)/(L_x*u);\n", - "dQ_dx[3] = c*eta_4*(w - w_t)/(L_x*u);\n", - "dQ_dx[4] = (1.0/2.0)*(L_x*(c + u)*(-c*du_dx*rho + dP_dx) - std::pow(c, 2)*eta_5*rho*(std::pow(M, 2) - 1)*(u - u_t))/(L_x*(c + u));\n", - "dQ_dx[5] = c*eta_6*(s - s_t)/(L_x*u);\n" - ] - } - ], - "source": [ - "drho_dx = Symbol('drho_dx')\n", - "du_dx = Symbol('du_dx')\n", - "dv_dx = Symbol('dv_dx')\n", - "dw_dx = Symbol('dw_dx')\n", - "dp_dx = Symbol('dP_dx')\n", - "ds_dx = Symbol('ds_dx')\n", - "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", - "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", - "\n", - "L_inflow_x1_lower = Matrix([L[0],\n", - " eta_2*(c/Lx)*(rho*R)*(t-t_t),\n", - " eta_3*(c/Lx)*(v-v_t),\n", - " eta_4*(c/Lx)*(w-w_t),\n", - " eta_5*(rho*c**2 * (1 - M**2) / Lx)*(u - u_t),\n", - " eta_6*(c/Lx)*(s-s_t)])\n", - "\n", - "dQ_dx_inflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_inflow_x1_lower)\n", - "print(cxxcode(dQ_dx_inflow_x1_lower, assign_to='dQ_dx'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### x1 lower inflow (with relaxation term; zero normal velocity)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK4AAAC1CAYAAADGHcS2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXZIdJ9KGjzr62iHLEb7/5B2MrRW4ZwcaaQXW7EATupLvOuwd2F6BNN6Bxyuw7B14vntHjNyhDWjeBwFDUVBF/Z6qOhBRTQFJAslLkgUc+vT+/fvTGs/Lly8frlFOLWOd/pxDzlMwcXVawX399dfPVcxfViiqFrEvCTy02Bhc63uMnCWdKvZY/B/J/8cc5YgPA+AHPQ/1vFb473PwPTqPPrkpHeXyVz03Vhb/kn9n3+/Lf6DnjZ5/iNbF2+Txni33Tv73Q7jck7oGCL9mMv0ohn/LpPVGKy8N/ln+573EAwnEkxH3N/k/Dsx60eR9crPpv8lv9ZnifpLwvtDzf3qfE7zg78uQp95/VxzKqeWUdu86iP1W7xCH7t9hYMT7N8rz3Yh8nVlU8VArdNLWxP9JoE9uSnfm3Kv/5Wq80ZfI/pke8DKXgy9YCWdPwrFjRmAGP4XA/U4VnwrUuKAn4hlWJk4fG6YB/xbv2Ub92IrsLF+f3PoUgtOAn8zZbvXj93r+1OPNEOLiMhRHlAHuYh9nKoQC5h4IVByHgLHBqhsmgT65AeyT+u63DFuTrrScRs5kK4oGK0+KKEV0XUro6NQoVPh/bBiN9ybTUBrZC64+fkpnlFMmDaNceDKl3eoxTjTY0kxfn+n5VeHGaFX4n4r/Sv7iGlplAA6+CyiLuqNFlhrAYp92KrNXbomcWWCLHzInnfbkgJ1gWRxFv4KZRt/lchcD1woC45yKmw8i+dgmdJIbiWE5GPFZ+7aEn2gQFKD7XO+m8+VTB1w4KF4onnqh5Vlx8I1XHIB+LH/0R6byFzmVwQC7L9+YR/KpPx8eHxcxmInIllsiN1+i8jj71snXpCmeAUB7kO2SH8N8XyGvIlcMXHGjQawyhF/xqHav+aIS0YJvo7gw2MlP5ZAf4ccaCwDz1Wu0p3wE/oseHAMoLpO4JTQE5XmnetCxDBC0vnMsHwHkGz3hQHPps/sqp0huiYIdaFi6ZAA6B6B+Utwsy5mOacKn3xgkRa4IuKo0mhOmDZAqvkuTPBC9AVdck0J+Tnt57Wn5IOBw8PCR5oCZGkjQN+od14eweFAea5lod8ePpFKHpo8713UEYGo5lUP8z3qS6a0MHyLQel31K5VbzN7MmuI9eGZSnqmyoy4opGI5FAFXDAHEv1TBO/lzuBJ+hiYsTOXTMMDgpzNXJ/kAlHQPdMVBS1yJtmNwPleeLlCIpO2Csl9HqdQJl+SpfMiztV5qcoz/UyS3BHvqmqxngjaOGi27gFFW0QU0/vXKv2VeJFw6nseDJUMaR7+1+RrxJfw6aOiUk9JTQERTxEtkTN/Ql3QItCm+sOhzlO3Nl4D4qd6p0yofZyon11ddckM+zr4d2/4psnPiou5gpsj1alw1iu04mN2lOCotZ7/RWWi8hivhpwzYhri4w729Kj4IC7A4GsqKAQq96QzR8ZHGFrFph3wE9UIPNhzvgOyVHu9E89wGsFuZDinTvCvNlQsJ2qrR6UoHDDxza1Sx7HVh3SDukhvp1B9XpJxmlt2Hkj9sKcf1dmktv1fj2hxMvy3bRw2gM3OjBBA9svljr5Of+AIugOCBrzhAAxAcqP+quLCh4ftJadB+oceB+TPFhaDla59NF+pCWdB78Cke0PIxyg7RAz3Q8g5PaI1THKCnntAYZ+P4sPy73l35NnU5T2WNkRsVYtCelN+3n3DKiYb2ziK7iD8DvFhWvRoX5qosHfANj4JoKBwNuFUcwko5tBed13KF/BgoP4gWALFTAz80B/UgDrsqdHwYQU8dWe8FyAjD0ZPfOWiw2WOwh4JjpnHptNVpI9aDQzqnrVj9CDV030eUq8vcfrHcVF9kyKAzA1Fh2sgKQtd27pyyC9uOHFl2K3JFwIWTGgMwip3omcbJ9xfe44yK6+SndAZES8tn4k4D6Z9EfBBaQ9uIn//IU5oXquLjtphpWPGAvKvDlby8GyIH0RYDJaj5nLIzbFUPM7PKb/RBUGbr9aoVM28Eo3OMcOatRcBNwkF78jhtSirgQ9Ow5kqadwqjjbz2VdgI2RMk7Nsg7VCvVjZzys7JByUGVordosBVQ9FaHBaOO7u4gnMTqi534sljnMIA02lctMmJ+ur50xB8sP9CkPuZQjR0Im1zGyA2yzE9tXc22TkJIWu9I+9whnPJWf86mzJfAtM9ti5abSuOOmGT8pHxlnc9T/X87jpHPisQ2KzGtrXvCjY2GfhQwxVPcR/Id/13Ltk5IWBnD56Vw4PkfHWHmsUxnuyLL6OK7dCz24CTGxMwUHvQuF/IvyTgBhKY9iq5oRhYuSnCnehY0mR1p3GQfFotOnLbih0KtDRX7WLqrKDt6PuuJMlvNCauuhjXtCqBrUqgAnerPVPr1SmBCtxO8cybqKkROx97fxNOdcHG3KVbY1VhdsFI4CxfsRKAzzIKtiYfSmy7cqjFL1kpvAmnOvFhkTxwozRWN9hpK/pI6WrQEF6i/VYPHzuDv+q76rBG2i41rgTNBxHLVACB7WiWtvBZqrmRH28HryHLbBmqD4OKsxWtDzmbxu7iHKClnKG8/qmyBy3+Zxu6YsIugWvl80h+CwiKY13Wra9a0rN7ACM3mJg14m3ksRUezMsOJgY7oN+Nu95NTdsVpZO+CqMlfOIA7ZdRPMDh4M2dHrZ1mSKZujmEwzSNtsP25Mgiuzho7mInejr9hR7KYEBx+CgEI8BoTMcKUx5xj/WwpUwdX0X5FNXvZuCFAkB24S9L+gs+I8UugWs7CrAAMgDIO6DjF76NnxMpzGk2zAhOg7G9y806bnuRHT1MDuxLEyef3/fDd8jUzc9vzKkx5TNlKGzqAS+9M2AazvLHxAEwAH00aGbgxZY1O5uj69Bo3AqBXQJXcqGzsW/NArZ8gAsIGwBRPNMzdM6kAIxoYz7iXusB9AA67DB4YW6cFE85hJ02xh50vCCBhi/z8Cf6lGEO6yiN+pDX8JOfcgC9wTNFVBiX5KV6UAfzHZDh4+qZSd5e9F6Bi3bwnQ1A9ABSwBuuKDxR2E/7Fkh+ClcYPuQxTmE6Hl50JA6gOs0JgDl4c4+EwDHdh2aAsa8DHuRz/IJsfmCE5Zl0W4+SDyZmEjMzyGeQtXjZAklz56htVMPrGlgNwq0E9gpcOqJh3yqMbRkDBNB0TfmALAQ6fP2A0Ds2sHOtKV9ggT/xbxyRfAZKqMGNBg7Sw1evIR0v+ZxjZnAxqIa4HC9mBAYWMwvryGHdHH/a0CUnR7cZ/2ozNSmsiASPkAFMCDByE280h2j4GCIMAPC9U7zRZI6PfGicAyzmNBgRSgs7k3xee5MuB9ChMwNGPmU1BpXiWnUgj3XY5diXOD7uwvJM5IA/SV4q35lTaOcUaCmCendp5AHVWIf0ep1i5ilFgkd7OE30QmE+agxoFH+rx/3U56R4NAxAw7Zz4AXw0OGIiw95ALpw2ocOXpgh8AlBThJ14XQT9aIegId7GVydFDQOOzv1wQdfAIWtzYpCnO9D7rK/SV7iSZv7+NKOVrvLij0TFffj6nmv56Kvurdy+DO+Il7x3+i5T7z852G6wr/qeRzGpd5Fc6Pnm1Ta0nHUT893lCP/WVye4u7r+SmO32KY+utR1d6frs40XrZYLNo2tFVP0las8aJNWSLjIulYK3m7UmlZp7yYNfflO82fpV0gwcwSKtusoCT4YwLF7UqQbStqV6bCwqJjmvcrDJSlzg4/zhrFWxBijvRNwyaf6DAJ+MVxaN40eC4RUHnYzUlgKg0ws3IyxbZeotq9PCtwrYjUecnOzUnQdrazt3NkjXjlwU7G5tyK8xekbKVCpfUAuB9ZYueX5l2VTh2+7H9ZWbE1asuKpXUXlaqL4uK16m4m66V+6orajcbdsDCdLKu/ogT4OHtny3P+isXXoqoEBkngD0e9G43rKrw1XzPBjeqEfcwpLxb4f1FcvD6s6OrmlEAF7kRpCqSsLLAsdiM/3lmbyL1mz0mgruPmJDMsntWFeAt6GIdKPUgCFbiDxJUlxlzwZxyyVDVhNglU4E4UpTUT4FI17kRZDslegTtEWmlatC3nYHe3+5Ruzj5iK3Cn91PSvhWQOZsAqKtbQAJ1VWG6UAFnaruY87W3sBeAWXXg0DrnIdyPNjn+mMonkur6JFA1bp+EOtItIKFo2LeKZ02X87fuAA43OvJjzFd6uF/BXWKiYHVjJFA17hipKY/Ax3HHpzY7J7945QANmhUN6w/gWKAqyvw6wqw+KC78yRBp1Q2QAMB1x97eDsh38aQCHrtjRTtkouUf/0ELmA1gFX6mx/1M/uLlWSgAZjZjXmEqPNTDzz4e6KluGQk8AqhijbZ9at8bh9aXKfZwXPmeAKunaiqM7FuBDzs2/AeBWU6iPctWsMp1mj5bt70m1I+zET1nNebm125VT3Mb44gmbj5LBe7ALhIY+ABL3rw4kNVa5Pw0x/wkf60C1yinAne4lAGBsbOGZ10/h0DLBw0n17b0k6HJgjikjWs1jFvoZwdrztsZAUFr40BxfDiwDMaHmLFp5RtNJ3/00tdMfA14VbfchSCTgbQ2g8NpXHU0N7K4/0fLlzsXhzhtw6940ZaA+Xs9AAogPpTf6yzdXUyoePhzoTJLXlxz5Mrjlpoi3jFPwjPypR5+XTlV1t7iDqVx1dGAcsrtjG5rln7kp+lcM2/uJSBCDhCm1rtZSmQgsNJA+Qbc8rnl5pHixroiviqDevEL4tZMYAumPqMH0NjKL5nvUMCVoJ7o8UtP6kg6zANPYbSOvztBYYDK6oABmt6Z2s1VS4oDhD/oCe9WuK+wo9XrBydaczJM/lPF+OlYYfj7c7o2XPKhxE4cA6CIr8rATOm6+ys12JRlv+5owAVYXccL2Y4N7U06PDxnwAXPABntBAjjjzB4U0bOwc8PHL1jhvjdNb0ziMZM2Vm+4snWM5r2ULcxqj2d7qozdX+JAKMxJapj3QcS8di2XgMrDIhCjehAC1DQUo3dLZu3wV80oSMPz0m00IVlET3WZfmqHDMw5KOlvbaPCqIuXRo5It9+8FpV/MhW0/nbr3W+hmg7pnoHLrTjrSUnzms/GwdAvV1IPj1oVexV09nyP9YTmge5mxdhCS+2dNHsJ/lznUXI8lUZtDGsH0XHjgHq2xkn7ijcuBDkna2483fUjmZV1YmALtlBSsMk8GaBws6+NaaFBQBayd3iAiBSDg1OGaHJYejiMlKZx8T18GXwmZlBdK2DO7ZdJ/mmnWPK31CeP1xdrtzLBfq+w2m7OhatxXRL52M3vtDDDllDmykM+DE5nFZX8KzOmCOqz6FuY+yTKKbCpbrU7YxFU7tAAsBXv3kx1VGqR9css9vbGFNtDeMuFriALxTE0Hflx5bOmRND2S1Fv9vbGPsEchjgCkRnuc1R5fbJ+KzpqfopztnxZ63blMKPBNzdd8aUjry0vJf8cXZpfX2o9h5G456rVzTt3qhs7GW2iNkAqLc1SghLuwrciRIWcOttjRNlOCZ7NRXGSK2dh50pv7nRTq4xc0ugAnceiWIu+DMP87CsXLokUIHbJZ2CNJkKbB3jqsb9IIdV/gJct/PCCaTqhksAbcupsiOcBRje+nVzoBzMxhHAfaiHc6cP9FQ3XAJJ+1ZA5jwDoK5uPgkgT3NG+no+nhfLCWGmto85pHOLVARgzAmOOtbbGhHIDK7auBOEaAEJh4Z9q3jWdOttjRNk25e1atw+CWXSBU6OPvLzHhynxfA5dINmRcNiQhinNHfqDO1sVh8U1zrPa8mrVyCBCtwCIaVIBDx+TRH/oiJFehKtu8MLMBvAKq516DuZuUYmJVCBmxTL7JHxbY1o5cbv2WYv8eAMK3AHdLC0JLZr0Q2NIVvlC3/5Gyat9h5o/dXKXLKg+nFWKF2mdpHudr1W9T/UzY0VuAXAVafz0bWnGxpzrTrMzY0VuLkubsbzy16z8N2M3ldIA5Bluxs7EPdV+ai2h7Fx1RmAa7UbGlXejcpj2Su8nRHNzI8oWR7j/f/18G+hRm0HL1SGAa/qlbs8REnbd2hcdxGI87df66iG6uBVb2i0oEzdzvhEVXtI9URzJw/AmjBxQ9yCZez55kZ/IQjAfWcF6vwh8j07rTqYKbzrhka0Ioe9Qw2DNmwdKhIN15OSFjqAF9M+UFzrdkbFsU4bHm98pfAobat8o8pQ/dmx6zJrGFCjBpPyndv5C0GOYCqg5fxykzqNjvnNSVhhwNR1Q6MhFR2rBqkOBcjw9E60Bozy2TkLBwTmQwM0AS0DCHOmz2FmZG9qVOZsGZYx6V33hMWDsK8+m0w/AnABVpdWY7E/3F6lY1NnC4gL6RQ0Dt6UkXKA0QBVYIOGE2Ehbw94xTOY/DZwilkmbkgZbENz4OfwNzdiKuzdAYiGphRIjGaTTzxg8hpY4cZ0rjSAkV2ftXkb/EXvHMB0GowB4p3y5a5E8jSFL8VlqEyzBS0frR3OBGFRtKVLI4e0m30/gsYdfUOjOhct6f7Pblcn5W5oRENzVT8fPAAMwDBoAIaf7vU+xRWXYdtDPbocAzd1DLMrz+bSdg9cdRZTebIjlMa07aduhWPt+kDpaGSmWBzaCCByhX5ofgBGymiYEqJp8Ff67G5gGZhBb6iE8rUO8SiOgUpa2DaidueudlfjaRX2HQsbOlAP06s7dpjkLhoACsBzJkMy3xkijUmkeubMFDcAz1C1eYvcvcYdKI7WDY3kV0czvQJgYyMSFzvRGDNA/q2lj0nOHla9umYfwMyW7+61LYK+KOCq05ImRSnilH8PNzTmmnOomxt3DVwBqd7QmINpIl7ySsSaGWd3FwbuHbi7E3gSOTVysAQu7eNssIBqhm1KAI3rDHq3kL7Nmm60Vpp+b1Q1bGd+HcGif72tUUJYyLG6Y75T0Lgs8bBtyZpmdQMlIOAiTLMBoXf+wV92ZWIg60relgBKwmyxV1OhLZwxMexGAeDqVpJABe48gkYThMcZ5+FauWQlUIGbFU1ZgkwDtpFxVeN+kMMqfytwp4sZbZs9XTadfeWQkkAFbkoqw+KS9q00MWcbAHV1C0jgegGel8YScKa2kl8o/hZhWHOC87r1tkYEMoOrGneCEC0g4dCwbxXPmm69rXGCbPuyVo3bJ6FMusDJGd6nNpmTY7xy3hXNygcbJoRxSnPHJtHO9bZGK5cpXgXuSOkJjJ3HIEO2gNzSA2ZzGF3h1kHvME9975ZABW63fOZKrbc1ziVJywfgfmTfnT9zEZWdtKv/+XyXNESHXbzrg94Lt+FTJz+A+84GnO/SNudLKDeqFHbkQz3m1wyKa3wYba7ShRVSO7CZAe2mgVvQBwy+x3qWOLPxhxPn3lYV+OnJj1Yo2IqH2Galo9WWT2ib65gN+519oDYYRSKfnwot5vYG3M8DSaB1+a3Yrp06mBmEXxY3fkG84Ub19oHagrZlpYW2LeJ2BVwJIpxG+cVqke24iOTmY0o7zFG9+Vgux2lAH9Am2raI2+WqgoSHUPjhovk59iKSWY/pE7UjtfN2Ujwa64ketFeo6SbVTrxYZ2ZnDxMFOSbtUcUjZ6Z81qG5a8LL26Zl+0DpXAr4px5oZp8Zd6VxJbyThMAoNgLTOx80u3WqP8AJZxHfFqUBLkADeGedcsUbAPJ9gE39SE/LiYYP4Qd6uIeMgROCtrQPaBsDb3a3K+BKeL9KAoCVkcwvfJOaanYpLccweUCH4gCKHjRhEtgzVAkN/koPA6ThVK4bLPiND2ClDekDPtT8DmKjkImBzZoKEhCjOr5hvHe6VD60FHQImE7nI46lM5Zpim1i0dJpTKfUAa10qzijdeSjjehwfxu53k+K54u7uAxlYXuY6fhcjvYgn9hhvjDVcz1r46NRcb19EDDjDjVkNbvbpMaVcGgwlyyjcbgLCwD1OtG7KRWBAwiOFtIBCP9Gvukk6FLvUQE/K/xKdNSBU16ET+SV17qNXPEAeWgnweutnlWd6oocfpVvtLkNmzronTZgHhhNLN+bCCMqSduMzEfk7cxy1Zl6hkQJCsBxp5fbWEC4XxZW5YHoXutB6F23kGN3/a4yMDcAeQM8iscceSPfdRp1AOwAjTJSt5HT4QyyhlMeNH1Oq8LrrpFhnYABpy2KNiKvk20f7aS9IQ3JY5yR25iMfXmu+wjOkA6o/HQrIdKxDkCd1bECP8nHrgKQxilMx9zJ9yDRe9dlItjOof3MlH6y+Q0PvT9VVAhIzImGPUgeOQDADDKrU/m0CXOqz/FhBYBCxz9UcSfWGGzUnQ81YyJYQmSYao9NLvIWG5gA9yNbBecX1WhBovviHQt6aHEALbTNWtpDHUc50DXusbXxTG+h9mQg0bGhg2cIXMLYwZgRZqDJR3MzAHI3hL9VGvUY7GwZc3z4MKj4H26xjAiHMhxcR2WgbbRxLvepY4Sp8M4GnO/SzuXT6Q27SEIt0SymvqIlL9OdAY9tRKw9ECY2L+YI++rh9iQddlLcnfXhR9xXhCNnBphoSaeTCJv80Cke+xgfrRcDnyToG20lckmnelBeOAMgJwawMxGoL9ocP5QhUUMdGneqEgrL/MMFrt3Lhny0G+u0rkMBBB9HpY58BjBBBsAUTv1oQANMxTNl/ml9eWb5hvMQaEtoWJFganX0ChoHkKknIKBzACYDwHe20qh7nE9R3kHLNN1yyks7qDN1x042qyzy47a18uYilNfNAJhNLLcxcJlZsOfNwLI0DHRo+J9tU7QuKxBeHnqfzW0OuBIUIAhBNqixyk9nuA+7k8JoDzohHPn847yPA8YhuNA+TPkpDemz2PSQJnx3dIDuDQHRP9Pj7EqX/kov3hZ3kfiipb5TQBOyM+/iCegbwFccbQeoxqVoXNoIP1YYI1iks1ylow8V68ETtOordZAzEV4oPly1AOge+EGeMa9G26gsNHGLp+JdupmaxxSw1Txqm5kx5bfaPUedN6dx52hUxIOpvqHVJMyUdjxZYYdmRMRqWFD8SmYPTABmmNGzzLBarUbNbFH8bTK0VocHrsBTDAgLND9tDhXmGHqVyZowmy3YsaE5M4bdJvLQFlWE9hTLfmjFL8FUGCqTc9DzQRourZ2jDnOWSVsWAy0VrcCds7tG8pJm4gOJJTO++nftbBtoy6Kzx+FNhb2gwHZ044t/L3UP66l2rNKGWYCryt5X5X/Wg1/quAS5scan8Fn+GUlphSvddAmoj7u22osLmAu4THVDjrslKzhXo5LMa+ShJFBt3EN15+U05t7793V2XrK7NYvciD9f2I/1sH5c/7mJhDDV3Xv58iW7Nvxa4DMJedEvwamV3Wt+yZXVAn6CHm4z77U5Z6u35McOJD/avFdNhXW6gU2NRbY+16n+9kqpwF2nTzAXph7KXqemOymlAnfhjtK05g7QVI07o6wrcGcUZoYV2jY+VpkhrdGlEqjALZXUeLqkfStNfF8PoK5uhASuR+SpWYZJAHCmDpxwDvgWVtac4AA7RzDdXRL86iKVjywX76rGXRACFpCU0LBvFc+aLsf+2HHEfaF3fh3BLyL44SLvLk2v1cUSqBo3lshMYYGPtdunlh2npXjlLAealQ82f+7XAlVR5vdlZvVBcbP+bAfmR3IVuAv1poDX+n1XrijR1n9ukhNOJr4CNyOYlaPrPzcZKPAK3IECC8mlKbFV+Zn3pK1y5ecXELO6QIvPyncrzOrH2cieEDDYN9/s+qzq962eI/0cqNFTFbgNcZQFBAg+svj6b6wWlOVelYprTxf7pe2qLYkKq8CNBFIYBAyb12Z2YN3YgVbYtH2QHdbGtZrGLeazS8XUyfQ++dJn8QAMyc0BW667m+utwsk7HIbAYyJPZoUbPZPrMaTOS9MeUuOqowFO42JoxTG947gcBG0JmFuXPkPQ5ZTnodKTmwNKgy+XQbOB8EaPW8fV6zg3A89fVLJfMx5Xi+3lOpzGtR2duhj6gcT/Wo+5Dkl0oQYC1G9d9yiN1QIuozOaU+Hwzi+A62ldHuuT9oOtw2v5c6wWdPJUGaRz+V5yBlAagwyaQ7nDAVe980SPB4w6lI7zvyZWGO3jr2RSmF0sVgeMFpUPsPk1CGAA0NCGwCXO0MqPHbtd/NoZzctNh5w3MEtl8imn5EMpvpMgy1P8cJgBzjQxEdGf3CCLyPYVPCJwAVbXuipbruF2Kh0frg4ALgBHPJo7nmbhTRkNJzq0GvQf23e2btHc5p4BxTF4Yl6KyrsCnmwro2lzF0fD3NSLlyO5qyM1xrYFgDSmRgHAaDoLBGxbr4FFC5jc+QAAycOt4oAZv7F6YPM2+IsOBw8GxUk0gBtTJBwQJA11nTxVjhsUaOnQ9AnLoa5dGjmk3c37ETUuZkLuYmg60XR20ENo1oZ96ECArweblWk/1OJo1viSOgYHgwJTA8evecMB8iF22N9OnuLPILvrYcnAbLSvh34XyYcDrjoTgCU7SmloQK8FFXb2rQGlwti6bOECwBAQb6PeBFCU4U0O0Yd2cEQ+LljAk0HH6sVJtM9ieoUBNmnhoCNq9+5q9y2Y1gDf8QEbNDYalhNbmAlcFRWC+KQw4AfcKZMhYLX4q9HoqodZKUmU5gZYImnfUYfTuAO7I3Xpc1Zjh7wFFuxKAH6rpwHskG7Jd5WbravSADNbvofTtsj0ooGrTk2aFKVgU363ZFaaZU061pHPMqDWaOShgKuOOst9Uip3jb4aXEaqXoqb5bbEwZWZOcPRgHuITpm5jw/J7tI/zg7ZqZfQqENp3HN0mKbeG5WLrcwuGZsA9TZGCWFpV4E7UcICLtutrAffyPdnJCayrdl7JFBNhR4BFSazO+U3NgrzVLIJEqjAnSC8ICvmgjnvEMTV1wUlUIE7UbjWTIBL1bgTZTkkewXuEGmladG2nHE45A5Vusnnj63And4HSftWQOYsA6CubgEJhKsKv0vQcREc66tfyrFUmmHAmeEkYgcAAACiSURBVNo6fqH4W0glQ1YdOKtbb2NEIAVOMuMM8cMcKcDNHtSwabm8Fx9vAYkcGvat4lnTbd3GaOk5mMOdDJzcqi4vgU751H8XlRdcZ4qA525jRJu6w+mcf0WzEte6MMTmOcl39CKrbpQE+D9n9VlWBvqXXM+Rsfyf+Pdc9v1Zlft4uVeNO2q4D8skDcsvhVnnRSN/ogf77Y3ip/60R2wu0/0XjKK+EieIZeEAAAAASUVORK5CYII=", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}c \\left(c du_{dx} \\rho - dP_{dx}\\right)\\\\\\frac{R c \\eta_{2} \\rho \\left(t - t_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{3} \\left(v - v_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{4} \\left(w - w_{t}\\right)}{L_{x}}\\\\- \\frac{c^{2} \\eta_{5} \\rho u_{t} \\left(1 - M^{2}\\right)}{L_{x}}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x}}\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡c⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", - "⎢ ⎥\n", - "⎢ R⋅c⋅η₂⋅ρ⋅(t - tₜ) ⎥\n", - "⎢ ───────────────── ⎥\n", - "⎢ Lₓ ⎥\n", - "⎢ ⎥\n", - "⎢ c⋅η₃⋅(v - vₜ) ⎥\n", - "⎢ ───────────── ⎥\n", - "⎢ Lₓ ⎥\n", - "⎢ ⎥\n", - "⎢ c⋅η₄⋅(w - wₜ) ⎥\n", - "⎢ ───────────── ⎥\n", - "⎢ Lₓ ⎥\n", - "⎢ ⎥\n", - "⎢ 2 ⎛ 2⎞ ⎥\n", - "⎢-c ⋅η₅⋅ρ⋅uₜ⋅⎝1 - M ⎠ ⎥\n", - "⎢─────────────────────⎥\n", - "⎢ Lₓ ⎥\n", - "⎢ ⎥\n", - "⎢ c⋅η₆⋅(s - sₜ) ⎥\n", - "⎢ ───────────── ⎥\n", - "⎣ Lₓ ⎦" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "L_inflow_x1_lower_zerou = L_inflow_x1_lower.subs(u, 0)\n", - "L_inflow_x1_lower_zerou" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}- \\frac{1}{c} & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & \\frac{1}{c} & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡-1 ⎤\n", - "⎢─── 0 0 0 0 0⎥\n", - "⎢ c ⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 1 ⎥\n", - "⎢ 0 0 0 0 ─ 0⎥\n", - "⎢ c ⎥\n", - "⎢ ⎥\n", - "⎣ 0 0 0 0 0 0⎦" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def pinv(x): # Moore-Penrose pseudoinverse of a diagonal matrix\n", - " if x != 0:\n", - " return x**-1\n", - " else:\n", - " return 0\n", - "ll = [pinv(l.subs(u,0)) for l in lambda_list]\n", - "linv_zerou = diag(ll[1], ll[0], ll[0], ll[0], ll[2], ll[0])\n", - "linv_zerou" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\frac{L_{x} \\left(- c du_{dx} \\rho + dP_{dx}\\right) + c \\eta_{5} \\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x} c^{2}}\\\\\\frac{L_{x} \\left(c du_{dx} \\rho - dP_{dx}\\right) + c \\eta_{5} \\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x} c \\rho}\\\\0\\\\0\\\\\\frac{L_{x} \\left(- c du_{dx} \\rho + dP_{dx}\\right) + c \\eta_{5} \\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x}}\\\\0\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ ⎛ 2 ⎞⎤\n", - "⎢Lₓ⋅(-c⋅du_dx⋅ρ + dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M - 1⎠⎥\n", - "⎢────────────────────────────────────────────⎥\n", - "⎢ 2 ⎥\n", - "⎢ 2⋅Lₓ⋅c ⎥\n", - "⎢ ⎥\n", - "⎢ ⎛ 2 ⎞ ⎥\n", - "⎢Lₓ⋅(c⋅du_dx⋅ρ - dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M - 1⎠ ⎥\n", - "⎢─────────────────────────────────────────── ⎥\n", - "⎢ 2⋅Lₓ⋅c⋅ρ ⎥\n", - "⎢ ⎥\n", - "⎢ 0 ⎥\n", - "⎢ ⎥\n", - "⎢ 0 ⎥\n", - "⎢ ⎥\n", - "⎢ ⎛ 2 ⎞⎥\n", - "⎢Lₓ⋅(-c⋅du_dx⋅ρ + dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M - 1⎠⎥\n", - "⎢────────────────────────────────────────────⎥\n", - "⎢ 2⋅Lₓ ⎥\n", - "⎢ ⎥\n", - "⎣ 0 ⎦" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dQ_dx_inflow_x1_lower_zerou = simplify(S * linv_zerou * L_inflow_x1_lower_zerou)\n", - "dQ_dx_inflow_x1_lower_zerou" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dQ_dx[0] = (1.0/2.0)*(L_x*(-c*du_dx*rho + dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/(L_x*std::pow(c, 2));\n", - "dQ_dx[1] = (1.0/2.0)*(L_x*(c*du_dx*rho - dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/(L_x*c*rho);\n", - "dQ_dx[2] = 0;\n", - "dQ_dx[3] = 0;\n", - "dQ_dx[4] = (1.0/2.0)*(L_x*(-c*du_dx*rho + dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/L_x;\n", - "dQ_dx[5] = 0;\n" - ] - } - ], - "source": [ - "print(cxxcode(dQ_dx_inflow_x1_lower_zerou, assign_to='dQ_dx'))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 + "cells" : [ + { + "cell_type" : "code", + "execution_count" : 1, + "metadata" : {}, + "outputs" : [], + "source" : [ "from sympy import *\n", "init_printing(use_unicode=True)" ] + }, + {"cell_type" : "markdown", "metadata" : {}, "source" : ["## Primitive variable system"]}, { + "cell_type" : "code", + "execution_count" : 2, + "metadata" : {}, + "outputs" : [], + "source" : [ + "# \\partial_t q + F \\partial_x q + G \\partial_y q + H \\partial_z q = 0\n", "\n", + "rho = Symbol('rho', positive=True) # density\n", "p = Symbol('P', positive=True) # pressure\n", + "u = Symbol('u') # normal velocity\n", "v = Symbol('v') # transverse velocity\n", "w = Symbol('w') # transverse velocity\n", + "s = Symbol('s') # passive scalar\n", "c = Symbol('c') # sound speed\n", "\n", "F = Matrix([\n", + "[u, rho, 0, 0, 0, 0],\n", "[0, u , 0, 0, 1/rho, 0],\n", "[0, 0, u, 0, 0, 0],\n", + "[0, 0, 0, u, 0, 0],\n", "[0, rho*c*c, 0, 0, u, 0],\n", "[0, 0, 0, 0, 0, u]])" + ] + }, + { + "cell_type" : "code", + "execution_count" : 3, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "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" + "ZwRknHvWrmQLjQCNk+dA+" + "VnWsUPKoYUU80IgEAI89td9JknjvMLFj5ybnJwAHQUhIASmEeBhCdrjhaa10yApRwi4IiDjdIVfxIXANAJVz9biKFIop8vTMKVzIsoHnh9BGp43ber" + "d0BOrqLSrjZwAhL6A3iOmz6DXuKejrre45xo3fIgkH3i9j4sHvrmWoZPlpjrwxCoy7SrGCUBCOV1e2lNEkw/8hnauvFQ/" + "Vt5TTyVoVzFOgJPtUNcA3mi8d/lKwu6JVWjatYyT28Gp303Nt459W1eyEbSsa+/" + "ylcTSE6vQtIsbJ4Zz+gs6FcL+prp3+U4pbkm+J1Z7oF3cOKE8M7ykz6BeuXMMeEk7aFl27/KVxNITq/" + "C0axjnHOWaP5c5ZSOW2bt8JXXiidWmadM4P+uRtjgX+NRa0+q03mxLTpeNt7nx3uWbi8Occp5YRaV9cCpN4/" + "yrR9niOaBPlsFc36azqamrpdnG0GQ9W83Yu3wlcffEKjDt6n5r1zrULdk2ata1d/" + "lKYueJVWjatdac2Q51S7aOCnXtXb6SkHliFZp2FePElCKU0+WlLTG4fLYJYuv/" + "peIvKu+JVXTal4uQXlb4GsUjOV1eJt3NP3YKIx8aKkcRBv4wzxDGufINu6v/" + "erbDLNr3Xr58+Qhi85D6Qygw7EbNatXpRSGwIQRgg3IqvSF9iBUhkESgypozSUmJQkAILEJAxrkILhUWAu0QkHG2w1qUhMAiBGSci+" + "BSYSHQDgEZZzusRUkILEKAximn0osgU2EhUBUBHjmUU+mqEKtyIbAOAR4SkVPpddjpLSHQBgGtOdvgLCpCYDECNc/" + "WXuAokpxKL1ZJvRe89QH6PCrKM75yaD1DzdVGTihCTqVnKKBVES99gK4cWq90rF7FOKEQOZVuZXUz6HjqA7Tl0LrXEbHA7Rtc3YbPKdVVMU4Q9XTme" + "0rmEvnR5IvGbwkdsQ5PubNp1zJObgenHCzZJ2n2TWEpJbSuJ5p80fgtpU9PubNpFzdODN3mxOsYwE2+wj/" + "GwNq8aPJF43etXsbvecpdinZx4wRIZnicX0+FOQY89a53ejT5ovFbSr+echehXcM454BrfmzmlI1YJpp80fgt1SY85T5Jm8b5WS+" + "pxbmCp9aaVqf1KHIqbYjUj/" + "eujykEPeXOoS2n0lMaPZWO9YRN11NTc0uzja9T1VXPj8ZvKUA85c6kLafSmY3A01nxGtaj8btGxtQ7nnJn06615vR05ptSUum0aPJF47eUvjzlzqZd" + "xTgxrMupdKnmVaCeDenDNkFs76GAdNNVeMpdgvbltGjZOdeoIYzT5RXSRpPPjV80VI4iDPxhnkEOrW9wOPpXTqWPwqNMIdAWAXRkcirdFnJREwLLEa" + "iy5lzOht4QAkJgjICMc4yInoXARhCQcW5EEWJDCIwRkHGOEdGzENgIAjLOjShCbAiBMQI0TjmVHqOiZyHghwCP/cmptB/" + "+oiwEJhHgQQ05lZ6ERxlCYAMIaM25ASWIBSGQQqDm2doLHEXatVPpFKBbTvPUhydt6gT0HyHiGd8wDq2rjZwAY9dOpanwSMFTH160QTe0Q+" + "sqxglQdu1UOpJRkldPfTjTDu3Quopxoj1kO9SNZgAb59dTH560PdWSLXct4+R2cMrJkfnWse/" + "6PME7J9qe+vCk7anjbLkvS3OPaYw5uTpWdZMv4Y8xsCYPsnGDyzwH0tHXB6R9HNeFNCqGPSfLXOF6gTTrmPDYLoCumz48abdD+" + "C6lUnIXN06waobHhjkV5jSYqXebpwNsGthbXDQy/" + "iOaC8T8oZgG+JTPFpBOA+ZGRHfKAzENlZtjn1uZxrGnPjxpN4b5Frkictea1t7iNPFgvmQSWZtMomG+gaF1htlz+DViph8C8p/h4ZkZZp/" + "xATGNlUa61eCpD0/anvo4KXeNkTO11jQQrEexqaGlbzaGUXGE5Mj5asgk0lMj4c8o82JYDvd8l8FrtuCpD0/aN6j7/C0id/" + "GRE43WprOpxmhpLuuvlXriCPluIFeyGuRzZKR8v4wK2Ij5cZTe5HHAt2E/" + "pGtpVfThSXsoZOv7UnIXN84eiGyHuq0BTdEDyGy8vG5NX1NlkdZtnQ8UY8W+wc0fSK9iAEbkROypD0/" + "aJ2Cpmp0tdy3jzHaoWxW2mZUPDO1T6hXk26jIbN5zfXkIyH+EB140XM/" + "gqQ9P2qExr2KcaJR7cipNWe4YF2Tkrmy3tsA9R9crXLamvujT2DCf495lSgvaXQB9N3140jb5+" + "9g2YA46GuUXfSwh92VRjm5Xdo3H8E6lATKNi3LQGH/vRaQxvkKajag2gvKnlu/" + "7Mg8Rf4VnV8PseWHkqQ832sCfHSSD6SiMQ2s5lb5RXNZfNADu6D5GzEaoIARWI4A2JKfSq9FLv8hemRsACkKgGAJV1pzFuAtQEXo6W2++" + "D8CuWAyEgIwzX1mP+yo0cuZjqRoGCMg4B2CsvOXPJ08xgtrm0Mpq9JoQuI1Azd3a25R2+" + "tQbpUbNnerXUyyNnJ7oi7YQOIKAjPMIOMoSAp4IyDg90RdtIXAEARnnEXCUJQQ8EZBxeqIv2kLgCAJVd2uxk8nzqAz8uJpnTXlG1fPTKfJSLESTz5P" + "fc6XNxgbZ+WUSz/gucmhdbeQEQ/Sb8x4xD4O/xj09BLzF/RXi8CGafJ78niNtyJzt0LqKcYKxXTuVjiafJ79nTDvboXUV48Sw2HkFSAyPPH/" + "6BArjedTIIZp8nvyeK+3s9l3LOPmVRvch8ohDW28yP3KIJp8nv+dKO7t9FzfOmaNik6/Rs9FJVBBNPk9+z5V2otmsSipunODCDO/" + "YQfDI09po8nnye660Vxnj+KUaxjmmkXp+kErcUVo0+Tz5PVfaJ5t7DeNMrTWNEetJwziVNsYHcTT5PPk9V9qD5rL+" + "trhxYp1h09nU1NXSbGNoPedOb0aTz5Pfc6VdqmkWN86esWyHuqUErFRPNPk8+T1X2tlNr5Zx8qiSue8YMnmNh4+DHnWYF+k+mnye/" + "J4r7ez2XMU4YXxuToyzEZlRQTT5PPk9V9qjZmSbXrbnMspOP16mk4ukcpQM71T6CBLR5PPk9yxpo2PirIGBBzEYFjm0llPpG9D0VwhsAgEYtJxKb0I" + "TYkIIHEGgyprzCD1lCQEhMBMBGedMoFRMCLRGQMbZGnHREwIzEZBxzgRKxYRAawSGP6X8jp2iMf03SOPHsgpCQAgURgC2xf/" + "3ejVVLY2T51yfTxQIewZ2Qh4lC4EtIWAO8JI8/R+r53RWtVJV8QAAAABJRU5ErkJggg==", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}0 & - c \\rho & 0 & 0 & 1 & 0\\\\- c^{2} & 0 & 0 & 0 & 1 & " + "0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 & 0\\\\0 & c \\rho & 0 & 0 & 1 & 0\\\\0 & 0 & 0 & 0 & " + "0 & 1\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ 0 -c⋅ρ 0 0 1 0⎤\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", + "⎢-c 0 0 0 1 0⎥\n", "⎢ ⎥\n", "⎢ 0 0 1 0 0 0⎥\n", + "⎢ ⎥\n", "⎢ 0 0 0 1 0 0⎥\n", "⎢ ⎥\n", + "⎢ 0 c⋅ρ 0 0 1 0⎥\n", "⎢ ⎥\n", "⎣ 0 0 0 0 0 1⎦" + ] + }, + "execution_count" : 3, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute the eigenvector matrix S\n", "c = Symbol('c')\n", "rho = Symbol('rho')\n", + "lambda_list = [eval for (eval, n, es) in F.left_eigenvects()]\n", + "Sinv_list = [[ev for ev in es] for (v, n, es) in F.left_eigenvects()]\n", + "Sinv = Matrix([Sinv_list[1][0], Sinv_list[0][2], Sinv_list[0][0], Sinv_list[0][1], Sinv_list[2][0], Sinv_list[0][3]])\n", + "Sinv" + ] + }, + { + "cell_type" : "code", + "execution_count" : 4, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAARQAAACWCAYAAAAff3ceAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAQ3UlEQVR4Ae1dUZLdthF8Su23Ss5W5QDrG+" + "zGJ4hyA9k3kHWDuPIl/" + "amsG9g5gSu6gZQTrLU3kA+QqrhUPkG63xISieXycckBZgg2qvgIgiRmugccAiAf59HLly8vD4fDByxj6e2rV6++HduhMjEgBvbHAPzBR6C+GEOOfY/" + "OejveIM+D++m3/obyYkAM7J6BH0cY+DvKnrG871B+goeRAxlhS0ViQAzcMgAf8XPOBcpYdMeh5MdpuzADMETy9v+DqK+x/" + "FjTqXvLJ70RdKAea5Nw3DL4p7VE6vxlDKABct7qGusfsHC4+QOWd8iPjk+XSbn/LG/" + "51CyCDvczNH+PcHzhapMOBQZ8iuX7LzC2let0f4L126Q58p+Q5/" + "ZPqazU2ls+cUXQwYJf4RiyuEmHAghPumWIZjtbfHJ2M6LuNcroLImvZPKWT2wRdLDgWDh6LG7VofQgbDL7FFr/PqJ5mhTn/" + "pLJWz6xRdDBgmPh6LF41stXyeLuy4lITkIysZv/K8rG7tbHAyx/ujs/h0qcAP2A7cGMNbb/" + "jfLnWFOvIqnT4VTdfz51wNL93vKpdwQdlvLXP084+mzc5qv1UED+BRa+58KJyDdckL/" + "Ckp503GpU9vefndx3uVyU09E8w7qYM+mgJWcxJedJQRq85RNaBB0sKBaOjMVqDgVyeRHzzdvPE5HY/" + "q4rx6psgtxLSOAcBRNfxMmHHCyr0lOiAifS+Yn9pXd7yye+CDpY8LwrHLOGPLgYecf8D5aH3Dm/" + "xXnHCxRrPrm4wPIay+eE8q8+b4xkuvM4Rs3T8c6A/S/yHdi+QTknyvL0G8qTw6AjG+iCbcrJy/" + "I6LLZzR9avM93x0pCwv88q7y2fOCLoYMGncGQsznUo7J5fZec+ZJMX8Htc0KxndrrHYRxQzrfyOITisGlWwrFH2VjTcdAxfp4/" + "QRmdHcveYymaqAcWyqC8PKWyNDmb71+97S2fACLosJpI4RilsPiQB42HFwkXDnkiJPZe2Fv51FPm+" + "Nowym56ZSWzdFx0YnlKPZTSjs1bPnFH0CHnf8m2cPRYq+FQ0oWb1j3xx7sVeww1Ey/k3HFw/" + "uR4EcOpfN85wZI68WnSX0cEsBfIIdsoVyPHLy3ylk+9I+iwlL/+ecLRY6O4Q+lkcXhxZ14DFw6f8EyNQ3uqmmUHwwnowMlaXtzJyXxd+oJG/" + "eTjd6yPPSMiQ/4JVhwaPud2yeQtn9gi6GDBsXAMWZw1hzI85eFbIP0FFv7xjQ4kfSKBF9BrlJW+G+cK8z8z/+p04eQnHQx7BtTvH1j/gqVGSjK/" + "gTDqwfXfoENybKV18JZPfBF0sOBZODoWH/U+sMQ78+DubcF0iTqgJ+/" + "sD5qULaGH6hQDYuDY2+Q7XPz8yaNaQx5r3tmrqd2zscag+" + "sRAcwxUGfJYswZPeJxAta5X9YkBMbCOga32UNah1tliQAwUYUAOpQitqlQM7JMBOZR92l2oxUARBuRQitCqSsXAPhmQQ9mn3YVaDBRhQA6lCK2qVAz" + "skwE5lH3aXajFQBEG5FCK0KpKxcA+GQj5YhteXEufheR/XKoHwNpLU4jAcwQdLOwtHLcshuuhwDAfoJpbACyLxrWFOiLwHEEHC1sJxxcWQzkUGIZ/" + "MnILgPWFlrZzEXiOoIOFlYVjyGIohwLV+M2Usb/" + "vX6P8KYzHTx4orWcgAs8RdFjPZDtt1sQe0RwKv9429sGl9FkF7ldaz0AEniPosJ5JBSwbcHg22HLcmNn7SN9cddR0negOp1uwsQg8R9BhnRVvzxaOu" + "yxG6qEkZzH1nZMWhjzewcYi8BxBh7tXw8NLhCPjLJJDyVQb3TwfLd1IIe5ol1CV80FMkYONReA5gg63llr3uyscdCiPO77Seh19y88emztJtaU7Ad9" + "L2XJi+I4UOZEfpGYAtH7ivELpb9pG4DmCDn3el+aF45a5vyQCw/" + "RQcKGloc7YsCaVpcnZpP+m1gkj1nQcxFQ92FjSoZOf81eF5wg65MCXbAvHXdboUP7oitP67lH1SloJmnSKMT6i8ww2FoHnCDqcstOc/" + "cJxOPw3ERWmh9Ip1ErQpMTvfesL7LjJdtYMNhaB5wg6ZCZYtCkcPdpCORR0IV0DYPV4KZ0dDN2Am5O11YKNReA5gg4WRhaOIYth3kPpqXWFPINufYO" + "1RwCsnirFshGCjUXgOYIOFkYWjo7FTQb6smgBqkMMiAEbBnDz33ygLxsmVIsYEAOmDISaQzFFpsrEgBiozoAcSnXKJVAMtMuAHEq7thUyMVCdATmU6" + "pRLoBholwE5lHZtK2RioDoDdCh8yeoFlqk/OlVXTALFgBjYDAP8+wF9yIEO5QIL//Wa/tGLrJIYEANiYDYD/LPr8Z/" + "zGvLM5kwHigExcIoBOZRTDGm/" + "GBADsxmI+F+" + "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" + "B76kKd5iQcO+" + "YwiOcZzufwiUOm2QnHH2VjTcfBNu4S9Ix6YKHe6TpjPqVUNuvaizbkMQk2lJgIvPbG6S2fpnHTARcPLxIuVYY2BHsisQfjHfTMxB7RHIpJsKETxouw" + "2xunt3zawE0H3pG7RpDWgzaB/" + "ewx1EwceqWhT5JbO+iZiT1CORQYUoG+" + "dhLoK4Ct2dbuzG1ALz5CnppTSBe85XownIAOnKytGvTMyh5nlqwY1XWFehToy4jMiWoi8OymAy6gF3QeXMARHx0zcRj0GmWjPZfjEWV+" + "ogQ9W20PBfoq00BU644YgANaNCnbCkXAr0BfrRhTOEIwwB5N7V5NCOC5EhGHPLmO2hYDoRnAHZpPSJTAQKhJWVlEDIiBbTMgh7Jt+" + "0l7MRCKATmUUOaQMmJg2wzIoWzbftJeDIRiQA4llDmkjBjYNgNyKNu2n7QXA6EYkEMJZQ4pIwa2zYAcyrbtJ+" + "3FQCgGQr7YhheFFOirQjOJwHMEHSyobgXHWi7C9VBgGAX6WmvVGedH4DmCDjOoOnlIKzhOAp1xQCiHAsMo0JcCffH7rvw84ybSXtrsXGOEcihQ2iTY" + "0Fzwjsd54/SWT+oj6GDRBFrBYcFFuP/y8EtZYx+3SR+g4f4WkjdOb/m0YQQdLNpSKzgsuDicmdRiUAm6jvy4zamUvn5/" + "6riw+" + "71xesunYSLoYNFAGsNhEmws0pAnOYup70rMcToWbaVkHd44veWT2wg6WNi4FRxmwcYiOZQ5Bj6fc1ADx3jj9JZPE0bQwaIphcaBXtYlQF53QFcHG4v" + "kUMbmTpJB051Agb4SI8vXEXiOoMNyBr+c2QIOhu9IkRMZqyh/" + "wsY5ol++" + "QJ7OhXEoAJWGOmPDmlSWJmenUQXe643TWz5NE0EHiybSAo6EAWs6Dl5nq4KNhXEonYFNgg1ZNJbCdXjj9JZPeiPoYGHmVnDw8ffqYGPRHIpJsCGLVl" + "K4Dm+c3vJJbwQdLMzcCo4LkHGTEfLgYGOhHAq6XQr0pUBfHMc/" + "zxp22M2G2uxgOgG4OFn74GBjYd5D6bWYK+" + "QV6KtHSKFsBJ4j6GBBbws4TIKNKdCXRXNSHWJgxwygN6NAXzu2v6CLgWIMhJpDKYZSFYsBMVCFATmUKjRLiBjYBwNyKPuws1CKgSoMyKFUoVlCxMA+" + "GOg/Nv6I2doc9VuU8Q06JTEgBsTAAf7gI2i4uI8KOhS+0PLingMGL7vcc4yKxYAY2A8D6QPyo4j/D04MQISuHGg1AAAAAElFTkSuQmCC", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}- c + u & 0 & 0 & 0 & 0 & 0\\\\0 & u & 0 & 0 & 0 & 0\\\\0 & 0 & u & 0 & 0 " + "& 0\\\\0 & 0 & 0 & u & 0 & 0\\\\0 & 0 & 0 & 0 & c + u & 0\\\\0 & 0 & 0 & 0 & 0 & u\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡-c + u 0 0 0 0 0⎤\n", "⎢ ⎥\n", "⎢ 0 u 0 0 0 0⎥\n", + "⎢ ⎥\n", "⎢ 0 0 u 0 0 0⎥\n", "⎢ ⎥\n", + "⎢ 0 0 0 u 0 0⎥\n", "⎢ ⎥\n", "⎢ 0 0 0 0 c + u 0⎥\n", + "⎢ ⎥\n", "⎣ 0 0 0 0 0 u⎦" + ] + }, + "execution_count" : 4, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute eigenvalue matrix \\lambda\n", + "lambda_waves = diag(lambda_list[1], lambda_list[0], lambda_list[0], lambda_list[0], lambda_list[2], lambda_list[0])\n", + "lambda_waves" + ] + }, + { + "cell_type" : "code", + "execution_count" : 5, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "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" + "w5f0j6VWdtzdJhzwCMFA5YZ8Oyn/" + "0nEio4xJKFL94jgHJv4Efvt+MLS38f5wYAEAz35qfQYw0n2AeGcr8AxhkjBgFkGevJTFy0Gs54QwIKBThmIwNCpYUOtYKCEAfGuBJpbrpZqKyF3/" + "FuPegMzB9L4bL/4bWHrfFnHR98rwSjaYgBQ3h92s1Qbya2RPOkNrHz2hI/Gc4LPt9g48CuarPNlHR+NVYpRLDAAqKul2mpdCd70Bl6+p/" + "IRNk46+64WD3Prsc6XdXzkuQZGscAAvJzVmJ6KJP6UXuDgGspwRmSPaa16n2pL63xZx0feizFKBoZrAH414S3pLcks7zGtVe9TbWmdL+" + "v4yHsxRpHAMLM1cP9UT7L6u7Xqfao9rPNlHR95r4VRJDAAb7roj81c7LErsVa9T40N1vmyjo+" + "8V8HIwMCmPAeappr5yBZLD8Qk2RK0Vr1PtYJ1vqzjI++HMPJZpO2TzgwMF9h4aypFGhxWT8eCTpL7srpU/" + "QrXqvepzFvnyzo+8l6CkWMTjAXblai4b5rQ70ldiKnuQspLg5BNsUhWvla9T+XYOl/W8ZH3WhilxhiI+dRls/" + "hbz2mtep9qM+t8WcdH3osxSgYGTq3dvrx1z2Ou8P12FOn2it1/XavepxrOOl/W8ZH3YoxigQEXvqul2k716v3fOdc7DVKlcaB99ap/" + "t86XdXw0SA2M59Ute7xCtg48LdV2XJv5pa70hmPxH4eJg1FMfHaCY0A/DE63zWz4YZ0v6/" + "homiKMZzc3N5eohA83PRyMz0ojBQPBwMoYwPXP55meYX8m1pVYGcehbjDgmoEIDK7NF+" + "CDgTYMRGBow2vUGgy4ZiACg2vzBfhgoA0DDAzvDVWnfRtJUWswEAxYZ8DlgjPWSQ18wYB3BnwtOOOd7cAfDHhjIMYYvFks8AYDAgxEYBAgOUQEA94Y" + "iMDgzWKBNxgQYED6WYkNplvGgjOYfg7b8pkRs++gsGAnYOB0fT63Ib7gTe7as8BPS4yiLQaQGQvOPH36NQz6BBsfSLrIGVejXNNOkK2+4E2Oc01+" + "cthSeSlGscAAoLHgzGA1cME3Wj3Htn2NVjKmhb22ncgNNrUFb3I20OYnh4/lNTCKBQbgLV4EYw4pBs/" + "xprc3vNIm98BPMUbJwMBn+6deVJn62enZf2lDt5bnTW9veFvbb79+D/wUYxQJDGjapBe+7pM8/" + "i72lqCx0JbH3vT2hrel7abq9sBPLYwigQEkp4uefetDaU7wOPRbq/ne9PaGV9ruHvipgpGBgU35WHBG2sV+k/" + "fgt0MXR97wSpPqgZ9DGPl26VhwRsBjpsZUktgU2S0ttOMNb+JSau+BnxKMHJuIBWdaexP6e6nrNNVNSnlp8LU1nGz93vBmFap8ggd+" + "amGUGmOgiYoXwahsZ6nqvOntDa+UHZMcD/" + "wUY5QMDMWLYCTLONt709sbXml38MBPMUaxwIAmTiw4M7gwuGA34lNsj6W9OifPmJ3SIFkaj8nBb15ujJ9JfWtgPJ+suV3mFaqOBWc2mw/" + "Bw0cw4G07qotqVrUTeOE/HhMHw5ikF7x5K/Xwpyo/" + "h2HdKSnCGAvO3OEyvgQD62UAATkWnFmv+UPzYCDPgNgYQx5KnBEMBANWGIjAYMUSgSMYMMRABAZDxggowYAVBhgY3hvApL0VbIEjGAgGZBmIBWdk+" + "Q5pwYALBnYLzkjPY9jglkia3PM5jnmvNVIw4I6B3v1YNDCAzEt4QJq0kh4icucUAXjdDKzBj6UDA2f63YLYT9btWqG9Zwbgv937cdyV8OyhgT0YaMS" + "AaIuhkQ4uqsW/jKuFdrTxast34VQZkCUcRoshQ26NYhjI1UI72ni15dewuXYdpRxGYGhsQRjI1UI72ni15Td2B5Hqa3AYgaG9qYoX/" + "2gP8Y4Ebbza8u+Q4fRLMYcRGNpbnrdnX02ISe96TLdvJ05RydLGqy1fhfTKQos5PK8M6Gh1aOJc4AS+nprAL/" + "CdA3IvsedCr90l6DVnroaltxOp4vXCF3Ca9eNaHEoHBv5LcqXntaR00b8+ovCci/" + "HIz6sWaePVlj+LTFx8lv24CofRlZjlCk1PetC09vqVa+PVll+fUfkasxyKtRgQZd/" + "k9Mc5Z7lznJVPjS0kFVJkjwVnEiPTYzGp1ARfDvy4is9JBobeLvrksAf3cKLX2Fg+1V1IeWkQ8mA9UgXaeLXlz+EZGE37cS0OoysxxxvKzile/KNM/" + "OJfa+PVlr+YMIM/KOZQrMVA8hDN+C/5xUAkR3aZHjPKvT3s8pOvQk/" + "ToccKXuELHyizprs2Xm35YxtNHjvw42IOpVsMXFPiybBxEgb7Q5wu3G2Crq4W2tHGqy1/piOa9uMaHIq2GED6ZwDNxUPY1GHiPynzLrHdbnP6/" + "GDrwNNCO9p4teXnvNCDHxdxKB0YOLnppxzrvZUj6LG7QN1dJG282vJnGMm8H5dyKBoYAJbN6nEiwb8gv+" + "fWwljfOO6AgTX4sfQYw84tQO4lvvBNTmzyRAoGXDLQqx+rBAaQyTsSHF+" + "4wrG1UXmXDhqg5Rno2Y9FuxI03UAm70x8PPrOfDMTfeRdLCR6Y6B3PxYNDAOZz+" + "AEDAzsSjBxnGFND1ZtlY4PvwyswY9FAwNcgXMW7g37nWeAaDcj9jvQcbBmBrr3Y9HAgADw/pq9KXTvg4E1+LHK4GMf7hFaBAP9MhCBoV/" + "bhmbBwMkMRGA4mbr4YTDQLwOiYwykEf2z9KQhX1DyEBufIej+VqU3vbXxasunrx5L1vEl7MDJu3982nLRnCHRFgNAcjT3Bfa8XckXwPI25Q84vsC+" + "2+" + "RNb2282vJzjugA3z1g5MOKnBrwLbbF15dYYABIVwuv5Jxjbrk3vbXxasvP2dU6PuIHRr457BE2TgP4LqfTVLlYYIDw4kUwphRwkOdNb2282vJzLmUd" + "Xw7/rHLJwHANRFMvqkzjCyzvMXnTWxuvtvycD1rHl8M/q1wkMKBJw9mOuZTeApw7z025N7218WrLzzmWdXw5/EvKRQIDAKWL/" + "tiTlHOCxxLdLJzrTW9tvNrycz5jHV8O/+xyqcAwB9CDOSd1eI43vbXxasvPuaB1fDn823KpwDA1tpAApijMeQ29JW96a+PVlp/" + "zP+v4cvhnl4sEBvTNUhdiqruQ8tIg5Gzw1k/0prc2Xm35OX+yji+Hf0m5SGAYABUvgrFEMUPnetNbG6+2/" + "JzrWMeXwz+rXDIwcFrmBxOorpBnceGVCagnZXnTWxuvtvycka3jy+GfVS4WGNAMc7Xwyiz2ZpzkTW9tvNrycya1jm8CfxoMTWN5E6e8m3X+" + "blbTHLYOPC28UosMb3pr49WWn7O7dXwbBDC2bJg4IYuJz05wHI/" + "PJu0v47A9YfxxdnNzc4kMPtz0cPjhuDyOg4FgYCUM4Prn80zPsD8T60qshNtQMxjogoEIDF2YMZQIBuoyEIGhLp9RWzDQBQPjwcef0bfYV+" + "o58viYaaRgIBjoiAFc1z9DnYtDKjEwcKTy0LoO3c1GPERE5AcDK2MgvWJxUu3/AySyMXnbmOhyAAAAAElFTkSuQmCC", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2 c^{2}} & - \\frac{1}{c^{2}} & 0 & 0 & \\frac{1}{2 c^{2}} & " + "0\\\\- \\frac{1}{2 c \\rho} & 0 & 0 & 0 & \\frac{1}{2 c \\rho} & 0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 " + "& 0\\\\\\frac{1}{2} & 0 & 0 & 0 & \\frac{1}{2} & 0\\\\0 & 0 & 0 & 0 & 0 & 1\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ 1 -1 1 ⎤\n", "⎢──── ─── 0 0 ──── 0⎥\n", "⎢ 2 2 2 ⎥\n", + "⎢2⋅c c 2⋅c ⎥\n", "⎢ ⎥\n", "⎢ -1 1 ⎥\n", + "⎢───── 0 0 0 ───── 0⎥\n", "⎢2⋅c⋅ρ 2⋅c⋅ρ ⎥\n", "⎢ ⎥\n", + "⎢ 0 0 1 0 0 0⎥\n", "⎢ ⎥\n", "⎢ 0 0 0 1 0 0⎥\n", + "⎢ ⎥\n", "⎢ 1/2 0 0 0 1/2 0⎥\n", "⎢ ⎥\n", + "⎣ 0 0 0 0 0 1⎦" + ] + }, + "execution_count" : 5, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "# compute S\n", "S = Sinv.inv()\n", "S" ] + }, + { + "cell_type" : "code", + "execution_count" : 6, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAOQAAACWCAYAAADOvSRHAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXdLdNNLHD6lcU0yo4p7MDjJhBQ" + "M7GMgKCDvIVK7gLjWzA8gKwrADhhXwsQNm7qfqDU+xgbz/n45ayD6yLduyj58n3VU+kvXRav3VrS/" + "bOu98+eWXj06n08+6SvTdV1999WkpwsMcAUdgPgKyp1+V62Epp+LeuZdF/FP+L3rX11l8x6vMRaadRAe/" + "aVGHFjwODpOLNxOBCZ34h9j17ew7K+K+eeR+LUb/ye4HvUr3TJGkrUo/yOj6EQ9Vl7/" + "pojOaTXcIh9l19wyjCAzqlXTmm35OhRH0N35yg+R+kpSZjO/" + "LXaTEkwXsmEB1+LeuR7qe6roAakwUpW+KA3KovJe6mHl8q3t6UacJBKZwUzyDxye6Po6s/i33Jvrfk/tA10+6/" + "q60Fh6jlznis1iv3snWkH8Wo9ERT/FU4Ae5f1km6jFzqT6sof8qt6pBtsRBvN9Ilk/" + "lpmnMMVE7llRTuMX4X+Re6K7CvldtHuv6UP4qHaipvXhV6ZXSPRU/ZqidNWRNGcx/" + "B9eVNQwOmoY6Ubda2gQHNUjei9fK8tanm8JN8cw+oFdn5+KX9mewwTBa0ly9OuWbOjWCfKbKzZra1TC9dppYJ+" + "pGo9TQVjgwtfqP5GjWS9dU5g6kmcJtqqOzDcr3W2KxQK/" + "qDVLMWTONTmlbVuYKvKjbZ1PlbowDisMax2keAlO4YbAntd0vA2xDvOKGRtCBbFXBVXplnO6bp8JF6EllUaWZzv1f5EdP/" + "9MIEDFZG0fl2LTjz+L4s+47o7nu/" + "6Xwz+" + "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" + "A8uIQS6l/" + "DldSbkBqlbhaYy+QQe5YkP9oJuScoY0hZ90GJPyMzphIB1ZFF49Kmb8UWqmJ7lBEU1dc2NH1m+" + "JENGDYyiBlDf5Y1DouBTeNxLy5TxPShPqIrd0WFMw/" + "Miz5JB39oHJJUZRDjOEPElQSsX360gaOqzOaJ9nlL8W21628AzyNMG7n8fuW2BS1FsrYK6LQf4eM5lbxUMAhJ5BLg2DAiYlVRgGQFg+" + "hdPtIMErNGY/RSyHU+OWEp3F7FPVBwoLvPI4yUc9qW+aMiksGJdcU1ozzjyr+UnTNzz4cb2yRNG9KJ9wlWN424ylly3cMnWrbY9S/" + "hSm8koGhxyUwWyg1GGk/AOei7qJzwW2hbzg1+/MCsmKQS0wMb1dY5j/M+num2eFS6/X3yGlojTQUqBWiPNH1tigNGoylj9i5/" + "lGeKFI1LWk7CVsUsGRZ8eYYyQKz5oz4RfTDtXFDCQZdkz/XHyYOpOPDaaOgSvNM4VBTKcZoWi34Fdcf/" + "qsqG1opG5j2J6U71GUqIT9hbCxnNaYgC10c3bW/d5blz3kRqGS4kR+TMMCSALhaQQiRhUdGt8qVkywJFDlGkjmdtgo3kawTvjETV9R01pZ/" + "NjEAg+ji9HPIqI7pHBsiNmmD/gx6lgdzM1ZkZ63VYJsct/" + "TPTvGrDXhQ1ugvElxFY4xsq5mNKOXJy3+" + "x7pM0eXdleZgi2DWfpMdruq2FSZgB60ZIc8c9NvCIDsgquI0Jo1qRjp0UngSQh6mWuTZglDIi7WL5GREqAZR6TEEFDoZnMIYUajvT7ogdmzNKEjHNa" + "YsqeMic0Yoj41m+c4pdSFPIpUHf96fzTdzqNuaA5PTSJsK2tAj2Wdhm4nCqH9S/" + "tTRZHF971aY0MbMZqjDamoxZUUROImbCvNMDoWsOSlcyRJhvGyWcDWpmHEWv/CoIcpnO58o/" + "IsFZWHY1JXRZerUcRqKqfyYsiAHu7Z9AlMem3ysKxma/HldwNqml/" + "0yGHnzToiRpJNGvMIIrHCI+DDtVbh1pCFix59qbCUjmzHgG0Zy3dMp8XhpbO26FSboegdb3S+m1QYpEDCgvPFNmFKYxXVc8bBNF0bJZpWzQsQ/" + "KbWFLXHn1JU6qQx71FEsTmk6o50lUvigYilutC6Kx8i58pkL5aCwhJ/k0maB5Eep6eHTyG7+mGQXJ8pU0pmLMKW1NXOVbEq/" + "JSboLB1EE7rXhEsbJt+KTVFB27B/" + "O7hExe4bnI2QjBInpWFNOnpg8kK0KDeVvZBH82xbYSK+GDodGrrbhFaPkE2kODOhl+F54+" + "gI0LC8u8yKUYWXF9jYYZ0Mpk90zTkwWcnnkcprPruZJ8Fo6i0woYNjY6xZJ3Soc1lVMdZTr+" + "Tuuqkw2owe6QgMICA9ZU8ibeQNJJsMFh92ydnlfudIU1YE/1wXz4mcHIFDI5AZUb5WXy3zoQxSlWToZ/eTHVsnR+CQCEg/" + "2eHl9czBzbelgmOQWDi7VtXP5JYWVpNPlWS6ylqHjQgnR+CICLAmv9j9XSEoa++" + "wc8ymDtbOhgqBzRan4rWYZIz5M7LFfDyjI7AFAtLPWY9dKmRg8MEGvznUlLVCcE/" + "iCNxpBNwg73TzeuVuGwJHeg5527BbLa+mPjxUfqmLZcOs81xXF+4MDomAG+QVm0UGyXuji85zvaLYXvSGCPiUdUNwa1jLKFnQQ0d+y+" + "Usof9ujoAb5OYQTxbA+7v9D7wnM3mCu4mAG+T125UR0kfH67fDISTwNeSOzaDpKZs3vIXEyxh8z4ghsrHzQlcgpeELAt5t5HvLzvmtiuPdSV4ab/" + "qub1Ymn4utOV9X2Z3WIOAj5Br0ZuSV0jMS8vUFBsXFa1f2imA+Qj6PcZyiYPHyBnqgX77aaE1WJh/" + "6dsqULHQOHE1yiJdGWlf8aPzcIHdoESkzox5fsmCI+cvI+PPzXBktMUQorC3P3vTLy/d5/" + "hSx1CN5+mX2X6FEDnaDnXZAgCnru7Ecc3co9q0rglGH40n6rwQyaubTz6mzbkeNUfwp55muOYchT5WJjGlKLb9TewQ+MJaMkL/" + "HG3Mtzt12CPAhaz4tPcl4GDVZUzJNDKSwMC2Uy+FZxF8YsOJyAz5n/" + "OOX9yFPSlM9oimtlYnhdcpUHPIR1pFd905tEfifsfMpqyGxkSulRqG5kuHFojDSk+JLyj70KISNnjHCkEv8xvJYHF8v9B+/" + "wA8Zqw3cmLm7DAGmrE77INCfbqa1mRQexWctaWkYmTpGENOEEdDEVRiG/lwXu6/42fB5pSuR0jCFhcIJdXIpy06rs/" + "KIvyhTYcgYDFx82Nzh9b4buU4bIeAj5EbAGtuowCg1Ch9IYRgFmyk/nUMujoHAGPP0+DmYKhmQ/Bggu7Yc/" + "cDUljLgmUZIhWOMtYchJ97Kc1JeeD3WZR1Dzfm6ZHVagYCPkCvAm5GV6WDtea4YA7uxGBo7s2GqK3//63Q2cNYchmyGZtXgo1tkhC/PSDFQzhzlL/" + "Iw7M7Iq3unDRBwg9wA1D5LKTTTvNIX5qWwkF15pj6CZQ2a52dTJo2OMBGPfFOI+MBT4X1jJO1sGSnDqS0CPmVti+" + "cu3GQ8TFe58mkm671wGHKMT7Lonuln5zDkFOmeQyHgBnmo5qgTJo5mjGiBosHZCMnIeVLYVochnwv1300Q8CnrJrDuwpTpKmtNNnZe49fFLuumhyGL" + "v9OGCLhBbgjulqxliKwXO2vGfnlKk69DR9P28/r9dRDwKet1cPdSHYEiAm6QRVg80BG4DgIYJDt1TG1Yhzg5Ao7A/" + "giwnAjLCwzyoS5eyXqgy8kRcAT2R4Ad8vBapE9Z9wffS3QEBhFwgxyExiMcgf0R8Mce+2N+0uMI3px5qYvlgh+QfIU2OGqRbpBXaBkZJO+S+" + "gHJV8D+6EX6lPVKLSSjZCEP+QP7Mw7+KwTcIK+nBkOnAlxPIi/" + "56gi4QV6vCRghfXS8Hv6HLNnXkDs0i6anbN7w4S8vYfDxL4bIxs4LXYGUhs+" + "phg5IJu0XShMeHsvlxAH4sQ5NX33ofhVlMviByauQXJ7ZR8jl2FXllJIzEvJFBl9mcC05IJlzczBqI4yQe47YaEl+" + "YHJLNBfwcoNcAFptljjiLDkguf8aI0adTq0TX0ZYdmrzD5Q7YikNR2+80cXoOkkxXX5Ic1+" + "GdCjXJDNPsBgBDPLdmNvcxcw84wUCTCuHDkjO148cv2jnrfKBcXiNCm7RUJjO5umJ+klxgwap+MBDaTDcGhqUIWamU/BzdWqQnJ/" + "mA8uCQf4eb8y1OHfXI4BxdQxJBoJxMd3MR7ywDlQca0Pi+2fhcPxG37A4+nGM4NUpeyyx+JsMGF5HBsUhL2HV/" + "MbK8rgLBNJByfcvojygCQJSYhSYKxleZGxHbJSUO0wLzThiesI6aRXPNLRjoLE81pprz2jlJAI/MFkgXIMYIZ22RaA/rUxrMRkR/" + "yrF6GOEv5++FPZE+ZKRRmNk46jFGa2U1zF23adOQWU9jeUp2Kk1AvdaM3R+ZwSktDfyYTQoeCCFMY1kdBs7IJlRNZDSM318oCvnQVh/" + "1GWtuuaMVlu/" + "ik23Q5AMyMturhmpH5gMShuRT1k3AjayZfq35IBkNmQwaJ5Zfhh5WFjnT1wVBzENbnVGqx+YHCC9zo8b5Ia4x1EyNxQrrRQW4pQnPPy3hNEdS8+" + "IypVPdZlihjNayR/lwIufEa9zRqvCUt6YtlReKSzw9J92CPiUtR2WV+EUDYjRNFA0OKa1TJdtA8nPaD3Dc/" + "hfHyEP30RVAjJ6+RmtVVAdO5Eb5LHbp0o6jYqMhmnXtZRJafKp8GjaUn4P2wcBn7Lug7OX4ghUIeAGWQWTJ3IE9kHADXIfnL0UR6AKAQySLW/" + "WF6+rcngiR8ARaI0Aa/qwxscgH+rioTNvhDg5Ao7A/gjwmAobXH6mjnbtMORbTS3q0ILHrQbRhb9AYI1OMELOJhX4TJl44+O2Ew/MqcsiukM4LKq/" + "ZxpEYLFezX4OKSXkBen35XIUxa0m1YEXsh/p4guG/BvEyXopfVMckEOFvtTFzMMPT55sgXOCKdwUT4fLq4RMCyHWa/" + "ZmE68cslTjZX9erLBw3S4n8VmsV+98+eWXKAKf7vAWf3qnsSSO4qnAD3L/Uoq/rWGqD/X/q9yqBtkSB/F+I1k+lZt/" + "gXFbod1N7incYvwvci90V2F8PcMXLR/" + "KX6UDNRUTryq9UjoON+PTuXfmTln5zCcsPmsEWppGgn0chVzKYm4+6kTdamkTHKh3FOBOvkmzVbtO4aZ4W169Gmhg2p/" + "BBsNoSXP1avamzmeq3Kyp3cLaAQ7XLhTrRN1qy9wKB6ZW/a/" + "1d8Fgp0K2atcp3KY6OpYJ0Ptnp83vAr2qN0gxZ800OqVtU42rcaFu4euIMQk2xgHFuZOj4ximDeKmcMNgT2o7+8i6X2SIV+DQCNpPP+e+Sq+" + "M4X3zVLgIPaksqjTTOT6shW50cTraEBAhUasflUMPzLRjyUG/1I06Ts0AmuAgWemVwYoGAy/" + "KZ2r1QleglfUxNqtdyYHC80UJ7YncbIBcpXOuwU3y9WnQYMUPzImnTlvoaa1eBZnnGCSL3sH1YwSKxTEVCxsScklPQ1oPJO+mxEG/" + "lM9ozo5lMi6FYaicYTP0oS2HQ9EwU7QaB8lAOZzXysnjQbHlgh2Ud3pr6nPmtvJXctFpcJRleJNELrKzWfGnlaxnZ49l1+" + "CWeCuPrR8N3xCncDoW6oSubLmJVqtXQa45BsnoM/" + "Z6HRX+ThXNdweZAqYeP5S40U8Efs1Bv9TN1hJjUq7CQXKSH6XqjzIYJruAjEKnBvWBDXwwKLb+Mf5ZI4DSo6x0Ysw4jHhEgIGy8ZZ3Hha/" + "iauyqnArFG6d7EfiARZGGAqnKnBkSZFi+kXYZQxr9SpkmWOQD5QjKEtWWPBKcEZClLljfAof7UVjPgMsZ0tZJ8WHXjmPkB+" + "lLY1ybIaYwpU6AsrpyNfji0HQ6FO0FgcbcdLoHQtEvrwzW1sfqwdt8yzDxsJrXGYZfYW1TmsQK5VFma3a1eSsxc3SmxtmZwM6Y2mG3DXYGc9avQrp7" + "1uulS4GwMPQosEO8Vb6ksGdFE7PzNsO1S8fKG0oWy6KgLIkhVcYSkTYWI8+aGjKV0s1OIQ0OUPJh2zImKZVDepjRYDlWL0tXcfNcPy2E/" + "GHoVnn14se7EhP4jm7XTPmVbhl6c2LPgzKaokG3EXY9XjN0qs5BsnQi+J0SCATxpWUqZNg/xtGz/" + "6jA4BFIcYahjpQxylajMMIVigb8pUMZ1Z9YhnPxa7FgclpCp2B8kR+8A1r3yx8M2+sU0nHxnA7Kd+jKFQJ1wt5YzktsMt51+" + "pVyHMvzznhpwFsupKSqhI38cbcFIdH8fRQexIy9g0v7YxKnqe6AKlP9GQ1StYCh345yBdklmylw5Or6hPrxYZLiwOTaTfWi4nEHwXnKi0ZUroNPXNw" + "QwzTvcnBojF2OQS1ehXyzDFIlOKjvKTMz/TwopFUSeb9r7N0e3g7jRaV6LEKNqUeOuiXV6oszZici3GQLHRa9NapY1MYozdKbsr/" + "icLyOuT+k+JIO1Qf8F59YLLKoMNCRpQpUAxjM4r/" + "qazBKeZc76i8JbhRMKP5SflrRsgm2FFej2r1KmSbM2V9pRw0yAWpwjQSf39GpZgqQTTqC4UB5p7EJgSHEyMLz/" + "dQaEBBvmdyqUeJ6E2La9pe4rU40HFVH56stHPqwxQu7xipU0cZhUFaWysu1VnhuZERDrETDGYQO608HsjThYidfqpxk4xsxtCh0HmddM8IyY7q2J5E" + "K+woMqeEcR445L8/" + "FNEPV2VYT5x08XXERaMoDMW5OkkOOoBcKU2mUliIU54wYsntKK9lzF2lWYXDXPlq0ysdHSBXPqIyFUYRCT9FXnjxo6xDByaHKbTSwGtMiWG1C0XZS2" + "14Eaa0NR1rklvpW2KX863WK8t0zzyVLqPOrMpW8u0nu1EA115EZ0LdamkvHGrlOUWFTZjpHoOjd6aTofcnTe2ByZaPbC1p73atkr0xdnmZc/" + "XqNOvzK0qS8Az/TFHznjgX4lb5VQ96MTZBGBWq6Yg4SCYMiRGDjZ3XuqgbL0yn/wNRGqZzLCuY5VBnpvXQN4pjxHxP/t90bfn2CuUdilpgl1dI/" + "Kr1SmnT51f3cyaVfhqcteQsBa7kfY1kKOiSUf9wOKhhGQ1Hp91Kk9e1lJYNI6gUd465g7+NsMuRWaRXc6esJwnOtIMR0hb7uRC3yh/" + "rsGi0v0s49BqN3V52etP0txfvtxMIrNGr2VPWCVk82hFwBGYiIANOU9bZI+TMsjy5I+AIzEDADXIGWJ7UEdgaATfIrRF2/" + "o7ADATcIGeA5Ukdga0RcIPcGmHn7wjMQGDJc8gZ7D3pGALaXeNtmpe6Huryw5HHwHpL4twgr9jQMkjeluFoDQ5HnvxE6IqietE7IeBT1p2AHipGxsj" + "rbtBb9WbMucr+20fADbKPyP73vILYP+Fgfym8xEMg4AZ5/" + "WZghPTR8frtcAgJfA25YzNoesrmDZ9u8aUMX1lgiGzsvNB1QUpPWvsagw+E+WC4+Tum4skXHksPmL6Q2wOWI+Aj5HLsZuWU0jMS8lkURsXFh7/" + "2DebFCKl4NnlekS6m5QsbSy9vU+JAZuShzE4ZCrcDppt3BE1rcEeY+Qi5Q0NKqRmBMCgMMf+OFP/" + "FyW5Kw0j6sdz8ZAY+di0eoaLwQEqPMfEVTvWhyMrDCP1jYHD+pI7vKHNijZvLkce5vzECbpCNAR1gh6Fw2nd+ng1JGTXzw5EJS6T0jFgYIQdX1Xx/" + "yjd4cw9FbnUgc5LbPcsR8Cnrcuzm5OQIjc60VAbGqMlIePH8UXGMnEwhMdjwhb/" + "COlNJhZeIE+w65ZQS5WHiG6aicikLmVKnoTDkI2wWT6V3WoiAj5ALgavNJqVGobn6hmfn3BSVXfmYojLFxVDwM/" + "J1TvGLvJ8rbu2hyGIRjv7oP37BwE8qx6esALED+Qi5A3SoUk8AAAGcSURBVMixiHztSFBam0nh0+HI8nNcpR2leZK/" + "OF1VOEbOJlGLQ5GRh9Gwb3jIGDoMlfc0lklap40QcIPcCFhjKyW+kR+lRuEDKYyRh82U0uHINk09J9ZvTB8OoUqB593Q1YciZ/" + "w6HYbKRD7O1zEjHTpgOmPh3rUI+JR1LYJ1+TkQq/" + "Zw5M+" + "Vlh1WHjcwCkKcBpcfTkUYU174GmHInemv8qT1oOKIDzwUbkZmeXGZFiMja1WefWKgNQdMK5lTKwTcIFshOcJHSs4omRuPpb4Ii8ZSMhjLc1IaDJUrH" + "9WYXi45FDnwnSNjyOA/myDgU9ZNYN2WaTQejDyQ7ple2ghpm0W1hyJHLu4cAQEfIY/QCstkYHRlF5aNndf4dT3RxaHIGCvTXL6xfCZ/" + "2OGNft2GtLhOB0PADfJgDVIrjoyL9WJnzdjPqzT5unM0bT+v318HAZ+" + "yXgd3L9URKCLgBlmExQMdgesgkE9ZWXv0pfhOYRc7gf1Efu8IOAJ1CMieeOnj4VBqDJKt83ytkafNt9XzcPc7Ao7AMgRG30n+" + "f8YkUUIP0BVjAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - " + "dP_{dx}\\right)\\\\u \\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\\\left(c " + "+ u\\right) \\left(c du_{dx} \\rho + dP_{dx}\\right)\\\\ds_{dx} u\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡(c - u)⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", "⎢ ⎥\n", "⎢ ⎛ 2 ⎞ ⎥\n", + "⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠ ⎥\n", "⎢ ⎥\n", "⎢ dv_dx⋅u ⎥\n", + "⎢ ⎥\n", "⎢ dw_dx⋅u ⎥\n", "⎢ ⎥\n", + "⎢(c + u)⋅(c⋅du_dx⋅ρ + dP_dx)⎥\n", "⎢ ⎥\n", "⎣ ds_dx⋅u ⎦" + ] + }, + "execution_count" : 6, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute the \\mathcal{L} matrix\n", "\n", "#drho_dx = Symbol(r'\\frac{d\\rho}{dx}')\n", + "#du_dx = Symbol(r'\\frac{du}{dx}')\n", "#dv_dx = Symbol(r'\\frac{dv}{dx}')\n", "#dw_dx = Symbol(r'\\frac{dw}{dx}')\n", + "#dp_dx = Symbol(r'\\frac{dP}{dx}')\n", "#ds_dx = Symbol(r'\\frac{ds}{dx}')\n", "\n", "drho_dx = Symbol('drho_dx')\n", + "du_dx = Symbol('du_dx')\n", "dv_dx = Symbol('dv_dx')\n", "dw_dx = Symbol('dw_dx')\n", "dp_dx = Symbol('dP_dx')\n", + "ds_dx = Symbol('ds_dx')\n", "\n", "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", + "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", "L" + ] + }, + {"cell_type" : "markdown", "metadata" : {}, "source" : ["### x1 lower inflow (with relaxation term)"]}, { + "cell_type" : "code", + "execution_count" : 7, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAOQAAAC1CAYAAABPhVPfAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXbIcNdKG2yd8TRgTwf2YHQBeAW" + "d2APYKYHbgCV+" + "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" + "X+jyvyu6+P8v1+XcE/" + "f6dvUvtTKB9H1p65r64fuX+j6yeLtUHnvdHXGXWnf6vq1Xf6S4+rvJrzLeQRvdY3Klcp8pUtV3x3muKxoMLPIFCtyp+37+cUK0bepUB0fNPtj7bjM+" + "tEXLC+WgeeG5CVQHOuRrKXiyY1WOrP6qJuXkO38JvJmK97l3JgrV/MUUoSzLuHPl/" + "ng5QTs7j72hT6lxyRjnaiRD6LpVnRzBVAchTPFekai0ujnn6HA3foqV16EhzIIJuNrhyxIvmhQnzfhXc4k4YSHs+SK+" + "g9zJBPv8eVZSzL7XgKw3lhi9WvkAzSx7mNj5y33up7r+" + "t2ETiE7zKwLw9ox3iuaDgCwuQPcGwt5192wKbmWdxFVCBbJVf4HZXYf8xkzR964Vzm0nyNVQ4vkRp0aI1EY2XGc1O92Hy6FD3m/" + "1Ccs5KcK75tC5mxYdS/" + "eMeFNliuV51Ecu90PFinkKmq9snPAOdDgQK6QV40cjzgHnANn5YAr5FnZ7407B5occIVs8uNiYnKDWOOz1q8CRIsdMKiCnlqJWLLLWmtfjkKXBIlHB" + "+xWEvJohC1yNj44VsYh6/" + "C4QPfVgGhik6BzAFzp7L5y2mbRJlbewbm4VP5futi4WLKjnTd90fduIUeGVwLEbiOPCBBwjgiyNU7II4Zrhe2jbiMYj5stepgsOA/" + "b2CWN6R8r3EIZaWMJrn+r/" + "TkHMI7LrAqxu0JOG5SnKtYQ8FiNZ3323G4apuOXQuBLkwQW3s6qrqViEa44STCJodAOBQ48LKR5UpcDCOCXebKEijSU8bNWOgrBofZbXRxZw1XDheS" + "AOy4jFoq1HX934iQHlnYyqDzC/FIXbTBRcIA/VzQEPrmFuqct4p/r4qgc9L1u1VHSOGyEi4kN3uVvRxhv/" + "J6UcIUcGegohCgByoNicY8y8Va7xitKFOefLriz/" + "OOCo2u85d2O5HG6CdeXNVxIU8i7YME7x43klSfhnxmqF9pQPNABLt0zESSIuHGzUQKUd7EibISLI3mc8lpMR+rcBd64Qo4PKoLM+" + "jGcSlKIQqJcbcHHTaScubYoGdaTzZ8fdKHMKGouiODC7T0onXaIm/VkvWW4KEIZdirfKDSLSBvh4LjSoIe6AZ/" + "CNqC8DXztAjPiRVyigfbDGnsAl9E5UOT+ZrlCjo89s3kSZARfF8qHUuY7rM8UT+5nVBBTnIPi4KFOAMURanAhoAAKaJYOxeQQ+" + "AMyMsD1TO6o7sP6NcNBPcOXqikfZc/bCnlKh4YpmyxY/WDF+3DFxmjH/" + "g8bkzpB34TRKXgfE1whx0cdIWusHxVn7dYWfJRhyPVEeXIFBm9SdN2zxjQouZ7gJ/" + "2NFVLIBJBb3GAxs3y7TRZNChXwKOQ1IUwYTBRzoA8X1pvJAi+AZ6A5XTl++jDEp7zsvbu/" + "unc9ntFhCRXCgwDnigMG0sNMrzJsohBHuAkTKD1YH8OjkDIGKEL4xwUJysuFlHrJ2pIvQIEpdxtD2mpMFsrr0EBZAWte1m4AG0J5WyFxxk8Rl9o2lx" + "5r2qeMNAPdY1Z0BjmXVfThZXVnu95IqJjxzXq8VJwNkaAMSr/RZa/" + "hOCgdq4ACsX4ypUSRKQeQ1v5nDMqUu5+UAxfuMHhy5SULWvgHAXRBB4rBu1aNJkUDsI5tbxSBE0VhHcsOa7vOXc1pv0Vcwkl/" + "p+ClH51+T2v68ku5QvaMsQQMBWorUSitPJQldzEPSsPqFAVNeVjYZGUVt/" + "Vjw1IpHcuIMrLe412qefu4vEwKQ9ZHRcKaEDqSe6w60FukjQpzYAAXE8wbcKnMV7psdzmhVxpKS36j36mA38x7Y4DzazMOJOE1jBJSnlFi/" + "XgUwkdb2wqU1m5WpxSqLor/" + "SKFZ6lKxY6QFi652w25yTwNMOO1+" + "9RS9n8luIc8z7ribaccVEiTIDYubkxWVC7d4iksILtxT3mKXu9k5ys3v1Vavh0BjykdR2Ul26zjAfVfIAeYcK0tCOctKRCG29ewkslQH1ze4iJMqHL" + "9Q6eXUx291Zy2gkO9Fmi3cWRe2J1eCjMt4EaC+VNOPEi1Kaz9rrYbeExLyobXlFtI4kYUuJBkz/PakHLhSa3/" + "FFi08KQHemHPAOXD4w3jgFtI4sYNQlvtaZLL+5J8bPP74RWn5oxElOeyZA66QOxo9KR87rTz+" + "uFbYPsmzo544qX0cwGV12BcH2G1Nhwz2RbpTO8YBV8gxDtWXj9uazsDWR55TtIYDrpBruHfiutFdpVW3kCfm/" + "amac4U8Fae3aQfryDlXP+2yDT+rw+IKWd2QDBJUXD9KQTm7irI67JwDvsu6rwFE6UrH7viP4w1dkWKyC8s/Qzgvay/" + "b4m9apXoq4lATB9xC1jQaA7RERaNEY/" + "2odJ5J8v9HO3jOl6v469NrXbyflXvL061DzRxwC1nz6ETapFT8Let5jPJPDm45OI4lxCKmg+dRAZUU3iYQdmOVlv4bSYZDvRxAIe1vM2/" + "rJfN+UyaF4jTOpBM5Kmt/bEZJgyIqrfiH4fvN1ap6j9cTlhS4rE908VqGx7oc9s+BpyiguoF1fB7vwz/" + "599+1i+0BewPo4MFd1h2MsZSKdSJviRt93KEyJz9SpzbNKu+Am3WT6Js6dY/" + "PQcKOtav62aNoDF+2qpyVuyDPFbLiYZKgs3HT+ZJVpSTzeg7emeOwggOukCuYd4KqCHhYW5ygrVVNSBnZmOBfKEwiDgs54GvIhYyzatEq2AN4Tsxs+" + "bUrBLzxQF9xNgB41MHmTVgvKgyWSeHixxsb4Q1KKdrGXlVp7POwxQG3kC2GzIlKiHkD908KeSTBTiYvVDYLwVvlsG4o6Xe6UBYU7InCUYjlbvOCSgM" + "3H0qlPV7Xb23xVvJJeHN8dr8hXuhIz0QNv4fTOeAWcjqvGiUlxCjbmq9d2RE38PIKSD73Hd5tSoIABWs/" + "G+bRFMrNrittB4VVyBvNnyptKUzCqzagibfZNax21ij0LJ4YMjz39tYVcvnQP1PV9IhBQoowJoVSHEuR3r2qOArIbmlQIt3jZiLcPM5Awb7Xlb+" + "b9ZHiVla3h4PKhcceCp8rmtxCxcGd/" + "iMZ41M2WDj1g2JPwqs2cJeHvsvRnkBU3GEOB1wh53CrWRaFGXouyLG2fE2HMOfnUPlwKwqKRUHB2ps34KaNEoArTQa6xxVOJ3l0z8SwxHXsxSucHN/" + "DMg593Yq+" + "DPFE2Q5DHLgayvS8QQ4g9AhgAgmtba6QztoxWUzFUZDcipkyogRYlsZpmli3gV9lDCjPdVA5yuTtkLwUevGqnaDwCrGqyTq3GoKWIQvaKu7RNgceKu" + "G9mGhhu4zHyxzAQuFymtJgzW5iUdKSxYppKF5ae1FPF9aENWEQZIXv68rd1NKXrEAHHo7FYYUPCjsftiF9AfTiVRv0L6ethJ5JJ/" + "WxVMDTihxovCj5r1jEwmINT2xyQAKKMhWFT3m4psk9VdzWj8Gdi8KNJbG3diPsJcDi0kbu+h7a+EsVl6SN4GVCCVZc5TqH1ZUW+qDQXdb5zP/" + "DqlzZjYdH5UASZlqR0GJpcP0QbNZmL3VxIqdhgRRHqXF9zQorejYIbrFo6fu6lU0eZyPwEhrGZXU4PgdKX7ua5GZKAVDck37JqsQO0TDkEfiXrUpMW" + "5DmCrmAaXOroFRz6+TlVZ+1ap9bmxc9171/" + "2WojzrtCLmCklOMsX8dSuwuoPU2VPtqUbuvk0xCy81ZcIRcMoAvZAqZ5lUkc8E2dSWzyQs6B03DALeRp+" + "LxJK7LM10LEepSjdjyc969fiQmXBK6QOxpNKaR//" + "WpH47WEVHdZl3DtvHU4DZMOHZyXFG99aw64Qm7N0ePjw21NZ2KP35y3cEoOuEKektsr25LLyhE8wC3kHR8u7heFtBMYnPR3qJsDWEf+" + "JeLnResep7nUMcGGwyMo5BNd/BfvsS6HujlQXD9KQTnvirI67JMDjF34P+zDfdJ/" + "b6lm4ErH8DicfgNXpJi4tfwty79+BUN2Br6G3MmARUWD2sb6Uek8k/SvX+1kHMfIdAs5xqEK8qV0/EWL13wA/" + "PuDkMPmWEIsIq5sAOXZv0iwpmE3VmmN/1PGoh5UyAFXyAoHpU2SFIq3D7TfQNAuFuIqa9/" + "ZQEmDIiqt84fiYmVPPDsHXCHPPgSbE9D++hVWtPG+" + "ns1bdISbccAVcjNWbodIFo114aSvXbVbVd38bXTt7JPEMyt9kvYuqRHf1KlsNHEvRdKunzWqD/" + "41rIVy5Qq5kHHHqCZBZqNmL1+7GmOBfw1rjEOFfFfIAlPOmMSLosID4jPSsEnTmlx4PHMdJ5lNcN4HJL6GnDnKEjCU5mRfu4I8tXmtgMcb+" + "RevsKa8/IrHINz/" + "T9cnul90rO5IbQSlFF19L1ZWlkPOASykvSDZwjzf7zMOSGhP+rUrmlabKFvpi1fPlP4klrlViCKGOGlz4Iht+" + "Newpg1EelEyCvlXrGPhNBT3rJSEFldy6GtXWDD+QJxbA5Spc2hfZfiEHXk5oEydskp7rKvzxSul8Zwx/" + "xvWa8UXWUfVW9SG+sAJoSEXm4li0SShevcJ0ouS3WWdPuxYpPRIQYKIsP1m1RVHQYa+" + "dhWKqhy7qCUhRUHB2QCVD0qmkJM6ubLjxjaUISvL5IBrPQa4u71fv1Ll3jYiYvKHvuVRmmDGaLrX+a6Q04cfhRmyQDyAz4+" + "oIaylc6ek5eUUDQBu2ugDlCwooJSIcvzDI8eflFnpTBTpOF0fwkL6nDY4zsdBd/" + "8aVoGRS5NwWR2mcQAhb1g2CX6wQgpJR0GSxVS84VIqD2Hvfb4Y6zbwq3wOKJxZHJQ/ger2vd4/lZl4M7kNtRmO8inEyuaWO2+K/" + "gxZ0Lys34sDbiGni8Hir11JYLFonyq0g999rfZ97YryWFU+" + "mc5GCYqDIjAhIPDJ7dT9GpjcRuwTdAwBk1Lp72JDde51nivkxOGXAOJSFoVLebiOyX1UvG0NHysfC4qbB2A5UC4+" + "Y567wSgYbXRcWpVrtKEym8PMNnDJ30CE6nUOryuNSYi8vH8kOQxw4Gogz7OWcyAJKygQSl24eIMWUmVQOhR3yHUFZQ0Q3HPR2ucu2+" + "RSA627ocEt5HGGqvO1K5qR8OLioZhh/UVaG1QmuKIKb2L5dpEq4qJtyGNASTk659Zx5mi5Qs5k2JTiEsSiazulLmVUv/" + "avXY11xb+GNcahnnxXyB7G5MlSEP/" + "aVc6QCffiWaeU0vxLWB2uNBNcIZv8KMZckIps8cQjcMA3dY7AVEfpHFjKASykLc7tofNSXF7vyByQpb5WE6xPeaMAD+P961diwgUAu+" + "th3wELyRY7R7J4VuZQMQekkAxcOBig+y909e7WVtwNJ63LASbacCzSXdYuc2pP4fQLiulwgRxwhdzfoDKb5n+" + "72l8PnOJeDrhC9rKmvgy5qBzJA9xC3vHh4n5dIfc1pFjH3n+M7KsrTm2JA66QJa7Um1ZcP8pycv4VZXXYOQce7pz++0Y+Slc6lvdS6TcwI7q1/F/" + "Sv34FQ3YGbiF3MmBR0aC2sX5UOs8k/etXOxnHMTLdQo5xqIJ8KR3/o3weSeHfINzyf0MsIRs9uLIBlGd/8cKa+tevIl/" + "2ErhC7mCkpGSDf9nKu4DyxvIoafijs+KdPxDndfy+Hg64QtYzFltR4l+/" + "2oqTZ8CDQr4X27XwDGRcRpOyRKzlzvqnXLWfXlW5hKs19GEJ3Tuv86HRj0L+FSMWWl6VoQTmWoSxfnqiK/" + "wzX2mNjY5zEC4aWOehjGdVyLG+T+Afk8rnuvyc7Bgzt8v/w1DtcZeVV0P8GAWGNdLZj5EhwKLjA+gyxlYcDvJPfQiTm0Jew+FwYg7sUSE/" + "yXiEleQ9NWcDCS7WmjfIdd4Udzaihhse5Z/6gnVkN5e+OZyQA7tTSAlJ7hLyZrNVa6YNeA0N4a8zG+A6OooZ/" + "KNP9K0XhAvXlkmxehCd9grOqmnd7S6rGIzA8DKo8DrCM3L5mWgonZ45KB0L80wX1ia3TKvIFS6ePXI6B1cZHhTXe0qHR7iePJvkHbCJVzGvl3/" + "K5wM/f+qiTMcLURp4t3pBs1AdF0Rv+KqzwuJYHbf16dh3ZyHpmpjKzB2ESfdnm/" + "nUNgqRW2zIC6A8lAahRSk3df2EG8Vi7cya9amuDqgMm1+PdfHtDSaEXBmn8o++MaE0QLjozx6/9Mz6edDqNzp6hsjuFFIM/" + "VV8QgmZvXkb3DlnvOJhb8ZRtP2mC8tVVFjKrAQs7mtdKH4D1K5NAoSNTS/lzeEfGzzpFFDWCEKN9d0VqO/" + "05zryp0raq3ZZxTgGvv214kHXT3WwSpRB8FAG1jg8HmE7f9Z6Mw4criE0YIlulJYsjeIcXTunYEIL/WsDbjQuJ5/" + "Ha2w2KW2Qfy1EfDcES9sGhLozESqNskwQ6UvPVFQ6lmkW76mXw4a4g1IKd5U74tVaSA0AwsCHTbEyb3ShGIOgsuYaIogoCn9LQjARSoQoCC/" + "lSvcF5D8r7bXKQsONLuI50N7bPOEU95H2XxUG62t9oW3doxS4qcFyKswnkLnk0beGwgsf8ds2IqXDi86XniMdJaVuo+iNb4ybdxKVrH5v+" + "6fMuDplY1Pb0gCgTGwYhGdi3Ov6bEJ91kw/" + "6EIYh75mzLrod+HH5UV5O0qlPNziNwpNoKEBRTalVzSs0TrCScaRIShdbAP6TPmgDRqhNS8Ti84OQp9btVDIDr+UBu9LX3qGDibUNTALt/" + "qPN9TnuTBejUlmDWFb1324NcKN8KEwycURc2GiKUZvE1EQDwqZAVG0AIojsLcKk/" + "Lofuwt2rhkuVuGe3rIcRBfCsIDTVM2GNiQQTFy+ERp9q8OhB13GhcsuKqxIDxorB9j+pwARUg8ixUfFdIORqPC58rPlQHaGnSozKy+" + "z8EdaWQSwMMqQWkyKZU7SxoK+" + "V5s2cKzENJqlEFvC2GryGAU5cnXTgyQWdtQUYNMG5TrbN3HPGbRfGZngkDoc2BwwTMb1MZvqrSF64TgsePZ7iPxnAezaVQF+" + "kYfcyhZzTyfdnOFJM7aG3eWPh9iuKTvU3Dj2TCR9n3ZmXFdI1uqvjl8aBivdPNXjFhoeecMGbiGW6FBnGJNGGzq4baFwY+" + "daFsLhIw1JUrKw202gnJg4A9Kv40hOEn7kngGDGyDzizvKLeiifby2Z9+MrGYqwrdWCDCnAckzYXHqtAQ3ohzrM+hjsrCM5SaeOCpwrUwiFttst4/" + "KMSzaE+gZLX5R9q54Q8j4KHdVBZijXjOaAPPoLKpMgWoEwYlK4ww5O4ns2dQNqXj+" + "v0ZQwUBUGDOyzLbUo5dWtxEq6NoAAQel6wDkXbapG3WNGHHWGGbtk7dvgTVtdkf95vHKkwoWHHWukH4Yhnop8w3utZYSXZkS0qNV0GfGsqqsgCTFmP" + "HpEE+dDHhlfAoeRaM4la7yEp7nPJG4E0uC3ne2e+" + "rVMg40IuYproIaXJPFcdaIJy58PxPae9n3G8PIBYHN6s0w2bVwnPAtFbNM2J7a5QhRxfuhRNlbii00qAdIQtQKmN5C8L2RGYomFwYn07/1D48y/" + "mW31v9ReFE3ND8hgZU/" + "itdttYmjrIS5rJAUjVwVQ0lxyMkDVDWxJcaFHNVXyq9vYOLEielzuo1boUjzPoKg4vYyNx5RH0K3onCDh9iGi6yeTA19dbGBKvcpt0mkprobdBSpYV" + "sULg+grvZsGISpN5ZOwpZ7tKOUWCDvMiijyE/Yz7Wj74VQXxijYZLjCfR9jCKdU6RKFqwfp2xUDoKygGFaq0j/" + "Ll4C6kBQHCS20Knh4AB05VcwKGy5EXcrKdqtBZj5BfzY1/" + "o0yDflN9xWYsI60jkq85ti1kHZRkVF6+QWV+PecsmVL7Vf8y2ToGbvnSsTKlhCXk11rFEn6XthU5XSBuxFWEcbCwxu6C7htgH+lK1a7drJg8Qfx/" + "WkAPd3y4rCnBjB3Q77KfDpH7svg+n49b2LVWnkBIIzpc6OAdOxgHJ3NgxypPRUqNCVsOck42CN+" + "QciBzwNaSLgnOgIg48ePfOPcSKxmOQFLlW1yrA7ufnuniW+ouv+cSFC4IHr1694pQJ/67/SIPrO2uVD67GiJ1cXjuZH/" + "2rnGonb4gDGksOLfASsgfusg5xqs48Di1U/4C7TtbVT5UrZP1j1KYQt7Xxh992AY/vlwOukDsaO7k0dojdLeSOxm0Oqa6Qc7h1/rJYx/" + "Zfyc5PlVOwGQdcITdj5UkQFdePspz8FQplddg5Bx7unP77Rj5KVzr0zX86b2BGdGv5gzV/O7N32vK2g1I9qjhUxAG3kBUNxhApUdEo0lg/" + "Kp1nkvxVyv518anu+dvUa128/Ip7y9OtQ80ccAtZ8+hE2qRUPHt8HqP8E4PbR7qwhGz0pP9vRgVUUniXT9iNVdqe/" + "rcI7fcWXCF3MPRSqM67dPrIVtkXsTxKGhRR8ca7Zfrqevr5OeAKef4x2JoCvqvByQ+s43PdY0XDS5+2bsjxbc8BV8jteXoUjFIs1oq8+" + "nHweKPyeXvBSUFtmlU+abuX2Jhv6uxgVCXwWLxqnz+KvvAx1B2wsnoSXSErHyIJO5s3e/" + "g4avUfQ618qAN5rpD1jxKvYqz+BVqaOHgccx0nkPq5WimFvobcYGAkhCiNPYTn1AwuHG7mFh+ORciLD/Vju/" + "adj7eK975vdmo3V+IMSqm2VtMxld5LK+cWcuWISoBRiMaHZZWGmwnwgmasG0ra+XAsBYZAdZ4ov/" + "hQX3ng5WOyPPhnF9WeU+p2GWyA8xe1nJ6JLqPiftdyC7li/" + "KMAlz4s+1hof9CFlRz6cOxBONg95V9l8s8AAAPASURBVIM9wdIpnr+" + "cGIV8q6sE5H0faeAlwFvsrg7iVBvk8yGdosVWHpMHZRwWcsAVciHjYrVnCpMiSFARyPSVJ8WxFukzBopzqobd0mD1FKKwvKkBIX8Uy+" + "YKSVooq7ANPPT/WReWklf6c141PBJRSDu9nwFQnkH7/au9OGOFa4XmIhuOPOybPPIyfj/AAVfIAeZMyEJhhp4L8lA+nJaJuBDo/" + "CwqSoMikV76hAG4aaMBKo8Vovz78Z5DAFja8E5VpTEpzHIdJ+Dk+" + "B6Wse9DqMoK1nGIH5RxGODA1UCeZ41zAMFvuGgS7GCZooCzdkwWU2VREjtfiqJx8WVhlJSwsZsa6zbwqxwADpT9oDIoAJsouaKTNRcGcaodU3asat+" + "mDbQOWdC5NN278m4h1w057irupikNCnYTUZIWhDjGCbCEjfWXCTehLtaEuJ+5lcEStj+OitKj7Li8AG+fyxX/LnXe7yBO4advtyMomXAa/" + "Rsp79ktDrhCthgyJyohRXGKAqg8LFayWorb+jEom+KsJTkKh2Llgv62RQOKQhvJ9VX5fJ3ZKr4sOgEnkwm7uQeV7RxWVxoKS14+" + "mZDkMIMDVzPKetF1HEgCnaHBwmIROQuKu/" + "qFwlw5D4qj1CitWeGs+klvgwUWHWHnuNCyTRyFLE+aygG3kFM5tb5c6cOxvRY2b05KwLoNxb3R1VDYvNwx79VuL63KQ0mr/" + "xjqMfmzFW5XyK04OYJHQlt0bUeqpWzVt0cjKa2iG56DnmWiqIgHm5DiCrmQjRLAs3yDQe0upPi41Up0Kc0/" + "nDST7a6QMxlmxV3YjBMebskB39TZkpuOyzmwkgNuIVcy8JTVZZWv1R5rUU7l8HDev34lJlwSuELuaDSlkBxb43kmf8lKZ2h31AUndYQD7rKOMKjCbE" + "7DpAMHFdLnJK3ggCvkCuadqSpuazgPe6b2vdkjcsAV8ojM3Rp1dFdB6xZya+" + "ZWgs8VspKBmEgG1pEzsH5edCLD9lbMFXJfI1ZcP0pBOeuKsjrsnAP5LuvvGtR2d/hLkO/mtblyvjhKVzqC91LpN5Cl8WIXlv9K+tevYEhloPHh/" + "6JP+shCIXsPDce8vrqefkIOREWjxcb6Uek8k+x8/SqW50A673TlnxgOdXBgcCwevHt3liOZdbBmJ1RIoezrV1g/+9Mz/z/" + "EEpLWeZFyrHNQaOVVzKF6DqCQfl0OD169evWC8VT4k66P4/1XPsb7GGO3kNVPmfMIlEXkLXc8p8SCfqCLNcsbpa99xYfQOBybA/8P/" + "Hi0PadhkikAAAAASUVORK5CYII=", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - " + "dP_{dx}\\right)\\\\\\frac{R c \\eta_{2} \\rho \\left(t - t_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{3} " + "\\left(v - v_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{4} \\left(w - " + "w_{t}\\right)}{L_{x}}\\\\\\frac{c^{2} \\eta_{5} \\rho \\left(1 - M^{2}\\right) \\left(u - " + "u_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x}}\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡(c - u)⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", "⎢ ⎥\n", "⎢ R⋅c⋅η₂⋅ρ⋅(t - tₜ) ⎥\n", + "⎢ ───────────────── ⎥\n", "⎢ Lₓ ⎥\n", "⎢ ⎥\n", + "⎢ c⋅η₃⋅(v - vₜ) ⎥\n", "⎢ ───────────── ⎥\n", "⎢ Lₓ ⎥\n", + "⎢ ⎥\n", "⎢ c⋅η₄⋅(w - wₜ) ⎥\n", "⎢ ───────────── ⎥\n", + "⎢ Lₓ ⎥\n", "⎢ ⎥\n", "⎢ 2 ⎛ 2⎞ ⎥\n", + "⎢ c ⋅η₅⋅ρ⋅⎝1 - M ⎠⋅(u - uₜ) ⎥\n", "⎢ ───────────────────────── ⎥\n", "⎢ Lₓ ⎥\n", + "⎢ ⎥\n", "⎢ c⋅η₆⋅(s - sₜ) ⎥\n", "⎢ ───────────── ⎥\n", + "⎣ Lₓ ⎦" + ] + }, + "execution_count" : 7, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "eta_2 = Symbol('eta_2')\n", + "eta_3 = Symbol('eta_3')\n", + "eta_4 = Symbol('eta_4')\n", + "eta_5 = Symbol('eta_5')\n", + "eta_6 = Symbol('eta_6')\n", + "Lx = Symbol('L_x')\n", + "M = Symbol('M')\n", + "u_t = Symbol('u_t')\n", + "v = Symbol('v')\n", + "v_t = Symbol('v_t')\n", + "w = Symbol('w')\n", + "w_t = Symbol('w_t')\n", + "s = Symbol('s')\n", + "s_t = Symbol('s_t')\n", + "t = Symbol('t') # gas temperature\n", + "t_t = Symbol('t_t')\n", + "R = Symbol('R') # gas constant (kB/mu)\n", + "L_inflow_x1_lower = Matrix([L[0],\n", + " eta_2*(c/Lx)*(rho*R)*(t-t_t),\n", + " eta_3*(c/Lx)*(v-v_t),\n", + " eta_4*(c/Lx)*(w-w_t),\n", + " eta_5*(rho*c**2 * (1 - M**2) / Lx)*(u - u_t),\n", + " eta_6*(c/Lx)*(s-s_t)])\n", + "L_inflow_x1_lower" + ] + }, + { + "cell_type" : "code", + "execution_count" : 8, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAioAAADNCAYAAACW7lugAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXa7cNtauy8a+" + "bjhuoAeQAGcAiT2C7J5BEgPn3v5m4MBX6TsjPYO47w/gJDNIegR2MoAD5PvuG4jb6AEcn/" + "fhJhVKoiRKpdol1X4XoKLEn8XFl39Liyzq3ocPHw4mI2AEjIARMAJ7RuBvf/vbx7r+22XYMwJl2a/K3vY1AkbACBiBu4KAJvhrlfWBro91faLrB/" + "n9LHcXJFmfS1CUlNUUlTNhgrL1ha6/7wL4WxLySoB8qrx+GcjvR4V/ORBmbyNgBIyAEbgMBFBMPqIoclFY/q3rHs9bJ8n7hWT8s9y1J/" + "dbx0Rl+FnXp7qe6Xq1dezXkk9l/U28UJJ7pLB79zNfKvm/Otd3WfhmbiU4GmexULclpPJHg5+kLcg6KaQjVCNQW+/" + "VDO9AxC30gZp624KceXOokTmPf+T9Z1l6xtb32fNmb4URStULuV+fQMizYKKyhLk4lm2wWAo/+zw4KFwnQLJOzZffKklX//" + "gxscmXfr4TsyqzmeJhJoQpmizM3shvbW1WbPukfJ7J979rZe1zWMeH8uoCM3AoksJuXVblSYXTKD7T/" + "a9FwS7Ac6ic8qdtMmjh8kbCgMtg9lAX9LXiVLXzm+jtX6WdrPd2ivEn8QsDbYyVlO+n8kfuhvQ8Vi76wykG6ib/" + "pTeS69b7QElWyTFab2NyKgyL85dyF7ebJNMcXoo7KnPiuYbbKRtjyF4s6chafKFWmVgteKGLeYp+X5yj5E962injBWN6GDfl5vW9GibiS5//Std/" + "6T5XhuTVEDKRZ3F+UbpN9KtG2okbyTvalhXesx7JD67U3SG3qPBcRWLA2uUbXe91TwcuNoAqZjMiKR8q+K8x/xkp/4iqtMVG/" + "UeMWXeYBmlMPVpD1h7TOo9QPuW/GyVlYZ0UyyletM0fdDF5MxAwQOEy8DLw/" + "KTrWBqs9wWMv40yIicyvtPVW4pVGOVC9lK5rhW+ZrtWNseTZNpFfx2TM4Zhis8nrUXgLOS1ZlublFsy0o5oi3vZn/KVZO1NchRU/oyB9Bleph/" + "r6pHi8ALASwxLLowTvXFTfqthIl4oTygZ9A2uIikeZaJsvTjR76h5sJjp6T0Xt+VFikosz1/l3nZjHtSeZ2Cc3lpnJClHVYOh/EwSvcYk/" + "zVkLWc87osGetv1Mi7RdOiSOhkr51Db/F2iLMmrVYKJem/FrXh4Jn4MloloN2yoY0DrEoNtqW5Rbh51I2/" + "geY0+cHR9JRxG6m1MTuqmN3klnjPd2bxGZJ6Z9XR05QUOKCm/6poy1U8zPHEMycgYMKVAYrF4ravXn5Q+KQu4xRcYxVkVE/" + "EDW17sp+RWlBAHy0uXxtprN+5mnlXusflyVM6r0dDxQDpd0Sw1nqwdKuHhQyN6rHveKAPpHu2reY7eKAXFPOVP5TERvdf1QM+" + "LrDxKN0cexArgy23W0/" + "AUDcp6Ezzvd6h88qeTvdDFZiTun+iiYwZaUJ6UdLGbyUR9MLm+lN9Rg33Gs1jOjrDU4dOOH4+" + "0nW49FaJVeQ3Ve1XiLBIyvc2ex2575Yr1i5LyeTehwnp9Qn68zTF4Y7VhsEQR4F8eKEfd/" + "ibvYVL81PaG6nmwD5RkG85pOER81uivPTnFF1yoGyZDLMdg+Vru7Ha8Aq+12pqKcDjEsrTGSvnRHhiHn+" + "teTmgbzRgqv1tpN8pnTn0OvZAgf07UWUnhDdYY5YkFtrd0Kv9RTPIMTnRPvVPGrsWo117JfyZ2JKmmFXkvasv3qyXNIkropJ2S6WISHwY6zKp0CDYG" + "8XyQC38abEPyo6G9bzyyG4Uxef0kFz4M+kzcs0npq+XJmLMERmNqaEzWJtKMm6HyRXnpTKyr0pipD7AL9RLDq/BVmhYpLUsS8F5C/" + "1QiBnXq46UunhdTLMdgOXPGiks7oR6btomfLgYjzLu9yVh+S8raq/" + "dcjtp75f1KV96umRxZ3mlNiHpO5aIsz3QxoWCS5vkjXd34vT6hOOACgQVpUejJP+zpkUsec2iwniOvvFwNX4X1ZGsCZ9yID+WZ275b9TYkp/zTvh/" + "KgKIdLA0zxGuirsCrJXPDeMGNZCliL3/2tN3LLpTXQPKrajfE0xXaUH6f+GRusd3EfObUJwo65SlSlOUXucF6EZ9DXN0zv4R/2OCh51b/" + "iX6DmBB+C0TZWn0ylqHXr+S/pC9UFWFl3ova8lWVpP1IVDJvGTXmq37qP3we6paBMpjw5KYKgH/3LZMKe/" + "dH0ps7pWHAZVBJExMy9d4uu+kGnufIk1ggc6sxxeeerCnBHHeifLzl0dla9aDn1OmWlCeJhymUxj+" + "LlDcm47eZDMjGAMaV6ncWT0WeKmfOL7RNeTCZJ39k6G1QTYFyl5S1VO8Zy/" + "m3khclk75Q2mBHuWjn4S1XLnWDwtHDVGFDfYL28L0u3o5pN7l1CX6hzcqfvHimXTNhYd1M/UuPYWCfque99NeinKGQNz/" + "USavsWdjc2yIvYYsMKEIoqSWijolzFIn/ULuY4lvVbsSEZQpemuAHZqWXgsF2o/" + "jkUzsfKGpoo2PjLO041R1jIvjTh2jbjEfcI0+" + "Ko9tNEWXr1vtQe52L3ZyCzuItTMfa86K2fDVH2ixu0eQWG8AjuVUVr3hhgpXLcgWdKBHLBd01QxoXhewSnaPpEOJFHBrlQffw7FY08nV5MxDTQebIQ" + "xZQqaMUZRV/" + "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" + "6vJc61myDbZnhc1qy4r/" + "TJdE+7DsZNpJ7ecmAuei8CaCNeVJvG+" + "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" + "jFwrZ37rZVUZgtInlz08JiNwDgT+" + "lzJFNwmKyjkEcJ4bQoABVtdZzdXKnzfRSdqCrJNC3uEItfW4AkT5sf603XMvIWHdeaHyn2LfzVnKqrJgTWHTM2UbJcU5+xgyKmAWKFmrxposiW/" + "PjID/9XPmCpiTvToY5m7+7cCbG29tb+R3lGlW6Xlj4gCu1UzV4jebKIcuTmId/" + "DeHwo6SVen5GyqDFEfIdw8hmy3zVhMMlVP+tB8mUlzOUWFyZxLCqgpx4NtR7UDpJ+vxJqvjfjtyUq/n/" + "ncTMuSfD2gVUPJyEB+fNqDvgnOx38ofHrRz6of+8KuuvE5WK6v4Uvdf6UIZyZUheTWEPOR5sn7Z5HRLNyrrrbTRWyrOnciGpR/" + "TThBQB8Mcy+fo+" + "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" + "LpPgelQbwYZNIExH2XkKn1FqQ0PZliop4/" + "suqivE2Z9Qx25AV2WCC6NCqb0jNxfyIXKxHWiIdycyWoBvNQVqULcsmlnPg91bWIIq+" + "qcsb8HiijVvvpZqx4Y2WtKWdi2avHFDDDLdZvTfpUXrnwSBSU1fQg952ua8UBEyazpKClKLV1Bh+wLVKUJW/" + "TyIRylJZ8DooT+rfcXN4ivzN4UjbK2KIoK/" + "U8RKP9aihRpf8ob8kWrIZysT6WlBSyWaONVorraMcgcKXEf4oMknsMP6c9AQLqaLwdsHwC0fFwGTwY7BjgmrdwhSXzMoNsWJ6QX/" + "5WKe+GeItEycknXd7y+ctnGoDIJ1hrmlTzb5iM4clgTV4MHEwKpUGZsnStP/IKb7xzZE3lYKMpgywYgCF7Et7LTVQjG/" + "LA76C04P2W+0Tyq8GccnHkO3VJ/li8sHTlsshrNk2WM+ZJ/" + "hDthzfboXwHy6o0NeW8yeWmTZbqMYXXuKlsS9oiabpLXPSJXCbethMOlO3fulIZdRv6VU2d0aaTjKRrSPzTmz1LTvwlGKWI9sNepTCBxjjUD3FQtIf" + "6a8P32BvlgbxgASb0K15GfpfbxUze4WyXfIzAL1FpDCGspl8lHnPdSd4qxwMxTXU7xB/M8/YwFM/" + "+50HgLynbK938Jz4kN4XZ3QgCcfAoDSA9CRWXTZLEpROGAU/" + "Pz3TlA3BKx+BER20GRsVjQFq184onA3IYlOVC+f2Nj34Vj8EFtzQozpJVPJgQRq0HMa8a2ZALZQcKCqD48wYeyiG3BnOUShSEYtkD5wU/" + "4jdZTsWhPVS1H8UbLGtlOQ+KN1aP1aUUn8VtUWlbuOgZBRNFIG9b/yO/jzKB3mf33NbWGQr3407a8Kj8etjLj3zon4FKcVLYqdyIQ9PvJ/" + "Lhb96llwqS9folnuJf06+IOpsqedNP38Jc8Xvjn/xWaaOzhXeCOQj8K0W+n27sXgwCnFeCtQJrypN4Hzpst4QKYzDH/Fx8G+zGH3jOB/" + "6BKNXeadDrJVhJ1h7fSg8GdL7j8kWMjzXkYZa2BnMmyknFKeN5rtuxstaUE7kH6/FchVK+zcSVycC/ndKSD/" + "u8uv9uq62z10pL3EuloJyXCnfmflkSKfkFxUryMRaW+" + "t0W22iS3W4HgXvffPMNHQzzOGvwa046naz8uFUEVO902kHjDCEAACAASURBVLHlgJOLHgeU/G/" + "RxTy3IGtRsBFPyYwiyHkuzVv0SPRdB9XW420XUnKxsZNzTEqWxZ44ijerzhSfZc0v5Q5ZHnp57MEj4sCGeZTzQVL42ceQQeE6AZIV5WVyrOkk8+" + "MtIxDriXHz3tUt5+" + "3sNoiAGgL7R4Ip9IzifS8Zuqb3njgbkbUn15iHZOYF4OKVlIhBVT2O4XWKMNXBrOXMBXWW3tBn5XOKsq7MEwsbZRulnfXLTbbRUYDveKAtKne8Abj4" + "RsAIrIOAJmuWW9msfBGWaZVjllVpHRTNxQjcIKD2h+UrWFTuGxQjYASMgBFYBQH+" + "pZSfHbIK0zMyoSyXZiE6I5zOeikCVlSWIud0RsAIGIEMAb0BsnSJRYW/" + "JO+" + "aYhkuxjq068qw8AfvUdl4I9CAwXdITEbACOwIAfXbyX0dOygOZ7rsQMx1RFRZpz6nsE5G5jIbASsqsyG73QTuPLeLt3MzAkbACBiBbSHgpZ9t1YelM" + "QIXiYAUbs4rYXPm2Uj5735J5mzgOWMjcEYEbFE5I/jO2gjUIqBJlr+PcygZlCZ8Dixr/" + "aVbz9cKZwMkh9NxOugb+dWeSqvo65PyT+dWnPXfMOCgi38ReIPo+" + "tVsjkbgZAjYonIyaM3YCKyKQPgGjCZZzrzh3yXvdHFQY4sUximcb3RxXDwHkJ1bSUHB4uOYpdNBW7IPPSjtmv+k+UH8LmH/" + "yBBc9jcCF4cAigpvObxhMPCZjIAR2CYCfK8Ea0kiJls+" + "Jlc6up3D5RYrBimDlVzkPFbRSBako0USXuByLRcFymQEjMB2EaCvBusnSz8MAgwkeLbMyHo2GQEjsA0E6LDFbzYVxEvLP4Wg+V6a1FE2ftfF+" + "MC3oRorTZzwWZIinA/z8SmG/Bh5lILiUov8B/" + "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" + "VRdKxz90obAkeqCbFDf5HRQ3HJwm94k8GyVIz/" + "BP3xDivmZTK4fCoexM8owCsKQz9WHBknIVk9sxAkZgLwhYUdlLTVlOIzCMAIpEmOAHomAtyfeLMMkn6wtJvpSCgOKC9QGlo7tpFt7kMUTwaxQl3bOs" + "xHLQQS4K05LllzGenJOCJQUrEUtOjZIkv5wozxgueVzfGwEjsFEE7m9ULotlBIxAPQIoA0zKDWnyThta8WdvSmNh0TOKQ7B4kEBhSUlBOcAKwR6Xhm" + "LaFv8m8OaGNFzwIl6eF95LaJCn8khKEFaYISWFPJFlyuqyRDanMQJG4BYRuLrFvJyVETACp0EAawZLN0mZwPrxMmaFX5jY4zMOCkmzt4N0urA8sN8k" + "TO5yP9KVL/ewLJPiwSMneD1ReNjnIrf1FeY84oz7QZ7iT/" + "ly2YbYopA15RyKZH8jYAS2jYAVlW3Xj6UzApMIaOJGyShOyApjiadZ5tFz2p8SlkTipI/V4V7MCCWgRFhoyCNfQgrxunmUEs/" + "1m+CJohWsPor3TFdPMZJfKIdcL/3MBd/xjcDGELi/MXksjhEwAqdFoJnkyUYTOZYJllCY8Nn78UIXJ9C2LBZ6RtlhCSlZbfR4NgpLS5Il/" + "JtpQIqkWA0E29sIGIG9IIBFJb2NhTXmvQhuOY2AEViEAIe9Nf8AgoMm/" + "J5FosRZ8VBovtX1UldLkSnFP5Wf8k5jVjELhaPAcIS+" + "rSlFhOxpBHaBAC9HwVKMRYU3JHb5P9RlMgJG4IIR0OSNslGlmJRgUNre0k8p3pn9vpeczXLXmWVx9kbACCxDAOtv+AciFhWTETACO0VAE/" + "KHc4iufM+RbXWeJfnkl/" + "bhVPNxRCNgBM6PgBWV89eBJTACixHw5LsYOic0AkZgJwh4M+" + "1OKspiGgEjYASMgBG4iwjYonIXa91lNgIzEJDV5lrR2dTG8focsPZGft2zWeRtMgJGwAisj4AVlfUxNUcjcFEISCnhqHrOX7mWmx+" + "Vf1HldGGMgBHYJgJe+tlmvVgqI7A1BDjl1f+k2VqtWB4jcAcQsKJyByrZRTQCKyDA8k/zfaAl/" + "GSNwSLzXFf3HJfW8xLeTmMEjMDlImBF5XLr1iUzAqsgIMWCZR9osUVFPDjS/" + "lO57G3hi8c8H+SGJSXuTUbACBiBEgJWVEqo2M8IGIEcAawpfGH5mJNeOVCSjx6yIZcPHKaTbeHd+lqznk1GwAgYgQYBKyoNFL4xAkZgAIHi/" + "hQpG3z7B0VjkhQvKSdPFDmcNhkTPZZ71JLSZOaOYASMwK4RuJL0f4olSO6uC2ThjYARWB0BlJHS15n5gOFLcpMiwhLOI118S+h3XVhMPpN/" + "Nx28ckWFZ74dxLJQ+Nignk1GwAgYgb8kCLCo/" + "Cc+JDeF2TUCRuCOIxAVEFBo7U+RP0s4H8tNSziPdM83hF7r4uvL3Kcw3bYoLCEpDkrKA108c28yAkbACCQE/" + "pVurtKNXSNgBIxAjoAUied6ZqkG4mOGuCgWWE6woLAkFCgqJtyjcISlHPmVPmD4VOFfK+" + "w3uSgoHCDH145tTREIJiNgBPoIWFHpY2IfI2AEhICUCf6hU3UCreLyt2PiorwEBUXPz3S1vtSsZxQTrkT5ffKzawSMgBFoELCi0kDhGyNgBI5A4DGK" + "idJjTXmie6wub4/g56RGwAgYgYCAFRU3BCNgBAYRkMLBXpRf5Y7+NVnhmzxaX3IlS89gGR1gBIzAthHw35O3XT+WzgicDQFN8lhIjj0/" + "5Wzyk7HK8Hdd+b+MziqPMzcCRmA+AlZU5mPmFEbg4hHQ5M6mWf690/q3z04L/" + "oPK8e1OZbfYRuDOI2BF5c43AQNgBIoIMLFfhCUiKlvXUfkqFtaeRsAIbBcB71HZbt1YMiMwikC0EqTD1TgllmUOlms+0/" + "WLLvaVfKyLQ9g482TOPhIm9u5hbQf5XYsXf01m82zgJxfry7dy+Qsz9/+ji8PeRve1KE6RlO4UeWAZgq//" + "ZVRE3Z5GYLsI2KKy3bqxZEZgEAFN5pxD8pNc/hLMv2te6B4lAeJrxFhDUF74vg5/F0bxQGmZpBjvfTei/OHf+7Cg/" + "L7SFXgrDumSgqTbeXTCPN5Ikubcl3lSObYRMALnRMCKyjnRd95GYAECmsxRQvh2Tto/gmLwua6Hur7XhcXjZ4Xn1gOUjHe6WqQ4KDuE5YTS0YsrP/" + "iXPiyIApB/" + "r4fTaRdZU5bmoTJgMRpbqkKBqlLUFM9kBIzAhhDw0s+GKsOiGIFKBLBgNMs4mqCZhJuTXfWM4oBVJZCeUVz49w7xGtIzy0SlyRvFpRWXRIoflA+" + "5nFabK0EsqbSUhCwueddsZGXZCOVrdh7iDyEDVqYhKileQ3HtbwSMwIYQQFFhYGAt2h15QxVjUYzACAIoEmMWCw5by4+" + "vZxJP1pfAVgoB56Pgl8cLYfqBN3kMEcpHUEzEh3gsMeX8GyVH/" + "ihQS5Zc5uTBUf+MYViRvtCVK1HyDoRCNoZZjGbHCBiBjSDAmBL2yd3XDR2YQeehLpMRMALbR4DJv2UJ0eQcrBZy8UdxIE6i1tKMwlACsLAUJ+" + "6YtsU/MYouikh6sUEpakhpsdLkSksTNvOmOg/lGY75l4tVpqSkkDXlGbO4zBTP0Y2AETgxAo2lFouKyQgYgX0hwLIPH/" + "ZLygRWjZexCPiFiTs+49Dhw5uJ0hA3femYsCFiGYZ9HyVlBisMm3fZoIpCgYKAohQ+" + "NDiQRsGzqDoP5UeZkGOMUNYCBmORHGYEjMD2ELCisr06sURGYBSBqAgUJ12FYc1oLBp67lpPsJxicWG5BEKxQen4TleulKB4kEdvaUjxWnkozuo0Mw" + "8UsbcIoXTPdHU/" + "hIgiQ1hePrxMRsAI7ACB+" + "zuQ0SIaASOwHIFmEocFk7UuLC6tybzLXnFQRlBoktWmG2VLz2GZS7IOLTslpWtLMlsWI2AEKhGwRaUSKEczAjtFgMPemn8ApTJoUmepBIWlu0yUohw" + "UJyzpyH0Z4zdhW7qRbFhKhixMKC8coW9rypYqzbIYgRkIWFGZAZajGoG9IaAJujiB15ZD6dkLE5ZOatNsLN73kn9q/" + "8rGRLY4RsAI5AhYUcnR8L0R2DgCmnQ/nENE5XuObFfJsyS7/" + "O6twtxMjIARODkCVlRODrEzMALrIeAJdj0szckIGIF9IODNtPuoJ0tpBIyAETACRuBOImCLyp2sdhfaCNQjICvOtWKz14XTbDlQ7Y38BjfhKtxkBIy" + "AEVgNASsqq0FpRkbgMhGQUsLR9JzHci23+cbQZZbWpTICRmBrCLD086coVHK3JqPlMQJG4PwIcLJrc5Dc+cWxBEbACFw4An9J5UNR+" + "U98SG4Ks2sEjIARSAiw/" + "PNTeljiyhqDRea5rta5Lt3nJbydxggYgYtD4F+pRCgqJiNgBIzAIAJSJFj2gRZbVMSDs1g+" + "lcveFr5wHM5mibxRgkxGwAgYgSICVlSKsNjTCBiBDAEUicGvLWfxxm4fKvCVFBM25HKMfzqEDd7hOz1jiR1mBIzA3UXAisrdrXuX3AjUIlDcn4JVRF" + "eVNUTxknLyRJl+l2X8WPdHLSllvHxrBIzABSJwdYFlcpGMgBFYFwGUkdJR/C/k/" + "5KspIiwPPRIF98W+l0XFpPP5N9NB69cUeGZbwmxLBQ+" + "LqhnkxEwAkagQcAWlQYK3xgBI9BFICogeLf2p8ifJZyP5aYlnEe654vMr3X9Nd6nMHm1KHwgUHFQUh7o4pl7kxEwAkagh8BVz8ceRsAIGAEhIEXiuR" + "yWaiC+pIyLYoHlBAsKS0KBFIaSAqFwhKUc+X0dfNo/T/XIhw5/" + "k4uCwgFyfOHY1hSBYDICRqCPgBWVPib2MQJGQAhImeAfOlUn0CoufzsmLspLUFD0/" + "ExXUmDkHXiimHAlyu+" + "Tn10jYASMQIOAFZUGCt8YASNwBAKPUUyUHmvKE91jdXl7BD8nNQJGwAgEBKyouCEYASNwNAJSTHy0fgWKwol9PWGPTkX0TUa5hDJsElgLNYiAFZVBa" + "BxgBIzA3hDQJHotmdlH87Eu/oH0g/xaG4HldxaSHOz5QUlZTVE5U3lRtji0r2pZ8CxgO9OLQsD/+rmo6nRhjMCdRwDF5Mc4ibJXZhNntDCxS5Y/" + "I9vKNXTr5VUZguInl6U+kxE4OQIoKmj3nHXw7uS5OYOzIcBAqYu3zLOSZOCtcpS2IuuokA6chUBNvc9iOBz5syyI9j70F+ks2mlvVXYsPC/" + "klv4FdWzmZymvyoI1hX+CUbZBUvgmxp1BAbMAyTo5NmXRfXt6BFCIwzlMLP3QmTmACc+zd2rJcOdJHQbzNRXEWxhvYG/kt9jMqrS8+XAy6GomZ/" + "FbRJRD13e6ugeBBX7yP4usyvdbCcBAxSFlF/lX2aEyyp/2xiSKy790GAeYgDj2HuLvxEe1HaUfrfebbI7/" + "7chJnW5h7wxy5IfcNQWVvPzNm4Pz6OvgXOzn8ic9fYP6of+ENio3r5fVyiu+" + "1P9XulBGcmVIXg0hE3luqi830s28UTlvpY3OFOsuR2c8oo29wqJi2hgC6jAojW908X2VL+lAS0VUWgYcDuAK5toj+NBg1iLM1QxwLVpL1hbT+" + "odQPsmwCyVFci6pj2IZxYu2wReNUWaZmJgwcZnkmQjXWj4p1rv4r06SnbJSjqPa/UqCfSU5Wn/TTnzlT3sDX15I+JxAjxSHARul8WfdUy+9Niq/" + "1corXihPKEWMHVxFUjzKRNl6caLf0eNOMePTet5aGz1tMS6LuxWV7dZn8fsqC8QdfJubyQvL2yqkQYzJ47owwK0l6xI5eaPdwqRWK/" + "uS+hgr41B74zj8JXn1yjFS7724x3goH9oRSsqvus5qzlf+YJ5bPUpFw2LxWhcKQouUPikLuEWFUXFWLa/" + "4gRsvR1NyIytxsLx06Zx9uStL9bPKPTQ2VfNwxPURuFqfpTmuhABvUUWT6kz+KASDfBTGgJK+zcJH5hZZb5QOeRloOU+" + "jMbfrnjeU5jmTPQwIes43F47KmqWtvlXexfLJn4H/" + "hS5OSOX+ia7XugIpfG55UtJFbiYPdcGb9Uv59d6c5zDPeBbL2OFFeTk1tku0nbyOuuFzn0v1PpdHiK/" + "y9epWfr8okHbIAXTEYyJttWn5Yy1AOSAu4Shi/" + "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" + "iOutt5eKy1xL5UaBTwvoHBba9zJ2a5xH5SqWK+" + "lfrfVNrpG2ffG4y9J4HvffPMNnQgTOObr2x78khx2T4yA6pYOOGjaP3H2Dfs4QGAWLg0SId5WZG2EHrmRrCglvDFz9gLKIEs3nIsRLCly2feQ/" + "iHzZ91j8sa8n9bxOculeYtW2CZJMi4uJwVSeib80Xo/V8ElG3uKmjqbkkPxqefqelN86pxPYYRJcor/" + "XsIjDmzqps0XSWGbGHeKwnU8Jetm22hH1DvxGOuDfnbvgKKi64Oujz98+HDwdbkYqI4fnLt+a2WojXfu8jj/" + "uv5yl+tTZX+m67tLayuUibJNlUtxzj7uTMlI+F7krCnLJcShbelSUT4cbFG5E7qpC2kEjMA5EdBbIVY1NixfhNVa5ZhlVTon9s57nwiojWHhChaV+/" + "ssgqU2AkbACOwKPlkRYwAACylJREFUATZcN39b35XkZWEpy6qb8cvZ2NcIHA5WVNwKjIARMAInRkBvh/" + "yjB4tK2lx94hxPxz6W4WKsQ6dDypzXQuBqLUbmYwSMgBEwAsMIaIJn2af27+DDjM4conLsvgxnhtDZz0TAispMwE4VXZ2fj5+" + "ZjIARMAJGYEMIaGye+ubThqS9TFGsqGykXt0ZNlIRFsMIGAEjYAQ2hYD3qGyqOiyMEdgnAlK0ORyNf4KcjZT/7vd/" + "nA08Z2wENoyALSobrhyLZgRqEdAkzcmxnKAKJYWB01XZxNmQnq/" + "1wL81OMCN48zfyO+oPQdKnw7KOutfbymHLv7O6H+jqGJNRuBSELBF5VJq0uW46wiEj9ZpkuaDb/" + "wVlmP9OXG6RQrjRGBO0eXbNpyWeqySgoLEl7sHTxpuCVB4UNo1/7b7g/" + "hxGqrJCBiBC0HAisqFVKSLcecR4ANrWEsSMVnz5dvSd2aa7w6lyEe45HOsopEsQEeIcZNU5UVhupaLAmUyAkbgAhDw0s8FVKKLYASEAMsdvY9SDiCT" + "ln8Ggmd5oxQUl1rkjxLzuy6Wn/" + "gw5iLrjdIhLwoXH+LEWhRI91hPmufkLzcoK3JZ2jIZASOwcwRsUdl5BVp8IwACmrBf6cr3o6A88BHA1ofw9JwsLIuXahLi4oUlJM8zBR0Uxof4+" + "GAdygkKVNo/08SpuVF6LCOfRj5s2OX5IJdy5BYkvBOxtLX5Dz0mYe0aASMwjoAVlXF8HGoEdodAnMTZLPtZQXgmd/" + "anrLHxFUWFvTAtEm+" + "WgvIvJZPX561I9Q8PFRUljPLAMylGlGPIgkQcZDMZASNwAQhcXUAZXAQjYAQiAprImaBZcvksm9RzfIr7UxQXS8UjuXMsLaRJikOex1d6aJZkohzBs" + "qN7lJiuEkG+" + "fLQvJ5Z1UFCCQiX3iQLzvTCP9dxNk9L3lKcUYNcIGIH9IWBFZX91ZomNQBEBTeYoAPzrJyx7xOeD3Nx6giWitKeEpZmXMFZ8llUe6fpEV9pjguLTTQ" + "dflJUu4Zfn2YQXeJAfS0RTSzXInSsqPL9UOpaFWstb8geHYv7yNxkBI7AzBO7vTF6LawSMQAEBTdZMzkzknCPC5I2y8bWuxroQ/eQVNpviBpI/" + "yyr8QyhZR7BwvJLfa1389Zj7FKbbG5I/" + "CgL5dqnnr7hYeY6loHyIF0pKUoa47xIysUfGZASMwAUgcHUBZXARjIARuDkzhcm7dXaKJvVgBZHLqa0sn0B8+RaX+FhOUGoai4bCUEwglICwvCI/" + "lJ4SsW8EJSe3YLDsg2UnKTHkE6w1JQaVfk8jTxQQ8uIfPRw017WmyCuUpWv9wd9kBIzADhGworLDSrPIRqCLgJSCj7p++bPC+fdN1d+DFfd5jI/" + "yEhQUPT/TlRSYnDWWEpSCRpFRPBSJVRUF8UQx4UqU3ye/g+KhFOHmilMT7hsjYAT2h8D9/" + "YlsiY2AETgxApxXgrUCa8qTeP+2lKfC2HzLGSnJelKKNuW3plKRFKepPB1uBIzAThCwRWUnFWUxjcBtISClo/" + "nHTk2eis9SEkf4s7n1fU2aPA7p8+el9+KDcsW/hdZUfJaK43RGwAishIAtKisBaTZG4K4gIEWAg9daFhQ9N0s/" + "Z8The+XNfhuTETACF4SAFZULqkwXxQicGgEpJFgtigfGKWy2NWVNeclfV/" + "iC8pp8zcsIGIHzImBF5bz4O3cjsBsEpASwUfWoLyXfUmH9BeVbAtrZGIHbQMCKym2g7DyMwGUgwEbV/" + "NC1TZZKClX4KGFUrDYpo4UyAkagHgFvpq3HyjGNwOYR0OSMMpFOk+XfOCyFsFzDd384Y4WNpuwv4dRZzj+Zs3H2WvGLG1/" + "lT77pkLV3ei7+fVhxqulInkFZUWZHy1EtsCMaASNwEgRsUTkJrGZqBG4fAU3svS8Wyy+cKyJpftCFNQTlhW/" + "osPkVxQOlZZJivOIeFIXB97Vczlnhb8xPJhlORFiBp7+gPIGxg43AXhCwRWUvNWU5jcAIAnFiL32x+KGS8W8YrCo/K15uYUCJyY/" + "Y5yh9PvYXLCNR8dBjIBSaJm70Sw5h/4gyfC93jpUm8ei6ozyVB+Gcflu08CgMpYo4JiNgBHaOgBWVnVegxTcCEYHBLxYTrgmdU2axqgTSM3/" + "j5V8ywUoiF0XmE7lM/igwxM1PosUvxJXbJawz/9SFZYXzVPiAYTjLRC75sCw0RZzFkp9/" + "MsgzMrqWm5aaSryHlKpSXPsZASOwYQSsqGy4ciyaEZiBAIpEPtF3k/JNHyb/REz07ONIhDKBgoE/lpnm2z8xArzJo0WKh9WC+B/" + "Fe06zxTITjuuXH9/" + "i6fKS1zBV8OS7RVhSsBBxpktuJUqMg1zpwa4RMAL7ReD+fkW35EbACGQIoBC0ljo0gQdLRpz42ZtCnEQoD+mDgyggXHx1GeUFt/Xvnpi2xV/" + "xIHigBB0UB2UGpSFXgAiaS6M8lU9SgrDClJQU8kPWMYvLXJkc3wgYgTMhYIvKmYB3tkZgZQTYFzL0xWIm7TC5Z3liOWnt70iTPq4u9pywjJNbaUpfS" + "kYZQgli6Qh6o/tcIbrxnfc7ylP8UareT7BEEWuVbyK+g42AEdgoAlZUNloxFssIzEEgKhTFiVlhWDgaK4ee0/" + "6UoITomb0qv+pC4cgVgHcdGVAgyKNZQlL8fB9LJ/" + "qyxwqeKFlv4a64va86yw9FhrBcycLLZASMwA4RuL9DmS2yETACxyHQTPQZGywyWFCe62LZ50u5udJy0DPKDspMaQkoY3Xy22CxkRzhn0yF3JJCVQiy" + "lxEwAntDwBaVvdWY5TUCxyPAYW/NP4Bgp0kf60PRIkN4IsU76kvJic8x7pisCkN58ReUjwHYaY3AxhCworKxCrE4RuDUCKBsHJOH0qe/MB/" + "D5lRpOcelZQk6VUbmawSMwO0g4KWf28HZuRiBi0Jgq8rAVuW6qMp3YYzALSNgi8otA+7sjMDaCGhy/" + "rA2z0vjJ4zuXVqZXB4jcFcQsKJyV2ra5bxYBDwJX2zVumBGwAgIASsqbgZGwAiMIiBF6FoR2NfCibMcsMZZKd1zWeRtMgJGwAisj4AVlfUxNUcjcFE" + "ISCnhqHrOXrmWu8YHBy8KHxfGCBiB0yLgzbSnxdfcjcClIMBJr82hcZdSKJfDCBiB7SNgRWX7dWQJjcAWEGD5J3wbaKkwssZgkeFAue4ZLq3npfydz" + "ggYgctEwIrKZdarS2UEVkNAigXLPtBii4p4cKw9HztkbwtfPE7H3IclJZibjIARMAIlBKyolFCxnxEwAjkCWFP4HtAx3855KB6vxIMNuXzcMB3KBu/" + "w3R65JiNgBIxADwErKj1I7GEEjEAHgeL+FKwiulA0JknxknLyRJH5llCix7o5akkpMbJrBIzAZSJgReUy69WlMgJrIjC0P+WFMplrDYFX+" + "KhgFJDn9K+i6GXHCBgBI/AHAld/3B5+01tP9hhuf5Sf/47YRcXPRuCOIKD+X9yfIn+WcD6WG5ZwYrxH8uODh7/" + "rwv8z+Ze+KxSWkBSGksJeFZ75mGCuwOjRZASMwF1AQGPBbyrnx0NlRVEZ+2rqMWvSQ3na3wgYgR0goMHjucRkqQbiq8m4KBYoJCgwLAkleqRw9qDg/" + "63cv+r6NgVm7lPd81FDBibGFw6Qs5IiEExG4A4jUBorGjjuffjgz4Q0aPjGCBiBoxCQAoJyc5Drk2uPQtKJjYARSAh4j0pCwq4RMAKLEUgKihg0G2/" + "lh6XEZASMgBE4CgFbVI6Cz4mNgBEAASklHNrGv3dYGvqzLpZ23srf+04EhMkIGIHlCPx/Os2ziVFQJvIAAAAASUVORK5CYII=", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}\\frac{L_{x} u \\left(c + u\\right) \\left(- c du_{dx} \\rho + " + "dP_{dx}\\right) - 2 R c \\eta_{2} \\rho \\left(c + u\\right) \\left(t - t_{t}\\right) - c^{2} " + "\\eta_{5} \\rho u \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} c^{2} u \\left(c + " + "u\\right)}\\\\\\frac{L_{x} \\left(c + u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right) - c^{2} " + "\\eta_{5} \\rho \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} c \\rho \\left(c + " + "u\\right)}\\\\\\frac{c \\eta_{3} \\left(v - v_{t}\\right)}{L_{x} u}\\\\\\frac{c \\eta_{4} \\left(w - " + "w_{t}\\right)}{L_{x} u}\\\\\\frac{L_{x} \\left(c + u\\right) \\left(- c du_{dx} \\rho + " + "dP_{dx}\\right) - c^{2} \\eta_{5} \\rho \\left(M^{2} - 1\\right) \\left(u - u_{t}\\right)}{2 L_{x} " + "\\left(c + u\\right)}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x} u}\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ 2 ⎛\n", + "⎢Lₓ⋅u⋅(c + u)⋅(-c⋅du_dx⋅ρ + dP_dx) - 2⋅R⋅c⋅η₂⋅ρ⋅(c + u)⋅(t - tₜ) - c ⋅η₅⋅ρ⋅u⋅⎝\n", + "⎢─────────────────────────────────────────────────────────────────────────────\n", + "⎢ 2 \n", + "⎢ 2⋅Lₓ⋅c ⋅u⋅(c + u) \n", + "⎢ \n", + "⎢ 2 ⎛ 2 ⎞ \n", + "⎢ Lₓ⋅(c + u)⋅(c⋅du_dx⋅ρ - dP_dx) - c ⋅η₅⋅ρ⋅⎝M - 1⎠⋅(u - uₜ) \n", + "⎢ ────────────────────────────────────────────────────────── \n", + "⎢ 2⋅Lₓ⋅c⋅ρ⋅(c + u) \n", + "⎢ \n", + "⎢ c⋅η₃⋅(v - vₜ) \n", + "⎢ ───────────── \n", + "⎢ Lₓ⋅u \n", + "⎢ \n", + "⎢ c⋅η₄⋅(w - wₜ) \n", + "⎢ ───────────── \n", + "⎢ Lₓ⋅u \n", + "⎢ \n", + "⎢ 2 ⎛ 2 ⎞ \n", + "⎢ Lₓ⋅(c + u)⋅(-c⋅du_dx⋅ρ + dP_dx) - c ⋅η₅⋅ρ⋅⎝M - 1⎠⋅(u - uₜ) \n", + "⎢ ─────────────────────────────────────────────────────────── \n", + "⎢ 2⋅Lₓ⋅(c + u) \n", + "⎢ \n", + "⎢ c⋅η₆⋅(s - sₜ) \n", + "⎢ ───────────── \n", + "⎣ Lₓ⋅u \n", + "\n", + " 2 ⎞ ⎤\n", + "M - 1⎠⋅(u - uₜ)⎥\n", + "────────────────⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎦" + ] + }, + "execution_count" : 8, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "dQ_dx_inflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_inflow_x1_lower)\n", "dQ_dx_inflow_x1_lower" ] + }, + { + "cell_type" : "code", + "execution_count" : 9, + "metadata" : {}, + "outputs" : [ { + "name" : "stdout", + "output_type" : "stream", + "text" : [ + "dQ_dx[0] = (1.0/2.0)*(L_x*u*(c + u)*(-c*du_dx*rho + dP_dx) - 2*R*c*eta_2*rho*(c + u)*(t - t_t) - std::pow(c, " + "2)*eta_5*rho*u*(std::pow(M, 2) - 1)*(u - u_t))/(L_x*std::pow(c, 2)*u*(c + u));\n", + "dQ_dx[1] = (1.0/2.0)*(L_x*(c + u)*(c*du_dx*rho - dP_dx) - std::pow(c, 2)*eta_5*rho*(std::pow(M, 2) - 1)*(u - " + "u_t))/(L_x*c*rho*(c + u));\n", + "dQ_dx[2] = c*eta_3*(v - v_t)/(L_x*u);\n", "dQ_dx[3] = c*eta_4*(w - w_t)/(L_x*u);\n", + "dQ_dx[4] = (1.0/2.0)*(L_x*(c + u)*(-c*du_dx*rho + dP_dx) - std::pow(c, 2)*eta_5*rho*(std::pow(M, 2) - 1)*(u - " + "u_t))/(L_x*(c + u));\n", + "dQ_dx[5] = c*eta_6*(s - s_t)/(L_x*u);\n" + ] + } ], + "source" : [ + "drho_dx = Symbol('drho_dx')\n", "du_dx = Symbol('du_dx')\n", "dv_dx = Symbol('dv_dx')\n", "dw_dx = Symbol('dw_dx')\n", + "dp_dx = Symbol('dP_dx')\n", "ds_dx = Symbol('ds_dx')\n", "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", + "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", "\n", "L_inflow_x1_lower = Matrix([L[0],\n", + " eta_2*(c/Lx)*(rho*R)*(t-t_t),\n", " eta_3*(c/Lx)*(v-v_t),\n", + " eta_4*(c/Lx)*(w-w_t),\n", + " eta_5*(rho*c**2 * (1 - M**2) / Lx)*(u - u_t),\n", + " eta_6*(c/Lx)*(s-s_t)])\n", "\n", + "dQ_dx_inflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_inflow_x1_lower)\n", + "print(cxxcode(dQ_dx_inflow_x1_lower, assign_to='dQ_dx'))" + ] + }, + {"cell_type" : "markdown", "metadata" : {}, "source" : ["### x1 lower inflow (with relaxation term; zero normal velocity)"]}, { + "cell_type" : "code", + "execution_count" : 10, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAK4AAAC1CAYAAADGHcS2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXZIdJ9KGjzr62iHLEb7/" + "5B2MrRW4ZwcaaQXW7EATupLvOuwd2F6BNN6Bxyuw7B14vntHjNyhDWjeBwFDUVBF/Z6qOhBRTQFJAslLkgUc+vT+/fvTGs/Lly8frlFOLWOd/" + "pxDzlMwcXVawX399dfPVcxfViiqFrEvCTy02Bhc63uMnCWdKvZY/B/J/8cc5YgPA+AHPQ/1vFb473PwPTqPPrkpHeXyVz03Vhb/kn9n3+/" + "Lf6DnjZ5/iNbF2+Txni33Tv73Q7jck7oGCL9mMv0ohn/LpPVGKy8N/ln+573EAwnEkxH3N/k/" + "Dsx60eR9crPpv8lv9ZnifpLwvtDzf3qfE7zg78uQp95/VxzKqeWUdu86iP1W7xCH7t9hYMT7N8rz3Yh8nVlU8VArdNLWxP9JoE9uSnfm3Kv/" + "5Wq80ZfI/pke8DKXgy9YCWdPwrFjRmAGP4XA/U4VnwrUuKAn4hlWJk4fG6YB/" + "xbv2Ub92IrsLF+f3PoUgtOAn8zZbvXj93r+1OPNEOLiMhRHlAHuYh9nKoQC5h4IVByHgLHBqhsmgT65AeyT+u63DFuTrrScRs5kK4oGK0+" + "KKEV0XUro6NQoVPh/bBiN9ybTUBrZC64+fkpnlFMmDaNceDKl3eoxTjTY0kxfn+n5VeHGaFX4n4r/" + "Sv7iGlplAA6+CyiLuqNFlhrAYp92KrNXbomcWWCLHzInnfbkgJ1gWRxFv4KZRt/" + "lchcD1woC45yKmw8i+dgmdJIbiWE5GPFZ+7aEn2gQFKD7XO+m8+VTB1w4KF4onnqh5Vlx8I1XHIB+LH/0R6byFzmVwQC7L9+YR/" + "KpPx8eHxcxmInIllsiN1+i8jj71snXpCmeAUB7kO2SH8N8XyGvIlcMXHGjQawyhF/xqHav+aIS0YJvo7gw2MlP5ZAf4ccaCwDz1Wu0p3wE/" + "oseHAMoLpO4JTQE5XmnetCxDBC0vnMsHwHkGz3hQHPps/" + "sqp0huiYIdaFi6ZAA6B6B+Utwsy5mOacKn3xgkRa4IuKo0mhOmDZAqvkuTPBC9AVdck0J+Tnt57Wn5IOBw8PCR5oCZGkjQN+" + "od14eweFAea5lod8ePpFKHpo8713UEYGo5lUP8z3qS6a0MHyLQel31K5VbzN7MmuI9eGZSnqmyoy4opGI5FAFXDAHEv1TBO/" + "lzuBJ+hiYsTOXTMMDgpzNXJ/kAlHQPdMVBS1yJtmNwPleeLlCIpO2Csl9HqdQJl+SpfMiztV5qcoz/UyS3BHvqmqxngjaOGi27gFFW0QU0/" + "vXKv2VeJFw6nseDJUMaR7+1+RrxJfw6aOiUk9JTQERTxEtkTN/Ql3QItCm+sOhzlO3Nl4D4qd6p0yofZyon11ddckM+zr4d2/" + "4psnPiou5gpsj1alw1iu04mN2lOCotZ7/" + "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" + "WVye4u7r+SmO32KY+" + "utR1d6frs40XrZYLNo2tFVP0las8aJNWSLjIulYK3m7UmlZp7yYNfflO82fpV0gwcwSKtusoCT4YwLF7UqQbStqV6bCwqJjmvcrDJSlzg4/" + "zhrFWxBijvRNwyaf6DAJ+" + "MVxaN40eC4RUHnYzUlgKg0ws3IyxbZeotq9PCtwrYjUecnOzUnQdrazt3NkjXjlwU7G5tyK8xekbKVCpfUAuB9ZYueX5l2VTh2+" + "7H9ZWbE1asuKpXUXlaqL4uK16m4m66V+6orajcbdsDCdLKu/" + "ogT4OHtny3P+isXXoqoEBkngD0e9G43rKrw1XzPBjeqEfcwpLxb4f1FcvD6s6OrmlEAF7kRpCqSsLLAsdiM/" + "3lmbyL1mz0mgruPmJDMsntWFeAt6GIdKPUgCFbiDxJUlxlzwZxyyVDVhNglU4E4UpTUT4FI17kRZDslegTtEWmlatC3nYHe3+" + "5Ruzj5iK3Cn91PSvhWQOZsAqKtbQAJ1VWG6UAFnaruY87W3sBeAWXXg0DrnIdyPNjn+mMonkur6JFA1bp+" + "EOtItIKFo2LeKZ02X87fuAA43OvJjzFd6uF/BXWKiYHVjJFA17hipKY/Ax3HHpzY7J7945QANmhUN6w/" + "gWKAqyvw6wqw+KC78yRBp1Q2QAMB1x97eDsh38aQCHrtjRTtkouUf/0ELmA1gFX6mx/1M/" + "uLlWSgAZjZjXmEqPNTDzz4e6KluGQk8AqhijbZ9at8bh9aXKfZwXPmeAKunaiqM7FuBDzs2/" + "AeBWU6iPctWsMp1mj5bt70m1I+zET1nNebm125VT3Mb44gmbj5LBe7ALhIY+ABL3rw4kNVa5Pw0x/wkf60C1yinAne4lAGBsbOGZ10/" + "h0DLBw0n17b0k6HJgjikjWs1jFvoZwdrztsZAUFr40BxfDiwDMaHmLFp5RtNJ3/00tdMfA14VbfchSCTgbQ2g8NpXHU0N7K4/" + "0fLlzsXhzhtw6940ZaA+Xs9AAogPpTf6yzdXUyoePhzoTJLXlxz5Mrjlpoi3jFPwjPypR5+XTlV1t7iDqVx1dGAcsrtjG5rln7kp+lcM2/" + "uJSBCDhCm1rtZSmQgsNJA+" + "Qbc8rnl5pHixroiviqDevEL4tZMYAumPqMH0NjKL5nvUMCVoJ7o8UtP6kg6zANPYbSOvztBYYDK6oABmt6Z2s1VS4oDhD/" + "oCe9WuK+wo9XrBydaczJM/" + "lPF+OlYYfj7c7o2XPKhxE4cA6CIr8rATOm6+ys12JRlv+5owAVYXccL2Y4N7U06PDxnwAXPABntBAjjjzB4U0bOwc8PHL1jhvjdNb0ziMZM2Vm+" + "4snWM5r2ULcxqj2d7qozdX+JAKMxJapj3QcS8di2XgMrDIhCjehAC1DQUo3dLZu3wV80oSMPz0m00IVlET3WZfmqHDMw5KOlvbaPCqIuXRo5It9+" + "8FpV/MhW0/nbr3W+hmg7pnoHLrTjrSUnzms/GwdAvV1IPj1oVexV09nyP9YTmge5mxdhCS+2dNHsJ/" + "lznUXI8lUZtDGsH0XHjgHq2xkn7ijcuBDkna2483fUjmZV1YmALtlBSsMk8GaBws6+" + "NaaFBQBayd3iAiBSDg1OGaHJYejiMlKZx8T18GXwmZlBdK2DO7ZdJ/" + "mmnWPK31CeP1xdrtzLBfq+w2m7OhatxXRL52M3vtDDDllDmykM+DE5nFZX8KzOmCOqz6FuY+" + "yTKKbCpbrU7YxFU7tAAsBXv3kx1VGqR9css9vbGFNtDeMuFriALxTE0Hflx5bOmRND2S1Fv9vbGPsEchjgCkRnuc1R5fbJ+" + "KzpqfopztnxZ63blMKPBNzdd8aUjry0vJf8cXZpfX2o9h5G456rVzTt3qhs7GW2iNkAqLc1SghLuwrciRIWcOttjRNlOCZ7NRXGSK2dh50pv7nRTq4" + "xc0ugAnceiWIu+DMP87CsXLokUIHbJZ2CNJkKbB3jqsb9IIdV/gJct/" + "PCCaTqhksAbcupsiOcBRje+nVzoBzMxhHAfaiHc6cP9FQ3XAJJ+1ZA5jwDoK5uPgkgT3NG+no+" + "nhfLCWGmto85pHOLVARgzAmOOtbbGhHIDK7auBOEaAEJh4Z9q3jWdOttjRNk25e1atw+" + "CWXSBU6OPvLzHhynxfA5dINmRcNiQhinNHfqDO1sVh8U1zrPa8mrVyCBCtwCIaVIBDx+TRH/" + "oiJFehKtu8MLMBvAKq516DuZuUYmJVCBmxTL7JHxbY1o5cbv2WYv8eAMK3AHdLC0JLZr0Q2NIVvlC3/5Gyat9h5o/" + "dXKXLKg+nFWKF2mdpHudr1W9T/" + "UzY0VuAXAVafz0bWnGxpzrTrMzY0VuLkubsbzy16z8N2M3ldIA5Bluxs7EPdV+ai2h7Fx1RmAa7UbGlXejcpj2Su8nRHNzI8oWR7j/f/" + "18G+hRm0HL1SGAa/qlbs8REnbd2hcdxGI87df66iG6uBVb2i0oEzdzvhEVXtI9URzJw/AmjBxQ9yCZez55kZ/" + "IQjAfWcF6vwh8j07rTqYKbzrhka0Ioe9Qw2DNmwdKhIN15OSFjqAF9M+UFzrdkbFsU4bHm98pfAobat8o8pQ/" + "dmx6zJrGFCjBpPyndv5C0GOYCqg5fxykzqNjvnNSVhhwNR1Q6MhFR2rBqkOBcjw9E60Bozy2TkLBwTmQwM0AS0DCHOmz2FmZG9qVOZsGZYx6V33hMW" + "DsK8+m0w/AnABVpdWY7E/3F6lY1NnC4gL6RQ0Dt6UkXKA0QBVYIOGE2Ehbw94xTOY/" + "DZwilkmbkgZbENz4OfwNzdiKuzdAYiGphRIjGaTTzxg8hpY4cZ0rjSAkV2ftXkb/" + "EXvHMB0GowB4p3y5a5E8jSFL8VlqEyzBS0frR3OBGFRtKVLI4e0m30/" + "gsYdfUOjOhct6f7Pblcn5W5oRENzVT8fPAAMwDBoAIaf7vU+xRWXYdtDPbocAzd1DLMrz+bSdg9cdRZTebIjlMa07aduhWPt+" + "kDpaGSmWBzaCCByhX5ofgBGymiYEqJp8Ff67G5gGZhBb6iE8rUO8SiOgUpa2DaidueudlfjaRX2HQsbOlAP06s7dpjkLhoACsBzJkMy3xkijUmkeub" + "MFDcAz1C1eYvcvcYdKI7WDY3kV0czvQJgYyMSFzvRGDNA/" + "q2lj0nOHla9umYfwMyW7+61LYK+" + "KOCq05ImRSnilH8PNzTmmnOomxt3DVwBqd7QmINpIl7ySsSaGWd3FwbuHbi7E3gSOTVysAQu7eNssIBqhm1KAI3rDHq3kL7Nmm60Vpp+b1Q1bGd+" + "HcGif72tUUJYyLG6Y75T0Lgs8bBtyZpmdQMlIOAiTLMBoXf+wV92ZWIg60relgBKwmyxV1OhLZwxMexGAeDqVpJABe48gkYThMcZ5+" + "FauWQlUIGbFU1ZgkwDtpFxVeN+kMMqfytwp4sZbZs9XTadfeWQkkAFbkoqw+KS9q00MWcbAHV1C0jgegGel8YScKa2kl8o/" + "hZhWHOC87r1tkYEMoOrGneCEC0g4dCwbxXPmm69rXGCbPuyVo3bJ6FMusDJGd6nNpmTY7xy3hXNygcbJoRxSnPHJtHO9bZGK5cpXgXuSOkJjJ3HIEO" + "2gNzSA2ZzGF3h1kHvME9975ZABW63fOZKrbc1ziVJywfgfmTfnT9zEZWdtKv/+XyXNESHXbzrg94Lt+FTJz+A+84GnO/" + "SNudLKDeqFHbkQz3m1wyKa3wYba7ShRVSO7CZAe2mgVvQBwy+x3qWOLPxhxPn3lYV+OnJj1Yo2IqH2Galo9WWT2ib65gN+" + "519oDYYRSKfnwot5vYG3M8DSaB1+a3Yrp06mBmEXxY3fkG84Ub19oHagrZlpYW2LeJ2BVwJIpxG+cVqke24iOTmY0o7zFG9+Vgux2lAH9Am2raI2+" + "WqgoSHUPjhovk59iKSWY/" + "pE7UjtfN2Ujwa64ketFeo6SbVTrxYZ2ZnDxMFOSbtUcUjZ6Z81qG5a8LL26Zl+" + "0DpXAr4px5oZp8Zd6VxJbyThMAoNgLTOx80u3WqP8AJZxHfFqUBLkADeGedcsUbAPJ9gE39SE/" + "LiYYP4Qd6uIeMgROCtrQPaBsDb3a3K+BKeL9KAoCVkcwvfJOaanYpLccweUCH4gCKHjRhEtgzVAkN/" + "koPA6ThVK4bLPiND2ClDekDPtT8DmKjkImBzZoKEhCjOr5hvHe6VD60FHQImE7nI46lM5Zpim1i0dJpTKfUAa10qzijdeSjjehwfxu53k+" + "K54u7uAxlYXuY6fhcjvYgn9hhvjDVcz1r46NRcb19EDDjDjVkNbvbpMaVcGgwlyyjcbgLCwD1OtG7KRWBAwiOFtIBCP9Gvukk6FLvUQE/K/" + "xKdNSBU16ET+SV17qNXPEAeWgnweutnlWd6oocfpVvtLkNmzronTZgHhhNLN+" + "bCCMqSduMzEfk7cxy1Zl6hkQJCsBxp5fbWEC4XxZW5YHoXutB6F23kGN3/" + "a4yMDcAeQM8iscceSPfdRp1AOwAjTJSt5HT4QyyhlMeNH1Oq8LrrpFhnYABpy2KNiKvk20f7aS9IQ3JY5yR25iMfXmu+wjOkA6o/" + "HQrIdKxDkCd1bECP8nHrgKQxilMx9zJ9yDRe9dlItjOof3MlH6y+Q0PvT9VVAhIzImGPUgeOQDADDKrU/m0CXOqz/" + "FhBYBCxz9UcSfWGGzUnQ81YyJYQmSYao9NLvIWG5gA9yNbBecX1WhBovviHQt6aHEALbTNWtpDHUc50DXusbXxTG+" + "h9mQg0bGhg2cIXMLYwZgRZqDJR3MzAHI3hL9VGvUY7GwZc3z4MKj4H26xjAiHMhxcR2WgbbRxLvepY4Sp8M4GnO/" + "SzuXT6Q27SEIt0SymvqIlL9OdAY9tRKw9ECY2L+YI++rh9iQddlLcnfXhR9xXhCNnBphoSaeTCJv80Cke+" + "xgfrRcDnyToG20lckmnelBeOAMgJwawMxGoL9ocP5QhUUMdGneqEgrL/MMFrt3Lhny0G+u0rkMBBB9HpY58BjBBBsAUTv1oQANMxTNl/" + "ml9eWb5hvMQaEtoWJFganX0ChoHkKknIKBzACYDwHe20qh7nE9R3kHLNN1yyks7qDN1x042qyzy47a18uYilNfNAJhNLLcxcJlZsOfNwLI0DHRo+" + "J9tU7QuKxBeHnqfzW0OuBIUIAhBNqixyk9nuA+7k8JoDzohHPn847yPA8YhuNA+TPkpDemz2PSQJnx3dIDuDQHRP9Pj7EqX/" + "kov3hZ3kfiipb5TQBOyM+/" + "iCegbwFccbQeoxqVoXNoIP1YYI1iks1ylow8V68ETtOordZAzEV4oPly1AOge+EGeMa9G26gsNHGLp+" + "JdupmaxxSw1Txqm5kx5bfaPUedN6dx52hUxIOpvqHVJMyUdjxZYYdmRMRqWFD8SmYPTABmmNGzzLBarUbNbFH8bTK0VocHrsBTDAgLND9tDhXmGHqV" + "yZowmy3YsaE5M4bdJvLQFlWE9hTLfmjFL8FUGCqTc9DzQRourZ2jDnOWSVsWAy0VrcCds7tG8pJm4gOJJTO++nftbBtoy6Kzx+FNhb2gwHZ044t/" + "L3UP66l2rNKGWYCryt5X5X/Wg1/" + "quAS5scan8Fn+GUlphSvddAmoj7u22osLmAu4THVDjrslKzhXo5LMa+ShJFBt3EN15+U05t7793V2XrK7NYvciD9f2I/1sH5c/" + "7mJhDDV3Xv58iW7Nvxa4DMJedEvwamV3Wt+yZXVAn6CHm4z77U5Z6u35McOJD/" + "avFdNhXW6gU2NRbY+16n+9kqpwF2nTzAXph7KXqemOymlAnfhjtK05g7QVI07o6wrcGcUZoYV2jY+" + "VpkhrdGlEqjALZXUeLqkfStNfF8PoK5uhASuR+SpWYZJAHCmDpxwDvgWVtac4AA7RzDdXRL86iKVjywX76rGXRACFpCU0LBvFc+aLsf+" + "2HHEfaF3fh3BLyL44SLvLk2v1cUSqBo3lshMYYGPtdunlh2npXjlLAealQ82f+7XAlVR5vdlZvVBcbP+bAfmR3IVuAv1poDX+" + "n1XrijR1n9ukhNOJr4CNyOYlaPrPzcZKPAK3IECC8mlKbFV+Zn3pK1y5ecXELO6QIvPyncrzOrH2cieEDDYN9/s+qzq962eI/" + "0cqNFTFbgNcZQFBAg+svj6b6wWlOVelYprTxf7pe2qLYkKq8CNBFIYBAyb12Z2YN3YgVbYtH2QHdbGtZrGLeazS8XUyfQ++dJn8QAMyc0BW667m+" + "utwsk7HIbAYyJPZoUbPZPrMaTOS9MeUuOqowFO42JoxTG947gcBG0JmFuXPkPQ5ZTnodKTmwNKgy+XQbOB8EaPW8fV6zg3A89fVLJfMx5Xi+" + "3lOpzGtR2duhj6gcT/" + "Wo+5Dkl0oQYC1G9d9yiN1QIuozOaU+Hwzi+A62ldHuuT9oOtw2v5c6wWdPJUGaRz+" + "V5yBlAagwyaQ7nDAVe980SPB4w6lI7zvyZWGO3jr2RSmF0sVgeMFpUPsPk1CGAA0NCGwCXO0MqPHbtd/" + "NoZzctNh5w3MEtl8imn5EMpvpMgy1P8cJgBzjQxEdGf3CCLyPYVPCJwAVbXuipbruF2Kh0frg4ALgBHPJo7nmbhTRkNJzq0GvQf23e2btHc5p4BxTF" + "4Yl6KyrsCnmwro2lzF0fD3NSLlyO5qyM1xrYFgDSmRgHAaDoLBGxbr4FFC5jc+QAAycOt4oAZv7F6YPM2+" + "IsOBw8GxUk0gBtTJBwQJA11nTxVjhsUaOnQ9AnLoa5dGjmk3c37ETUuZkLuYmg60XR20ENo1oZ96ECArweblWk/" + "1OJo1viSOgYHgwJTA8evecMB8iF22N9OnuLPILvrYcnAbLSvh34XyYcDrjoTgCU7SmloQK8FFXb2rQGlwti6bOECwBAQb6PeBFCU4U0O0Yd2cEQ+" + "LljAk0HH6sVJtM9ieoUBNmnhoCNq9+5q9y2Y1gDf8QEbNDYalhNbmAlcFRWC+" + "KQw4AfcKZMhYLX4q9HoqodZKUmU5gZYImnfUYfTuAO7I3Xpc1Zjh7wFFuxKAH6rpwHskG7Jd5WbravSADNbvofTtsj0ooGrTk2aFKVgU363ZFaaZU0" + "61pHPMqDWaOShgKuOOst9Uip3jb4aXEaqXoqb5bbEwZWZOcPRgHuITpm5jw/J7tI/" + "zg7ZqZfQqENp3HN0mKbeG5WLrcwuGZsA9TZGCWFpV4E7UcICLtutrAffyPdnJCayrdl7JFBNhR4BFSazO+" + "U3NgrzVLIJEqjAnSC8ICvmgjnvEMTV1wUlUIE7UbjWTIBL1bgTZTkkewXuEGmladG2nHE45A5Vusnnj63And4HSftWQOYsA6CubgEJhKsKv0vQcREc" + "66tfyrFUmmHAmeEkYgcAAACiSURBVNo6fqH4W0glQ1YdOKtbb2NEIAVOMuMM8cMcKcDNHtSwabm8Fx9vAYkcGvat4lnTbd3GaOk5mMOdDJzcqi4vgU" + "751H8XlRdcZ4qA525jRJu6w+mcf0WzEte6MMTmOcl39CKrbpQE+D9n9VlWBvqXXM+Rsfyf+Pdc9v1Zlft4uVeNO2q4D8skDcsvhVnnRSN/" + "ogf77Y3ip/60R2wu0/0XjKK+EieIZeEAAAAASUVORK5CYII=", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}c \\left(c du_{dx} \\rho - dP_{dx}\\right)\\\\\\frac{R c \\eta_{2} \\rho " + "\\left(t - t_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{3} \\left(v - v_{t}\\right)}{L_{x}}\\\\\\frac{c \\eta_{4} " + "\\left(w - w_{t}\\right)}{L_{x}}\\\\- \\frac{c^{2} \\eta_{5} \\rho u_{t} \\left(1 - " + "M^{2}\\right)}{L_{x}}\\\\\\frac{c \\eta_{6} \\left(s - s_{t}\\right)}{L_{x}}\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡c⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", "⎢ ⎥\n", "⎢ R⋅c⋅η₂⋅ρ⋅(t - tₜ) ⎥\n", + "⎢ ───────────────── ⎥\n", "⎢ Lₓ ⎥\n", "⎢ ⎥\n", + "⎢ c⋅η₃⋅(v - vₜ) ⎥\n", "⎢ ───────────── ⎥\n", "⎢ Lₓ ⎥\n", + "⎢ ⎥\n", "⎢ c⋅η₄⋅(w - wₜ) ⎥\n", "⎢ ───────────── ⎥\n", + "⎢ Lₓ ⎥\n", "⎢ ⎥\n", "⎢ 2 ⎛ 2⎞ ⎥\n", + "⎢-c ⋅η₅⋅ρ⋅uₜ⋅⎝1 - M ⎠ ⎥\n", "⎢─────────────────────⎥\n", "⎢ Lₓ ⎥\n", + "⎢ ⎥\n", "⎢ c⋅η₆⋅(s - sₜ) ⎥\n", "⎢ ───────────── ⎥\n", + "⎣ Lₓ ⎦" + ] + }, + "execution_count" : 10, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "L_inflow_x1_lower_zerou = L_inflow_x1_lower.subs(u, 0)\n", "L_inflow_x1_lower_zerou" ] + }, + { + "cell_type" : "code", + "execution_count" : 11, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "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" + "YTGV+iixqYiaw2x8F/" + "JjKG2twIACMTq5kN+ANm62AqMKpK1hRlHcaQU2ooATZiOBtBvLKOCEWUZno2xEASfMRgJpN5ZRwAmzjM5G2YgCSBgX8ttIMO1GNQXwWI0L+" + "VWT1wfemgL4taYL+W0tqvanvgJew9TX2AgbUiD7WbKLeIzAhfxGThClPkpsSqLmMBc/dYQJMi7kxzOjYJX6KLEphZpDBn5awgQZF/" + "LjmVGwSn2U2JRCzSELPy1hQpiUQmkUuJJVcmwVm6FU+g8OKfiZCZNSKI3qVrJKjq1iM5RK/" + "8EhBT8lYWK4YyEHilOyrI5S6qvepuTYKjaDqvQfHDLxUxImODEZ7ilSwU5JqsLX0pqUHFvFZvCU/oNDGn5WwlCYMXs91rmSPiXHVrEZeqX/" + "4DAJHwnzpGNM2709yswtlHYU2IkfVnJsFZuhUvoPDnPxXciPkewsp4ubK6YX83dOk+" + "lj33W2VfGbQGoOCfgu5MdgdpZzXDyVWmtLKSR3IjklNimrOaTgZ65hUgqlUd1KVsmxVWyGUuk/" + "OKTgpyVMDHsu5MdTo2CV+iixKYWaQxb+FR1KsjdxHBfyGxZTqY8Sm4qoOczGdyE/htLWCgwoEKOTC/" + "kNaONmKzCqQNoaZhTFnVZgIwo4YTYSSLuxjAJOmGV0NspGFHDCbCSQdmMZBZwwy+hslI0ogPswLuS3kWCegxtxiRbPr30br5exj/" + "si57DhsRoX8juHSG2JYyTI8/BnX/shLB/8PAcX8WvNfSG/" + "7Dv95+C8OYoUiIS5C+i7sF+LKMyG9RpmtoQ+QEsKpI8w8dfDhfxGziClPkrsEUkW7ZqrQeoIE2RcyG8k/Ep9lNgjkizalaFBWsIEGRfyGwm/" + "Uh8l9ogki3ZlaZCWMOF9SqG0yioqObaKXTmkkw+fon9mwuDSW6nYAH8vjn71puTYKrY65sRP0f+KR5tjY7ibck2dv5ufA3Xyd5UcW8V+" + "HKzQYRdtuAGIk3cX73GB6GPYn8NW2zL1T0mY8JTJcD/i9ZSkGvn67C4lx1axHwQtTlzMNl49aFzmTZr+mVOyQ65fH/" + "rACvqVHFvFXkHY9xQm6Z81wpTWLhSC2f2RDSKr5Ngq9pdQx+jy+cubgZ34zOVA19zmNP1TEiYcvY8XnCpNu9jGxf9c50/" + "6vpJjq9j9QIUGtZKhD1Pcz9Q/" + "c0qWUiit6HFeo5Jjq9h50Zt3pBT9MxMmpVDaPE0OflvJsVXsg0FZ6AMp+qclTAx7LuQ3EnmlPkrsEUkW7crSIGUN0/" + "P8JvZdyK8nyKNdpT5K7EcyyN7O1sCF/GSxaxc4/" + "trvb1iGArhv9zTeV71xOVfp4OdCfnNF9PdPUyBOvvfxzd+6JPk99n847Uiab6WtYTT0jXpOCkSS4Ge+H8LiihU23Gp4sd87k3+" + "y1zBn4rZpihRA8Qs8NbzfInEwJbvr3p6F8QhzFmHaDEncxJbewJ6rpBNmroL+/jEKYDTZ9b8Qowx/0t5vXu2+p2SrDc0miWE69iqShEmDEefHc/" + "LUCXNO0TpzrpEomI7tC+Kdqyuekp1r5MxbooATRiK7Qc9VASfMuUbOvCUKpK9helc98IOxZ/HCs2WrupSo5NgqNs9upf/gMBc/" + "dYQJMi7kxzOjYJX6KLEphZpDBn5awgQZF/LjmVGwSn2U2JRCzSELPy1hQpiUQmkUuJJVcmwVm6FU+g8OKfiZCXMbpErFBrh+Qb96U3JsFZsxV/" + "oPDin4KQkTwx3u2B7aWD3m0Oeq9Cs5torNQCr9B4dM/JSECU5MBjx9OrRNSaqh72a0Kzm2is24Kf0HhzT8rIShMGP2eqxzJX1Kjq1iM/RK/" + "8FhEn5WwpTWLhSC2e1CflTkoa2tzxpio+aQhp+SMDFH5FSsNO1iGxf/D0+Xhd4pObaKzdAq/QeHTPyUhOmESSmURpErWSXHVrEZSqX/" + "4JCCn5kwKYXSqG4lq+TYKjZDqfQfHFLw0xImhj0X8uOpUbBKfZTYlELNIQv/" + "ig4l2Zs4jgv5DYup1EeJTUXUHGbju5AfQ2lrBQYUiNHJhfwGtHGzFRhVIG0NM4riTiuwEQWcMBsJpN1YRgEnzDI6G2UjCjhhNhJIu7GMAv3Lyu/" + "jasBj1LfRhh/eeLMCTSgQ5zv+d4HdkLNImLHiatLnv4ZIu90KVFRgtHTt/wEhzpjRY2O8XgAAAABJRU5ErkJggg==", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}- \\frac{1}{c} & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & " + "0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0 & \\frac{1}{c} & 0\\\\0 & 0 & 0 " + "& 0 & 0 & 0\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡-1 ⎤\n", "⎢─── 0 0 0 0 0⎥\n", "⎢ c ⎥\n", "⎢ ⎥\n", + "⎢ 0 0 0 0 0 0⎥\n", "⎢ ⎥\n", "⎢ 0 0 0 0 0 0⎥\n", "⎢ ⎥\n", + "⎢ 0 0 0 0 0 0⎥\n", "⎢ ⎥\n", "⎢ 1 ⎥\n", "⎢ 0 0 0 0 ─ 0⎥\n", + "⎢ c ⎥\n", "⎢ ⎥\n", "⎣ 0 0 0 0 0 0⎦" + ] + }, + "execution_count" : 11, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "def pinv(x): # Moore-Penrose pseudoinverse of a diagonal matrix\n", " if x != 0:\n", " return x**-1\n", + " else:\n", " return 0\n", "ll = [pinv(l.subs(u,0)) for l in lambda_list]\n", + "linv_zerou = diag(ll[1], ll[0], ll[0], ll[0], ll[2], ll[0])\n", "linv_zerou" + ] + }, + { + "cell_type" : "code", + "execution_count" : 12, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAASUAAAC7CAYAAAAjfIjwAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2d3bEct9GGl6fOtYqmqhwAlYEsRq" + "CjDCQyAsoZyMUr+o5lZWB9EVBSBrIiIKUMZN+rSvQpJeDvfUA0hMFgZjB/e/bsdlfNAoOfBvptoKeB+dkHL1++/PhwOPyko0bf//3vf/" + "+iluFpjoAj4AgsQUA25RfVe1yrq7wHV1nG14r/tTj+meV71BFwBHZAQBOxOkF3aGpXljPk+Ic6Utqa761z1xZR+E8x/Xd27lFHwBHYGQHNua/" + "UBPNu07knvjfi+VAHBu8jHd8p7V8K96THauNzHTg4g6T8b8pMpZH0OT+5p8S5kyPgCBwJASawmvpQYfISNmwaI8T2Cwbibzp+" + "2JB3lZXaCkZP4ZfVAo2JJ2WUJAxW9ixc2Ub8z76Y9Ikn4FQgIFzwYl4oxGDsQX/JmDKnbrPz3aKSJ2wDRfkWtZMv35oZqEFcQ9aEWHqs/" + "JvYGUWXkepjXf+tcFM3dqw3aou1LZPmL4r/" + "PFb2PucNyal09MikIMSlZuAyWR7pgP6mMqv0ofpf62BrgPHi9AcCjL3BPVvhxQ2oFzqYY+ihuiQCW+" + "Uzd9AfOIdxrDDXG21tcsNKfBkfT3X8VfHc8CkpEX2yfaOU2BpZ5CmpM7hpb3TcKv6FjipgrZ1QfQT9LPJtrbZFuTAo1O69MUjqa+" + "jzTOGrcka8vxMvLgYMMgY/IQOYQb2Vy89SgkE6SiqzRLZRniec+VTy9vZWrL/KY0yCPxf9J5aehyrDxYQLyL8UR2+9caw0MEWvq/" + "eTxANDiQFkvnJUSeWQC/kGy1QrxsRFRinW/UzhakEjr9GrRiyzR8BVaCsZ9uhfjeeS5e2YnEN6/E2NL2mr1+c4IW4aBukm7fU6cGIJwgF95J7MUA/" + "xRF7rwBh0KGJpxqF68VAZ5hUG6Wcdq5fRkQ8OSEvfKYNHNZuuZ9f4owJWeiuXnAG7Fa+DeKEMJtWtjoc6D56cQpT4QgfPSRB/" + "pgOlB1I+MjEAniie3F3FudKn8/elt/kVX+sT/eWK+EppvSvenNYynlU5C17I/LxI4xR9bLkBi/" + "GnrdU8JV9Pv0rjCs4k5pk7JgQGjrtO3BGapbsMv55OlLfFGBm6EKi7PWIs1Ix18LTUHzzd3r6U0sGBsfyV4goCJqtWNDCZQegbOQe9wSFeV0MZY+" + "kS0iz3ai9DvAAc47EJiR8T8QeFKOCtDozQQedMfhTFuhug6DtyBBli/scKqceGO+UPCinDQBwklfmHDngvoR9V6bXq0+4rHZwvJvEZlTNnrLJgT/" + "mkR9J0MNBZEvQms9KWyspyn0G6itR+T79KC7oSY/rNcoUL0Tc6wn6ZwjCpKVeLVzpU1Qn1VXbRGCna+ETnyDFIsZ8/" + "KQxeifWbCoozHtFPmIcKexcxpbFP+iA7MNDHJOQLuM9t9GpuhVgeUNhPanHjppqg4++" + "mCrXkqz8MSPZHbJLRv09jXa6uKLLTZ52bQh8pn4EcXGuFt7EesmLcxgj3eapMr77awKV+m/" + "WBvjFxbJL16jQkTMmZswh6VMKX9CX2h4H+XPEhz3WRrOIJnosGqeoFUp+G9IvuvtVB39Fx7o2BpY0vlhO/KP9/" + "CjFglq7oe1LemE5mjRHxwsDT55LyPpV5dh4MTzxhjCLbQfyoyxhhrORlyD4lAttF+r5eKEXV/" + "YyAfaLQjEILe0C+LQuKB0pggk0RG3xmaBh06equdPiiUKiTp/" + "OOQo2HQpZ0+UBiSVVdsyvdCDymyljZPGTi55OfK+gh9puQfpSKBd+yLZaX5iaPygn/jIIeVRcvrZWWytoxAFvIJh65fg86p28Ym0A6Zwxx8UzjS/" + "EHMXsoGNNJ4CMerWOEMVbziDBuqU8DHcHTMZ1ywWMcYmzDsi3WWaqLg3gvmV+" + "x2aYgXGCbShaFlholwM4nk7F9ocgrTqLQTDLcRtbmKAGgy3rVzqscxgTQ59BDFTYDleqJF+" + "llXlBozDsopH8QsuVGiXP2eXDbzcBRnj0MCL54V6kOZXU+KrvKUA+Dk3tYGNR0lVeZEquD0liaVnFROjw5cgyG5FSxIGtvP4KMnMS3KqvSJ+XM+" + "CBr6pfqzpIt8illy9iHKJjn8qC7zgUyYkS53uMnMW9UJ6GVhjEiXnhcyIjnxnZA0mvkMSfAsHF3upSH81zeZp7itWR+NfNXwRbDW+" + "V3VU0dSZQwDESoVDYTE3f1NuRqUiqOpX+" + "tA0CJW14sEowX4DAQtqAeL7XLHgjtprZ1jgymYDyLksLkUTnKPNTBOfFASmeSfqSQ5R5exiOFacLpvEX2wE/" + "1Qr8UggFpz3UsosirSc7YHrJ19Fg2rHJjsrbIaSyRr+Y1WH5LWNUvFU0ehZQxCgbZThS+" + "03GjMsiMoTBja0Xm6GRqjATvU23gyZcGiX6AfZVUvsQKmTCktmw7qEyYhwpzeav87igR+" + "ZBzNl3PqSEAsP64rhBgE9I4gAFSuoIrz1xPFB2WG0obsupctTBo+cRWtdmEp8EtUJQK0bdXIfZ+WUceG9KARV+" + "QhT2GW4VGGAXKMYHoDwOKwZsrnysgbR1UDrnfEjdSWovsYMVrAGBK+" + "3iUeJJ5X5Q0mwyDQTljm6Yr9IgnONTuoKyq0yKnCUB78FpDJltNv6SVy1DGXt4mXovJSd//q8NkUDSM3xadTI4RtfNQ/" + "KwteOfEuDIZ8vSD6pmHxbKTW/kYUMYXe4/" + "BuMUy4EkZLrpD86rDe+2J2qHP4AmuzFe2V35TWOKu5OApLZrP19Rupdh4rQM9FirLxillAS+ApvMvdeSDwOohHMKuAle8ASEfhMb/" + "oDyUO+oVUFjlUHxQPueiPP4+5b2xs6tAMLqqx5U3DRrFp2THkGMMavytndmh+E3KGfvWpEd1gMlVlVV8mnSscvA4KFw0SKkLxfpN+lVZLhZM2rzN/" + "yjtT/CKVBqNJp2IJzrL9ZbHjTfj4i0nKl+Oey5wT8grSWXRS0c3SqOfzKNAtTKWt2eodsGydY7yeEZ+IW/" + "u2lVzyfkFedYHDwMv6VmMByWVrJTHRMI1rV49yvIncI5ieG/p89gXvJxHWb9aZGfSTBrJjKdF80lmaXuGY7K2yEnf7KIz1c8tZUtGIWuUu4q2bGP/" + "0+7MWpGlOrH6eRgmpNpjDpR6ZkuDts6ZwsV6iYAPso+8sUey5aCY3R+1z+" + "AdW0rM5nmKFSQnxpfnpdLV7xT7uUWfJCOTMn9MYwu2kzzULjceeM6n5pn36qvcUXWi9tge+ELhIm+" + "iJ8AJJUQsuSHDxbqJVJZxwpx4cN1U40iF1CH2coKrf6Qm76QZyYjxP3uDFMH9VvKWy6TdcVeb1WXeUMN3oBPzHmf1c6j/" + "J5aOd418i2jP5duiDt3FAF7UUa/UhIDrsw6TcMGDY7P4vmxZ1AUpUqM8yNXkoRbVw+nJGaVaJz3NEThTBLibmJ5vOxMZkWeV9+dG6UxGgotx/" + "xCQN8GylkcyeAzg3lOUA3lW7U037ympId4XcnIEHIEdEND8WrwHs0N31rDkualefaVNvd6T6swxSs1ME3ePOAKOgCMwE4FmozSTrxd3BJoR0FX0RoW" + "568qmL7eRecG4fLZHyU6XgIAbpUvQciGjJjwGgIcHIbv7w4OFnVv30ViwaclDojy1/" + "EZpnaeNlbYFYYTCk9YK6Ruvf7hnvgWy95CHG6V7qLQNusy6P90hUTw8aCi+" + "nYfdlM67Yjx5fKOQO0V7Uf4Beoxkxzju1ajzPU0Erk6zW96rnRHgXSyWTEZssvJsSe3VBx7y3HUppXbzuzX0ZU8DaDJ7eKIIuKd0oorZuVt4SdX3EC" + "vtYrySV1XJn5UkA4TRse9r8b5jWg4qjsfGU/1n9+rFLJAuvLB7Shc4ADTp+Q5UvkTC6PB+WscY6Nw8p008JfHjfa/" + "e99NRgfIwVsEgKX4Wz+0gl9N8BNwozcfsrGrIAGB42MjO93VMRryk8vMfljcrVDt4QfmLuSzZwlv6yuPbTxii/" + "yrO83CbeWbi5XTPEPDl2z1T2JbdlQFgUxkPZejjctX9JNXjDhlfnZzjQT1VnbRXpLp4avZ5j5pBVLbTJSLgRukStS6ZZRQwSCyXwtcK4jnp+" + "abz0H4SjxO8AjqVx9Pi42jcubO9otq32DFkOW+dOjkCfQR8+dbH5OxTZEgwSCyn+H4Nf4iAYeFzE+90BIppxDvekNJZ6nGnzvak8Jh4I/" + "y1jsFvsSsPr4h2E6keXpqTI9BBwD2lDhwXc8IeDp4LYSIZibCXo5D9nWcxgxcsiVIejwgDlr4FpTz7RAVe1di32Fm64ZmZYYJf8LYUOjkCCQE3SgmK" + "y4nIMOTfqe4Jrvzed6J7hWKCyrZ+" + "p5ulm29gDwHp6QkBjNIH8czClOkRR6ABgfI73XhTrc9ANbD3IheCwJ9NTveUDAkPFyEgTyndUVvE4IIqCSv24u79Zv/ecmCUfo/" + "jwsILGiYuqiNwHAQ0kdmnwyBtZpTE80b82Jtjn+6YX1fAuPKvMOlpfLW/" + "ln41BlcW8dARcAT2QYAJLM4fKuRLC1sSX1fgzzMxDtw9DTcatmygxkvthTuyCvkHks3pXhglCY9Vtrs2m4PgDNchIN3gBThVEBA2eDL8RyBGY2vKHz" + "plftxu3cAQP8mDIeTOLPJtSpvvKamTuJTcZeHqsPobPOJn/xu22O0VD56HYeLwUB/" + "Py5wlDcmpdHTCpCDkFj6Dl8H0SAfErfo1+H6t+jzz5HfX3uOZ/zL2eCasSsKMRyx4GJX5gh6qSyLwVT5zAf2BNX/" + "pneuMdjbb3xNvxsdTHRie3PgpKRF9ot1N9b65pyQBcO3e6OCdKf5srwqy8idJdQGGB/I6D/BNVuwXCINCfM7WIEWRq3JG/" + "L5TGd49Y5Ax+AkZxAzsLdx+lhIM0ElSudDPyYLnUeCp5LVnuXoSKY8xCf5cwJ/" + "0CihBZbiYcAHh+1borTOOdQ6e6HTtPBGb9JQ+" + "BpD5x1EltYdcyDdYplpxInFzoxTbq74zNdGXWvboVaZWYSCNq9AmChvgfyrJY3IO6YRXQ1YvjeOEuGkcoKvbOxXAx/" + "ohLNBH7s0MFccTea0Dr6lDEU8zDr2Lh/KZIxgkPKdNltGRF85ES98pg0e1GV1vxqnLCMu+hUvHIB/kozwUYu9bpW/" + "zKB0lvtDBpzKI83QySg+kfPrHAOAZm+TyKs7VPp2/L73Nr/" + "han+gvV8RXSutc8ea2lPGsylnwQ+" + "bnRRqn4LvVBiyGn3Y24Sf5evpVGldwJjFPozMhMHDceeKO0CzdZfj1dKK8LcbI0IVA3e0RY6FmrIOnpf7g6Xb2pZQGBoxjHmBVEPBYvDKBwQJC58g5" + "6A3O5Xk1t8JUeYFj1n6VZyI+KOh2qD3lV7/" + "No3QmP8pi3Q1Q9IM+hf7EfN73QnlsoFP+" + "oJAyDMS96Ecxfh3bfaU454sp9ntQzpyxyoIlciadkKaDgc6SYNZkznkXcZbtDNDVpD719Ku0oCsxp98sWbgQ8W2osF+msDapx/" + "pS1UlsZ4sx8okaR45Bin3+SWHwSnIZFGc82ieJDzrvXMR0zh7pg+zAOB+" + "bkG8u7qN9vBrNXZYJkFt8gwdB39W6ICUwIKvf5lE6V1cU2XE9dW4KfaR8BnJwrRXe6hyi329DbOBHZfm2NYZgFqkObvVbhdYH+" + "saEskk2i18sPCVnzjPoRAlf0pfYH4wwfxbQ80SVtkhO8QPL1QNU7Q/" + "pF919q4O+o+PcIwPLMF6UDrahH3lc+YmUPqaTxWMkNfA+kvpUpOenwfDEBMYHsh3otwLkYKzkZcg+" + "JQLz1TrPBbrOTzaKV13WCDJvlKer9UR7KOV2oAxr2HR1F0/" + "K2YTv5Cm9o9Co5INClnQMfiOWVL01u2XGkHz6NZeY+" + "Pnk5wpKH4J8ChmIGJkpYpPTjO2onAWjoBPVbXXtl8oZjELettoE43LQMg5KrFk62xKgI5vSc/" + "0edI48eEuBdA5+XAgDnopTH09ZQfAO01ghIdKYTkwvTWNE7SBfuHlgzGOIcbM+FVnpFG/" + "H5OaiyDjE2IZlWyyFvCVeMWs8EO8lY2ucaTc3XGC7SevO9jBKGIF8AloPXyjyyk4awjFhH6q+" + "Tc7ESgogvcwLCo15B4U2SOhnbpQ4Z58Ht90MXOIdI7MHh3jRHwZt7oUxSdJVPrYH7yaKPFvlhCeydfYjJhqaLWfkh5wdvaivvbGgND6JOyZvKVvZXY" + "x6Lg/ydS524j/" + "4F03Km9RJbLB1jFBudJkW+" + "U0F8OBucykP57m8U3xSvngxlsewTmUXRloM7yzW1yrNIGLg9K5yszipsADAKkPlAGGpxB7GLZmxHANr8MNgKsPdhPIKS3UIoDsTQGVZcnC1Cm1QSHH" + "6Ywrl6onrn1OYQCpHGZsIbKQmo6Q8ziHykSMZssh/VA6Vh/dBZU12+k3a0LMfFB8leBk/" + "Cio+KKfyaI++d3RCvZxUbq2csKOtLSbnmH6DPOpv0pHaZNIlz0nxg/" + "KRGd2wzO8YSqXN0cnoGBHvr8SP+cNykj3KdLFR2jsd9KNKKlvihUxcvG3ZdlCZMKcU5vJW+d1RIvIh51pifIYL2JUiAMNEe6RjMQk0lPN/" + "kQHLDIwELjR7MLYxafxx33FZX+sY+zAYA4r+lYSnwTNQX8aDtl/" + "FQuRhnJhk1OUK80zHQWm3hJGeK6QcdQGWwVQzSB+pDHtQLH0eKcwHeIscTBheBWAvB/" + "4Aj8ue90VJs2lSTtoUVzOi6AQ5exT7tVZO+AZZew3MTxjTLzotl6EYmdzoMkluJBdpGAozuDoN1KqTljES+" + "qI2wDc3SDTEWKmN34PKohuWZM8UD0ZS8bccxieWYVnPRahlea+i60lt4UDQHgYyxGNfasyxG/" + "mcqJVpSQODMFavW0q3lFGnUU45WKpVVdbW0HQkrJWVVnNPAYZJ3MlTWUAIVlVhh5THQMwHaCffTlSOAZQPojxuxWiDCXJQea5YDJpESmuRg6s1y8Ia" + "/8RrbkT8JuVUmVadrJZTbQWDp3D1AI08mvSrsuiFSZu3i9diRh8d8Y+7piugbtKJeKCzXG95HD4HlUFuayukZT94N0+" + "y8xRVvZ5ulAYfDGagWhnL2zNUu2DZmXMj7eHxb+" + "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" + "0DcmlE2yWfxi4Sk5c55Bj0r4kr7E/" + "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" + "l6QEe+" + "u8UBc7bWI9G6jFfbQEViDgBulNeidb128pMH3FAuxMV7hKxBFup86AosQ8OXbItjOu5I8ovIVAYwU37zqfIoi85wWvXh53ii6dEsRcE9pKXIXUi8aH" + "jaya1/ExEsqv1l0Ici4mHsh4EZpL2TPgK8M0mOJwX7S0Bcxq/" + "tJqseXHvI9qTNAw0U4FgK+fDsW0vesnWiQ+Cxw+OJhPD8ozN9rwvCku3SZiDxO8IpzlWdz/BMd3Lkb/" + "Fa78pwcgYCAe0o+EHoIyJDgIfEYAN+34V9cMCx87M2+tnmIaUrqfcCMpR536uyZpjnf8Yaf04Uj4J7ShQ+AAfH56B8PUBImkqEJXpFC3mp/" + "FjN4K5wo5fGIMGDBu1J4UJ5tmuNVTX2rnSpOF46AG6ULHwA18WVI/" + "lRLtzTl9z5ub3llqLL8WwvlMVR4Wwed8xyUGSuSnByBhIAbpQSFR3ZCoPyON95U6zNQO3XJ2Z4yAm6UTlk7Z9A3eUT++" + "skZ6PGYIvhG9zHR9rYcAUdgEgE3SpMQeQFHwBE4JgK+" + "fDsm2mfYlpZnPFwJ8QwSzyLxhYH8WSbynByBZgTcU2qGyguWCMj48MgA31DiIUvusHF37QfFec7JyRFYhIAbpUWweSUZHv5MkddJ+" + "LhbIMV5YJJzHrx0cgQWIeBGaRFsXkkIcFet89WAiMobhXz0jYcpnRyB2Qi4UZoNmVeICNwoTK+" + "dZKjYfhL5To7AbATcKM2GzCs0ekGPHClHYAkCbpSWoOZ1zOCwhzREvnwbQsbTRxFwozQKj2euQODDFXW96gUj4EbpgpW/" + "QvTaXpKxMy+K55acHIHZCLhRmg2ZV4i3/gGitkSzNNvwdsAcgVkIuFGaBZcXzhDgzwIeZ+cWNU/J/" + "0zAEPFwFgJulGbB5YUzBL5TnM+QlMQfDPyceVNlvp87AqMIuFEahcczhxCQ0eEjbe8U8vnbQIqzdHuq4/n7FP91BOYj4C/kzsfMa/" + "yBAF4RL+A+UcjGNuGnOq896a0sJ0dgGgE3StMYeYkBBGR8bpVV+zeTgRqe7AhMI+" + "DLt2mMvIQj4AgcEQE3SkcE25tyBByBaQTcKE1j5CUcAUfgiAi4UToi2N6UI+AITCPgRmkaIy/hCDgCR0TAjdIRwfamHAFHYBqB/" + "JGAX3SLt6zxvdL8f7tKVPzcEXAEFiMgm/KLKj8eYoBR4sXJoWdN/KXKIeQ83RFwBJYiYP+AU63//2MYId96fmtzAAAAAElFTkSuQmCC", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}\\frac{L_{x} \\left(- c du_{dx} \\rho + dP_{dx}\\right) + c \\eta_{5} " + "\\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x} c^{2}}\\\\\\frac{L_{x} \\left(c du_{dx} \\rho - dP_{dx}\\right) + " + "c \\eta_{5} \\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x} c \\rho}\\\\0\\\\0\\\\\\frac{L_{x} \\left(- c du_{dx} " + "\\rho + dP_{dx}\\right) + c \\eta_{5} \\rho u_{t} \\left(M^{2} - 1\\right)}{2 L_{x}}\\\\0\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ ⎛ 2 ⎞⎤\n", "⎢Lₓ⋅(-c⋅du_dx⋅ρ + dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M - 1⎠⎥\n", + "⎢────────────────────────────────────────────⎥\n", "⎢ 2 ⎥\n", + "⎢ 2⋅Lₓ⋅c ⎥\n", "⎢ ⎥\n", + "⎢ ⎛ 2 ⎞ ⎥\n", "⎢Lₓ⋅(c⋅du_dx⋅ρ - dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M - 1⎠ ⎥\n", + "⎢─────────────────────────────────────────── ⎥\n", "⎢ 2⋅Lₓ⋅c⋅ρ ⎥\n", + "⎢ ⎥\n", "⎢ 0 ⎥\n", + "⎢ ⎥\n", "⎢ 0 ⎥\n", + "⎢ ⎥\n", "⎢ ⎛ 2 ⎞⎥\n", + "⎢Lₓ⋅(-c⋅du_dx⋅ρ + dP_dx) + c⋅η₅⋅ρ⋅uₜ⋅⎝M - 1⎠⎥\n", "⎢────────────────────────────────────────────⎥\n", + "⎢ 2⋅Lₓ ⎥\n", "⎢ ⎥\n", + "⎣ 0 ⎦" + ] + }, + "execution_count" : 12, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "dQ_dx_inflow_x1_lower_zerou = simplify(S * linv_zerou * L_inflow_x1_lower_zerou)\n", "dQ_dx_inflow_x1_lower_zerou" ] + }, + { + "cell_type" : "code", + "execution_count" : 13, + "metadata" : {}, + "outputs" : [ { + "name" : "stdout", + "output_type" : "stream", + "text" : [ + "dQ_dx[0] = (1.0/2.0)*(L_x*(-c*du_dx*rho + dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/(L_x*std::pow(c, 2));\n", + "dQ_dx[1] = (1.0/2.0)*(L_x*(c*du_dx*rho - dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/(L_x*c*rho);\n", + "dQ_dx[2] = 0;\n", "dQ_dx[3] = 0;\n", + "dQ_dx[4] = (1.0/2.0)*(L_x*(-c*du_dx*rho + dP_dx) + c*eta_5*rho*u_t*(std::pow(M, 2) - 1))/L_x;\n", "dQ_dx[5] = 0;\n" + ] + } ], + "source" : ["print(cxxcode(dQ_dx_inflow_x1_lower_zerou, assign_to='dQ_dx'))"] + } + ], + "metadata" : { + "kernelspec" : {"display_name" : "Python 3", "language" : "python", "name" : "python3"}, + "language_info" : { + "codemirror_mode" : {"name" : "ipython", "version" : 3}, + "file_extension" : ".py", + "mimetype" : "text/x-python", + "name" : "python", + "nbconvert_exporter" : "python", + "pygments_lexer" : "ipython3", + "version" : "3.11.5" + }, + "orig_nbformat" : 4 + }, + "nbformat" : 4, + "nbformat_minor" : 2 } diff --git a/src/problems/NSCBC/dQ_dx_outflow.ipynb b/src/problems/NSCBC/dQ_dx_outflow.ipynb index 361d0573f..aa4463cd3 100644 --- a/src/problems/NSCBC/dQ_dx_outflow.ipynb +++ b/src/problems/NSCBC/dQ_dx_outflow.ipynb @@ -1,970 +1,2957 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Navier-Stokes Characteristic Boundary Conditions (NSCBC)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from sympy import *\n", - "init_printing(use_unicode=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Conserved variables\n", - "We start with the Euler equations in conservation-law form, with the vector of conserved variables $U$ and primitive variables $q$. Then we compute the $P$ matrix ($P_{ij} = \\partial U_i / \\partial q_j$) and the $Q_x$, $Q_y$, and $Q_z$ matrices ($Q_{k,ij} = \\partial F_{k,i} / \\partial q_j$, where $F_k$ is the flux vector in the $k$ direction) (Sutherland and Kennedy, 2002)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\frac{P - c^{2} \\rho^{2} \\frac{\\partial}{\\partial P} e{\\left(\\rho,P \\right)}}{\\rho^{2}}$" - ], - "text/plain": [ - " 2 2 ∂ \n", - "P - c ⋅ρ ⋅──(e(ρ, P))\n", - " ∂P \n", - "─────────────────────\n", - " 2 \n", - " ρ " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# define symbols\n", - "rho = Symbol('rho', positive=True) # density\n", - "p = Symbol('P', positive=True) # pressure\n", - "u = Symbol('u') # normal velocity\n", - "v = Symbol('v') # transverse velocity\n", - "w = Symbol('w') # transverse velocity\n", - "s = Symbol('s') # passive scalar\n", - "c = Symbol('c') # sound speed\n", - "e = Function('e')(rho, p) # specific internal energy\n", - "\n", - "E = rho*e + rho*(u**2 + v**2 + w**2)/2 # total energy density\n", - "\n", - "# (this is needed to rewrite the thermodynamic derivatives in terms of the sound speed)\n", - "de_drho = solveset(Eq(c**2, (p - rho**2 * Derivative(e, rho)) / (rho**2 * Derivative(e,p))), Derivative(e, rho)).args[0]\n", - "de_drho" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}1 & 0 & 0 & 0 & 0 & 0\\\\u & \\rho & 0 & 0 & 0 & 0\\\\v & 0 & \\rho & 0 & 0 & 0\\\\w & 0 & 0 & \\rho & 0 & 0\\\\\\rho \\frac{\\partial}{\\partial \\rho} e{\\left(\\rho,P \\right)} + \\frac{u^{2}}{2} + \\frac{v^{2}}{2} + \\frac{w^{2}}{2} + e{\\left(\\rho,P \\right)} & \\rho u & \\rho v & \\rho w & \\rho \\frac{\\partial}{\\partial P} e{\\left(\\rho,P \\right)} & 0\\\\s & 0 & 0 & 0 & 0 & \\rho\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 1 0 0 0 0 0⎤\n", - "⎢ ⎥\n", - "⎢ u ρ 0 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ v 0 ρ 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ w 0 0 ρ 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 2 2 2 ⎥\n", - "⎢ ∂ u v w ∂ ⎥\n", - "⎢ρ⋅──(e(ρ, P)) + ── + ── + ── + e(ρ, P) ρ⋅u ρ⋅v ρ⋅w ρ⋅──(e(ρ, P)) 0⎥\n", - "⎢ ∂ρ 2 2 2 ∂P ⎥\n", - "⎢ ⎥\n", - "⎣ s 0 0 0 0 ρ⎦" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the P matrix from Sutherland and Kennedy (2003)\n", - "U = Matrix([rho, rho*u, rho*v, rho*w, E, rho*s])\n", - "q = Matrix([rho, u, v, w, p, s])\n", - "P = simplify(Matrix(BlockMatrix(Derivative(U, q, evaluate=True).T)).T)\n", - "P" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# compute the Q_n matrix\n", - "F_n = Matrix([rho*u, # flux vector in normal direction\n", - " rho*u**2 + p,\n", - " rho*v*u,\n", - " rho*w*u,\n", - " (E + p)*u,\n", - " rho*s*u])\n", - "Q_n = simplify(Matrix(BlockMatrix(Derivative(F_n, q, evaluate=True).T)).T)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# compute the Q_t1 matrix\n", - "F_t1 = Matrix([rho*v,\n", - " rho*u*v,\n", - " rho*v**2 + p,\n", - " rho*w*v,\n", - " (E + p)*v,\n", - " rho*s*v])\n", - "Q_t1 = simplify(Matrix(BlockMatrix(Derivative(F_t1, q, evaluate=True).T)).T)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# compute the Q_t2 matrix\n", - "F_t2 = Matrix([rho*w,\n", - " rho*u*w,\n", - " rho*v*w,\n", - " rho*w**2 + p,\n", - " (E + p)*w,\n", - " rho*s*w])\n", - "Q_t2 = simplify(Matrix(BlockMatrix(Derivative(F_t2, q, evaluate=True).T)).T)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Primitive variables\n", - "Now we compute the coefficient matrices $A_x$, $A_y$, and $A_z$ for the primitive equations ($A = P^{-1} Q$):" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}u & \\rho & 0 & 0 & 0 & 0\\\\0 & u & 0 & 0 & \\frac{1}{\\rho} & 0\\\\0 & 0 & u & 0 & 0 & 0\\\\0 & 0 & 0 & u & 0 & 0\\\\0 & c^{2} \\rho & 0 & 0 & u & 0\\\\0 & 0 & 0 & 0 & 0 & u\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡u ρ 0 0 0 0⎤\n", - "⎢ ⎥\n", - "⎢ 1 ⎥\n", - "⎢0 u 0 0 ─ 0⎥\n", - "⎢ ρ ⎥\n", - "⎢ ⎥\n", - "⎢0 0 u 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢0 0 0 u 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 2 ⎥\n", - "⎢0 c ⋅ρ 0 0 u 0⎥\n", - "⎢ ⎥\n", - "⎣0 0 0 0 0 u⎦" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the A_n matrix from Sutherland and Kennedy (2003)\n", - "# (this is the primitive variable flux matrix in the normal direction)\n", - "A_n = simplify(Inverse(P) * Q_n).subs(Derivative(e,rho), de_drho)\n", - "A_n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}v & 0 & \\rho & 0 & 0 & 0\\\\0 & v & 0 & 0 & 0 & 0\\\\0 & 0 & v & 0 & \\frac{1}{\\rho} & 0\\\\0 & 0 & 0 & v & 0 & 0\\\\0 & 0 & c^{2} \\rho & 0 & v & 0\\\\0 & 0 & 0 & 0 & 0 & v\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡v 0 ρ 0 0 0⎤\n", - "⎢ ⎥\n", - "⎢0 v 0 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 1 ⎥\n", - "⎢0 0 v 0 ─ 0⎥\n", - "⎢ ρ ⎥\n", - "⎢ ⎥\n", - "⎢0 0 0 v 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 2 ⎥\n", - "⎢0 0 c ⋅ρ 0 v 0⎥\n", - "⎢ ⎥\n", - "⎣0 0 0 0 0 v⎦" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the A_t1 matrix\n", - "A_t1 = simplify(Inverse(P) * Q_t1).subs(Derivative(e,rho), de_drho)\n", - "A_t1" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}w & 0 & 0 & \\rho & 0 & 0\\\\0 & w & 0 & 0 & 0 & 0\\\\0 & 0 & w & 0 & 0 & 0\\\\0 & 0 & 0 & w & \\frac{1}{\\rho} & 0\\\\0 & 0 & 0 & c^{2} \\rho & w & 0\\\\0 & 0 & 0 & 0 & 0 & w\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡w 0 0 ρ 0 0⎤\n", - "⎢ ⎥\n", - "⎢0 w 0 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢0 0 w 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 1 ⎥\n", - "⎢0 0 0 w ─ 0⎥\n", - "⎢ ρ ⎥\n", - "⎢ ⎥\n", - "⎢ 2 ⎥\n", - "⎢0 0 0 c ⋅ρ w 0⎥\n", - "⎢ ⎥\n", - "⎣0 0 0 0 0 w⎦" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the A_t2 matrix\n", - "A_t2 = simplify(Inverse(P) * Q_t2).subs(Derivative(e,rho), de_drho)\n", - "A_t2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Characteristic variables\n", - "We compute the eigenvalues $\\lambda$ and eigenvectors $S$ of the $A_x$ matrix.\n", - "\n", - "Then we compute the vector $\\mathcal{L} = \\lambda S^{-1} \\frac{dq}{dx}$ and the transverse vectors $\\mathcal{T}_y = S^{-1} A_y \\frac{dq}{dy}$ and $\\mathcal{T}_z = S^{-1} A_z \\frac{dq}{dz}$." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}0 & - c \\rho & 0 & 0 & 1 & 0\\\\- c^{2} & 0 & 0 & 0 & 1 & 0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 & 0\\\\0 & c \\rho & 0 & 0 & 1 & 0\\\\0 & 0 & 0 & 0 & 0 & 1\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 0 -c⋅ρ 0 0 1 0⎤\n", - "⎢ ⎥\n", - "⎢ 2 ⎥\n", - "⎢-c 0 0 0 1 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 1 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 1 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 c⋅ρ 0 0 1 0⎥\n", - "⎢ ⎥\n", - "⎣ 0 0 0 0 0 1⎦" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the eigenvector matrix S\n", - "c = Symbol('c')\n", - "rho = Symbol('rho')\n", - "lambda_list = [eval for (eval, n, es) in A_n.left_eigenvects()]\n", - "Sinv_list = [[ev for ev in es] for (v, n, es) in A_n.left_eigenvects()]\n", - "Sinv = Matrix([Sinv_list[1][0], Sinv_list[0][2], Sinv_list[0][0], Sinv_list[0][1], Sinv_list[2][0], Sinv_list[0][3]])\n", - "Sinv" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}- c + u & 0 & 0 & 0 & 0 & 0\\\\0 & u & 0 & 0 & 0 & 0\\\\0 & 0 & u & 0 & 0 & 0\\\\0 & 0 & 0 & u & 0 & 0\\\\0 & 0 & 0 & 0 & c + u & 0\\\\0 & 0 & 0 & 0 & 0 & u\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡-c + u 0 0 0 0 0⎤\n", - "⎢ ⎥\n", - "⎢ 0 u 0 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 u 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 u 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 0 c + u 0⎥\n", - "⎢ ⎥\n", - "⎣ 0 0 0 0 0 u⎦" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute eigenvalue matrix \\lambda\n", - "lambda_waves = diag(lambda_list[1], lambda_list[0], lambda_list[0], lambda_list[0], lambda_list[2], lambda_list[0])\n", - "lambda_waves" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2 c^{2}} & - \\frac{1}{c^{2}} & 0 & 0 & \\frac{1}{2 c^{2}} & 0\\\\- \\frac{1}{2 c \\rho} & 0 & 0 & 0 & \\frac{1}{2 c \\rho} & 0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 & 0\\\\\\frac{1}{2} & 0 & 0 & 0 & \\frac{1}{2} & 0\\\\0 & 0 & 0 & 0 & 0 & 1\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 1 -1 1 ⎤\n", - "⎢──── ─── 0 0 ──── 0⎥\n", - "⎢ 2 2 2 ⎥\n", - "⎢2⋅c c 2⋅c ⎥\n", - "⎢ ⎥\n", - "⎢ -1 1 ⎥\n", - "⎢───── 0 0 0 ───── 0⎥\n", - "⎢2⋅c⋅ρ 2⋅c⋅ρ ⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 1 0 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 0 0 0 1 0 0⎥\n", - "⎢ ⎥\n", - "⎢ 1/2 0 0 0 1/2 0⎥\n", - "⎢ ⎥\n", - "⎣ 0 0 0 0 0 1⎦" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute S\n", - "S = Sinv.inv()\n", - "S" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right)\\\\u \\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\\\left(c + u\\right) \\left(c du_{dx} \\rho + dP_{dx}\\right)\\\\ds_{dx} u\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡(c - u)⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", - "⎢ ⎥\n", - "⎢ ⎛ 2 ⎞ ⎥\n", - "⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠ ⎥\n", - "⎢ ⎥\n", - "⎢ dv_dx⋅u ⎥\n", - "⎢ ⎥\n", - "⎢ dw_dx⋅u ⎥\n", - "⎢ ⎥\n", - "⎢(c + u)⋅(c⋅du_dx⋅ρ + dP_dx)⎥\n", - "⎢ ⎥\n", - "⎣ ds_dx⋅u ⎦" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the \\mathcal{L} vector\n", - "\n", - "#drho_dx = Symbol(r'\\frac{d\\rho}{dx}')\n", - "#du_dx = Symbol(r'\\frac{du}{dx}')\n", - "#dv_dx = Symbol(r'\\frac{dv}{dx}')\n", - "#dw_dx = Symbol(r'\\frac{dw}{dx}')\n", - "#dp_dx = Symbol(r'\\frac{dP}{dx}')\n", - "#ds_dx = Symbol(r'\\frac{ds}{dx}')\n", - "\n", - "drho_dx = Symbol('drho_dx')\n", - "du_dx = Symbol('du_dx')\n", - "dv_dx = Symbol('dv_dx')\n", - "dw_dx = Symbol('dw_dx')\n", - "dp_dx = Symbol('dP_dx')\n", - "ds_dx = Symbol('ds_dx')\n", - "\n", - "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", - "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", - "L" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}c^{2} dv_{dy} \\rho - c du_{dy} \\rho v + dP_{dy} v\\\\v \\left(- c^{2} drho_{dy} + dP_{dy}\\right)\\\\\\frac{dP_{dy}}{\\rho} + dv_{dy} v\\\\dw_{dy} v\\\\c^{2} dv_{dy} \\rho + c du_{dy} \\rho v + dP_{dy} v\\\\ds_{dy} v\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 2 ⎤\n", - "⎢c ⋅dv_dy⋅ρ - c⋅du_dy⋅ρ⋅v + dP_dy⋅v⎥\n", - "⎢ ⎥\n", - "⎢ ⎛ 2 ⎞ ⎥\n", - "⎢ v⋅⎝- c ⋅drho_dy + dP_dy⎠ ⎥\n", - "⎢ ⎥\n", - "⎢ dP_dy ⎥\n", - "⎢ ───── + dv_dy⋅v ⎥\n", - "⎢ ρ ⎥\n", - "⎢ ⎥\n", - "⎢ dw_dy⋅v ⎥\n", - "⎢ ⎥\n", - "⎢ 2 ⎥\n", - "⎢c ⋅dv_dy⋅ρ + c⋅du_dy⋅ρ⋅v + dP_dy⋅v⎥\n", - "⎢ ⎥\n", - "⎣ ds_dy⋅v ⎦" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the y-transverse terms\n", - "\n", - "#drho_dy = Symbol(r'\\frac{d\\rho}{dy}')\n", - "#du_dy = Symbol(r'\\frac{du}{dy}')\n", - "#dv_dy = Symbol(r'\\frac{dv}{dy}')\n", - "#dw_dy = Symbol(r'\\frac{dw}{dy}')\n", - "#dp_dy = Symbol(r'\\frac{dP}{dy}')\n", - "#ds_dy = Symbol(r'\\frac{ds}{dy}')\n", - "\n", - "drho_dy = Symbol('drho_dy')\n", - "du_dy = Symbol('du_dy')\n", - "dv_dy = Symbol('dv_dy')\n", - "dw_dy = Symbol('dw_dy')\n", - "dp_dy = Symbol('dP_dy')\n", - "ds_dy = Symbol('ds_dy')\n", - "\n", - "dq_dy_def = Matrix([drho_dy, du_dy, dv_dy, dw_dy, dp_dy, ds_dy])\n", - "T_1 = simplify(Sinv * A_t1 * dq_dy_def)\n", - "T_1" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}c^{2} dw_{dz} \\rho - c du_{dz} \\rho w + dP_{dz} w\\\\w \\left(- c^{2} drho_{dz} + dP_{dz}\\right)\\\\dv_{dz} w\\\\\\frac{dP_{dz}}{\\rho} + dw_{dz} w\\\\c^{2} dw_{dz} \\rho + c du_{dz} \\rho w + dP_{dz} w\\\\ds_{dz} w\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 2 ⎤\n", - "⎢c ⋅dw_dz⋅ρ - c⋅du_dz⋅ρ⋅w + dP_dz⋅w⎥\n", - "⎢ ⎥\n", - "⎢ ⎛ 2 ⎞ ⎥\n", - "⎢ w⋅⎝- c ⋅drho_dz + dP_dz⎠ ⎥\n", - "⎢ ⎥\n", - "⎢ dv_dz⋅w ⎥\n", - "⎢ ⎥\n", - "⎢ dP_dz ⎥\n", - "⎢ ───── + dw_dz⋅w ⎥\n", - "⎢ ρ ⎥\n", - "⎢ ⎥\n", - "⎢ 2 ⎥\n", - "⎢c ⋅dw_dz⋅ρ + c⋅du_dz⋅ρ⋅w + dP_dz⋅w⎥\n", - "⎢ ⎥\n", - "⎣ ds_dz⋅w ⎦" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute the z-transverse terms\n", - "\n", - "#drho_dz = Symbol(r'\\frac{d\\rho}{dz}')\n", - "#du_dz = Symbol(r'\\frac{du}{dz}')\n", - "#dv_dz = Symbol(r'\\frac{dv}{dz}')\n", - "#dw_dz = Symbol(r'\\frac{dw}{dz}')\n", - "#dp_dz = Symbol(r'\\frac{dP}{dz}')\n", - "#ds_dz = Symbol(r'\\frac{ds}{dz}')\n", - "\n", - "drho_dz = Symbol('drho_dz')\n", - "du_dz = Symbol('du_dz')\n", - "dv_dz = Symbol('dv_dz')\n", - "dw_dz = Symbol('dw_dz')\n", - "dp_dz = Symbol('dP_dz')\n", - "ds_dz = Symbol('ds_dz')\n", - "\n", - "dq_dz_def = Matrix([drho_dz, du_dz, dv_dz, dw_dz, dp_dz, ds_dz])\n", - "T_2 = simplify(Sinv * A_t2 * dq_dz_def)\n", - "T_2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### x1 Upper Outflow\n", - "We replace the $\\mathcal{L}_0$ component with a relaxation term for a specified pressure at the outflow boundary to obtain $\\mathcal{\\tilde L}$, and then compute ${d\\tilde Q}/{dx} = S \\lambda^{-1} \\mathcal{\\tilde L}$." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}K \\left(P - P_{t}\\right) - \\left(1 - \\beta\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho - c du_{dy} \\rho v - c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right)\\\\u \\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\\\left(c + u\\right) \\left(c du_{dx} \\rho + dP_{dx}\\right)\\\\ds_{dx} u\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ ⎛ 2 2 \n", - "⎢K⋅(P - Pₜ) - (1 - β)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ - c⋅du_dy⋅ρ⋅v - c⋅du_dz⋅ρ⋅w + d\n", - "⎢ \n", - "⎢ ⎛ 2 ⎞ \n", - "⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠ \n", - "⎢ \n", - "⎢ dv_dx⋅u \n", - "⎢ \n", - "⎢ dw_dx⋅u \n", - "⎢ \n", - "⎢ (c + u)⋅(c⋅du_dx⋅ρ + dP_dx) \n", - "⎢ \n", - "⎣ ds_dx⋅u \n", - "\n", - " ⎞⎤\n", - "P_dy⋅v + dP_dz⋅w⎠⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎦" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "K = Symbol('K')\n", - "p = Symbol('P')\n", - "p_t = Symbol('P_t')\n", - "beta = Symbol('beta')\n", - "v = Symbol('v')\n", - "dp_dy = Symbol('dP_dy')\n", - "du_dy = Symbol('du_dy')\n", - "gamma = Symbol('gamma')\n", - "dv_dy = Symbol('dv_dy')\n", - "\n", - "T_phi = simplify(T_1[0] + T_2[0])\n", - "L_outflow_x1_upper = Matrix([K*(p - p_t) - (1 - beta)*T_phi, L[1], L[2], L[3], L[4], L[5]])\n", - "L_outflow_x1_upper" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\frac{- K \\left(P - P_{t}\\right) - \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho - c du_{dy} \\rho v - c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c - u\\right) \\left(2 c^{2} drho_{dx} + c du_{dx} \\rho - dP_{dx}\\right)}{2 c^{2} \\left(c - u\\right)}\\\\\\frac{K \\left(P - P_{t}\\right) + \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho - c du_{dy} \\rho v - c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c - u\\right) \\left(c du_{dx} \\rho + dP_{dx}\\right)}{2 c \\rho \\left(c - u\\right)}\\\\dv_{dx}\\\\dw_{dx}\\\\\\frac{- K \\left(P - P_{t}\\right) - \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho - c du_{dy} \\rho v - c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c - u\\right) \\left(c du_{dx} \\rho + dP_{dx}\\right)}{2 \\left(c - u\\right)}\\\\ds_{dx}\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ ⎛ 2 2 \n", - "⎢-K⋅(P - Pₜ) - (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ - c⋅du_dy⋅ρ⋅v - c⋅du_dz⋅ρ⋅w + \n", - "⎢─────────────────────────────────────────────────────────────────────────────\n", - "⎢ 2 \n", - "⎢ 2⋅c ⋅(c - u) \n", - "⎢ \n", - "⎢ ⎛ 2 2 \n", - "⎢ K⋅(P - Pₜ) + (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ - c⋅du_dy⋅ρ⋅v - c⋅du_dz\n", - "⎢ ─────────────────────────────────────────────────────────────────────\n", - "⎢ 2⋅c⋅ρ⋅(c - u) \n", - "⎢ \n", - "⎢ dv_dx \n", - "⎢ \n", - "⎢ dw_dx \n", - "⎢ \n", - "⎢ ⎛ 2 2 \n", - "⎢ -K⋅(P - Pₜ) - (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ - c⋅du_dy⋅ρ⋅v - c⋅du_dz\n", - "⎢ ──────────────────────────────────────────────────────────────────────\n", - "⎢ 2⋅(c - u) \n", - "⎢ \n", - "⎣ ds_dx \n", - "\n", - " ⎞ ⎛ 2 ⎞⎤\n", - "dP_dy⋅v + dP_dz⋅w⎠ + (c - u)⋅⎝2⋅c ⋅drho_dx + c⋅du_dx⋅ρ - dP_dx⎠⎥\n", - "───────────────────────────────────────────────────────────────⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎞ ⎥\n", - "⋅ρ⋅w + dP_dy⋅v + dP_dz⋅w⎠ + (c - u)⋅(c⋅du_dx⋅ρ + dP_dx) ⎥\n", - "─────────────────────────────────────────────────────── ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎞ ⎥\n", - "⋅ρ⋅w + dP_dy⋅v + dP_dz⋅w⎠ + (c - u)⋅(c⋅du_dx⋅ρ + dP_dx) ⎥\n", - "─────────────────────────────────────────────────────── ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎦" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dQ_dx_outflow_x1_upper = simplify(S * Inverse(lambda_waves) * L_outflow_x1_upper)\n", - "dQ_dx_outflow_x1_upper" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x0 = std::pow(c, 2);\n", - "x1 = c - u;\n", - "x2 = c*rho;\n", - "x3 = du_dx*x2;\n", - "x4 = rho*x0;\n", - "x5 = K*(P - P_t) + (beta - 1)*(dP_dy*v + dP_dz*w - du_dy*v*x2 - du_dz*w*x2 + dv_dy*x4 + dw_dz*x4);\n", - "x6 = (1.0/2.0)/x1;\n", - "x7 = dP_dx + x3;\n", - "dQ_dx[0] = x6*(x1*(-dP_dx + 2*drho_dx*x0 + x3) - x5)/x0;\n", - "dQ_dx[1] = x6*(x1*x7 + x5)/(c*rho);\n", - "dQ_dx[2] = dv_dx;\n", - "dQ_dx[3] = dw_dx;\n", - "dQ_dx[4] = x6*(x1*x7 - x5);\n", - "dQ_dx[5] = ds_dx;\n" - ] - } - ], - "source": [ - "drho_dx = Symbol('drho_dx')\n", - "du_dx = Symbol('du_dx')\n", - "dv_dx = Symbol('dv_dx')\n", - "dw_dx = Symbol('dw_dx')\n", - "dp_dx = Symbol('dP_dx')\n", - "ds_dx = Symbol('ds_dx')\n", - "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", - "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", - "\n", - "T_phi = simplify(T_1[0] + T_2[0])\n", - "L_outflow_x1_upper = Matrix([K*(p - p_t) - (1 - beta)*T_phi, L[1], L[2], L[3], L[4], L[5]])\n", - "dQ_dx_outflow_x1_upper = simplify(S * Inverse(lambda_waves) * L_outflow_x1_upper)\n", - "\n", - "common_exprs_upper, final_expr_upper = cse(dQ_dx_outflow_x1_upper, list=False)\n", - "for var, val in common_exprs_upper:\n", - " print(cxxcode(val, assign_to=var))\n", - "print(cxxcode(final_expr_upper, assign_to='dQ_dx'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### x1 Lower Outflow\n", - "We replace the $\\mathcal{L}_4$ component with a relaxation term for a specified pressure at the outflow boundary to obtain $\\mathcal{\\tilde L}$, and then compute ${d\\tilde Q}/{dx} = S \\lambda^{-1} \\mathcal{\\tilde L}$." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvUAAACWCAYAAABevXdQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXc4Ut6KuG8T1EotI6z4gnQEEMoIFMyAg7XMdMgMiLo5YdyiZAeF+SxBmkGQEAQZwJHLulxTyaQ1g57yPP7viqq4fV3VVV3V/ryW3Xf73Y3f3a7er+trz58+/2O1272XbzNt//etfX7VFOMwETMAETMAETMAETMAETOA4BKTJP6qm2221Ke7a9Szie/m/adiXWby9JmACJlBEQB8urR86RZk3lOjQfhyaf0Mo3JSZCHhOzATSxZjA1STwnbrd1OpvE4obySP3pT5sfsuu7TUBEzCB0QT0OfJUmfgsOYfPk9vqz0NZNj1GmTPjMKrvTtxLYPKc6i3VkSZgAmdPQN8rPzQ7qTCCHvKSi3qubUzABExgMgF9uPDB8pnc0SJ4cqULZlQ/fpb9QvaJ7N6HaVfVSjsrB9qgul7J8gvIG12zU2MzQGCIm+JZgD6QvR+L+lnuRfTflHtL9p3st0qbwmP0NEflTJpT02pzLhMwgatE4Fp2pv6OPmzOYWftKo2f+2oCmyGgzw9E0C9y726mUTM1RH3ivqN/yh0UdktyUNl/qh1fya1+bp2pi2ddzBC3GP9B7t7cVdhPgnNP9nP5B8e/FKTKKp5TpWU6nQmYwNUjoM+SJ+o1p21qZ+qvHgn32ARMYE4CnPU71/tw6Bf9KzGLcNAHdr6bXNIOpxGBIW6K51cQzOtLZ++VsWfByhfnnGbMnJqzXpdlAiZwpgTyG2XPtIvulgmYwJEIPJJAKj6icqQ2zVJN7Bf9Q9wNmaU4cEzkN7Vhtt3ioY6cSfwQt6HFUrrp+7M5eYycU3NW7bJMwATOlIBF/ZkOrLtlAsckIIHCGfJzP75H/x71cV2YA+KTM9824wgMcUP07zR2HzqKDfGK69rJ78hWFDw4p4pKcSITMAETEIEbpmACJmACMxBA+AwKTgknjqb8Hutjx/ldj5iKyeZzVFc6RnFHpb7Xde2XBV3/qPCv5bbthtM/+lnLo+vczMJB9bM7DCtEH7yom2MiL2SDUZpD+pKKmcVVWxDO/KcJ3Gg7N5YefZFXwk1ta5pO0a/yYE48/ekS/c3yxlyXzKkx5TmtCZjAFSZgUX+FB99dN4EZCXAjYed5+ii2uOEQcRRu8pRLeoRg2gmVd3HzTPXSBn5Z4GkylUBXGGemeXxl1x/u8acfCLw+czAH1U8dLC7uyh+EsVzYYfKF0yF9uSxthle1jcXHTbnhiTxyaT83gf59huKLi4j1lnCrylSedJ4+8Q1xCmdhQn+YJ0vemFwyp0Kb/GICJmACQwQs6ocIOd4ETKCEALvGn3oSIpr4h+r8qS0cZal2nnvyzhIVBdyvsTAWEs32Eta3G0t6xF6fOYiD2kh+hGlzpxtxz9NZ2AnfzdAXijnYqB2IXhZC/PKRDI+AROTfl80XISl+dlf1FHFrqTgt0r5UGSxOkkFs/6Swb1PAQm7JnFqoahdrAiZwbgQs6s9tRN0fE1iHwC1VGwRns3oJI3bkEcM1Aa/w3p1cxSPUfpHFLTXsqnYJc24yTXFtCwoEXq2NjUoR1kNtOZRD2vWufkGIbaBt+YLo0L6EYsWD+nhWO78KJDYhrvCFXzuawjctfFpZqZ65x5WmlnJrdiv8SqQ2df0600xfXc/AjrJK5lRVpz0mYAIm0EfAor6PjuNMwATmIICA5g93LsYUFtPvPTd8TBl52lS/XAQywrISzgpDiBLWt7PcKdiVr8SUcAhp8sLUNtpF+6ojIjP0JVXBguupyhst6JUncXyTCosu4ZjWMmPbZxvXy6rCDcy1sVM9e9xi2tyhra3tzBN1+Cezy8o7dE5lRdlrAiZw1Qlcv+oA3H8TMIFZCHxSKYiomonCivBKkNYSrHPBrmzz0ZAcI9mpvX0Cj37Qzz4zmUMPK4Q+bauJ1tiIqX1JfaDfbeWm+D6XuqsjQVnCx/LDN9wPkIUv4p3IDZ5fxAZN7f8h7BKLkjmV0to1ARMwgV4CN3pjHWkCJmACZQQQcOnYRZVDwulCluuLKjDzKO5o566zamlnU7xzDCOIO7WJG2bf0PYsD152VYeE6mQOKpuz6JhmHdVZf7UJIYmQTmlG9UX5EJHPZDkzjh8B/lq2MkrzNF5wTp5jLdQZ/Fm9JGGXuyaIFY9Qxs69E68iB01ikhL2cSMN7ccULThnZndZc9mcSmntmoAJmEAvgeu9sY40ARMwgTICiOQvO5JyzIVd3ZqRSEIwDu181/LMdFETf1GI3lPZSejfUVhT0FM1QjWl4brNTOYQ60QkI9SDURiCGpGcBP8DheXtz/07xZG2tS+KQ8TzVBr+TpwxoS7SV8Jc4Qh6bmj+Xu4tWdLip0zSBqMwyqKdpAkmhnGT7zfyD3GKuQ53VBdjNZYbFbOg2Sl/1X+u24zSzMauUX7JnGpk8aUJmIAJtBPwTn07F4eagAmMI8BuL4Juz0gQIfK+wyqSHWIMIumFwhBkxzbc2PkqtodnwCOMEVe0EVFLX9oMO7s85rDPHMqBxQ9tox2fyVIeO86pbZzjzs2YvsCfexuaC4FcgPPLSopnjNIuNs/uz9OlXW6e0pPv7PfdqJy3e25/MTe1F4YsSMIiRdf0kSfdsHjpMnOyy+somVN5evtNwARMoJPAtefPn/PBxu4Nu1Ppw7wzgyNMwARMoI2APj8Q7GuJurYmzRamviECEX75oxtby98qB7XrDzWY8Qk703IR4+z8s2jYMwr/U4Gt3wuKQxjfk8ti6OyN+jkbuwRLZRbPqZTHrgmYgAk0CeizhCOj/Kp67Xoz0tcmYAImMJEAu5lDO9kTi149Gzvi9K/EbI6DPuzZdcfmGzeIeRYqPFOeuMroms2eatde1wjQ3LDDPHhsJc9wqv7IZk52CcWYOZXy2DUBEzCBTgIW9Z1oHGECJjCGgMQP57RvtwjAMcVsLm3sD/2qHoHZ18gtclCbLtRmbDC6RrQnYf6IQIXRR3akMY9l8wUAAjQYpUHgIvLTH3ldRpzpq/o7G7uECNbyF8+plM+uCZiACfQRuNEX6TgTMAETGEmAs82crW890jGyrK0k56jJ2F8gtsiBNnEGnuOWn/DLIt4/JuEql6f+cCwnnKWPfl3W/mCKm2YxV2Kn/rKr4UbvOdjF4nZT5lTKa9cETMAEWgn4TH0rFgeagAlMJSAhyC7kQ7l9Nx5OLf6o+aKo5Wkw+a51URvOiUPeYfWLnXrO018lUZ8jOMgvbiyaJs2pgyp2ZhMwgbMkoM+U6ky9Rf1ZDrE7ZQImYAImYAImYAImcO4EclHvM/XnPtrunwmYgAmYgAmYgAmYwNkTsKg/+yF2B03ABEzABEzABEzABM6dgG+UPfcRdv9M4MwIxJ8af5N7tDPdqotz5M8iSu4ZwPCHTDwZxcYEKgKaEzwveuyN1VV+e0zABExgKgHv1E8l53wmYAJHJyCx9FCV3pV7NEEfO8k/uvL0EyxPkeHpMTxFxsYEmgSYK+mfeJtxvjYBEzCBxQhY1C+G1gWbgAnMSUBCKeyWy11jF/SJ6uW57snwB1M8Z5znvduYQEVAc4InJf0ol6fc2JiACZjA0QhY1B8NtSsyARM4kADPv+f53msYFhLv1qjYdZ4eAQl6/qjsG7ksRG1MwARM4CgEfKb+KJhdiQmYwCEEJI44x86z0Vf5U6so0vIuIPI51/8hD2zzKw27+a9k6QN/7jTqlwalRxiyoOFPnz7p+o5cGxEQi162ime3nDmTfmXh2Fa6DwKut2RZrHGsKoXrchbDApRx57iWjQmYgAksTsCifnHErsAETGAGAvz7Kbufq5soJMPZ/pLGKD3Cn/sA/pQ7+qx1FJsP5HKG378WZNCH2CqeP0D7Xi7sP8jdWxQqjDH5f3I/l51T2DNfOV9/c+ZyVayNCZiACewT8PGbfSYOMQET2B4B/jFvtCCeuxsSZ+y2c54ekV4sAJU23yme2ix2pVdnMLXxMJBlHGc1Q2wVDzfM60tn75UddXbtZ22b6mV+sKB7JGtjAiZgAosT8E794ohdgQmYwCEEMlG26i612oGg55hG2O2N1zu53Bg5ZMjDcZ3ihUBeoPLNsSjIi1zDj3DGzm2G2A6xY1wxn106s74yZzl+s4lfmWbtmQszARPYHAGL+s0NiRtkAibQIIAomyyIG2VNupSoRvixo4uoTzu/nI3nWFCJoQ+HPIZzSLiWtOFc0wyxTYuwrvsfQrzgdO3kH8LtozJ7p/4Qgs5rAiZQTMCivhiVE5qACYwlIAHMzizHGri5872uazuWuuYG0KE/cfpSaSbtcCvfKKP2cLTm95iJOt8pDDHIeXb6Uns2veL2bnpVGAsAymEHn7IQ8ywEXsgGozRcP5b9Qn7Oy4dfAXRNnR91XeOksCBcFc5Z/luy8KQMnrDS+kuBwvO+wJA/RTpkYaEi1jVq/yDblhZ2in6VB0PiWax1if6WIouDKJMz9T5XX4zMCU3ABKYSsKifSs75TMAESgg8k6BBMCFGX8lWYlVhiP2HcoeeDoKY/iS7mFEbEIucV6etb6lILjvztA3R/XfChozSIRBZqHDmPohtuekcfC6oHyucun6SpZ4LuQh0hDg250T/EZ8YbrxM5VIPaWv8FJ/6QnmhzhjGYuGObOsigMK3bNTuUrZVN5QncUtjEOIUDiMWZMzLr3QdxjxEzvuS5i31LbFomLe1Ls0ETOCkCVjUn/TwufEmsF0CUVD9GlvIEYckcFKjCSsROreUbmkhiuh72xB3HJuodtfl7zXKi/hGaCPW8/bi58kr7MLv5CLwOJaBoW/8iVV6TCVlVIKeBDKIWQy/aOTlEkb6pqEvtV158sW8CNnWI0OKZ4HAIyBZkJSMi5Iex6g9RWxbWpPYfRn7l5LAnwVVKwsSxfSH8ghjruIYZxsTMAETWJQAop4v2v+W/Z9Fa3LhJmACV41A/hz3NoGM4CoRzQi65oKgYinxRfwvsrilht3ZIFzlslOO0K61ReFFu/NZhYhijlm0ifJ8J5h2von52ElGaAejvJU/hckNix/FNYU2efNyd0oT+iKXRzk2TVhANAOza/I+baknSzLsjW1IYjrPEISt4tv6yKKn9otDnlH+UraNbIHdbqDsZp50PQePznmbKrFrAiZgAgcS+L/Kj47fIer5oP0v2f8ja2MCJmACsxCQkLqgILkIPIRsJXYVhogmLD+SostWQzlBELbFxnrutsUVhrHg+DmWU5ilNVkoJ49RmfSRvlbHPxSWFhNJ+CaBn2fN/aRrinfKxL7OE8q/1wbiVWfinX45aWQLlxxFKRmPtrxVmOpqE+20gfL5VaJtwVHl7/Ds9Uvl7LFtyQu75mKoJVlr0Bw80ry1uG9F7EATMIEZCPwvlYGO/983ZijMRZiACZhAHwF2YJtPr0EwIfSmCq6++orjojBEHFaiuzhzlrCnHMQo/WwTy21cslJDvi7hinDmHH7Fr6cNlJmEdrU4iOmfKY6jKNTDjbu1RYLSPFUYhuNB7JYzbsGvuOZRIEXNb3r61cd2p3xfxNa0sd9raKxnbh5wxVxcOn41ARMwgeUIXF+uaJdsAiZgAoEAu8SV+IxMOFISxJbE1JMoqGLUnoN4TOJoL/KQANWbxFZya8UpPu2m18J7LppCt7pvQGVxUzAsktnbgU8RmdslXLnJOPzyoTLhxw546kNys2LCE4j4Z9XQPrk3FcmTfDh7TzmMBSK4EsAKR9BznwE76+w4kxb/PdkkmOU9mhnDlkalsRtcsKlfS/GAG8Y79Zcc/GoCJrAgAYv6BeG6aBMwgUCgJsYkoBCECMMk9HkiS5sQTfg4MkL6pQyidu88t9rEznSRGIvtRxBXol1h7GrT13eyGJ6ik0Q16bBDgrNa/FBAZhChaVc9f6INfSFPZVQndbyRm98USt84ctQcmzQm5OeXgBRPfamt3LBb7fiTcEmjupgbxWyztvDLw075q4VKFtf0LsWDMYZj3/xutsXXJmACJjCJgI/fTMLmTCZgAiMIICZfSdggnHhuO0KRM/A8npHd4CRO5W01CE1uQMXOLo5UZniUpFzax1EUDCL2xcj6WBjQT/rEv5PSLwR26ic3XiaD2ONI0pDgpB08UadpYMpjMe/LVmJd/rwvsE5HZZr18AtAvpBhV7uWRmWFXwIUjiE+HOFReC78Q+QRXorZqn1whm/4NUHXLEZ40k3fWf6leDDPa1x1bWMCJmACixCwqF8Eqws1ARNIBCSmEOK5gExRbWEprnKVP93Eym79IgJJdVTCuKp4pGdMP+mTik+PseysSelqu+4pocI7BarievuieBYK2LQLT7HUg/AlfCeXMQtGfsRxtWuva4765HljyuWc2J62+bIXprTp/oGiBin9kjyYs/lirqhNTmQCJmACUwhcn5LJeUzABEzgyATeqL5WgXvkdpx8dVEgN0V72qlnx3qnNAj3P2JnH8vNRXzvoiHmaXOos6q3LcEaYUvxULksFlgQMXdtTMAETGBxAt6pXxyxKzABE5iBALudPIt+qqCcoQlnVQQ73PxJFjfLct8AXBHv/OtsEN9yOYfPUaJwlj76dTltDJR/kV9ZaNAMZgkeLJC40XhzC5kZeLkIEzCBDRK49vz5c3YS+GDPb7baYFPdJBMwgatMQOKIs+Wv5R7tJs2rzNt9P4yA5in3Z1Q3Rx9WmnObgAmYQDsBfdbwNDSeTnbNx2/aGTnUBExgewS+VpOeba9ZbpEJ1AlkX7L5saV6Il+ZgAmYwMwELOpnBuriTMAEliEgocQxBp5Iw1NqbExgkwQ0P3nyzldyO29m3mTD3SgTMIGTJ4Co/1vsRXJPvlPugAmYwHkSkFDi6A3nvrmx08YEtkiA+xP2nsqzxYa6TSZgAmdB4B+pF9wo+594kdwUZ9cETMAENkdAgj5/fvrm2ucGXW0Cmp+jHql5tWm59yZgAjMQ+Hcqw8dvEgm7JmACJmACJmACJmACJnCiBCzqT3Tg3GwTMAETMAETMAETMAETSAT8nPpEwq4JmIAJbIiAjnHwuOFXstx4yTPjfaxjQ+PjppiACZjA1ghY1G9tRNweEzABExABifgPcu7K/VNu+AMogzEBEzABEzCBLgI+ftNFxuEmYAImsDIBCfr0lJ8t/xvrypRcvQmYgAmYAAQs6j0PTMAETGC7BB6oab9J3POMfhsTMAETMAET6CRgUd+JxhEmYAImsDoBduq9S7/6MLgBJmACJrB9Aj5Tv/0xcgtNwASuAAHtxnNDLP+W+5vs77KIeW6WfSEbjNLclOeJ7Gey/AlX9cx++T8q7Fu5/EHXbCar844KfZ/XSSW6/lHO13L9awJAbEzABExgJQLeqV8JvKs1ARMwgURAgpgd+feyiHLs9/Ij8DH5Tv2zGPerwlN8SKSXW7KP08WMbqqTm3VrdaotLDAeyrWgnxG4izIBEzCBKQQs6qdQcx4TMAETmImABDG77+x2I+bZpU8G/4ckmOWya4+Yx4Sz9pfe6vVr+fL8VcRUT0udnxpl0Q6e0mNjAiZgAiawMgGO3/wttiG5KzfJ1ZuACZjAlSLA7vdNCejqKE3sPbv3+VEabphNAvqR4qpjOTF9r6BXXup5KstjMlM5MWunM1QnbWy2o7MwR5iACZiACcxO4B+pRHbq/xMvkpvi7JqACZiACSxPAIGeH7HZSXSze88Z++r59AoLR1zkPlQ48XuLAMXliwAlqZmXXClNqaAnbaoT8V6rU3G0j7Ba23VtYwImYAImcDwC/05V+fhNImHXBEzABI5MQMIYUYytxHtsAkIfUd0mmLsec8nNs32GxUBbeX15UtxX8jQfrUl5tLF4kZAKs2sCJmACJjA/AY7f2JiACZiACaxLoHl0pjqrLtGMeOZsfUrDDnlNSMc0YSc+dUNhLBaeyfJUHPzcRPtatjJKw3EcDE+24XgOdQV/Vp+Cwq8GtToVRhvDIkFpuWH2jdwLuTYmYAImYAIrEPBO/QrQXaUJmIAJQCCKYIQxQj0YhSGsuSn23WXI7oHCkqAnCHGdp8d/O08jPyKep+m8lJ9jOtRBmdVOvcIR9G/l8qSdW7KkxX9PlrS5yevfKR3xpEtC/47CLOhzYvabgAmYwJEJeKf+yMBdnQmYgAk0CHC05ZVEMSKbIzTsprML/l0Ma+7A85QcBDhPzAnHduRHjOeGXfefFd4U40mEk/Yii2cRkI4A8cz5PB1pv5WljZTLM/Qp965saiNttjEBEzABE1iRgEX9ivBdtQmYgAlIKLPDjbBvmrawkEZ5vmkmblxzJj/Pz42u1S49aVVGfqMt8aFMhTcFPWlHt5E6bEzABEzABI5HwMdvjsfaNZmACZjA4gQkwNl1x+a79Oz8/0RcjK/aoWuO0lS79rqujvZUiewxARMwARPYPAGL+s0PkRtoAiZgAuUEJMrZVccGE0V72qlnB3+HcJf94zJFuIE2XwBw1MbGBEzABEzgxAj4+M2JDZibawImYAIFBDh6w9l7bpb9hF+Wp998VFgQ/XJ5Wg3n+NO5fPwYi/pLDn41ARMwgZMiYFF/UsPlxpqACZjAMAGJdc7P187QN3MpTX4uvzdtM6+vTcAETMAEtkfAx2+2NyZukQmYgAmYgAmYgAmYgAmMImBRPwqXE5uACZiACZiACZiACZjA9ggg6rlBip9hOXdpYwImYAImYAImYAImYAImcBoEOD4ZjlMi6m/L8ucm/KOgjQmYgAmYgAmYgAmYgAmYwGkQ4Olm4U8KffzmNAbMrTQBEzABEzABEzABEzCBTgIW9Z1oHGECJmACJmACJmACJmACp0HAj7Q8jXFyK03ABK4IAT1qkn94fSXL0UieJZ8/evKKUHA3TcAETMAExhKwqB9LzOlNwARMYEECEvEfVPxduX/KDX8MtWB1LtoETMAETOBMCPj4zZkMpLthAiZwPgQk6LnxCeM/hbrk4FcTMAETMIEBAhb1A4AcbQImYAIrEHigOn+TuL9YoW5XaQImYAImcIIELOpPcNDcZBMwgbMnwE69d+nPfpjdQRMwAROYj4DP1M/H0iWZgAmYwGgC2o3nhtjvZPkjwN9lEfPcLPtCNhiluSnPE9nPZD/q+ocQoRf5SfuN3HBDrdyHuqY8zuXPutOv8lI77qj897qu2qHrna5/lPO13FnrpWwbEzABEzCBfgLeqe/n41gTMAETWIyAxC878u9lv5Uf+738CHJMvlP/LMb9qvAUHxLp5ZksC4NkENRc30sBM7qpHdzAW2uH2sei46FcC/oZgbsoEzABEyglYFFfSsrpTMAETGBGAhK/7Hqzs42YZ5c+GfwfkjiWy048Yh7DWftPwffXCwuD6ik5Ss9igCfo5GX+lVo+pflO9k9Zyi4yMW1fO2gb9dqYgAmYgAmsQABR/7dYb3JXaIarNAETMIErR4Cd7psSy7UjLAprnqfnhtm3kc4jueHvwLmOQpvFQb6rT9Q7xXWKesWHMpRmjAjvbAcVytDu18HnFxMwARMwgWMR+EeqCFH/n3iR3BRn1wRMwARMYDkCCPSaGJfIRqBzdCbfeQ/HWRTHWXni80UAQvqiRZx/VHifoaxa3X2JiVMdqR3UWWuH4mgzYaPKVHobEzABEzCBwwj8O2W/kTx2TcAETMAEjkNAIhgBjK3Ee6wZoY+AbhPH4XiL4i5iWhzCamkVz5Ga2g68wqiLs/eIffyPZWu76krzVGEYboLlVwSEf/ArLt/1/0rhzcdtknandLV6CbMxARMwARM4DgF26m1MwARMwATWIZCLZVpQnUuXQOamU3bAk8HfTN8W9lj5KqEvPyKem3Ffys8uP3EI/zwNgv6t4rlR95YsafHfkyVtbqizKd6rxYXyPZGlThsTMAETMIEjErh+xLpclQmYgAmYgAhI9F7IQVQjkINRGLvdCOh3lyG7BwrLRTxCuhLLiuMYDAI8L4Ow5u4/u+4/N8ra6ToX5hzhSXVRRyqDx1Om8/wKDialCxeKp82I/1TeHYXRPxsTMAETMIEjEvDxmyPCdlUmYAImkBHgGMsrCWB2yXn+PMdh2PHmyTSEVTfEyr9TGE/JYQedcEQzz7T/XJYyUljtGfaKwzySpa5kEP7VLj2Byt88p5+eeZ+EesqL+60sdbJYoA2I/Luyqd30w8YETMAETODIBCzqjwzc1ZmACZgABCSKEea52E5g2sJCnPIEsZ0SRrcvPbvu2Hx3nYXDTyqL8NQOvPjZda927XV9WzbPS5rR7Q6F+8UETMAETGBRAj5+syheF24CJmAC6xGIAhwRHoyuEe1pp54dfEQ6wv2PkODyBtpcxLMrb2MCJmACJnACBLxTfwKD5CaagAmYwAEE2Mnn6A43y37CL8vTbziqg+BnZ/6NLEd+wln66NdlSItrYwImYAImsHECFvUbHyA3zwRMwAQOISCBzvn52hn6ZnlKkx/r6U3bzOtrEzABEzCBbRDw8ZttjINbYQImYAImYAImYAImYAKTCVjUT0bnjCZgAiZgAiZgAiZgAiawDQIW9dsYB7fCBEzABEzABEzABEzABCYTQNTzpAPOU3IDlY0JmIAJmIAJmIAJmIAJmMBpEOA+qHBfFDfK3pblj0sIrB59Jr+NCZhAAQHdZPhEyX6LNyQW5AiPEbyphM9iYt6DGP690+/BSxaLvIqvuS9C1oWagAmYgAkcQkDfT/y5YP7QgtLieEwxOv6HzR2/UYeSwCntzFmm2yqHrbZr6iQ4tD/K/1B135U79okh/PsmjxnE8shBfinjkYM2yxIw92X5unQTMAETMIFpBPh+Co8VnpZ9t9uUqFdneE4yf45io19QIo/NsDjT8ZnMWTzCrq/cKSvrJ8rH6jqZ7+ShLZ7/icgyrrkvw9WlmoAJmIAJHEBA3/8ch/9RLlp4khn9nPpY2ZeqjR1KTDi2o/DaX5Xr+kfFkYbjBO9k2ZH8ILfVKI60n8n9vi2Bwukkf2+ehFB+XAhxdUs21UOdq+uOgXQAABc8SURBVJi52qlyfpb9QhYR8sMqnckqVRuGxgcxypiza70a/6zJwau28MsPovt32Tsh8HIuhjYq/hDO9JefvKYY2sR8HW3UZli/kqVv/GnQlEXF6HrPJIO5b3ggPbfXHxyPwfHHYIi54k9C/xyb3DlyU59+kOWPAXFHa6lrz58/RyDws/8dFZD/PXjv+Cjtn0rAOeIklGrpFY4I5F8LB88JK+1NpftF7t1aIS0XSkO9H9rSKoyfLe7Jfi7/aBgt1U0OmqudKoex+eea/VHdreMTwxGXHB2BO3Pp72u2VfVXRu2gPfflVgtF+Tn//kBucxE6irPyI6jfy/17VeEBHpXDTv1Dua3vp7ailZb3wldy37bFO2yYgLkPM1ojhef2GtTrdXoM6jyOcTXEPMZvXv8cg1Vex7lxU39YxH0pt6ZT8j7nfqVD13Ae/9r1PKLUr4yIJUyrmIgV7OQiOErENYJmcMdTZaV6X4fa918oAwFKB1czM7eTPsFnTdM6PoytLGPM7mfXmKzSbrWJefBYbiXoY0NYuKZ5lLdtLOdvlXmWX1DURtrDInhwUZsarDz5L1Yp+ORd+iV7lPevuXdPl2OOQ7MV1B3Dxt6n0izqpK89BtscvqXGZWjeKz59b3V9125C//SN2hLszpQb2oJNPnTMKDNJ1KuG9KFbO9BPA2QRgBxpaBX8Ha17pPQlAinV2/Vhz+4p5rNLZ7XX2doZucBn9ODO2PvS8ZmxyoOL4tgSwrtpWPnuHQObwBnhWZv/zYpKrlUvc5b3zNhjSxxF45eyi5J6TigN83zxuW7ugzPiKOPQ0Ypzndsd3e0M9hh0olk1YqlxGZr3s+mKFektwe7suMXvdXTKo7FjdWNshpieYzU7VVyJa/lZRbIz2iakYrZ9R+nZoSw99sPg7ZRnT5TFkkO8/F0r2ZhscWfudsKHwS1Z+MzauZHjM2vdcxcW+8IHY9eOeBFnlZN2TCadiU/9UjkIeu41SfMlLEp1XfJ+oB/V+y+VaXeYgLkPM1o5hef2ygOg6j0Gxx+DIebpe2Lr+ufY5M6VG/qCTchRuu/GRPqImmpi6UuSXUt2GqfcsMdELRUnnYOnumkT8b035Cr+GGbudsIHTqMGd6aOjhmfmao8rBjNhcBfLiKZnyQvZINgltu3I17KmfKLdsnVBnbhuUkXQzveKYwzkaltzNe0SOD9s7cojmkpB7FPWbSTPC9kg1EadkB4H/IrVbjJJkToRXEf5VDPmF/PUvZiV+XDhQ+hxJs6SxYoxXWUJlS9W+DOGH2jtoTPRblsYNCuvjlY2sXOdKpn8+OQGq+28j4ondvcb8J9LLXPQV1zw/rgvVupzqluH1fFrf7+6+qX2tb6XkjpFX8VxmCV92Ji3HRLmDfz6Dp8r7WE71Qe/SN+Fv2j8jY5n7fOjbEZYDdmHvK9vfxOvRrMxMEEIa5rDvSnD+UQMfKFGywRXr1G9QADUzvyoHA+kPjS5Atz9ZsGF2ong5u4y3tUUzQ+R23RcGXcCBvEsVy+8DGIS+YZ86VakMqfm1LOXyoTwrXTxHnJXK3EtMKoH9HLQokbc/ngxK2M0gQBmAJ0zbinpwoFgayw9B4I78GY9pnCqYv3wSvZXPjc0jW/ri0m6lUvnwEcv0sClnbTt1luJFY5RUb1M75b4f5MbWGMk2HO0D7eU/nYpfiD3RMah53aevDcVhksZDl7yvtqMaPyh+b3qu+/to6rzUPvhZ3SXJUxOPp7sW1MCBvBvCpCeY6tf7Y4n0vn6prcqLuP3Zh5iE7hOxXbqzeqDstzI78o9CNIML+rovRHLuygPNE1H65jhQNfep8ocMAwoBjuCOYDNhmE2E8K29vhTAmO7C7RTvjwAb2GKR2fNdo2WKfmRSVu47xh7qQ53MxfyrmECcLyrerM3w+sul9QqcIHxa7SUA+Cvrnjjbhnt/9CLmXxgf8rfhn61twd/1phLEQWMaqfhUTzyT3vFMaH0X3ZRQRsR2fW5N78HOOzIIw3bYWD7Ad5m+ND9MFGZZ/SOEyd203GzHeYLmaGuKpi2rTa+6+n40PvhXMeg+Y8Oep7sWtMNJeKmLfkX0JXtFSz/vdJW6NOgRvtVjub38WHzMOUF+33oY1LW9iNtsCBsDS5LtSB9GQRhBI7JqxCchEzUFSIZhcxiJOBxEGIqc6DdmSUnzfVL7K4pYZfAEqhjmqnymU3k/L7vuiJ623vgv0qHZ9SliHdUu2N5f7e0Rg4pvnblmSQc8wEk87xUhteKp43YiXoyKfwQSFPusyk3cFqYRLj6EP+PuMoUJqf1cIhK6ezraRRXurhFzeOhaRyiCo1r5SwuahOi9DWeat6YNQ2FrClTWHHH39mWMh0vv9jmZvgrrZ8oXbT9+aChuNXneOhuEPG4pTGYa65zRyqvc+y+VJ5F+YajtTFyqa8/9Z6L1yJMTjgvTj7uGiOlDKv5m70jNIVeeYJc/+g7xPqVp1zszsFbnS9k92EeXhBgTLhO/HSO/x6YzjJXgq+rNhxqoSG/HSEL6/7NFx2ijDYq6gRwIf3weWqbYDqulGyUeWky+J2qi186cOr80s+toBBTQPc2qgj9Ku13qmBC7a372gDc7eP4yDn2F/G7VNP3/li5z3SV1dP9ioqlFNdyaMyqRvhyi5cMKkeuezUEl+9Ny9ThPdlWoDHoJrDB/BT5R/9/lIe5jt1vqmV+Jdgby1T+dpE+07h9IF/1u1rb6Oq6nJL3OHCxkez//yy2GcmjYXqObVxGDu3U/+qua0+8z5g7jUXTm18F+OqdlxQodxJ7z/lW+u9cFXGYNJ7cclxySeo6mEO1z7T8/jopw/Nz5KWZK1Bo+a+2nPQfKYFC7ArmqstvT8at9jvPnZj5+Gnlv4MBl0fTJEl0EDRKEwlKC4vwysrKcyzS6f4lYYzqTuN6kWMYUo+vC9TrvA6oZ2lEw4+kwZ4BgyD4zNDHXMWwXn6Dx0FstvRN4dKOfPGZQGwZ1Q3ZWDb3iN76bsCesrhw22n+LZ+0D8W2LQvN0OPeEWMtJWXl9HlZ+e8OgqUJeIMP20ZWrBmWaZ7Vc/a3JsM9uaa2sjnWNfcTJ2fOhYnMw49Y9U3t+lfc27DaqfyhpiS7Bhcp77/aN9spodvVUdPmnMYg7neixWvOTwTme+U71D9M3Xub30+983VNbkxXWB36DxMGgMNVmxuFKe8TEhDMXsCQBOPnUm+wMMD8+VvCouQseWFPKxS+0zfYqIv37HjitopNvSX3RnebOzmsSB6Lbfry4nBPYo4Uj1NUzI+zTxrXqcxqLVBbPlgvCfb9yvNwZxVD+NJ3a3zX3H3ZffeP2ToMM1xDx8WpFU5zB8+OFIa5lVtDsU07NRURmEIYBbf7BrjR4C/lg1G8TCEF/evVMdd5P8xv75MvSNtrT9KQ15sH+uYfR5Hda7NPY1B6hBjkR+RIvyx2lk7pqTr3rEgk9LAknsrmFOMB2UTnnM/mXFQ07nfAtNkNmpuKz/pAwOx4PjnG7kwgk0vV8WXzvExXIvef7RvSQMDWaoILJp1xb6vPga0S22Ze24zBs15VfRebHJa8LrZvr55TzOYg5iijSIxnWvub2I+X3Y9vK7KjRYUzleSzjEPGUdM6/v4Mmr/9fp+UG8IIoKO1YRDliOJhzG79ZT1ZVZGmxfRQb35l1hburXDitqpfrDjxJc7g/UCv2wXU/qEOOqLJ81SpmR8qDvtBt9aqiFD5YohbwLOt/IFXxld86GIKBq6d6GUMx8u6Q1X1ZN5OCJQieEUrnawePuUrvtcpWVuMN/5cAhGYbz/+BJMX8j8KpF/0DFWeXr8HGWp0shPu7mP46X8tJM6KDOJI+I5Esbxl7BAl7vTNWnSlwtBhJGWOqoxj2Gw5lGOx56za3KHRTDqN5xgko8FYbUv5ciqcyxCYZcvbAAwn/jMCH7lrT4LYzknMw5q74X6MXZuV3NYeXcqg/nIIj3NsTuxXOIYi06uMX5wjsd0Y7gOvv/UrmOZ3veC+rbqGGQQ5p7bjMHo92LWnsW8E5nTniJdQcI4Zw+e+5Qls4n5vAVulzjCa+98zdLNMQ/T9+qnrNxB742hFHGSvFI63ijhS0phfGn/Krc69yo/giWJKc7n8qHLF3vtw1hhTcMOIeXtGeVlkUCdlLXTNV+KPOmmqpfwtc0B7aRf1ZdzTz8QBEymNUzn+NAY9T2NHW3EsJvLmDNOfLEc09AG5swt1f00Vsxigyc18YSmIVPK+VcV1LlwVV3Me54MxXsinaHm/cMCji/TUoOQe6U89IV+MBbs6lA2YfS1MgpjcYhYZ0yCgJS/+V6hTelXtTwvH0IYPkh+UD4WEPlxB9ikxYS8waQxp97EG85jbiyPRR3uqA1rc2c8GN/fZT+XZexSWO2/AxSHGRqLkIh+4ZGbPn+bnwWnOA6j5ra6z4IGnjCDL58xLMLTe4H3RjJDXEvn+CiualvJ+y+1cVFXbSl5L6w5BqH/tBOP3FnmtspJY5Ded6XvxUXHIyu8mLn6Qh/G6p+55j5jklj2fZ9kXVvUuza30DkxGZqvKV1id8g8ZOz51W2MZtjdGBqGWCBAew0TQAmwo4zycXxgJ8vOSRIWoQxdN7+8RpV9rMRT2qk8fGEMDpjSpQ+7EvE/e5dVf+f4UJniB+fG7I3qLpDjIm9j9CheyjeGc1iFK89N2dY3nMJHvxea3Yplt/FtCwvZlWfoPfNICfP8zMOKlfKHRbjcxwpPLCn7S9naTrOuw8/GMU9z8UCeoxu1ZUvcc85tLHrHIs+gfrEBcL+jfyc3DuoH75s2Pm1hu5Hpe7mqrNI5Ppqryh56/+XDuqhfbel9L4xkuhuZvncM8o6r3FnntsprG4PWeZW34xj+MQw7+jHUzF7uKrN07od6JrZhqI2j49fmljdYbembr1XSDnZj5iGbFtV3c1XwgOf6QPyxolldtr0Rj1X/GvUwMcKAafARh1y3GT6Y4bOmuQrjU8xZY8W4IUr4+f9kDPNMjcWGD/bYcIQLv6owB4lLhvmYi/ia+I+J2sJS/qkuXLFnbcaMhdLC+Z7csHCSy5GqfKw8DnG2RC6wmWOOL8F1zLw+yffCmDFQ2jXm9pgxaEu7yXEZw12dKvl8b+v7oWGbYzeGW8F8PZRPnh99kX8H53Gd/k2IeoHimAZfVGG3tLO15xXBMQWOcWCeyeZfQiEw8oDLsY+xhPrTyymMj9rIFzk/tY42Ezm/UUUI4pMx6mftA1XXfLAn4cIOT9OEs3xKRxpEf/VLmvzw5v2a5nAz76RrlVt7XO6kQk4gk/pZNBZKB2MW1Z/k59dMxoIjVuTfyfU4ACKayCWwIUjXk+b4UlxTO0tcteEk3wtq96bndgn7vjRbHZdS7lnfOj/fszSzerfIrpSb0vV+Fs8JSnXxuc5nFzpjlLkxKvWyiflZgrNbJyWUDkDCWSvOPXIfAk++qb6IsjJDmux6Te/Wx4dV7eifqiLQKZzJw5+Y9f7EHcvfksM4ct7vvVw+1Gn/Y1nOfOdzkHDmJ+nIUwl6+THpV4qpzC9LudqvJWPBOPxTlkXXK1kW/+RLxuOQSPzllnAldd8cN9e/eE7xlYyB5/YUsv15SrhTQt/c76/hPGNLuA3N1znJ8HnPP9Ln38lF5V97/vw5qwG+uHl6wN5ucVEpMyVS/ayEeOLGJs7nztStScWIwVNlZFBXHZO88ec4PodwVl4WoSzI8rPnObKT9Ks/7BJws3GYe3L5CZAboKtfjGIajoRY1K84yh6HafAjt845bq7TuM6Zy2MwJ82/yhqa+3+ltG8tAhojHrDRfLpdZ3OUns1hfsG9tqWd+p0ahIi48oKekROLzXE4x/E5kPPXGip2689K1Ks/7AhzrOZ78eG4B+KnEvS63umaHQQLemCsaDwOk+H3znFzncx1toweg9lQNgvqnfvNxL4+LgHN+yTQJ23oXj9uc12bCZwPgfil80Lu2jcyzw2Vo0UX6he/FrFbwF34NiZwTgQ8x89pNN2XMQQ898fQOmJafddyWoVHQk/e1N3UTv0R2bkqE5iFgN58HJFiJ/u+7FnsXJ9LP2YZYBdylgQ8x89yWN2pAgKe+wWQ1kvCuX3O9082FvWT0TmjCVwS0Idk7WiKuZiACZiACZiACZjAGALSEgc/2t3Hb8YQd1oTMAETMAETMAETMAET2CABi/oNDoqbZAImYAImYAImYAImYAJjCPj4zRhaTmsCJmACRySgn2N55DBPq+AGqjdz/Dx7xOa7KhMwARMwgSMSsKg/ImxXZQImYAJjCEjE86dfd+X+KfenMXmd1gRMwARM4GoR8PGbqzXe7q0JmMCJEZCgvx+bfBZPVzox/G6uCZiACZwMAYv6kxkqN9QETOCKEnigfv8mcT/6L8OvKC932wRMwASuJAGL+is57O60CZjACRFgp9679Cc0YG6qCZiACaxBwGfq16DuOk3ABEyghYB247khln8o5i/Cf5dFzHOz7AvZPaP0pCUd5o7st3Pv6Ku8myqXvy6n/Pe6rv0vg65/VPjXc9erMm1MwARMwARGEPBO/QhYTmoCJmACSxGQKGZH/r0swhzLX4Uj2jF7O/WK58bZ16SLaRHXKT155jLPYvnUVytf4Yj9h3J9NGgu2i7HBEzABCYS8E79RHDOZgImYAJzEZAoZjccUY6YZ5c+GfwfmqJZ1+zo35fL03GS4S/GKaPTKD2i/KksT9TJ87bmURp+Jfg1RnK2/1MjIWGD5TTy+NIETMAETGABAhb1C0B1kSZgAiYwkgBi+6ZEdO1oi8LYvX/bVZbSs3uOkP9ZfgT2kHmpBE+VtlSIc4NuSvtIeZvHgGhfM2yoDY43ARMwARNYgICP3ywA1UWagAmYwEgCCObaERuJaXbv2ZHfez694tjB53gOohqh/lFhtaMxCmszDxVYq6ctUQpTmeFYjVzqoT3VokNhtI2w4vKU1sYETMAETGAhAjcWKtfFmoAJmIAJFBCQOEYYY5viHaG/U3yraFY4x204roPgxs8O/AvZC/mDkZ9yn8l+lMX/WPa1bGWUhuM4GG6EZWGA8A9+xaWjQF8prPlYTdLtlCbt5HNpYwImYAImsBIB79SvBN7VmoAJmECDQBLQKbg6ry7hzM2o7Iwjor+TRaQHI3/r0RuFI+K58fal/OywszjgjHy1SFA4gv6tXHb9b8mSFv89WdImQ91N8U77QlnK80SW+mxMwARMwARWImBRvxJ4V2sCJmACEJAYvpCDOA6iPYaxC46ofse1zAOlS6I/Hbm5jNGr4kj/QywrhbPrjuBP+UK4rnNxfpHFI8rTrwU8ojI/y98sg7Yh/FNZd5SeftiYgAmYgAmsRMDHb1YC72pNwARMICPA8ZZXEsbsnH8myxEZdsLZlSeMc/PJfC3PfYXzOMm0O444/yYliO4juZSbDIuBapeeQOWpzsjrkvhQhsKTWCcZhuM9tI+FAs/FR+TflU3to702JmACJmACKxKwqF8Rvqs2ARMwAQhILLPLnQvwBGYvLArupuhO6YOrNIh9bL7DziLhpxi3k0udwcjPznu1a6/r27JV3ph2ry3K0xZ2WahfTcAETMAEjkrAx2+OituVmYAJmMDyBKIIb4r2tFPPDv5OaRDuf8TWcANtJeLlZ2fexgRMwARM4IQIeKf+hAbLTTUBEzCBEQTYRefpONws+wm/LOKdx18i+NmZfyPL8Z5wlj76dWlRDwQbEzABEzglAhb1pzRabqsJmIAJFBKQQOf8fO0MfTOr0uTn8HvTNvP62gRMwARMYFsEfPxmW+Ph1piACZiACZiACZiACZjAaAIW9aOROYMJmIAJmIAJmIAJmIAJbItAfvyGc5bN1vGnJH66QZOKr03ABEzABEzABEzABEzgiASkyfnjwdtdVSLqeeJBfq4yT5s/DSEPt98ETMAETMAETMAETMAETOB4BPivkE7z/wHHbrNZ+cN5OQAAAABJRU5ErkJggg==", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right)\\\\u \\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\K \\left(P - P_{t}\\right) - \\left(1 - \\beta\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho + c du_{dy} \\rho v + c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right)\\\\ds_{dx} u\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ (c - u)⋅(c⋅du_dx⋅ρ - dP_dx) \n", - "⎢ \n", - "⎢ ⎛ 2 ⎞ \n", - "⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠ \n", - "⎢ \n", - "⎢ dv_dx⋅u \n", - "⎢ \n", - "⎢ dw_dx⋅u \n", - "⎢ \n", - "⎢ ⎛ 2 2 \n", - "⎢K⋅(P - Pₜ) - (1 - β)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ + c⋅du_dy⋅ρ⋅v + c⋅du_dz⋅ρ⋅w + d\n", - "⎢ \n", - "⎣ ds_dx⋅u \n", - "\n", - " ⎤\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎞⎥\n", - "P_dy⋅v + dP_dz⋅w⎠⎥\n", - " ⎥\n", - " ⎦" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "K = Symbol('K')\n", - "p = Symbol('P')\n", - "p_t = Symbol('P_t')\n", - "beta = Symbol('beta')\n", - "v = Symbol('v')\n", - "dp_dy = Symbol('dP_dy')\n", - "du_dy = Symbol('du_dy')\n", - "gamma = Symbol('gamma')\n", - "dv_dy = Symbol('dv_dy')\n", - "\n", - "T_phi = simplify(T_1[4] + T_2[4])\n", - "L_outflow_x1_lower = Matrix([L[0], L[1], L[2], L[3], K*(p - p_t) - (1 - beta)*T_phi, L[5]])\n", - "L_outflow_x1_lower" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\frac{K \\left(P - P_{t}\\right) + \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho + c du_{dy} \\rho v + c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c + u\\right) \\left(2 c^{2} drho_{dx} - c du_{dx} \\rho - dP_{dx}\\right)}{2 c^{2} \\left(c + u\\right)}\\\\\\frac{K \\left(P - P_{t}\\right) + \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho + c du_{dy} \\rho v + c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c + u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right)}{2 c \\rho \\left(c + u\\right)}\\\\dv_{dx}\\\\dw_{dx}\\\\\\frac{K \\left(P - P_{t}\\right) + \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho + c du_{dy} \\rho v + c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c + u\\right) \\left(- c du_{dx} \\rho + dP_{dx}\\right)}{2 \\left(c + u\\right)}\\\\ds_{dx}\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ ⎛ 2 2 \n", - "⎢K⋅(P - Pₜ) + (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ + c⋅du_dy⋅ρ⋅v + c⋅du_dz⋅ρ⋅w + d\n", - "⎢─────────────────────────────────────────────────────────────────────────────\n", - "⎢ 2 \n", - "⎢ 2⋅c ⋅(c + u) \n", - "⎢ \n", - "⎢ ⎛ 2 2 \n", - "⎢ K⋅(P - Pₜ) + (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ + c⋅du_dy⋅ρ⋅v + c⋅du_dz⋅\n", - "⎢ ──────────────────────────────────────────────────────────────────────\n", - "⎢ 2⋅c⋅ρ⋅(c + u) \n", - "⎢ \n", - "⎢ dv_dx \n", - "⎢ \n", - "⎢ dw_dx \n", - "⎢ \n", - "⎢ ⎛ 2 2 \n", - "⎢ K⋅(P - Pₜ) + (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ + c⋅du_dy⋅ρ⋅v + c⋅du_dz⋅\n", - "⎢ ──────────────────────────────────────────────────────────────────────\n", - "⎢ 2⋅(c + u) \n", - "⎢ \n", - "⎣ ds_dx \n", - "\n", - " ⎞ ⎛ 2 ⎞⎤\n", - "P_dy⋅v + dP_dz⋅w⎠ + (c + u)⋅⎝2⋅c ⋅drho_dx - c⋅du_dx⋅ρ - dP_dx⎠⎥\n", - "──────────────────────────────────────────────────────────────⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎞ ⎥\n", - "ρ⋅w + dP_dy⋅v + dP_dz⋅w⎠ + (c + u)⋅(c⋅du_dx⋅ρ - dP_dx) ⎥\n", - "────────────────────────────────────────────────────── ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎞ ⎥\n", - "ρ⋅w + dP_dy⋅v + dP_dz⋅w⎠ + (c + u)⋅(-c⋅du_dx⋅ρ + dP_dx) ⎥\n", - "─────────────────────────────────────────────────────── ⎥\n", - " ⎥\n", - " ⎥\n", - " ⎦" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dQ_dx_outflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_outflow_x1_lower)\n", - "dQ_dx_outflow_x1_lower" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x0 = std::pow(c, 2);\n", - "x1 = c + u;\n", - "x2 = c*rho;\n", - "x3 = du_dx*x2;\n", - "x4 = rho*x0;\n", - "x5 = K*(P - P_t) + (beta - 1)*(dP_dy*v + dP_dz*w + du_dy*v*x2 + du_dz*w*x2 + dv_dy*x4 + dw_dz*x4);\n", - "x6 = (1.0/2.0)/x1;\n", - "x7 = -dP_dx + x3;\n", - "dQ_dx[0] = x6*(x1*(-dP_dx + 2*drho_dx*x0 - x3) + x5)/x0;\n", - "dQ_dx[1] = x6*(x1*x7 + x5)/(c*rho);\n", - "dQ_dx[2] = dv_dx;\n", - "dQ_dx[3] = dw_dx;\n", - "dQ_dx[4] = x6*(-x1*x7 + x5);\n", - "dQ_dx[5] = ds_dx;\n" - ] - } - ], - "source": [ - "drho_dx = Symbol('drho_dx')\n", - "du_dx = Symbol('du_dx')\n", - "dv_dx = Symbol('dv_dx')\n", - "dw_dx = Symbol('dw_dx')\n", - "dp_dx = Symbol('dP_dx')\n", - "ds_dx = Symbol('ds_dx')\n", - "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", - "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", - "\n", - "T_phi = simplify(T_1[4] + T_2[4])\n", - "L_outflow_x1_lower = Matrix([L[0], L[1], L[2], L[3], K*(p - p_t) - (1 - beta)*T_phi, L[5]])\n", - "dQ_dx_outflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_outflow_x1_lower)\n", - "\n", - "common_exprs_lower, final_expr_lower = cse(dQ_dx_outflow_x1_lower, list=False)\n", - "for var, val in common_exprs_lower:\n", - " print(cxxcode(val, assign_to=var))\n", - "print(cxxcode(final_expr_lower, assign_to='dQ_dx'))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 + "cells" : [ + {"cell_type" : "markdown", "metadata" : {}, "source" : ["## Navier-Stokes Characteristic Boundary Conditions (NSCBC)"]}, + { + "cell_type" : "code", + "execution_count" : 1, + "metadata" : {}, + "outputs" : [], + "source" : [ "from sympy import *\n", "init_printing(use_unicode=True)" ] + }, + { + "cell_type" : "markdown", + "metadata" : {}, + "source" : [ + "### Conserved variables\n", + "We start with the Euler equations in conservation-law form, with the vector of conserved variables $U$ and primitive " + "variables $q$. Then we compute the $P$ matrix ($P_{ij} = \\partial U_i / \\partial q_j$) and the $Q_x$, $Q_y$, and $Q_z$ " + "matrices ($Q_{k,ij} = \\partial F_{k,i} / \\partial q_j$, where $F_k$ is the flux vector in the $k$ direction) (Sutherland " + "and Kennedy, 2002)." + ] + }, + { + "cell_type" : "code", + "execution_count" : 2, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAKoAAAA2CAYAAABX0gK6AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAJgElEQVR4Ae2c23UUORCGxxwHACaCNRlwiQDIgE" + "sEmAyW4yd440AGhgi4ZAAbASwZQAawzsD7f7KqUavVPS11tz3DqM7RSK1LqVT6VSppembv7OxsVeniNPDixYub6u2ewqnCVYUfyvuouNKABvYqUAe0" + "M3ORAAkw3yp+aKyVfqX0lwpW00g63k9nb2+uB8OxH8Ghj58oHwuWTTPzuy0BTCaT5USJfxWqVTWNpGIs6p8Unj9/" + "fhKOh2eF72FeTnpufqm+1ceZwtVU2dx56udwbp5z8RuS7UoKvFuedyQriA9oxNZ6qDx8wxKalZ/k+NsH+JI2C3tQIlxOG/pT/" + "VI95HRVWpd5QsYOdbZ+X/G+atpkf1batk18LBT6VeGZ6lq+HjeGnkoS5JuLZuEnXaG7fxTQGzp1pPQnEop/nOcs8yn+D8T5uuLXy/" + "TQ5qp+AFwWjtTms8JNBRbxm5Bj72FKFbkO+Kb4VtiAtPJQLv7WX0pvIlgR05Hkw6I+" + "UHzDZ02KSvmpHb7ogeLmIIUgejagMqmLkPpwi0RxZy4X6TBgqj6zcaQ2+Ox3FTfYSm79qmDbw7ugzzCJ0hn8UZi5aWk/" + "DizJLBM0kR+6SumTBY8+lyQW69J9dOSfgCNkReaGkkBVabjtN5WDhPlV14O8jUpKScjIYG8p3azMUiGn8FNbFjX07Tw6/1Q+i+gi7lEfqa/" + "WVhrKsWC6CEdeVmQ2va06PqoX2m1DqthSbDAg26ZSFiKodjlJyQ1I8QVtHG5h6bnID5zKT+" + "1PFdAlcjgZPM9jPd9VWIzUj1sMi3UwzNj0X4Ij9PRIwS2wPqCyEhqHP5RFA8ctoBwg9AkQNlkkrb6xlj89cyzmV+" + "RRAAxsHchnLgwHomcKSVI9xoPvCB8DeQioLH7JTs4B+" + "SqQid2o5Yf1tOvNFi8sDmA3PeCHM27GYQRYknNpFSwe0oPVyYyn4AiZkT0N1ECRzsk3wZTPBDLhrNCHer6UC2ovB7IxIU4GxQAJoDEwHHEmkLgh1UH" + "2DikfwF+1csUol7bXfOUsfr5NJxJfwJOUoVN5RIaX041baWcwFLMwAW64KEf5wGq7Tg8jpPpdxctCRimOvqstc+" + "Fo3xJBbIV3vPBWRMNPyguVYGUXGTPwj5IjXChsES8RQvkGMB4HSXVZdPGNAFdbAPeeAtclo/" + "kNdjZjoWTCaKCHp0qHuxpz1wKGnlm0vxR6STzW6qG3cX/" + "BVBwhM+N0lAKq+RWtaxRrMDbW4FEQ94bEYwlLHSq+1U5lWBCEd6C0QuWXgumteMQLz5STI7cTRXIs9oaPeO/" + "ZeBWjB4gFZRfkuBIYknibP1D+KZUHaFY9+H6m4gjXq5mDFFBZCb1gGRhsq0gKQzmzXAsFjLGcWLl1ig+" + "apJPiwThRxPuoBvlQtg7EMwTTOZdlPpGRXWXy5f0SevBDnoqj1gLbD/Uooe3wEa/" + "KsNqlpCUboCLEW1upPOwYHL5i0D9WPldG7jBVytzrksmCP3LPfQ31ZaRsbKH030ez68GPnf6m4AiZkd1RC6jKQbHQXGA45zbDJ4BSgBMT3yGVOZ+" + "yU9CfwVhbivQKZrFO2gnEByUfK27cJ6U58a8UQt+aZ+TA/SDmhMv4aI9FgTg0xouGZ7b6DqkuPnfYB3XNnenUV8ZoPYgvrkZS/" + "xFjeEJTcMT4m3HvO3a/" + "P7AmKwnTmsDfxZeeYiKZfHdlYdJIXk6s7+x5Xaz6AIHJMzAwZvI+KMQHFGVlEyftGBz4ldwghCCiX1wZ6vJCRutWQM+Mi8mOv/4lP66L/" + "OQTQsKFuRNmWFr8R+vB1/1PcfJrdePp4zlwhLFo3C/3Xb86t0OKrQSAimM+2QeKBjD5UTLZRHALAaHsN8o/dU8jPlSXUy6gBACkIdInKmuU43Jn/" + "BBvDlvXYln1jCy/FMfg46CEJe74vsqjDKva6EF5nflSHjvEB8Ux2FfKy9KD6ltfyW/" + "7VD4bjnxfGA1nNJ1F1UNLQRrYxpJkZZucSpxIsQxsLZ3Jncqc9uJtp3EWEIvJLClWPF5UGIgnCjExL9auVSb+o+" + "RWPca5UuCtpHgRZulB7W8o2MJuycODymbBkfi43Uhxs7M7oHZ6/PMzAEYSAFOHLuUCSq7l8C0bRSvt/" + "DXFjd9FX3pmUmgT1iWPnQO3YI7Jhxd8Yl4leuB+fRHdST4jjJHtnC7vipXsSiwlAwqAMPbUnKsaFMwJvwFewCCVB1iwsEdq416qVprtmp/" + "PxMBSdj6JDz49PjDjdqR0th58m5/GY4nYy4isrXPILlrU217BKdDMoXte52tO+wFD+k1t72y/" + "WM5RW3nALzeJTPjC9AeV6IHFtLSc+LmdBbpzFlVK+KpwXwrHis1K4omVglq+oPLx6/" + "ruUbGoU65x6G8t+fFyODHfOVsParsoSL1syNhyjxhc7xv+a0deKyQ1ICVzBdX4p3pmu8WSdd6U8mWcpDmkdCZH+ZW8BipQZ4aCAIdVxU+" + "1qxyukF4qv2XB9YxlYxvGomKpOnWUV8lroAK1QmErNLCLPupWTEwVsq2BCtS2PurThmpgT/" + "9Osdg7lBs65irWFmqg+qhbOGm7KHLd+ndx1rdwzBWoWzhpuyjyLn6FemHz7O9Uj32Hhz4u/" + "gvMCxN8AzuqQF12UniXtPneWmm+x+abq867ocuKsf3c69a/7BzyEgffPBnxjRVvBvF2VKUMDVSgZiiroCrWlJc/" + "Kk3UQL2emqjAnOaypFjU+A8vcljsbN1qUS9o6v12z+t+/GitUqYGKlAzFVZSXSA9VDusafJHcSU8d61NPfVPnHGBkMMSb8/" + "zGh+AbP0O34OUPPdmvX9eKa7vn0pZY6kCdaymEvUENqwkf8rgrqAUA1qun9x/YekZ4HIlBVDtpE/dOX5JKza7Q3XrL5xrAQ9/" + "k4NRc0+qZ074ABfAQoDWwEuacKTy1kvUyqu0RgPVoq5R0EDxW5XFlhELCvGW/0qALP2XQZpXCjRQLWqgjLFJbzEB4/uojVnS1o/" + "7ojr1sUADFagFSlMTDk/8A0m8hT9W/uR/" + "AiwT6c9uVbf+svnFcrb+F0Cg5bBEqPekZTodbFUt6qB6uoUCJFs+vuiBlfo8fhLNb9Lrtm+KmTGuFjVfmeaHcuVkf+bA21CDf+" + "ue301tEWqgAjXUxrg0F/eL/" + "hPgODF2q1bd+vPnu+Of5rOoLXI1UIGaobHAP13qnwAzpNmtqhWoefNd8g94eT3U2kkNVKAm1dKbmf0PeL2cakGWBv4HZ/" + "VraflQxkgAAAAASUVORK5CYII=", + "text/latex" : ["$\\displaystyle \\frac{P - c^{2} \\rho^{2} \\frac{\\partial}{\\partial P} e{\\left(\\rho,P " + "\\right)}}{\\rho^{2}}$"], + "text/plain" : [ + " 2 2 ∂ \n", "P - c ⋅ρ ⋅──(e(ρ, P))\n", " ∂P \n", "─────────────────────\n", + " 2 \n", " ρ " + ] + }, + "execution_count" : 2, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# define symbols\n", "rho = Symbol('rho', positive=True) # density\n", "p = Symbol('P', positive=True) # pressure\n", + "u = Symbol('u') # normal velocity\n", "v = Symbol('v') # transverse velocity\n", "w = Symbol('w') # transverse velocity\n", + "s = Symbol('s') # passive scalar\n", "c = Symbol('c') # sound speed\n", + "e = Function('e')(rho, p) # specific internal energy\n", "\n", + "E = rho*e + rho*(u**2 + v**2 + w**2)/2 # total energy density\n", "\n", + "# (this is needed to rewrite the thermodynamic derivatives in terms of the sound speed)\n", + "de_drho = solveset(Eq(c**2, (p - rho**2 * Derivative(e, rho)) / (rho**2 * Derivative(e,p))), Derivative(e, rho)).args[0]\n", + "de_drho" + ] + }, + { + "cell_type" : "code", + "execution_count" : 3, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "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" + "tCFPyaOfys1P3cUdY29zm5vmsDJEeibaxeZjLt+" + "vntXmnstQYzWpY7HsriSRhpr5XtFsrxf8xxXJtl4eeRuHHgfvSABGXbNoyf53PXTAWzm27UyeDPQ8+" + "0WLBMntS6BaBNS0WcQRVhRNz3SzMgc2n7t0IsRu4+d8NU2a+" + "S7GqwBCZvnAEjJITl52bhLwHq1WALNI9mk4ofQQcPTcbB9EzgRAvybUIx6pVmKkTv2l+SaTzv0tF/" + "myzI6X5QxKk218S2prPu0mGcfld1hWXhh3P25TSP83Ul6jwmsQ4CObOvuXh0Co3n+YOs65eFU1yXwRsk/" + "6JFwX2Efe4yonkMXDWKEjvl1GyeNzKdlwfArzdXGtzR+XT3m2SWyf/sYXn+JqDHu/ttuhB/77JtAKQQw7DYjFeoYWL8jv7Q7/lJ4WccJE1C9Z3rCZ/" + "nc4DRO6zz2ZF4qLxkV41pdtNdbIaoNowPjrdmtm7Y4Zk1fmqrhuyanoWmb51BSV8cdyetfkZpfqAgS9osloMrOt7BeaqFDeIdQrfN5FDsTuK4EGKV7" + "oXbwUD4vUOB/o+3SjKWYV0cb/kEacXe18EmU0rQ24tqfWvimmkteN89xpXM0r/" + "OLiwuGxvnW0F01No+" + "EjCsAH20CJmACJrCDgPoUpk48kE9nZWcCJjAjAbUzPvjPQMg5j2XtTMAETMAETGAOAozclfaCxxz5dJwmUBQBG3dFFYfFmIAJmMBpENDoAfMAmW/3/" + "jRy5FyYQD0EbNzVU1ZWagImYAI1EYg3ej1yV1OpWetJELBxdxLF6EyYgAmYQHEE+PzJY43gXRanzIJM4MQJ+" + "G3ZEy9gZ88ETMAE1iDQGnUetVsDvtO89gQ8cnftq4ABmIAJmIAJmIAJnBIBG3enVJrOiwmYgAmYgAmYwLUnYOPu2lcBAzABEzABEzABEzglAjbuTqk" + "0nRcTMAETMAETMIFrTwDjjn+leK7l87WnYQAmYAImYAImYAImUCcBXmDCnjvjbdk7WviLGAL9yrog2JmACZhA6QT0NuqLViP/Lcv/" + "tfJfs0X+hWRNWksv91r1uQ6MK7mJvPhHGOy5V34sO463jzYBEzCB1Qnows//gb+X/" + "6OWX7T+o5Z3WudmvShXk9aiwJ2QGNeBcYWZg5eNu3HMfbQJmIAJrEpAF37+HPym/LchROs8dWGbu/" + "ZiXE1ai4F2YkJcB8YVaC5eNu7GcffRJmACJrA2gacS8LFHBP/h+kidA//" + "pWoqrSWspzE5Nh+vAuBLNwsvG3TjoPtoETMAE1ibAvJq+F+Bivh37S3E1aS2F2anpcB0YV6JZeN0Yl6aPNoFlCLSjDzx+uq3lk7ZfRcpav6f15/" + "Kbt4LkP9E2k8vva90vBQUo+ydHQPV7yKjcrRIyXpPWfbyUDzpbRlO4ttzRwjzHMKS1abeLwKnUgV35yx2ek5dH7nKXjuPLReAnVXQmivOoKd4KjLh/" + "0goX2XBx0X0QAfZN4EQJhOG27yZmiAG4BJ6atPby0DWIa89T+dxM8tIKcxp5mcVuGIHq68CwbGY7KhsvG3fZysQR5SKgi+g9xYVRh3uspfsIijvpd+" + "zE6Xg+48McJN9NA8TuuhNgtLsWV6xWXVd4IvBEfvOEoAX6QT4vs3ANsstDoNg6kCd72WMZxMuPZbNzd4QZCPyhi2dMGP9W8f0ccSocw4+" + "RCQy61H3QPht3KRGvnyKB7o1Omse46+e7dyW4mrT28XqtQEbrUhdPDEoZHU21lbheex1Ymmk2Xh65W7ronN5BAjLSmkdO8rlz5iK6mW+" + "nde6YL7Xvo/zUfUo3vG4Cp0gg2oby1mdcRFgRNzk1ae3WFWnnOgPPXzv7YsSue/3pHOZNCNRcB9YowZy8bNytUYJOcygBHsl+TCo85xG2NWqn/" + "Yzm+WILHbvrQID6HyNIaX5j5G6rfaQHrLBek9YUT/M5is61h/" + "3faeHJQhEGdCq44PVa68BaSLPwwrj7c5uD8NfKkNM1gS4BOrDuRbQv7DtdbEvq0Lr58LYJ5CTwRpH1vTx0X+Hdm6Gc6U6Jqyataf4YoWN+" + "3ca1N5HcSGL42Q0nUGsdGJ7DvEcew+svIQXj7r/" + "tRvixz74JrE2A0bh41HSmiysXXEYnMPAa14ZtXq6IcPsmcKoEVOeZpvBZPtMWGqd12gnzU59dhZTxW5PWINay5BrDtaZxbRidLm/" + "N+ilBy2WIV2MdGJKvuY45kte/QteNWLFvAqURUCXne1IvWaTtUgsTxf+q5XUStvUNPO2zM4HrQIBRuhdqBw/l0y7wv9F2iYZHTVqFsZnXi8/" + "15wdW5O5q4ZMoJfJtBBb+U1sdWBvn0bzOLy4u7ikXfLfnripu9xHY2hl0+iZgAiZgAiawGAH1g9xMPpBPB2tnAtUQUJ3lw/" + "8MiJzzWNbOBEzABEzABEzgigDTPzyH17WhagI27qouPos3ARMwARPIRUAjHsxdZL7d+" + "1xxOh4TWIOAjbs1qDtNEzABEzCBEgnEW8geuSuxdKxpMAEbd4NR+" + "UATMAETMIETJ8DnTx5rBI8XuOxMoFoCflu22qKzcBMwARMwgZwEWqPOo3Y5oTquVQh45G4V7E7UBEzABEzABEzABOYh4JG7ebhei1h1l8tbZTEBme9" + "AvVFYFXe9NWvvVq5Tyks3b942ARMwARMYT8DG3XhmPuMLAYy5/" + "2NTPkbef7Scs12Bq1l7F+8p5aWbN2+bgAmYgAmMJODHsiOB+" + "fAtAulHPu9oT02TkGvWvlUI2jilvHTz5m0TMAETMIGRBBi5418pnmv5PPLcSYdrhId/xOBxHoYAoz1/" + "KOytfLvKCKjc0n80eSH51fyhds3au9XklPLSzZu3TcAE5iega4j75fkxL5EC06Kw584w7hhx4e9WCJx15EUVCGPuJ/kbI0Dr/D/" + "imRYbeIJTo1PZUX/4H8bq/nexZu3dunJKeenmzdsmYALzENB1w/3yPGjXiJWBM/rjV0s/luUDkRiTqUPI6zTA6/UQ0IWBEbvGsNN6/" + "Ml2FRmoWXsX8CnlpZs3b5uACcxKwP3yrHjXiXxR404d0G9a0vlBZ9rm0d5N+dw9zOYUf9eonC2tsRGXrG1fXqT7d+" + "3HoPuP1v8nvxkO3ndOKftq1t5leGJ5cTvtFrC3TWBGArp+rNYvky2l7zY/Q/nyWHZRp4KM0R0eAWPQxePYW1onLLtr08SITOeIZU/" + "niAjvSOMTLb8cEUe2U6WDoV3mYDzUevoInbcy0+0tQz2bgCMj6tOvMEYYz+T/2Po1aaedMH3huRbW/6nlvtab+iy/" + "yLzAeYxTPrg2uJ2OgeZjTSADgbbtERN9MNeY2ftlEnObh8I8bjHjToVIhfmHFh7hbb6FpvV3ZE3+LIaX4n2i6G/LX8RwUjp0UI+1YCDh0rmMMMCI/" + "aAFDjSkM/ncOd3T8r2WV4St5ZQ+GtHyi5b/" + "sa3lUktMuF1L2qB00dunX2H8Efh3gyJZ6aA92r+VpObuti0L2grbs7SZNbKvfC3WTpXW6DYKE51XTDtdo4yc5ukRUJ3merl4vwxJpb1Ym2/" + "TG93u12zzSrsZkJD2f2vhO7Lc4A++5v+JTC/" + "kEMqbsRvDLkm3LyzZPW1VaVFxeYGjGa2ZFsu4s5QWRhHGHe4j61qetgvrjLLQMf9T6+" + "hrnNYxPmNkpg1dxcP4fCU9NDzK67JVgbGKUVq669WvfHAnOrhhrJTJXu3SQn1qboJaXX+XX3peWqmHPZXNou1U6U1qo+SEc+WV0E4Pg/" + "URJnCYwOL9MpLUjhZt822ak9r9Gm1eaTLl6b18BoG45mDDvNN6c5NPfg65JY277yWGTqnrHiiAlyrmcFTcueLeqVcFwCgXri+/" + "hKOJyg2T1BGO5slOaT/S0o13cHw6Nww6RrlSdg+1nRoYg+Mcc2Bm/" + "fFo4UzxUiaz6p9Lu3RjWG+9iay0ZjXujs3LmDLXsYu307Y+IHNsG+" + "Wco9spkdiZQAEE1uiXyfbibZ5Ej2j3i7V5aaRMeGKW9l8MsrCd9sna3O0WMe4kEkMG1+2gYnRok4mrw7L9fqu013jMmT6S7ctMWN+" + "3052tVjQHr3T30HXOPeb8SKdrULDdPJaKA2byc+pPjTmM3llGiBMOubRvDNG2LtDQU+" + "2XSZpzrebKyxB9a7TTSW2UzKgsuKYc206HcPExJjAbgfbaQvxL98ukuUabJ91J7X7hNs+89q0yQbgcU4vox7g2H3RLGXd0RogNo+ZMAln/" + "Scs3WrI7xd8YjtkjHhZh81hWGvoKiBjisW3fqAEjMsyxKsE1o0PKBw2CCsV2NI4S9O3T8Fk7Wc6kn7q2qyw4pDRHe2m0y2dke+OUF+7qUkNvs6/" + "GFeVnrXZ6TBsFdUnttMait+aVCajtLd4vk+UV2zzJH9Pul2rz9LFx/UdzuKY/" + "1sagPvhGnDXGV+EQOdYllYOOk+fCkbA2ex1GHBMC45Elo1bfaJs4Rjmdc1MnYBgy0RDHZMPNCwpNyFUhDuoEFd+U/LTJ9HrE15t2m3/" + "2o7fP4OA8KuAaI45KduOeaQ2Nn+RTtoyuYlj0aVZwcY7Psnwn/" + "Y1xJH9tnmMAMb+CuaLcqdE+mOPFY4ymLLR+qK3p0PWddGZrp4qrpDYK3MXb6T4GLWvaJ9fC37W9Vd+1/" + "Ubhz+SPvt7qvElOae0sM+2jbqCXfuCTtjd6tU4959oz1xMdRf/" + "FKZ2pOunLaJvNJ6Dkc6NCO+VN9kU479P+JYd717L1y6QiPdnafBvfzrLZm6vdO4mv2L655bdb/" + "dWeW4cOYP+NIQelxyhxKi+PiaJCA4vJf80fyKfHpus6nsp+9HfQFA/p8dyZlxQaQ0M+jQxjL31xgk6d4/" + "Y6nTspP7sibbWwO30keKZwjGDyzwUA7bsuXFzYyOOqrtWXakzXV9U2JHHppwH3NuIh5695TM3ag5vykK2dKq7S2ijZXLSdDmDQvDim47i+" + "vNaSGksYUXxqafMZI23P6o7RK2F0Xsz5nf2ac6RO+hyMmXD0cVzn6Xtmv/YM0B66dvqKI0u/" + "TAKKK1ubb+Mrrd0v0ebDcKNcdrm0zu06Zpxxp8LjwsFFgrvDcB+" + "0grH3SMusFVrx03AwmrhbSkeQqFRbxhSatHzWstMpjjnyE4YZ34ijcoajYvC2S2qAxr7URzP5tDOBKgmojmdrp4W2UcplsXZ6iEGrhVFeHKP+" + "3eseYR/ZuYSboLc7Es1TA17gmtVN0NnlyrX+5xCp+JiTDOdufuKQbP4h7WjJltiAiJRetjZPcjPl71T65q25+ruK58auHTvCuSPsGidhiGysSRUM/" + "1aQxSmu8ySiGInDmOSbNTgyitHUrcxYwPusX84dlB8OHOG4kJ5Jz9S7ZC4MG5a70lX8sIjKmh7WWP7a3zdKyqdZ9urS/" + "ixlp3jSckv1NevaX6z+mrV3Qa+Ul5zttMQ2CuZB7bRbHhO3DzH4oHIO4435uhuDo01vywiZqGHMacfqnd04ajMzWad431McXKe7/" + "Q5lsYT+Q9qbLEpLlut5y2vLU9zpNT5nmyedQfnbEnR4Y5G++bCMvUd0byDSg2NUL6ajpfu+Wh9s3KkguUBQmX/" + "txBIGRlxczjqF3jn8qE3Seqv4+e7LUW5MfkYmhMYNi5HncvgQoxTGfcYb4YxG8o8XkxjpvLTBTpA/" + "7BSlU63+mrV3S2emvGRpp9JGPIOuOd18Hdg+to0S/" + "aB2ekDHwd1DGOiYSyJKjk0fyXLz3WeEHEx7ygGJhp39RKKXaxXaNnrbNHkKNOn6NVRzBp3UoUvF073W84RmVjdEewjQsYtcz5VeljaP7jH5i3wO9I9" + "t97O3eeWdOkV2aBddF2GDbh5udM/es82IDyM/" + "l51jmBvBt9F6E1T4Pe0HKuchjmOPmUsRjx8U1V6HBRww+g6clJ++iCKszSub3bu5OGSIj2a025lAzQRytNNS2yjlslQ7HcOAY+" + "M7lVF3MKDOdG3qGiGxP7c/Ri8jKV296Bn02OlI4WN1dvs+tG9d59vr/" + "xKcx2jfYGr15eyLN3G3KznaPFFNyl9XTLrd5p2grTJLjxmwvlSbR2M8EU1lYVziBuVhjHFHpdiKtAWG8XafFLtO+" + "4HBRF8Kq3Fa543ZMy1TDDwMyN6Gr/iYC5jGybF9gK6EXBmcg/KjeHkMfBkn7vFhhHt35U36pQB7DeVJsWU6CQaK6qc2uuC66Nt3U7NSs/" + "bIc2V5yNVOB19z4KNlqTZKsSzVTgczkCbaZde42Bgh4sOLFb8O5KRDJ7mj9Eobxmg84pskYOBJY3V2r8mwTvsbkuXt/" + "O60pYFyRh02RnsTsXQN7ot1LPGTD3xGVWlXnB/" + "GBW8yd3nkavNKpkn3OvfNb8Qgna8PExx2Vvcmo9nR93OjL7Ab1lYMKnMU7lkbhojuyw3p6Q+0EYZAhNNwebu22zBi/" + "z6fDG89zmt1EN6FwUXuYV9kY/LTHvsf+UDtNWKTNBjFPNNxWxUz2T9ktSnAIQcufEzzx/WRpvIY5Zi+XBO7S/" + "Nr1h4sa8rD0e1U9YvOZNA1pz12yTZKmczeTscwaCsJHWx6jb6nba7B8djzruKko57FTdDLNRoDonE6n/JmSsmUvqGN5bA3UScsG6fz0QznTd/" + "Whh1zU38V+YHfCdojxsF9sdLgxZAoi25/S9smn93r/" + "tFtHqFj8tceu2S7n73Ntwz4+08M6M2AVZtX5tPy6ZpBbpBxp5iiAZJgvMhA4W4+R9KXmo7FyNkyiBTGMDx32UPvtDdR6xwyzXlUpJjbwPZWBWxP+" + "Lt8jM8+Nzg/" + "ivtSCxdN0mH56uKoMAwdGkNzAdA2lZ+XPKbMG0FbX34UvKr7Xvl5oyUMV8qAsHtauqMFqwrtSbxm7ZGdavKg+" + "pCjnZbcRimTJdrpYAZtJWG05bX40zaZdM11i+svNwZct7kmzulG6ZUm+pOXWrhON4aR1qdcM8fmaapOrvNc/2H7Vy2wjrCtb/" + "Vp31xulPYQIZ1j++LNiG/E0frkfWPUxj7Fn6PNE93g/CnNU+6bo90yQAVzfL4LPLivvaEThjgKmpErLhajGp/" + "OCWOQRnFTS9yVceezMZR0HPt+0hIZ+" + "bkvIwoblD7najnT0md8jMqP4uCOl8cFvU77shhjiqdpNPLDgOpNb6VA8vhhpbSPTbZm7ZH3qvKgOnxsOy2yjVIYC7bTsQy4nm6mwETF2RGW7M62Oko" + "vqYpllmvnyBzk0tnHeqSU0YeP1h4piPWgvrg9HiPrWSI7ZvwAAAhWSURBVJyb+JRX9OFJcFOWx7Z54huVP+" + "XpJPtm5Yu2fFTbGGrcUdC9BUpp9DmJw1j7hxbuzjbGitbjDg1DMXUcyxwujDJGwNje+2Hk9OQd69zBAqgLaXR+" + "FAffrRvFYIemfcHceaP5GEelYMnqlPd4tBPxwpRR2MF3EnHiAT+7/" + "pq1B6sF8xBJZi+" + "HiLjH72unpbZR5Odopz0YvgqawuCrSBYMqEVvLTr7im60dl07biqiwX2xjmeQgXPSfpsw2imPbLv9qYJHu742TySj86dzaumbR0M65oQ/" + "HTq5rRgU7PtDx3b2U3h0/psKkuzfCtMx3FGk32raPAZNzhm9qngxSJjDgf7GaZ1KOyo/7TmMKM7mWo1o7RpRo9LU+TS+o+I4lKDix/" + "hmJHPrkfuh84bsn1t/zdqD35x5SNKYvR4laW21U+WvyDaKXmnj2nF0O4287/" + "KnMNgV1xLhteitRWdfmR2hfXBf3KaLgXWphakgP7BonWs+gy85DLszxbPV5hU3YUW2e+" + "lapM3DIKe7MSAyJmLitgyyq6C9v7yZ1TdsTXzd4V4qTFppmjQFlQp2rEMDczoY7sVNyQ+VfNCQ81USk36Zu5EymBTJ3Ce1FZ2LxWL/" + "n5grTzVrDwankIfIS8dP22mpbRTJS7XTKQw6SBfdrEVvLTr7Cm+q9jF9MenSV3JzN3efl7Z50p2SP/fNkOtxf+oJ6wYxz+qxCnqwoaVjscBxW4/" + "sFP5EYYzmbR5vtsdiGZNOOAp9c0wETvEVP7p5ozfmG0zJz6yVvNWGxu6j6ilZnu0c6aOceMze1Ae227DZ0swVcc3ag8Ep5CHy0vWVt7SdFtdG0SuNX" + "EOWaqejGXSZLrxdi95adPYV32jtqrOD++IkQUbumulTSVj21U6bJ/4p+XPfvKNkzi8uLhhu/" + "V0LExOzGReKizg38+" + "20jWHACBpvfHAhb5zWMfh4C7P5knZ7HBWrupGhqxyd5m9bLoxaMN8oHCONlPGmPGNHSX7N2oPjKeQh8mLfBExgOQK6dgzqi1HUXmc+" + "aTWrPbBcbq93Sio/Rml5A/18yGPZqbT4Hguv4GM84m5r2TLsmtCrIWD+Uoy7YowEPrFiw66FU5DHBYK7QPyNU7kV/yhZYmvWHqxPIQ+RF/" + "smYALLERjUF7d9cExfYoT6Zy1F37gvh7C+" + "lGYbuRuKQpWHTotK9HboOT7OBEzABEzABEzABEzgCwHZUZuRuyFz7r6cOc8aI3tjX9aYR4ljNQETMAETMAETMIHKCaxq3MnKZB4eb+" + "V46LfyimT5JmACJmACJmACZRCYc87dwRzKqOMFjnjGf/B4H2ACJmACJmACJmACJrCfwKojd/" + "ulea8JmIAJmIAJmIAJmMBYAjbuxhLz8SZgAiZgAiZgAiZQMIFVH8sWzMXSTMAETKBoAprWwj/" + "F4P6thU9I8empbN8qJeJcriatkecaNYf2En3zXLZUPHK3LG+nZgImYAJHE1BHySek3svnI+J8pZ+Pi7/" + "TOi+pFeVq0hrgatQc2kv0zXP5UrFxtzxzp2gCJmACkwmoo+RbVjflb74NqnW+OMA2/yJTjKtJa0CrUXNoL9E3z3VKxcbdOtydqgmYgAlMJcB/b2/" + "9b3cb0Xv5j9SZ8k8ypbiatAazGjWH9hJ981yhVGzcrQDdSZqACZjAEQT4Y/" + "fPPefHfDv2l+Jq0hrMatQc2kv0zXOFUrmxQppO0gQmE9CoBJPImUCOYxI5c478EewGh39OncDAUblbJXCoSWvwqlFzaC/RN8/jS0UMMY4Z/" + "aSfu6OFPi9u5LTZ72zc9XNxaIEEVKHfSRYVu3kk1VZ6jL3nBcq1JBOYg0AYbvtuaEp5LFuT1iirGjWH9hJ98zyiVNTH0b8xv7bp49o+j5ep/" + "u9QtH4se4iQ9xdBQJWaOxbmE6VzjXhDkIpuZwIm8IXA7S+rxa/VpDVg1qg5tJfom2dPqaive6LgJ/LTwYsPCsPYYzRvr/PI3V483lkaAVVqRu/" + "eaOE/" + "if3XdaUVkPXMTaBvrl2kGaMkMW0hwtfya9IajGrUHNpL9M1zeqm81qkMYKSOQQ7cwdF5j9xdgfJv4QRkyDHHgO95ccfC5x4+KSw+4qpNOxM4fQKq8/" + "E4tu/iHmEH5+MsQaomrcGjRs2hvUTfPKeVirjRz9Gef+3EECN2HzvhX23auPsKiQNKJaAKz3y7c+ljxO43LT9oOzq0UmVblwnkJkDdjzv4NO4YuWN/" + "Ka4mrcGsRs2hvUTfPMeXSvP5GPVvl51Tv9P2Hwo/eANn465DzpvlEVBF5m+VPoUyrfuRbMCwfx0JMC3hQU/" + "G7yvso9pHt0PoOXSxoJq0BpQaNYf2En3zHF8qjNAxv27j1K7vaYMFw++gs3F3EJEPKIBAPIrdSFFFZ7Lpq8I6so0+" + "r5jAXARU518p7s9tG2iS0Toj2N9qedYEFPJTk9ZAVqPm0F6ib57jSqVty4zMx0j8WRuGkfxc6wcfyZLiDX7sTKBwAnRYvCnb/O1Sq/" + "VS2+lbRIVnwfJMICsBRukY0X4onxco8L8ZeuHXsUu6mrQGlxo1h/YSffMcXioxr45pSD+0p/" + "FN16dj2vf5xcUFw3x8TuKuTjz4HLdNyJ4JmIAJmIAJmIAJmEBGArLDeGHwgXwM4lFO5zAA8lL+uR/" + "LjkLng03ABEzABEzABExgNgKM3B39UpSNu9nKxxGbgAmYgAmYgAmYwDACGnFj7izz7d4PO2P3UemcO74b1j3yrcIGvZnRPdHbJmACJmACJmACJmACg" + "wnEW/AHR+5km/EFCQzBXodxxzy7XRPTPQevF5sDTcAETMAETMAETCArAT5/8liG25DPGe39iP//A4GYuCdy0iliAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}1 & 0 & 0 & 0 & 0 & 0\\\\u & \\rho & 0 & 0 & 0 & 0\\\\v & 0 & " + "\\rho & 0 & 0 & 0\\\\w & 0 & 0 & \\rho & 0 & 0\\\\\\rho \\frac{\\partial}{\\partial \\rho} " + "e{\\left(\\rho,P \\right)} + \\frac{u^{2}}{2} + \\frac{v^{2}}{2} + \\frac{w^{2}}{2} + " + "e{\\left(\\rho,P \\right)} & \\rho u & \\rho v & \\rho w & \\rho \\frac{\\partial}{\\partial P} " + "e{\\left(\\rho,P \\right)} & 0\\\\s & 0 & 0 & 0 & 0 & \\rho\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ 1 0 0 0 0 0⎤\n", + "⎢ ⎥\n", + "⎢ u ρ 0 0 0 0⎥\n", + "⎢ ⎥\n", + "⎢ v 0 ρ 0 0 0⎥\n", + "⎢ ⎥\n", + "⎢ w 0 0 ρ 0 0⎥\n", + "⎢ ⎥\n", + "⎢ 2 2 2 ⎥\n", + "⎢ ∂ u v w ∂ ⎥\n", + "⎢ρ⋅──(e(ρ, P)) + ── + ── + ── + e(ρ, P) ρ⋅u ρ⋅v ρ⋅w ρ⋅──(e(ρ, P)) 0⎥\n", + "⎢ ∂ρ 2 2 2 ∂P ⎥\n", + "⎢ ⎥\n", + "⎣ s 0 0 0 0 ρ⎦" + ] + }, + "execution_count" : 3, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute the P matrix from Sutherland and Kennedy (2003)\n", "U = Matrix([rho, rho*u, rho*v, rho*w, E, rho*s])\n", + "q = Matrix([rho, u, v, w, p, s])\n", "P = simplify(Matrix(BlockMatrix(Derivative(U, q, evaluate=True).T)).T)\n", "P" + ] + }, + { + "cell_type" : "code", + "execution_count" : 4, + "metadata" : {}, + "outputs" : [], + "source" : [ + "# compute the Q_n matrix\n", "F_n = Matrix([rho*u, # flux vector in normal direction\n", " rho*u**2 + p,\n", + " rho*v*u,\n", " rho*w*u,\n", " (E + p)*u,\n", " rho*s*u])\n", + "Q_n = simplify(Matrix(BlockMatrix(Derivative(F_n, q, evaluate=True).T)).T)" + ] + }, + { + "cell_type" : "code", + "execution_count" : 5, + "metadata" : {}, + "outputs" : [], + "source" : [ + "# compute the Q_t1 matrix\n", "F_t1 = Matrix([rho*v,\n", " rho*u*v,\n", " rho*v**2 + p,\n", + " rho*w*v,\n", " (E + p)*v,\n", " rho*s*v])\n", + "Q_t1 = simplify(Matrix(BlockMatrix(Derivative(F_t1, q, evaluate=True).T)).T)" + ] + }, + { + "cell_type" : "code", + "execution_count" : 6, + "metadata" : {}, + "outputs" : [], + "source" : [ + "# compute the Q_t2 matrix\n", "F_t2 = Matrix([rho*w,\n", " rho*u*w,\n", " rho*v*w,\n", + " rho*w**2 + p,\n", " (E + p)*w,\n", " rho*s*w])\n", + "Q_t2 = simplify(Matrix(BlockMatrix(Derivative(F_t2, q, evaluate=True).T)).T)\n" + ] + }, + { + "cell_type" : "markdown", + "metadata" : {}, + "source" : [ + "### Primitive variables\n", + "Now we compute the coefficient matrices $A_x$, $A_y$, and $A_z$ for the primitive equations ($A = P^{-1} Q$):" + ] + }, + { + "cell_type" : "code", + "execution_count" : 7, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAANIAAACWCAYAAACrUNY4AAAACXBIWXMAAA7EAAAOxAGVKw4bAAARuElEQVR4Ae1dXW7duBW2Cz8P0hjoAu4AXYCdrG" + "CcHSQzQN+T7GCCPCVvwcwO0rwXyDQ7SLoCJ15AgcwCCjQwuoC23yfrXPHKvLpHFikeSoeATIrkJT9+h0f8EXV8/OrVq7Ojo6MvuGLuw+vXr5/" + "EEjzOGVgTA9CDr2jvJtZmpB2fBAm/IszMofs9vPGwM7BiBn6JtP0R4h4zPlSkt9AsV5wIWzmiwLUI5t8o/3tcv8zNv2PoJHuIC6T/tct9E0IcA40i/" + "eEmyv/OyQAEwKn0JfwXuDgTeIHrI8LRqUMObI6hYzUFF65IHZ+zhCC0Z6joHvwPUiHC1wjz/" + "q3E5fQdQ8duKi5ckTpO5wpx8+YqUtkl4i4g2HuRtNRRjqFjNAkXrkgdoXOFLlDRt0hlsj5lem7nGDqGk3Bx0pW3P9Q+JTkl4aL4C+53Fl64/" + "zvin8LnFMWMAx6SxCcOcW1wcU0iHRa38zrUrRlt7udE5Rg6dlNyoR2RXqJSLoo/4pLdpgYR4qlgj+FbUyLifAJcz3FxMc/" + "1x773ZUiaxYmSDHGlUbYpYB1Dx14yLg4qEjrhGerl/J2O++b9aQnjYnN+5i/igJlbklTu5wGAzwhzkc9RyrI7NQDOMXRCUHFxUJFQ3u/" + "ofLLD9CPu+ztL7Jjvu3pNhN4Bxc7IiXtO7ehyP/Fvaon/" + "7T+" + "EwlzydOR7pZzOMXTsJuPioCJBiZppSPskZyfcro8Qx87JuE8dtrKhAOdvPSQyEhUbPYVL4Iops8RlXcM5hq5XpOTioCJ11TaLdo5O10Fc81YXccU6Z" + "4BFgs12Zg8n037CRfxZO6qAGPD50JHRMcwmI9IcDyXH0DGfhIsxikTh9xWG66NG8Oigz3DJU7WDOX+IIw/" + "XQ1sHXFzn8aKSlXbc4XwQAXGOuCtgDR9UkWxJohxDR2MSLsYo0s6TvO2c7BCiXN/P1Ak6Cnoh1E9FpsLL0/" + "2ojSNZ3L0TrL1fzncLDJwaf4PfjOasGWHi5vrzKe9zO8fQMZyKi5OuyIMhbiG/" + "Q8VcxHNBTMXiU5SHLX+Gb2HDQdZBfF9ETHR898Vt8OJK1KC5+SO8PcQtuaT/" + "w8wYHcONLPh3MhfHwfdIHFF2Rp2unjpCwM8dxQfwSYw7ZyArA+" + "hnfIfKryaOx0ztsoJKVDhHpDkW64ngejFLYWAxioSngqyPLpciHG9HPQwsRpFAueyE+YhUT/" + "9bDNIlKRK3vB9hZJpj+3gxHcAbkoaBMbt2aWrMVEqrQD4aZeLXix1mYEkj0nBLPdUZyMjAYkakjBx50RkZaDeJ+" + "DKaL8yrfW3hipSxk3jRwwxAcXhsi68s6LjrWq1zRapWdPUDhyLxtAnPF26PS9XaKl8j1So5x22KgdEjEp4e8sEcz4gVMWxoisE7grHAowUMd6Qv+c+" + "mcjFqREJlX9CCooYNkzNYoEALPFrAUID6aJUpuFArEiorbtgwykJlkRZ4tIDBithScaFWJDS8+" + "fI0QgDPts1l2DBSfXVRFni0gMGK4JJwMUaRuE35LdJ6+fRCtjEjWTwqYMACjxYwBJQUDSbh4kTTBAx/" + "mj3+" + "7VepmjJT52kxmjZiaYFHCxhE9sCyQZgm09iZN7hvPhqFTxuK2V1KLlSKhBaJkgwdCNUoW05yaMSSX8bynQTNcYXWjsSIJYfxks4CjxYwNDKArDib4Z" + "fXpVwyLsZM7Q419vRQhlzpEMgZypbvkKowYjnARTEeA0wWMARwigZVXGgVKbY2ktaJVvO9UilXixFLCzxawFCqn/TrTcaFamqHJ/" + "41LoKITd8kTjYd+mCz3xMfK4HPuTbxhNM6zsMZV/wTC+LEBSjleLSAgQQAx//oDznkOR5Kn5qWkgsqErXyb7j+ewAYOyI7Zd/" + "JiFS8owIY10DWjVha4LE4htxK0u+kA/dTuPgnyqXuHHFqR0X4SxuGt9fRNpx8zh1mOsfNXIYNw3pjYSr6VS/" + "BmhFLCzxawNATU7HbKVz8GaipO40iqVqAJwinS0UNGyqA7kwvgZmbEFR+US4LRiyL81iJLBXinp4lFRec2o1xHH1oEPIh/" + "FKGDYfw1mDEkvgt8GgBw5As50ybzMWiDETOybzX5QxgQOH7ycZA5NgRydlzBpIzgA7JXdWXuGSW8wZxMh1PXl+" + "OArnZ4M4ZKM3APwDgPZSHR4Pe4OJ9Vc4VqSpxLQ8slIf/7OBzMAJxw4j/opSjVDXOFakaUS0WKA+tcgtaXPOKBYp0LRE1+K5INUhpoRjbUWeD5oX/" + "GI4v1eV/" + "FlfTct9sqEZUiwR6wVbJ6AOfSsU4bkdX5VyRqhLX4sDy1MkHKBDXSZzK0ZjOuSgWwtU4KtJ3LVrxqwHvQKtngOshbnVXN5Vrmf+TSIBrpP+0N+" + "JLmvvOQG4GeITLwmHnu7bzX/" + "JD32wQJtyflYF2PfSpxmlcjChfI8VY8bjsDECB+L6Ia6RFOB+RFiFGb0RpBlyRSkvA618EA6OndhiSzdv+" + "rgGjhd5jgScLGCiLqThGjUiozLzt7xowGlGi4rK0IqsUONSKhMr47QUPE273/" + "BHmSzTevzXSOcxjdJ5uGLDSn1LhUCsSms8zULFvRC4RfwFAFk7r1oDxpieV/WuBJwsYKIUkOMYo0gUq/" + "RaRv9hJYHppVwPG0hyxfgs8WcCQjIsTjVSVo819TVm58lSEkdNPnin7Asw0hLJ1uOfnBE/hZ/uEwAJPFjCQ9JQ4tCOSKMmQgEtP7WrASPvk/" + "Ar0Iy7Z/aRMKVQq2GP4Qxw3eSf+scCTBQykMRkOKhKnZvy4KjZtQ7TanapzlstYDCMU5AzN5nqSzrp98mI83dDT/" + "LWAgUCGcPCcIHWnsWu3gc9dN9FOxvfdkJLJ72i4oqSzjtGKfXILPFnAwL46FQfXec2OtWpqF0w3YtM3iZNNhyLKZB2j4INP8snZdn2EOD7MGJf9JLT" + "gaOuDt+NmkaUFDGx1ShwqRWqpnmIjeUdaGW9qwMjt1tL2yS3wZAEDu2ISHGMUiTtK1m1/" + "14CRo88VJRi4ue2TW+DJAgaKIAkOtSJhGCxuszroeNFgDRgBfGcKDMzchJjVPrkFnixgYCdKhUP1HokVtu4cvmXb34RpHaMV++" + "QWeLKAIUmfcdvfpNGdM3AHBjCa8d1fY/tbPbW7Qz3+E2dgNQy4Iq1G1N7QnAy4IuVk18teDQOuSKsRtTc0JwNUpO/" + "aCsTPWZ+" + "X7QwsiQE3ELkkaXpbijHgBiKLUe8VL5IBXyMtUqzeqLkZcEWam3Gvb5EMuCItUqzeqLkZGHvWjof85BNpfshH2wM8e7dzEHPuRvTrc4x9RuzeW5HVV" + "ByjRiRUVtyo4KEu4RgPMWQn3YqsUuBQKxIqM2980THaUZJDSKzIKhUOtSKBmCSG9A4RPDHdMU4kcMafW5FVEhxjFIm2BmLGImR9xPTSzjGWloC+" + "fiuySoLjRNNuDH9iFGMou1gTGsqTLc0x6qhteVq9kUqylbLPcESSM3bixyQiSnIdS2zjNMo28PPJSY5RR6Ebqex4mtpnspy1O+" + "3wmQ2tGiOewGeQzGUrHTdSqeumQ31m9Fm72NpIYIhWu4FIYWS/" + "X5pHN1K5K5tk8lBtNuBJJlO62PRN4mTTYRfqTHeO8TDRwhF8LrApt9UaqSRbwkfLBaNCN6pfqxSpLT2JIb0QaYawY9SRyi1fN1J5w1WSPjNGkZIY0t" + "PJ+c65HKOOug2yXfWyrtFIJSlI0mfUioRh0A1E9nreXW6N8LgzDQcmbkKszkgl5ZdKHqr3SEGHsWLQL4B0K+" + "gYb1FyK8KNVO5SMrnPuIHIXUL9zhlQM4DRzA1EqtnyjM6AggH1GklRlmdxBlbLgCvSakXvDU/JgCtSSja9rNUyQEXiVmiKf8a8WhK94atlgC9zR/" + "0z5tUy5Q13BgYY4FGr5p8xj32PNFBm2SRsRfJs1MsWxab1nyL+uiwyr30NDCxGkSAsWjNqhlkKDmE+" + "KWishZaO3DkDWRlY0mbDMygPh1pxNBu2QRyPv7hzBrIysCRF4mj0OStbXrgzsIeB0VM7POFNGogEru23NW1bqVj8VKB/" + "ynkPFfNGW+" + "DRAoZ5Wd9f21QuRo1IqMy8gUhSBZyczj3GxcOI5pwFHi1gsCKYFFyoFQmVmTcQScEA5wYeR81zhM3t2Fng0QIGysqCS8WFWpHQ6CSG9HKSB1KoRC/" + "gP8J1zfs2Lme1Y8u2wKMFDGN5y5U/CRdjFIk7YjFjEfKRWLhjlqvRe8ttFYZb3m8RPuOFML+7iWHeW84MCRZ4tIBhBqpVVSTh4kRTFTqlGIIYyn5/" + "KDFVGrBw2iYWizh1+4w4bihw/" + "Uac9LcOadt3S9vIIIB0EsmnEsuSEU0eDkHO6UHUVZxHQxiKGqmkNFNyoVIk1ClKws62z2k6yb7fHoxHo9nJP+" + "Li1O0DfwCfIxCVgFO5PzJujMNvqJT34DfKBp9KRUUcXZay3uI8AqcFDDRSSTlyQ+gdru2OK+KoYI/" + "hU665XTIuxkztDjXq9FCGielUog8guFGitqwf4TN+tGuFSIGFIxbfQ1GxqFClXG4eNe3KhgHcngFALUYqyZWKC+" + "2INLTOEK2W6ZZGUKPygHyOPByR3oQ/" + "RPyUkYNPQq6hQsc66HKNrkV5vGna4JoxuyyBIXy3xwfhjkxxz4dYPw5RWVwyeahGJHRYmdLFOpjEZVlXtPSR8E8BjkmsohwKi7h/" + "6xUkIxHXXMldgF84C+uQuJw8HpXGIPXDFxmE0zo+yMgDP0/" + "I7gQLKhLuwzolTiUPlSK1pScxpBci1YTRWDaI152mcHvqaLY8AyIl208I8ImpIk9+NNIvwmMPowUMlEFpI5WkJQkXYxQpiSG9nkAP3gad/" + "TqWGekyisSS98XxNzvn8lAO5+68ci9yi/DYI8ICBo4+/ZF/biOVpCUJF2pFQkcraSCSdd/q4MDEXbeheS6J2nH4DUc3ClHWA0dtHAl9jnBfuDu/" + "n3qD8kvy2MC3gAFAdkZ9YOJDbFYjlSQjFRcnLGyEO0defvfzED43F+j/gPvcnY8dnPVScb7ioqNCvEFcdKRqcsT/" + "yAjG7def2yz8ZukJ7rO2I4BThMegfgZLY7BipDIJF6szEAll4Q7gA/" + "jsSO6cgTszgD60agORHJG4wHTnDCRjQL1GSlZjwYLwBJH10WVBGF71AhlYlSJBflzM0vmIdMOD/" + "03EwNoUiVvezScWifjzYpyBhoGxu3ZV04apHXf4fDSqWoo2wa9tRLIpBUdVPQOuSNWL0BtggQFXJAtScAzVM+" + "CKVL0IvQEWGHBFsiAFx1A9A6N37bDzxfNudDxrxzNqPAO3cwCRiSWdY9Sxb4EnCxh0bA3nGjUiodG0Z3AJnwc+f0WYBw8/" + "IrwZrma+VMeo49oCTxYw6Ng6nEutSGi0eQORjvGwwJnDAk8WMOjY0uVSKxKK4/" + "dAsc8MeG7tAsTwHFtp5xh1ErDAkwUMOrYUucYoEk9Nf4uUKesjppd2jlEnAQs8WcCgY0uR60SRh1MBzWiz/" + "eJUU2bqPI5Rx6gFnixgIFstjiSGKrUjkigJz6rtcxpl2/fbFPGOUceiBZ4sYCBbNFTJTTMa1pHdaMZTycRQ5VCfb/" + "Lyj1aRtj8YCJwOpFlJcow6SVjgKSsGKMoZqJDv0mh0pb9sYVxsTyDKoFaR+" + "pWEhcnTJZuByLCygbBjHCAnSLLAkwUMNAUmVntpN5EmCELHNdz7MGIorFIkVCjDW2z6JnGy6TBUX7Y0x6ij1gJPljAACxWGfXiSoUqVIrUiSmJITyf" + "uO+dyjDrqLPBkAQPZ4jb8ZEOVYxSJdt/" + "kU20CEHeOwFXwlJH4Er5j1LFugScLGMjWBtdVj7bRhirVigRFKW7YsNfYW7eO8RYl0QgLPFnA0JKzsyQBLm5CjDZUqXqPFEiDo8/" + "sBiKD+jVBx6hhqbyBSKK0IKskhipXZyBS18c8lzNwmAGMXqs2EHmYIc/" + "hDIxkQL1GGlmuZ3cGVsWAK9KqxO2NzcVAuNnwFXO+fj38n63cZ3fnDKyaAegB/wsKt8qjjorE7b/wHxKHGXe2BsMEDzsDK2Ng51Brv+3/" + "B6YuG4JXZLzHAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}u & \\rho & 0 & 0 & 0 & 0\\\\0 & u & 0 & 0 & \\frac{1}{\\rho} & " + "0\\\\0 & 0 & u & 0 & 0 & 0\\\\0 & 0 & 0 & u & 0 & 0\\\\0 & c^{2} \\rho & 0 & 0 & u & 0\\\\0 & 0 & 0 & " + "0 & 0 & u\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡u ρ 0 0 0 0⎤\n", "⎢ ⎥\n", "⎢ 1 ⎥\n", "⎢0 u 0 0 ─ 0⎥\n", + "⎢ ρ ⎥\n", "⎢ ⎥\n", "⎢0 0 u 0 0 0⎥\n", "⎢ ⎥\n", + "⎢0 0 0 u 0 0⎥\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", "⎢0 c ⋅ρ 0 0 u 0⎥\n", + "⎢ ⎥\n", "⎣0 0 0 0 0 u⎦" + ] + }, + "execution_count" : 7, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute the A_n matrix from Sutherland and Kennedy (2003)\n", + "# (this is the primitive variable flux matrix in the normal direction)\n", + "A_n = simplify(Inverse(P) * Q_n).subs(Derivative(e,rho), de_drho)\n", "A_n" + ] + }, + { + "cell_type" : "code", + "execution_count" : 8, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAM0AAACWCAYAAAB99QxdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAR3ElEQVR4Ae1dXY7cNhIeL+" + "Y58MbAHmAM7AHG9gkyvoGTAPue5AYx8mS/" + "GfENHL8vsIlv4OwJxjsHWMA5wAIxBjnA7n6fmiWwNWyRaomqoroIaEiRGtXHr1jij6jqey9evLg8Ozv7F45UePfy5csvUwWe5wxslQG0+Y+" + "o20Wqfii7dx4VvEaaF8fht/jE087AiTDwY6KeT5H3jPmx0byBFZk2EuCTyvwO7A9x/" + "GgdM0m2FCxwaB0D8P001BnymNUZzZ+GhVbPAZpDyGvEz3GwV3yO4z3SyW7Uaj00cVngcAsYmjAaEP0tGtt9xO+" + "k0SF9izTP30iex4cZsMDhVjA0YTRoClyMuEk0iWvkXUEZ9xNlnrXPgAUON4GhFaO5gv4/" + "7beB7kzmYCz3MM6ABQ43geF8nOddaXiSc4j0AMdHnPcTJaS54sZ5Rj902v3XMn+D7NzNPs9dsGY5MLNx8KnKIeQFDvIjBo7TdYMFDreEobSn+" + "QGV5uSbwyFZwRLNs8F+LScVYjEINsBDwczwDDyRny8Rf4eDixWccx16D3aoPkvnW+" + "BwMxiyRgPFX0KDNBYGrlUPn5jfJPJ47ZqBPaB6AFdcknxGg4nAfECaixjsfSwHCxw2gaFkePYbFC6T8K+g9VcDzQ+NaFA8+" + "zQ1l5GbytOL720shLcAwd4lDhyeMWj2hhY43AyGkp6mGxaFpygV389nuqawW72qMp/h/SG3k49kqtFJXm3DDVU9HAEnexLi+XlwlfQw8uAZFNc/" + "tcDhljBkjSZSaTc0iyovRWt0qb9CmDyxRS5j6WlYrh265dQEP5zvsbfWNmwLHG4CwxSjYaPde1qiIXAMv8bLxV8g5zGOYXiEjJtEQx1et8Y5exTOX/" + "oAXJwP8qBBaQcLHG4CwxSjocH0T3s0CKYvEFd/gkIGh4SfEHd7f9j6kOZQiHMsLkSohoCFfEjPJ/" + "jYSLiKtvew0QALDOocbgVDyUJAp2NUmO8auKmTDeE9M5HmMvRagb0KN2g+QcyJP+MvcK7eIIFD5i3k6HucM3BDKZeeLeDrAOGPBQ6bx3Av+" + "p7mIRRcvdcQ7W0pBm8coj5GzAbhYYMMQLd8uc9O496U4dkGqVisSuxpLCxGLFYhv9FhBtxoDnNTVIInD+dWnM9cF/" + "2DX9Q8A24081Uoq3re08znsok7uNHMVxOXmZ+ix7mdfyu/" + "QwsMFK+etVAZDYzBWLyX0SBfSab3NErEu9h2GXCjaVd3jlyJATcaJeJdbLsMuNG0qztHrsSAG40S8S62XQYmrZ5hpUg+debeL3fWN9B7C/" + "xYwNg6huKeBhXld+7urG9gKHLaAj8WMG4BQ5HRoKLurE+sIxG3wI8FjFvBUGQ0aCfdV4mJ9sL9Vu6srw1+LOhwExhKjYa7eD8ljEY+JWD5KYcW+" + "LGAcRMYznMtHV0qd/HmQv/" + "FYu7CqeVBvoqjwhKs2vy0gtECT0thKOlpxCDGNiSWGFaJflPXaDoqTOEZ5mnzM8STOreAcTMYSowmpYRh3oNhxhLneDJc4j7ynYpVR4UlVa3CT4ngC" + "ddYwNgEhuzwDKSn5jKiC3l61HLWp+2oUOo5FmvyM4YrLrOAcTMYsj0NnvYyLEsNwSRPFgRiRc1Oi2zE9EJDWas6KiypgGAM+Ib/" + "UpWfobBD5xYwbgkDjYZPgL/j+O8h0pGv7eRN01HhCC19kTY/" + "PZCRhAWMLWP4N7ilnZzRaDjE+ltII0oGum2Sz3rjCx7hZA1nfReUEwsOvc8ajgpjsYfS2vwcwhXnW8DYMoa/" + "gkzaSWc0MbHJNBooh0WazvpoMDScLgAP06s4KgwiRyMD/IziY6EFjFvBULIQIAphr6LirA9kazsqFA7GYjV+xkANyixgbB6DOwsctCo/" + "dQZSDODBzRfs7iwwRY7nOQM5BrgQ4MEZcAYmMOBGM4Esv9QZIANuNN4OnIGJDLjRTCTML3cG3Gi8DTgDExmY8p5m4q39cmcgzQCWb7knj79ix1+" + "J43ubpgKN5rOAWOKmKuBg22IARsLPPa4CatnQ2kIl/iIgaTR/hBOJpcxjZ2BxBmA03BLF/Yr976cuLqTODf8jt/" + "U5jTDhsTNQyMCkOQ2eDqrOArXlF3Jq+jLncKeeOTwU9zQQouosUFu+aUsoBOcc9gYzqy0XGQ3I5ma1+4jfiX6QvkWa59W/" + "adGWL3VuOXYOd9pbgocio4E4bSdv2vJbthfB7hzumJjNQ6nRcInwk7AfxeIbQJYQo6JFk9ryF62M0s2cwx3xs3k4zykQ3VnJWjo/" + "ma4StOWXVCpg5BD2AY6POOeXrl1A+iMS/IiuH9qGotWigC8nr5oOY8HAcoHz73Cw8fLrWy4u/Y74NeKqYSkeskaDWgiZnMMcCiWGdeh/c/" + "na8nP4WE6HhjQMvnt4i6M3GqSJ/" + "2scakYTMCA609IhZXcBHHF08jycrh0t0pZKh2e5yvEJqxnU5KMRXKLi16Hy7tBQsxUsIzvblkp6mtRcRuCJ5dZyFkg52vKlrodid2h4iBl7+" + "Yu0pazR4El6i4PVTw3BJE8WBBanSVt+rkLEx2sQjzk0rD5eH8NphUPg+" + "N8YzsDjvdw1x5YvxQONhg2eE7MxK9R28qYtv0RP7tAwwxIabTWDyIiOi49tS/w/2kn35SZXM/" + "iCUoZazB8GbSdv2vKHfKTOyeNNXIBGwt6n+svfWOZIugUOR+AvVnQsD1dA0OmyaCEAyld1Fqgtv1BdNBgaTheAmWl3aBj4sBIt0Zayc5qoso+" + "QVnEWGDBoy4+ouJuEMtyh4V1arObMakvuLNCqWh2XKQbwUOydBU7paUxVwsG0zQAaIVdef8DB1xVPcLxC3t6cEHkmQ9GcxiRyB9U6A/9EBf4BQ+Fy/" + "CscPG8iuNE0oaZtgYShfI8afYh6Fr724Kcn8t7PdIXdaEyrZ7Pg+L6DS78SHjMBo+leFEum1diNxqpmNoor9CYXqN6HqIr8xkVzQ2sEJZ/" + "0hYA8R37FsgzwJWHfq8CIaEDM4zJwE8GNpgk1bQoktxu9g7FwXsPh2EMcj3DexNAMWM9oNJ8xgSDx7sz/" + "OgN1GOD8hcvLzQzHAg29s0DOaf4ImRKHU4+cgSoMXOKu3PzYWnBnga1pbAt4w/" + "zl15aGYinefU6TYsXzqjAAY+H7GM5pmg6+5Ny0+" + "hy8BgNuNBqsu8ymGZg0PEP36r6cR9Stzc8INFNFFniag6G4p4GQWf5v52pNW34Ov3V8OfxrlVvgaS6GIqOBEPflPNKqtPkZgWaqyAJPS2AoMhowP9v" + "/7UztacvPwbeOL4d/" + "rXILPM3GUGo0V2D1U4JZcd3E8ppBW36ubtbx5fCvVW6Bp9kYznNsoTsr+" + "cZhzJNNTsRoubb8UXAotI5P8Aecav6mLfC0FAb2NLLnTGLhWWIxiLENdSWGJfebGmvLz+G1jk/w0980v5K8xiGroFLGOtDfdM1ggac5GBbfe/" + "agJtsF99aWn4Ooig/GcgmANBYGy/6mVXna0dP98kNI7kX93rPs8Az/lprLyN3Eck/" + "Zl7M2P6KLsdiCv2kLPC2CIbsQgKeUDMtSQzDJkwWBMcUdVaYtPwfaOj7iF4yIx/" + "xNV92qLxgAR9pMTK3kVWtHMQ9zMWSNJtTsWP+3MTFz0tryc9it4xP82v6mLfA0G0Op0Rzr/1aUNTfWlp/Dbx2f4L9A4kZOGIfeZy1/" + "0xZ4mo2hyGhArPtyjlvaIK3NzwDO2CkNhobTBeBmejV/0xZ4WgJDyUJAoLhzfOC+nIWNu/EjZGnycxfRIAcNxoK/" + "aQs8zcLgvpwHDctPnYEUA3jg9L6ci4ZnqZt4njNwqgy40Zyq5r3eRzPgRnM0df6Pp8qAG82pat7rfTQDNBq+hc39UO3RAvwfnYGNMMCXopN+" + "qHYj9fZqOANHM8DvcLqXwFPe0xwtbev/iOVI7p3ir3oxXOyis2+QfxvSHm2IATeaZZTJl5pd183bIc0nEh2R0Lm3h40x4AsByyj0WxgKu28J/" + "MiL21P4HYuHjTHgRrOMQtnLxD9StMxd/" + "S4mGZg0PMOTUz6T5UdnHHpwWFL1G4iYNW35MZY4DVzc0BoHGlH84Vdcppq2yuHapMzhobingRB3FligWfDEIRk/" + "9uKmQFNBW4dWyJjLQ5HRQIg7CyzQOHi6wGXsjc39spe2DgvoW+" + "WSJXgoMhrUZraDtZmMaMvPwg8Gw633T3Hc8jzkZf93pQvMc9gKD6VGw5WhlFMCmc/EK0c16q4tf7ROwTi4zPwG6UseSD/" + "HkeJs9F4VC01zWLHew1vP5uF8eMfhORqAOD0YFsXn4pUmzlskrS0/rgSwcOglnnf44vID8vg1JOd75IlxH1DWv7vpM0MCZVQen/" + "68D4d17KXkIYTT5QLuq6pDqUnA0bzDwqzRoMJiEFTuoVCilEP/" + "m8vXln8GZbNRv8fBht15bUHMnoWNnsOxPyMuDriexncfcWdUiGlANLhJ9ykWqK9DgUqHheSQCyVvccSrjtQzHRbW9IqzSFsqHZ6hLqPhwWhp/" + "cLa8mkw/BnvWKFfIY/5k0JoMM8Qx70Q3/HQiGg8WqEqh6jbJSp2HSrXtMPCkp5mbFwulitDlhoKV5UPZbNHYU/zKq4c8o/tFfiE5XwnDrw/" + "Q60eW5XDXdX23lvxgbPHJ86rDE2DbIkW4SHb06BxyLAspVDJq1Zhbflgmwpe5BeJURf2JOTsZxxxkB7mJs5cKm2AwzPBgLh5h4VZowmKm+" + "1gbWYDUJEPBbOB85g8DDtQ327ZVxpQdA3H8txBUO3hg/" + "urcBjVUZLNOywsNZrZDtaEsSNjFflR475N4Ua59BCp4lQer+f8pQ+4B8f6PGhQNYMKh4kKcSi616OCA/" + "Y+HAavEWbzUGQ0qNQpOwtk3e80aHDCFbCxMfJeA8D17LHYYGQeeBbyqMTvkN5rSHv/" + "vMAJ7q+qw6gKrCd56AJwMd2Uw8Jiv2dBwWwofOpy4v8Ex6vayoaMLmjKh2zWm+HjLuqGbD8hP9kDhWv2IlzLpykNhBtdmWZgmi9EqxpMJwl/" + "IIeGq6bDCAd7FT48umEvcMVLz3JZtfgYHvA/vd+zYqOpVoMTuTFIZ0N5jNjcRs4TUcGsasZGUzQ8myXN/" + "1kY4HyGk3EPjTPgRrOCAvGUkvnM9QriXERlBtxoKhMcbv84xN7TrMN3VSluNFXp7W/" + "OZebuk4E+" + "xxPNMnDeLPKGgGN4xlU272Ua0tkYVO9pxtjxMmcgwYAbTYIUz3IGxhhwoxljx8ucgQQDbjQJUjzLGRhjwI1mjB0vcwYSDExaPcMqkOzB4t4zdxY4IF" + "SbnwGc5KkFjBYwJMkpzCzuaVBRfsN+jZjfeL9Gml8fvkf6olDWrMu05efAW8dH/BYwWsCQ02WuvMhoUFF3FjjCpDY/I9D6IgsYLWDoCZmRKDIa3L/" + "74jAhh3uprkAG91bVDNryc3Wzjo/4LWC0gCGny2x5qdFwh27qgyv5PJflNYO2/FzdrOMjfgsYLWDI6TJbfp67orAX6b9GzN1varm2/Bxe6/" + "iI3wJGCxgiLmY5LCzpacQguH/" + "qUKg5PNOWf6jOkm8dH3FawGgBA7mgw0IuZHFqIavBzGcgRjo5GQ0lRjN6g1BY1dFcAQBt+TmI1vERvwWMVTHAWC5RT/" + "mm6WiHhdnhGYSk5jIkmUGeHpt1Frir5uhfbX5GwYVCCxgtYIh/" + "aOtoh4XZngbWKcOy1BBM8mRBoESBk67Rlp8Dax0f8VvAaAkDsNCxCdvu0KEHV4Jj18Ok707IGk34D21Hc9ry7xA3yLCOj3AtYLSAgVzMclhYajS/" + "QJB8skuhEh4hcRM9RSR/" + "6Vhbfq4+1vERvwWMFjCQiwscN0xICL1PkcPCIqPBDVUdzWnLF2IPxdbxEbcFjBYwBB3SYGg4XQAuposdFpYsBIRbdz+" + "8yl9zfoIMcRb4Bc73LFYurhCzV9OUn6uSdXzEbwGjOga0We6fpJNG9nzisJDL0EXBnQUW0eQXnToDMLDew2bR8OzUCfP6OwMxA240MRuedgYKGHCjK" + "SDJL3EGYgbihYCPGLfFZUzzdya5nduDM3AyDKDN89chuKKWDDQavs2PfzQ1vrDam/5YiKedAWMMDDdy7sH7P8g37P1jYSDkAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}v & 0 & \\rho & 0 & 0 & 0\\\\0 & v & 0 & 0 & 0 & 0\\\\0 & 0 & v " + "& 0 & \\frac{1}{\\rho} & 0\\\\0 & 0 & 0 & v & 0 & 0\\\\0 & 0 & c^{2} \\rho & 0 & v & 0\\\\0 & 0 & 0 & " + "0 & 0 & v\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡v 0 ρ 0 0 0⎤\n", "⎢ ⎥\n", "⎢0 v 0 0 0 0⎥\n", "⎢ ⎥\n", + "⎢ 1 ⎥\n", "⎢0 0 v 0 ─ 0⎥\n", "⎢ ρ ⎥\n", "⎢ ⎥\n", + "⎢0 0 0 v 0 0⎥\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", "⎢0 0 c ⋅ρ 0 v 0⎥\n", + "⎢ ⎥\n", "⎣0 0 0 0 0 v⎦" + ] + }, + "execution_count" : 8, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "# compute the A_t1 matrix\n", "A_t1 = simplify(Inverse(P) * Q_t1).subs(Derivative(e,rho), de_drho)\n", "A_t1" ] + }, + { + "cell_type" : "code", + "execution_count" : 9, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAOIAAACWCAYAAADDo1QAAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAS1klEQVR4Ae1dXY7VOBa+" + "jOoZMYM0711Is4AqWEHDDmiQ5r2bHTTiCd5QswOa95Gmmx3Qs4KiawEj0QsYCVRiATPzfSEnuHIdx849cU5yj6WUHTvX/vwdH//" + "FOXXj+fPnZ7vd7ndcMff2xYsX38USPM4ZcAbyGYAefcDTp7FfIO3GSZDwCmE+HLo/whsPOwPOwGQGfor88gHiHjI+VMTX0MzVKh6wS0U/" + "ol53cP20ZH2s4aGwt+Cs8ZqLB8/93OcfcYxqFPFP/cQ13qNCnFpfwH+KiyP7U1zvEI5OBeauozU8c9e3Vv7WeNXEs3pFBBk/oCHcgv9WGgTCVwjz/" + "rXE1fKt4alV77nLscarNp7VKyIaADeTLiMN4QJx90HYrUjanFHW8MxZ15p5W+NVFc8WFPE+" + "WsOnSIuQ9S7TazpreGrWfc6yrPGqiuckh7l2VOEU8DauD7jvFp4I8/XHE/hPmBd8Lj65cXKOMKeIsznknzPa/" + "WU2AL2MreHpwRu9BX42Lvb0lNspLq65pUPD7TLOGq9z4MkdEZ+hcG6CcLonu5MilWcIUGjiRIh3JWJGX5QspfA5yqoF0Rqe7HpBvpTrd/" + "DZqXKzi+vroffL2fkqPWiNV3U8o4oIoZyBTCogHd979KeB7EXfMZEOz/8Gj2u2xXtS4oHjKG7JWcNDmXEW8xB+M6tpyXoPn5tglO8anDVei/DkTE3/" + "gDBkM+QRJPJSpIJ4KilHHCpf6N4jrYYi9juFEIP0WnyvWMtZw5Nb7zd4kKNg6GSWU3NGEZYfhq3xqo4nZ0Rspn1QLPaaFEq3PkSYveVVoKi4bVz/" + "hI7Eq/" + "oot8GGTGONReJqdAhNvazhySEbmClDcvVL73kZCS978dVvrfE6B55RRQxY57T0MgDBJMZdGw2RzlGypvBYvvTeCHZORsRr+LrU+" + "QLW8IzVtNmG78mVv3mMi7Ohah3ZCFBrvKriKVFENva+UGJxjyG8mo3/" + "V+CKbQydI77fcYzIWiXZGp6xSnHk43qwc21nyg6VSmrFWeNVFU+JInKUk+neDsKiADnqUBkb18Z1GzcSP6ePMjlV/gSfU+fGIUycXM9+/" + "yWm3l9reFI1b3mi/GT2sGvj2Mi4e1pzZpOCSlyblvNJsvZBIojgOyUeDOe29hUuboJ8g+tNEHftHSPSajmOfjzkfQ8+cdH/" + "FvdLNSRreEBH1Mk6kLL9sX2CB+b5GmMp7qJA20hrvKrhuRF8j3gH5PennilSPG3lDEDe7FTvwmeDcleZAfDOQzIc3G6UTE0rw/" + "TiKjDAEbHmer5CldZZhCviOuV2MGr0wlxHc314cXBmnsHBDLgiHkzhajOQnWYfEQ2I0BXRgBAWgsBXFg8wMnLjzd3CDGTvmi6M04tXZqBVQB8NlXmd" + "mp2PiFOZ8985A4oMuCIqkulZOQNTGXBFnMqc/84ZUGTAFVGRTM/" + "KGZjKgCviVOb8d86AIgOTdk2x4ybmMniuc3Fjvop8qGW1Jo4c63Sxa3FXPCKi4N8B24wx3+kUzvfLNXHkWKe3A03uihQRBZsy5judwvl+" + "uSaOHOv0dqDNXZEiAnbzNXcEPs8rLmHMNwJl8ag1ceRYpzcXVe5KFZGn9T9FsMvnU0w/" + "drcmjhzr9Naqyt1JLg4MxTytP+a6L73HHjwkvcXiBo8PINGSPMeqYQ3rHHhKRkRRstQh4RxlHeM9J90NHuewlH7GkjzTSL+a8rDQ9ohVnbsSRRwji+" + "m3cx465Bn0Rmf4vXxD5waPDyFz/" + "Lezy3McQvYT1rAW4cmemoKO2NpQWJIegu8V53Zu8FiHYSvyzKmNNazqeLJHRIxEMi2ITT8lTjZtcsid9IzggO8Gjycx+" + "OVHwiPuRHZhbhI3uzzDQofC1rDOgYeKSO3+B67/" + "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" + "RkHmi5iUu3q/" + "aFa0RV11TB78JBqB8P6Ii74MRkJtOt3DfrXnXWFFXxDVK7bgx86wpdyzF8fjdDorYvCOVyLX5rohrk9gR421HPe7svg9o4OdIb4P7VQan7JqusqIOe" + "hMM8DVLN/pBMamUjOPu5aqdK+KqxXd04Hki6C0UkOtETkXv4DrH/aqnpajDzhWRLLhbCwNcD/JVxeqnon3CuUbkrhMXwJ/" + "6iX7vDBhj4Ax4eMZzK451oe7tqIicZ7/" + "GxSNO7pwBkwy068HftjANDQjm+pa651PTgJSjCqJB870bT6fQsTOm+" + "95qQwcuzty4Rtyk8zXiJsWaVSmeF26mRXwaYfbMtFnLDRB3lRng1NTdcTLwA5SPUyNxNMREg0xch7mrzIArYmXCDRXH0TB8MW4I2vFBmTQ1Ra/p//" + "tipK1Y5CiEDHyh9TYmUTFDmzbh4x4eYEBLzsUjIgr2/30xIBSJtsiRYIv5wMvpKO3YrP6ESqx+c8VpyrlIEVGw/" + "++LEala5CgFGXhPkc4ZziZOqKTqqpmmLeciRURFVO39KxFjDZM1PIM0t0rIr/" + "Uf4KKVPm7WUDHdjTOgKudSReQuW+wEjhgiCnfhxqui84Q1TNbwRFluFY6vLF4jfMYLYVrRjsk3mseRR6rK+SSXTAiKL4DHXNXTOdYwWcNDYQFT8/" + "8hWsHxcLR8VMu1PmVKv3N4vnu32EUGAaSzAXI0YF4cPTmiSkeMWz2HfInP3P/" + "paHGNVbRIF7IVEaVKxhTAkCNxNZ01TGbwoLFQSWiFjYrSHJKGzxGQSsSp6J/hFzn8hkrNr+EbZYVPpaQiF+eVWbDV/" + "9OhLufSqekYf7fHHlgg3RqmWniohPxkKPxS4RHiJplIRD7cVX0oStjKke8hqZhUSFWHPM+Q4UWb6Rr/T0eRnEtGxNTaQXqIj6rSGM/" + "MGiYTeNCIOfJxRHwZUoj4Q0auN8ir/" + "5+YWAbdHDOh8J0mO5CuLq2Sssz+lxicds8yTWYlA6cu5+wRERWUKWmMdImrQULHhzVMhvCw4ap9qYB6ccSjjH/pyP8SkJHwshd/" + "8K1wCZ8jMcsODyCwXO7y9sv9cHDBGRkINjwq7T78lcQV6UK2IrYladj7D0FrhK1hWhQPGgkbAq9JU9ABgTRb9UEDlMceI8CRq6jRyY8zfav/" + "p0NVzqWKqGrvP1MQY49Zw7QonkBZrmLEIV1GsVjyUBx/c+1cKvLhGo4XlXROx+lvX9FjcY+BicpRy6nKuUgRUVH/" + "3xcjYjbCEeW0pyDAxl3P1Ppmr3b4DUdXNnzZB9i1cWyITxDuTw/" + "38jgwgvkTQ+NQHjsFYiGmxrVxmjMAyXrQR5mqulBsch8ASAoFyh6XmzP3cC1q8twaJgt4gIEyopN1E+X2M+" + "Ipt2yH57lGo9LxO0WG6RjmQYC5lbApDOVw84lO2hyVgJtH7FQY9wHPMK6qQ5nkdLIu4Pedyf1iRaxaUy9scQZaJbgL/" + "3xxMBsDECpi0dR0Yzx4dfIY4FSw5torD9XGnnJF3JhANauDHptTL67FLjTz9bz2GXBF3OfEY74ycLcN+" + "oj4lZNZQq6Is9C6mUz5yqL5RGozNTJakROjuByWAQYwNeWOpI+" + "GFWThI2IFkr0IZ2CMAVfEMYY83RmowIArYgWSvQhnYIwBV8QxhjzdGajAgCtiBZK9CGdgjIFJu6bYTZNzjDxrynOH/D8K/" + "RPyY2WrplvDZA1PimzHmmKnTlrxiAih0UbJBXzaQnmFML/" + "afofwaR3I+6VYw2QNzz5jX2Mc61culgwVKSKE5gaGR6RlkaMhyI51iJn68UWKCHjNl9oRmDyLeB+" + "C5dnE2s4aJmt4UvJwrCl2KqaVKiJP4vMbsL6T9SHTaztrmKzhScnDsabYqZh2kltW5mjXfcWdm+8hz1nDZA1PilvHmmInntZyNovB45IRUZSM5w+" + "HXO2pqTVM1vAMyYnxjjXFTjyNBo+5QcmlmLw5kCefIXAqN/CpJ7yXL1iCpP1giSLu/3o/" + "psio6v7PZ4mxhskanhTpjrVlBwp4hqB8l6lu8Dh7agoQsbWhCFF6VzcwLIzs+0txtI/" + "kS4xFeVrGOqvB4+wRET2CTElj00+" + "Jk02bIUJV461hsoYnRbZjTbGznyZ8wacBLbb30FgVN70OMnicrYgtNH6bxnlv30lvv8S3a9YwWcPTl1V471hDNvLCsxg8LlXEX4E1tvg8R/" + "yl9Bp59VF7yhoma3hSRDvWFDvxNA5E/ZlfLK7I4HGRIkLRVI2qxutZFmsNkzU8KTYda4qdwbRLpMhSbAcOOS3ljJDK2Lg2rsjgcclmjZTD0Y+HvO/" + "BFwPD3+KeAJdy1jBZw5OSi2NNsdNLQzvnGWsaV6bR4ytc1IFvcL0J4ooNHruBYTDozhlYggEobmfpu2hqugRYL9MZOAYGXBGPQcpeR/" + "MMuCKaF5EDPAYGws0aLjD7deb/YOenMu6cAWfgAAagR/yvXN3Oaj8rKiLfiTzpJ7T3/fclA495tDPgDIww0D8kfu3x/" + "wNHhotWv0LW7AAAAABJRU5ErkJggg==", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}w & 0 & 0 & \\rho & 0 & 0\\\\0 & w & 0 & 0 & 0 & 0\\\\0 & 0 & w " + "& 0 & 0 & 0\\\\0 & 0 & 0 & w & \\frac{1}{\\rho} & 0\\\\0 & 0 & 0 & c^{2} \\rho & w & 0\\\\0 & 0 & 0 & " + "0 & 0 & w\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡w 0 0 ρ 0 0⎤\n", "⎢ ⎥\n", "⎢0 w 0 0 0 0⎥\n", "⎢ ⎥\n", + "⎢0 0 w 0 0 0⎥\n", "⎢ ⎥\n", "⎢ 1 ⎥\n", "⎢0 0 0 w ─ 0⎥\n", + "⎢ ρ ⎥\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", "⎢0 0 0 c ⋅ρ w 0⎥\n", + "⎢ ⎥\n", "⎣0 0 0 0 0 w⎦" + ] + }, + "execution_count" : 9, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "# compute the A_t2 matrix\n", "A_t2 = simplify(Inverse(P) * Q_t2).subs(Derivative(e,rho), de_drho)\n", "A_t2" ] + }, + { + "cell_type" : "markdown", + "metadata" : {}, + "source" : [ + "### Characteristic variables\n", "We compute the eigenvalues $\\lambda$ and eigenvectors $S$ of the $A_x$ matrix.\n", "\n", + "Then we compute the vector $\\mathcal{L} = \\lambda S^{-1} \\frac{dq}{dx}$ and the transverse vectors $\\mathcal{T}_y = " + "S^{-1} A_y \\frac{dq}{dy}$ and $\\mathcal{T}_z = S^{-1} A_z \\frac{dq}{dz}$." + ] + }, + { + "cell_type" : "code", + "execution_count" : 10, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "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" + "ZwRknHvWrmQLjQCNk+dA+" + "VnWsUPKoYUU80IgEAI89td9JknjvMLFj5ybnJwAHQUhIASmEeBhCdrjhaa10yApRwi4IiDjdIVfxIXANAJVz9biKFIop8vTMKVzIsoHnh9BGp43ber" + "d0BOrqLSrjZwAhL6A3iOmz6DXuKejrre45xo3fIgkH3i9j4sHvrmWoZPlpjrwxCoy7SrGCUBCOV1e2lNEkw/8hnauvFQ/" + "Vt5TTyVoVzFOgJPtUNcA3mi8d/lKwu6JVWjatYyT28Gp303Nt459W1eyEbSsa+/" + "ylcTSE6vQtIsbJ4Zz+gs6FcL+prp3+U4pbkm+J1Z7oF3cOKE8M7ykz6BeuXMMeEk7aFl27/KVxNITq/" + "C0axjnHOWaP5c5ZSOW2bt8JXXiidWmadM4P+uRtjgX+NRa0+q03mxLTpeNt7nx3uWbi8Occp5YRaV9cCpN4/" + "yrR9niOaBPlsFc36azqamrpdnG0GQ9W83Yu3wlcffEKjDt6n5r1zrULdk2ata1d/" + "lKYueJVWjatdac2Q51S7aOCnXtXb6SkHliFZp2FePElCKU0+WlLTG4fLYJYuv/" + "peIvKu+JVXTal4uQXlb4GsUjOV1eJt3NP3YKIx8aKkcRBv4wzxDGufINu6v/" + "erbDLNr3Xr58+Qhi85D6Qygw7EbNatXpRSGwIQRgg3IqvSF9iBUhkESgypozSUmJQkAILEJAxrkILhUWAu0QkHG2w1qUhMAiBGSci+" + "BSYSHQDgEZZzusRUkILEKAximn0osgU2EhUBUBHjmUU+mqEKtyIbAOAR4SkVPpddjpLSHQBgGtOdvgLCpCYDECNc/" + "WXuAokpxKL1ZJvRe89QH6PCrKM75yaD1DzdVGTihCTqVnKKBVES99gK4cWq90rF7FOKEQOZVuZXUz6HjqA7Tl0LrXEbHA7Rtc3YbPKdVVMU4Q9XTme" + "0rmEvnR5IvGbwkdsQ5PubNp1zJObgenHCzZJ2n2TWEpJbSuJ5p80fgtpU9PubNpFzdODN3mxOsYwE2+wj/" + "GwNq8aPJF43etXsbvecpdinZx4wRIZnicX0+FOQY89a53ejT5ovFbSr+echehXcM454BrfmzmlI1YJpp80fgt1SY85T5Jm8b5WS+" + "pxbmCp9aaVqf1KHIqbYjUj/" + "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", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}0 & - c \\rho & 0 & 0 & 1 & 0\\\\- c^{2} & 0 & 0 & 0 & 1 & " + "0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 & 0\\\\0 & c \\rho & 0 & 0 & 1 & 0\\\\0 & 0 & 0 & 0 & " + "0 & 1\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ 0 -c⋅ρ 0 0 1 0⎤\n", "⎢ ⎥\n", "⎢ 2 ⎥\n", + "⎢-c 0 0 0 1 0⎥\n", "⎢ ⎥\n", "⎢ 0 0 1 0 0 0⎥\n", + "⎢ ⎥\n", "⎢ 0 0 0 1 0 0⎥\n", "⎢ ⎥\n", + "⎢ 0 c⋅ρ 0 0 1 0⎥\n", "⎢ ⎥\n", "⎣ 0 0 0 0 0 1⎦" + ] + }, + "execution_count" : 10, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute the eigenvector matrix S\n", "c = Symbol('c')\n", "rho = Symbol('rho')\n", + "lambda_list = [eval for (eval, n, es) in A_n.left_eigenvects()]\n", + "Sinv_list = [[ev for ev in es] for (v, n, es) in A_n.left_eigenvects()]\n", + "Sinv = Matrix([Sinv_list[1][0], Sinv_list[0][2], Sinv_list[0][0], Sinv_list[0][1], Sinv_list[2][0], Sinv_list[0][3]])\n", + "Sinv" + ] + }, + { + "cell_type" : "code", + "execution_count" : 11, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAARQAAACWCAYAAAAff3ceAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAQ3UlEQVR4Ae1dUZLdthF8Su23Ss5W5QDrG+" + "zGJ4hyA9k3kHWDuPIl/" + "amsG9g5gSu6gZQTrLU3kA+QqrhUPkG63xISieXycckBZgg2qvgIgiRmugccAiAf59HLly8vD4fDByxj6e2rV6++HduhMjEgBvbHAPzBR6C+GEOOfY/" + "OejveIM+D++m3/obyYkAM7J6BH0cY+DvKnrG871B+goeRAxlhS0ViQAzcMgAf8XPOBcpYdMeh5MdpuzADMETy9v+DqK+x/" + "FjTqXvLJ70RdKAea5Nw3DL4p7VE6vxlDKABct7qGusfsHC4+QOWd8iPjk+XSbn/LG/" + "51CyCDvczNH+PcHzhapMOBQZ8iuX7LzC2let0f4L126Q58p+Q5/" + "ZPqazU2ls+cUXQwYJf4RiyuEmHAghPumWIZjtbfHJ2M6LuNcroLImvZPKWT2wRdLDgWDh6LG7VofQgbDL7FFr/PqJ5mhTn/" + "pLJWz6xRdDBgmPh6LF41stXyeLuy4lITkIysZv/K8rG7tbHAyx/ujs/h0qcAP2A7cGMNbb/" + "jfLnWFOvIqnT4VTdfz51wNL93vKpdwQdlvLXP084+mzc5qv1UED+BRa+58KJyDdckL/" + "Ckp503GpU9vefndx3uVyU09E8w7qYM+mgJWcxJedJQRq85RNaBB0sKBaOjMVqDgVyeRHzzdvPE5HY/" + "q4rx6psgtxLSOAcBRNfxMmHHCyr0lOiAifS+Yn9pXd7yye+CDpY8LwrHLOGPLgYecf8D5aH3Dm/" + "xXnHCxRrPrm4wPIay+eE8q8+b4xkuvM4Rs3T8c6A/S/yHdi+QTknyvL0G8qTw6AjG+iCbcrJy/" + "I6LLZzR9avM93x0pCwv88q7y2fOCLoYMGncGQsznUo7J5fZec+ZJMX8Htc0KxndrrHYRxQzrfyOITisGlWwrFH2VjTcdAxfp4/" + "QRmdHcveYymaqAcWyqC8PKWyNDmb71+97S2fACLosJpI4RilsPiQB42HFwkXDnkiJPZe2Fv51FPm+" + "Nowym56ZSWzdFx0YnlKPZTSjs1bPnFH0CHnf8m2cPRYq+FQ0oWb1j3xx7sVeww1Ey/k3HFw/" + "uR4EcOpfN85wZI68WnSX0cEsBfIIdsoVyPHLy3ylk+9I+iwlL/+ecLRY6O4Q+lkcXhxZ14DFw6f8EyNQ3uqmmUHwwnowMlaXtzJyXxd+oJG/" + "eTjd6yPPSMiQ/4JVhwaPud2yeQtn9gi6GDBsXAMWZw1hzI85eFbIP0FFv7xjQ4kfSKBF9BrlJW+G+cK8z8z/+p04eQnHQx7BtTvH1j/gqVGSjK/" + "gTDqwfXfoENybKV18JZPfBF0sOBZODoWH/U+sMQ78+DubcF0iTqgJ+/" + "sD5qULaGH6hQDYuDY2+Q7XPz8yaNaQx5r3tmrqd2zscag+" + "sRAcwxUGfJYswZPeJxAta5X9YkBMbCOga32UNah1tliQAwUYUAOpQitqlQM7JMBOZR92l2oxUARBuRQitCqSsXAPhmQQ9mn3YVaDBRhQA6lCK2qVAz" + "skwE5lH3aXajFQBEG5FCK0KpKxcA+GQj5YhteXEufheR/XKoHwNpLU4jAcwQdLOwtHLcshuuhwDAfoJpbACyLxrWFOiLwHEEHC1sJxxcWQzkUGIZ/" + "MnILgPWFlrZzEXiOoIOFlYVjyGIohwLV+M2Usb/" + "vX6P8KYzHTx4orWcgAs8RdFjPZDtt1sQe0RwKv9429sGl9FkF7ldaz0AEniPosJ5JBSwbcHg22HLcmNn7SN9cddR0negOp1uwsQg8R9BhnRVvzxaOu" + "yxG6qEkZzH1nZMWhjzewcYi8BxBh7tXw8NLhCPjLJJDyVQb3TwfLd1IIe5ol1CV80FMkYONReA5gg63llr3uyscdCiPO77Seh19y88emztJtaU7Ad9" + "L2XJi+I4UOZEfpGYAtH7ivELpb9pG4DmCDn3el+aF45a5vyQCw/" + "RQcKGloc7YsCaVpcnZpP+m1gkj1nQcxFQ92FjSoZOf81eF5wg65MCXbAvHXdboUP7oitP67lH1SloJmnSKMT6i8ww2FoHnCDqcstOc/" + "cJxOPw3ERWmh9Ip1ErQpMTvfesL7LjJdtYMNhaB5wg6ZCZYtCkcPdpCORR0IV0DYPV4KZ0dDN2Am5O11YKNReA5gg4WRhaOIYth3kPpqXWFPINufYO" + "1RwCsnirFshGCjUXgOYIOFkYWjo7FTQb6smgBqkMMiAEbBnDz33ygLxsmVIsYEAOmDISaQzFFpsrEgBiozoAcSnXKJVAMtMuAHEq7thUyMVCdATmU6" + "pRLoBholwE5lHZtK2RioDoDdCh8yeoFlqk/OlVXTALFgBjYDAP8+wF9yIEO5QIL//Wa/tGLrJIYEANiYDYD/LPr8Z/" + "zGvLM5kwHigExcIoBOZRTDGm/" + "GBADsxmI+F+" + "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" + "B76kKd5iQcO+" + "YwiOcZzufwiUOm2QnHH2VjTcfBNu4S9Ix6YKHe6TpjPqVUNuvaizbkMQk2lJgIvPbG6S2fpnHTARcPLxIuVYY2BHsisQfjHfTMxB7RHIpJsKETxouw" + "2xunt3zawE0H3pG7RpDWgzaB/" + "ewx1EwceqWhT5JbO+iZiT1CORQYUoG+" + "dhLoK4Ct2dbuzG1ALz5CnppTSBe85XownIAOnKytGvTMyh5nlqwY1XWFehToy4jMiWoi8OymAy6gF3QeXMARHx0zcRj0GmWjPZfjEWV+" + "ogQ9W20PBfoq00BU644YgANaNCnbCkXAr0BfrRhTOEIwwB5N7V5NCOC5EhGHPLmO2hYDoRnAHZpPSJTAQKhJWVlEDIiBbTMgh7Jt+" + "0l7MRCKATmUUOaQMmJg2wzIoWzbftJeDIRiQA4llDmkjBjYNgNyKNu2n7QXA6EYkEMJZQ4pIwa2zYAcyrbtJ+" + "3FQCgGQr7YhheFFOirQjOJwHMEHSyobgXHWi7C9VBgGAX6WmvVGedH4DmCDjOoOnlIKzhOAp1xQCiHAsMo0JcCffH7rvw84ybSXtrsXGOEcihQ2iTY" + "0Fzwjsd54/SWT+oj6GDRBFrBYcFFuP/y8EtZYx+3SR+g4f4WkjdOb/m0YQQdLNpSKzgsuDicmdRiUAm6jvy4zamUvn5/" + "6riw+" + "71xesunYSLoYNFAGsNhEmws0pAnOYup70rMcToWbaVkHd44veWT2wg6WNi4FRxmwcYiOZQ5Bj6fc1ADx3jj9JZPE0bQwaIphcaBXtYlQF53QFcHG4v" + "kUMbmTpJB051Agb4SI8vXEXiOoMNyBr+c2QIOhu9IkRMZqyh/" + "wsY5ol++" + "QJ7OhXEoAJWGOmPDmlSWJmenUQXe643TWz5NE0EHiybSAo6EAWs6Dl5nq4KNhXEonYFNgg1ZNJbCdXjj9JZPeiPoYGHmVnDw8ffqYGPRHIpJsCGLVl" + "K4Dm+c3vJJbwQdLMzcCo4LkHGTEfLgYGOhHAq6XQr0pUBfHMc/" + "zxp22M2G2uxgOgG4OFn74GBjYd5D6bWYK+" + "QV6KtHSKFsBJ4j6GBBbws4TIKNKdCXRXNSHWJgxwygN6NAXzu2v6CLgWIMhJpDKYZSFYsBMVCFATmUKjRLiBjYBwNyKPuws1CKgSoMyKFUoVlCxMA+" + "GOg/Nv6I2doc9VuU8Q06JTEgBsTAAf7gI2i4uI8KOhS+0PLingMGL7vcc4yKxYAY2A8D6QPyo4j/D04MQISuHGg1AAAAAElFTkSuQmCC", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}- c + u & 0 & 0 & 0 & 0 & 0\\\\0 & u & 0 & 0 & 0 & 0\\\\0 & 0 & u & 0 & 0 " + "& 0\\\\0 & 0 & 0 & u & 0 & 0\\\\0 & 0 & 0 & 0 & c + u & 0\\\\0 & 0 & 0 & 0 & 0 & u\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡-c + u 0 0 0 0 0⎤\n", "⎢ ⎥\n", "⎢ 0 u 0 0 0 0⎥\n", + "⎢ ⎥\n", "⎢ 0 0 u 0 0 0⎥\n", "⎢ ⎥\n", + "⎢ 0 0 0 u 0 0⎥\n", "⎢ ⎥\n", "⎢ 0 0 0 0 c + u 0⎥\n", + "⎢ ⎥\n", "⎣ 0 0 0 0 0 u⎦" + ] + }, + "execution_count" : 11, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute eigenvalue matrix \\lambda\n", + "lambda_waves = diag(lambda_list[1], lambda_list[0], lambda_list[0], lambda_list[0], lambda_list[2], lambda_list[0])\n", + "lambda_waves" + ] + }, + { + "cell_type" : "code", + "execution_count" : 12, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "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" + "w5f0j6VWdtzdJhzwCMFA5YZ8Oyn/" + "0nEio4xJKFL94jgHJv4Efvt+MLS38f5wYAEAz35qfQYw0n2AeGcr8AxhkjBgFkGevJTFy0Gs54QwIKBThmIwNCpYUOtYKCEAfGuBJpbrpZqKyF3/" + "FuPegMzB9L4bL/4bWHrfFnHR98rwSjaYgBQ3h92s1Qbya2RPOkNrHz2hI/Gc4LPt9g48CuarPNlHR+NVYpRLDAAqKul2mpdCd70Bl6+p/" + "IRNk46+64WD3Prsc6XdXzkuQZGscAAvJzVmJ6KJP6UXuDgGspwRmSPaa16n2pL63xZx0feizFKBoZrAH414S3pLcks7zGtVe9TbWmdL+" + "v4yHsxRpHAMLM1cP9UT7L6u7Xqfao9rPNlHR95r4VRJDAAb7roj81c7LErsVa9T40N1vmyjo+" + "8V8HIwMCmPAeappr5yBZLD8Qk2RK0Vr1PtYJ1vqzjI++HMPJZpO2TzgwMF9h4aypFGhxWT8eCTpL7srpU/" + "QrXqvepzFvnyzo+8l6CkWMTjAXblai4b5rQ70ldiKnuQspLg5BNsUhWvla9T+XYOl/W8ZH3WhilxhiI+dRls/" + "hbz2mtep9qM+t8WcdH3osxSgYGTq3dvrx1z2Ou8P12FOn2it1/XavepxrOOl/W8ZH3YoxigQEXvqul2k716v3fOdc7DVKlcaB99ap/" + "t86XdXw0SA2M59Ute7xCtg48LdV2XJv5pa70hmPxH4eJg1FMfHaCY0A/DE63zWz4YZ0v6/" + "homiKMZzc3N5eohA83PRyMz0ojBQPBwMoYwPXP55meYX8m1pVYGcehbjDgmoEIDK7NF+" + "CDgTYMRGBow2vUGgy4ZiACg2vzBfhgoA0DDAzvDVWnfRtJUWswEAxYZ8DlgjPWSQ18wYB3BnwtOOOd7cAfDHhjIMYYvFks8AYDAgxEYBAgOUQEA94Y" + "iMDgzWKBNxgQYED6WYkNplvGgjOYfg7b8pkRs++gsGAnYOB0fT63Ib7gTe7as8BPS4yiLQaQGQvOPH36NQz6BBsfSLrIGVejXNNOkK2+4E2Oc01+" + "cthSeSlGscAAoLHgzGA1cME3Wj3Htn2NVjKmhb22ncgNNrUFb3I20OYnh4/lNTCKBQbgLV4EYw4pBs/" + "xprc3vNIm98BPMUbJwMBn+6deVJn62enZf2lDt5bnTW9veFvbb79+D/wUYxQJDGjapBe+7pM8/" + "i72lqCx0JbH3vT2hrel7abq9sBPLYwigQEkp4uefetDaU7wOPRbq/ne9PaGV9ruHvipgpGBgU35WHBG2sV+k/" + "fgt0MXR97wSpPqgZ9DGPl26VhwRsBjpsZUktgU2S0ttOMNb+JSau+BnxKMHJuIBWdaexP6e6nrNNVNSnlp8LU1nGz93vBmFap8ggd+" + "amGUGmOgiYoXwahsZ6nqvOntDa+UHZMcD/" + "wUY5QMDMWLYCTLONt709sbXml38MBPMUaxwIAmTiw4M7gwuGA34lNsj6W9OifPmJ3SIFkaj8nBb15ujJ9JfWtgPJ+suV3mFaqOBWc2mw/" + "Bw0cw4G07qotqVrUTeOE/HhMHw5ikF7x5K/Xwpyo/" + "h2HdKSnCGAvO3OEyvgQD62UAATkWnFmv+UPzYCDPgNgYQx5KnBEMBANWGIjAYMUSgSMYMMRABAZDxggowYAVBhgY3hvApL0VbIEjGAgGZBmIBWdk+" + "Q5pwYALBnYLzkjPY9jglkia3PM5jnmvNVIw4I6B3v1YNDCAzEt4QJq0kh4icucUAXjdDKzBj6UDA2f63YLYT9btWqG9Zwbgv937cdyV8OyhgT0YaMS" + "AaIuhkQ4uqsW/jKuFdrTxast34VQZkCUcRoshQ26NYhjI1UI72ni15dewuXYdpRxGYGhsQRjI1UI72ni15Td2B5Hqa3AYgaG9qYoX/" + "2gP8Y4Ebbza8u+Q4fRLMYcRGNpbnrdnX02ISe96TLdvJ05RydLGqy1fhfTKQos5PK8M6Gh1aOJc4AS+nprAL/" + "CdA3IvsedCr90l6DVnroaltxOp4vXCF3Ca9eNaHEoHBv5LcqXntaR00b8+ovCci/" + "HIz6sWaePVlj+LTFx8lv24CofRlZjlCk1PetC09vqVa+PVll+fUfkasxyKtRgQZd/" + "k9Mc5Z7lznJVPjS0kFVJkjwVnEiPTYzGp1ARfDvy4is9JBobeLvrksAf3cKLX2Fg+1V1IeWkQ8mA9UgXaeLXlz+EZGE37cS0OoysxxxvKzile/KNM/" + "OJfa+PVlr+YMIM/KOZQrMVA8hDN+C/5xUAkR3aZHjPKvT3s8pOvQk/" + "ToccKXuELHyizprs2Xm35YxtNHjvw42IOpVsMXFPiybBxEgb7Q5wu3G2Crq4W2tHGqy1/piOa9uMaHIq2GED6ZwDNxUPY1GHiPynzLrHdbnP6/" + "GDrwNNCO9p4teXnvNCDHxdxKB0YOLnppxzrvZUj6LG7QN1dJG282vJnGMm8H5dyKBoYAJbN6nEiwb8gv+" + "fWwljfOO6AgTX4sfQYw84tQO4lvvBNTmzyRAoGXDLQqx+rBAaQyTsSHF+" + "4wrG1UXmXDhqg5Rno2Y9FuxI03UAm70x8PPrOfDMTfeRdLCR6Y6B3PxYNDAOZz+" + "AEDAzsSjBxnGFND1ZtlY4PvwyswY9FAwNcgXMW7g37nWeAaDcj9jvQcbBmBrr3Y9HAgADw/pq9KXTvg4E1+LHK4GMf7hFaBAP9MhCBoV/" + "bhmbBwMkMRGA4mbr4YTDQLwOiYwykEf2z9KQhX1DyEBufIej+VqU3vbXxasunrx5L1vEl7MDJu3982nLRnCHRFgNAcjT3Bfa8XckXwPI25Q84vsC+" + "2+" + "RNb2282vJzjugA3z1g5MOKnBrwLbbF15dYYABIVwuv5Jxjbrk3vbXxasvP2dU6PuIHRr457BE2TgP4LqfTVLlYYIDw4kUwphRwkOdNb2282vJzLmUd" + "Xw7/rHLJwHANRFMvqkzjCyzvMXnTWxuvtvycD1rHl8M/q1wkMKBJw9mOuZTeApw7z025N7218WrLzzmWdXw5/EvKRQIDAKWL/" + "tiTlHOCxxLdLJzrTW9tvNrycz5jHV8O/+xyqcAwB9CDOSd1eI43vbXxasvPuaB1fDn823KpwDA1tpAApijMeQ29JW96a+PVlp/" + "zP+v4cvhnl4sEBvTNUhdiqruQ8tIg5Gzw1k/0prc2Xm35OX+yji+Hf0m5SGAYABUvgrFEMUPnetNbG6+2/" + "JzrWMeXwz+rXDIwcFrmBxOorpBnceGVCagnZXnTWxuvtvycka3jy+GfVS4WGNAMc7Xwyiz2ZpzkTW9tvNrycya1jm8CfxoMTWN5E6e8m3X+" + "blbTHLYOPC28UosMb3pr49WWn7O7dXwbBDC2bJg4IYuJz05wHI/" + "PJu0v47A9YfxxdnNzc4kMPtz0cPjhuDyOg4FgYCUM4Prn80zPsD8T60qshNtQMxjogoEIDF2YMZQIBuoyEIGhLp9RWzDQBQPjwcef0bfYV+" + "o58viYaaRgIBjoiAFc1z9DnYtDKjEwcKTy0LoO3c1GPERE5AcDK2MgvWJxUu3/AySyMXnbmOhyAAAAAElFTkSuQmCC", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}\\frac{1}{2 c^{2}} & - \\frac{1}{c^{2}} & 0 & 0 & \\frac{1}{2 c^{2}} & " + "0\\\\- \\frac{1}{2 c \\rho} & 0 & 0 & 0 & \\frac{1}{2 c \\rho} & 0\\\\0 & 0 & 1 & 0 & 0 & 0\\\\0 & 0 & 0 & 1 & 0 " + "& 0\\\\\\frac{1}{2} & 0 & 0 & 0 & \\frac{1}{2} & 0\\\\0 & 0 & 0 & 0 & 0 & 1\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ 1 -1 1 ⎤\n", "⎢──── ─── 0 0 ──── 0⎥\n", "⎢ 2 2 2 ⎥\n", + "⎢2⋅c c 2⋅c ⎥\n", "⎢ ⎥\n", "⎢ -1 1 ⎥\n", + "⎢───── 0 0 0 ───── 0⎥\n", "⎢2⋅c⋅ρ 2⋅c⋅ρ ⎥\n", "⎢ ⎥\n", + "⎢ 0 0 1 0 0 0⎥\n", "⎢ ⎥\n", "⎢ 0 0 0 1 0 0⎥\n", + "⎢ ⎥\n", "⎢ 1/2 0 0 0 1/2 0⎥\n", "⎢ ⎥\n", + "⎣ 0 0 0 0 0 1⎦" + ] + }, + "execution_count" : 12, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "# compute S\n", "S = Sinv.inv()\n", "S" ] + }, + { + "cell_type" : "code", + "execution_count" : 13, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAOQAAACWCAYAAADOvSRHAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXdLdNNLHD6lcU0yo4p7MDjJhBQ" + "M7GMgKCDvIVK7gLjWzA8gKwrADhhXwsQNm7qfqDU+xgbz/n45ayD6yLduyj58n3VU+kvXRav3VrS/" + "bOu98+eWXj06n08+6SvTdV1999WkpwsMcAUdgPgKyp1+V62Epp+LeuZdF/FP+L3rX11l8x6vMRaadRAe/" + "aVGHFjwODpOLNxOBCZ34h9j17ew7K+K+eeR+LUb/ye4HvUr3TJGkrUo/yOj6EQ9Vl7/" + "pojOaTXcIh9l19wyjCAzqlXTmm35OhRH0N35yg+R+kpSZjO/" + "LXaTEkwXsmEB1+LeuR7qe6roAakwUpW+KA3KovJe6mHl8q3t6UacJBKZwUzyDxye6Po6s/i33Jvrfk/tA10+6/" + "q60Fh6jlznis1iv3snWkH8Wo9ERT/FU4Ae5f1km6jFzqT6sof8qt6pBtsRBvN9Ilk/" + "lpmnMMVE7llRTuMX4X+Re6K7CvldtHuv6UP4qHaipvXhV6ZXSPRU/ZqidNWRNGcx/" + "B9eVNQwOmoY6Ubda2gQHNUjei9fK8tanm8JN8cw+oFdn5+KX9mewwTBa0ly9OuWbOjWCfKbKzZra1TC9dppYJ+" + "pGo9TQVjgwtfqP5GjWS9dU5g6kmcJtqqOzDcr3W2KxQK/" + "qDVLMWTONTmlbVuYKvKjbZ1PlbowDisMax2keAlO4YbAntd0vA2xDvOKGRtCBbFXBVXplnO6bp8JF6EllUaWZzv1f5EdP/" + "9MIEDFZG0fl2LTjz+L4s+47o7nu/" + "6Xwz+" + "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" + "A8uIQS6l/" + "DldSbkBqlbhaYy+QQe5YkP9oJuScoY0hZ90GJPyMzphIB1ZFF49Kmb8UWqmJ7lBEU1dc2NH1m+" + "JENGDYyiBlDf5Y1DouBTeNxLy5TxPShPqIrd0WFMw/" + "Miz5JB39oHJJUZRDjOEPElQSsX360gaOqzOaJ9nlL8W21628AzyNMG7n8fuW2BS1FsrYK6LQf4eM5lbxUMAhJ5BLg2DAiYlVRgGQFg+" + "hdPtIMErNGY/RSyHU+OWEp3F7FPVBwoLvPI4yUc9qW+aMiksGJdcU1ozzjyr+UnTNzz4cb2yRNG9KJ9wlWN424ylly3cMnWrbY9S/" + "hSm8koGhxyUwWyg1GGk/AOei7qJzwW2hbzg1+/MCsmKQS0wMb1dY5j/M+num2eFS6/X3yGlojTQUqBWiPNH1tigNGoylj9i5/" + "lGeKFI1LWk7CVsUsGRZ8eYYyQKz5oz4RfTDtXFDCQZdkz/XHyYOpOPDaaOgSvNM4VBTKcZoWi34Fdcf/" + "qsqG1opG5j2J6U71GUqIT9hbCxnNaYgC10c3bW/d5blz3kRqGS4kR+TMMCSALhaQQiRhUdGt8qVkywJFDlGkjmdtgo3kawTvjETV9R01pZ/" + "NjEAg+ji9HPIqI7pHBsiNmmD/gx6lgdzM1ZkZ63VYJsct/" + "TPTvGrDXhQ1ugvElxFY4xsq5mNKOXJy3+" + "x7pM0eXdleZgi2DWfpMdruq2FSZgB60ZIc8c9NvCIDsgquI0Jo1qRjp0UngSQh6mWuTZglDIi7WL5GREqAZR6TEEFDoZnMIYUajvT7ogdmzNKEjHNa" + "YsqeMic0Yoj41m+c4pdSFPIpUHf96fzTdzqNuaA5PTSJsK2tAj2Wdhm4nCqH9S/" + "tTRZHF971aY0MbMZqjDamoxZUUROImbCvNMDoWsOSlcyRJhvGyWcDWpmHEWv/CoIcpnO58o/" + "IsFZWHY1JXRZerUcRqKqfyYsiAHu7Z9AlMem3ysKxma/HldwNqml/" + "0yGHnzToiRpJNGvMIIrHCI+DDtVbh1pCFix59qbCUjmzHgG0Zy3dMp8XhpbO26FSboegdb3S+m1QYpEDCgvPFNmFKYxXVc8bBNF0bJZpWzQsQ/" + "KbWFLXHn1JU6qQx71FEsTmk6o50lUvigYilutC6Kx8i58pkL5aCwhJ/k0maB5Eep6eHTyG7+mGQXJ8pU0pmLMKW1NXOVbEq/" + "JSboLB1EE7rXhEsbJt+KTVFB27B/" + "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" + "1GWtuuaMVlu/" + "ik23Q5AMyMturhmpH5gMShuRT1k3AjayZfq35IBkNmQwaJ5Zfhh5WFjnT1wVBzENbnVGqx+YHCC9zo8b5Ia4x1EyNxQrrRQW4pQnPPy3hNEdS8+" + "IypVPdZlihjNayR/lwIufEa9zRqvCUt6YtlReKSzw9J92CPiUtR2WV+EUDYjRNFA0OKa1TJdtA8nPaD3Dc/" + "hfHyEP30RVAjJ6+RmtVVAdO5Eb5LHbp0o6jYqMhmnXtZRJafKp8GjaUn4P2wcBn7Lug7OX4ghUIeAGWQWTJ3IE9kHADXIfnL0UR6AKAQySLW/" + "WF6+rcngiR8ARaI0Aa/qwxscgH+rioTNvhDg5Ao7A/gjwmAobXH6mjnbtMORbTS3q0ILHrQbRhb9AYI1OMELOJhX4TJl44+O2Ew/MqcsiukM4LKq/" + "ZxpEYLFezX4OKSXkBen35XIUxa0m1YEXsh/p4guG/BvEyXopfVMckEOFvtTFzMMPT55sgXOCKdwUT4fLq4RMCyHWa/" + "ZmE68cslTjZX9erLBw3S4n8VmsV+98+eWXKAKf7vAWf3qnsSSO4qnAD3L/Uoq/rWGqD/X/q9yqBtkSB/F+I1k+lZt/" + "gXFbod1N7incYvwvci90V2F8PcMXLR/" + "KX6UDNRUTryq9UjoON+PTuXfmTln5zCcsPmsEWppGgn0chVzKYm4+6kTdamkTHKh3FOBOvkmzVbtO4aZ4W169Gmhg2p/" + "BBsNoSXP1avamzmeq3Kyp3cLaAQ7XLhTrRN1qy9wKB6ZW/a/" + "1d8Fgp0K2atcp3KY6OpYJ0Ptnp83vAr2qN0gxZ800OqVtU42rcaFu4euIMQk2xgHFuZOj4ximDeKmcMNgT2o7+8i6X2SIV+DQCNpPP+e+Sq+" + "M4X3zVLgIPaksqjTTOT6shW50cTraEBAhUasflUMPzLRjyUG/1I06Ts0AmuAgWemVwYoGAy/" + "KZ2r1QleglfUxNqtdyYHC80UJ7YncbIBcpXOuwU3y9WnQYMUPzImnTlvoaa1eBZnnGCSL3sH1YwSKxTEVCxsScklPQ1oPJO+mxEG/" + "lM9ozo5lMi6FYaicYTP0oS2HQ9EwU7QaB8lAOZzXysnjQbHlgh2Ud3pr6nPmtvJXctFpcJRleJNELrKzWfGnlaxnZ49l1+" + "CWeCuPrR8N3xCncDoW6oSubLmJVqtXQa45BsnoM/" + "Z6HRX+ThXNdweZAqYeP5S40U8Efs1Bv9TN1hJjUq7CQXKSH6XqjzIYJruAjEKnBvWBDXwwKLb+Mf5ZI4DSo6x0Ysw4jHhEgIGy8ZZ3Hha/" + "iauyqnArFG6d7EfiARZGGAqnKnBkSZFi+kXYZQxr9SpkmWOQD5QjKEtWWPBKcEZClLljfAof7UVjPgMsZ0tZJ8WHXjmPkB+" + "lLY1ybIaYwpU6AsrpyNfji0HQ6FO0FgcbcdLoHQtEvrwzW1sfqwdt8yzDxsJrXGYZfYW1TmsQK5VFma3a1eSsxc3SmxtmZwM6Y2mG3DXYGc9avQrp7" + "1uulS4GwMPQosEO8Vb6ksGdFE7PzNsO1S8fKG0oWy6KgLIkhVcYSkTYWI8+aGjKV0s1OIQ0OUPJh2zImKZVDepjRYDlWL0tXcfNcPy2E/" + "GHoVnn14se7EhP4jm7XTPmVbhl6c2LPgzKaokG3EXY9XjN0qs5BsnQi+J0SCATxpWUqZNg/xtGz/" + "6jA4BFIcYahjpQxylajMMIVigb8pUMZ1Z9YhnPxa7FgclpCp2B8kR+8A1r3yx8M2+sU0nHxnA7Kd+jKFQJ1wt5YzktsMt51+" + "pVyHMvzznhpwFsupKSqhI38cbcFIdH8fRQexIy9g0v7YxKnqe6AKlP9GQ1StYCh345yBdklmylw5Or6hPrxYZLiwOTaTfWi4nEHwXnKi0ZUroNPXNw" + "QwzTvcnBojF2OQS1ehXyzDFIlOKjvKTMz/TwopFUSeb9r7N0e3g7jRaV6LEKNqUeOuiXV6oszZici3GQLHRa9NapY1MYozdKbsr/" + "icLyOuT+k+JIO1Qf8F59YLLKoMNCRpQpUAxjM4r/" + "qazBKeZc76i8JbhRMKP5SflrRsgm2FFej2r1KmSbM2V9pRw0yAWpwjQSf39GpZgqQTTqC4UB5p7EJgSHEyMLz/" + "dQaEBBvmdyqUeJ6E2La9pe4rU40HFVH56stHPqwxQu7xipU0cZhUFaWysu1VnhuZERDrETDGYQO608HsjThYidfqpxk4xsxtCh0HmddM8IyY7q2J5E" + "K+woMqeEcR445L8/" + "FNEPV2VYT5x08XXERaMoDMW5OkkOOoBcKU2mUliIU54wYsntKK9lzF2lWYXDXPlq0ysdHSBXPqIyFUYRCT9FXnjxo6xDByaHKbTSwGtMiWG1C0XZS2" + "14Eaa0NR1rklvpW2KX863WK8t0zzyVLqPOrMpW8u0nu1EA115EZ0LdamkvHGrlOUWFTZjpHoOjd6aTofcnTe2ByZaPbC1p73atkr0xdnmZc/" + "XqNOvzK0qS8Az/TFHznjgX4lb5VQ96MTZBGBWq6Yg4SCYMiRGDjZ3XuqgbL0yn/wNRGqZzLCuY5VBnpvXQN4pjxHxP/t90bfn2CuUdilpgl1dI/" + "Kr1SmnT51f3cyaVfhqcteQsBa7kfY1kKOiSUf9wOKhhGQ1Hp91Kk9e1lJYNI6gUd465g7+NsMuRWaRXc6esJwnOtIMR0hb7uRC3yh/" + "rsGi0v0s49BqN3V52etP0txfvtxMIrNGr2VPWCVk82hFwBGYiIANOU9bZI+TMsjy5I+AIzEDADXIGWJ7UEdgaATfIrRF2/" + "o7ADATcIGeA5Ukdga0RcIPcGmHn7wjMQGDJc8gZ7D3pGALaXeNtmpe6Huryw5HHwHpL4twgr9jQMkjeluFoDQ5HnvxE6IqietE7IeBT1p2AHipGxsj" + "rbtBb9WbMucr+20fADbKPyP73vILYP+Fgfym8xEMg4AZ5/" + "WZghPTR8frtcAgJfA25YzNoesrmDZ9u8aUMX1lgiGzsvNB1QUpPWvsagw+E+WC4+Tum4skXHksPmL6Q2wOWI+Aj5HLsZuWU0jMS8lkURsXFh7/" + "2DebFCKl4NnlekS6m5QsbSy9vU+JAZuShzE4ZCrcDppt3BE1rcEeY+Qi5Q0NKqRmBMCgMMf+OFP/" + "FyW5Kw0j6sdz8ZAY+di0eoaLwQEqPMfEVTvWhyMrDCP1jYHD+pI7vKHNijZvLkce5vzECbpCNAR1gh6Fw2nd+ng1JGTXzw5EJS6T0jFgYIQdX1Xx/" + "yjd4cw9FbnUgc5LbPcsR8Cnrcuzm5OQIjc60VAbGqMlIePH8UXGMnEwhMdjwhb/" + "COlNJhZeIE+w65ZQS5WHiG6aicikLmVKnoTDkI2wWT6V3WoiAj5ALgavNJqVGobn6hmfn3BSVXfmYojLFxVDwM/" + "J1TvGLvJ8rbu2hyGIRjv7oP37BwE8qx6esALED+Qi5A3SoUk8AAAGcSURBVMixiHztSFBam0nh0+HI8nNcpR2leZK/" + "OF1VOEbOJlGLQ5GRh9Gwb3jIGDoMlfc0lklap40QcIPcCFhjKyW+kR+lRuEDKYyRh82U0uHINk09J9ZvTB8OoUqB593Q1YciZ/" + "w6HYbKRD7O1zEjHTpgOmPh3rUI+JR1LYJ1+TkQq/" + "Zw5M+" + "Vlh1WHjcwCkKcBpcfTkUYU174GmHInemv8qT1oOKIDzwUbkZmeXGZFiMja1WefWKgNQdMK5lTKwTcIFshOcJHSs4omRuPpb4Ii8ZSMhjLc1IaDJUrH" + "9WYXi45FDnwnSNjyOA/myDgU9ZNYN2WaTQejDyQ7ple2ghpm0W1hyJHLu4cAQEfIY/QCstkYHRlF5aNndf4dT3RxaHIGCvTXL6xfCZ/" + "2OGNft2GtLhOB0PADfJgDVIrjoyL9WJnzdjPqzT5unM0bT+v318HAZ+" + "yXgd3L9URKCLgBlmExQMdgesgkE9ZWXv0pfhOYRc7gf1Efu8IOAJ1CMieeOnj4VBqDJKt83ytkafNt9XzcPc7Ao7AMgRG30n+" + "f8YkUUIP0BVjAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - " + "dP_{dx}\\right)\\\\u \\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\\\left(c " + "+ u\\right) \\left(c du_{dx} \\rho + dP_{dx}\\right)\\\\ds_{dx} u\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡(c - u)⋅(c⋅du_dx⋅ρ - dP_dx)⎤\n", "⎢ ⎥\n", "⎢ ⎛ 2 ⎞ ⎥\n", + "⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠ ⎥\n", "⎢ ⎥\n", "⎢ dv_dx⋅u ⎥\n", + "⎢ ⎥\n", "⎢ dw_dx⋅u ⎥\n", "⎢ ⎥\n", + "⎢(c + u)⋅(c⋅du_dx⋅ρ + dP_dx)⎥\n", "⎢ ⎥\n", "⎣ ds_dx⋅u ⎦" + ] + }, + "execution_count" : 13, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute the \\mathcal{L} vector\n", "\n", "#drho_dx = Symbol(r'\\frac{d\\rho}{dx}')\n", + "#du_dx = Symbol(r'\\frac{du}{dx}')\n", "#dv_dx = Symbol(r'\\frac{dv}{dx}')\n", "#dw_dx = Symbol(r'\\frac{dw}{dx}')\n", + "#dp_dx = Symbol(r'\\frac{dP}{dx}')\n", "#ds_dx = Symbol(r'\\frac{ds}{dx}')\n", "\n", "drho_dx = Symbol('drho_dx')\n", + "du_dx = Symbol('du_dx')\n", "dv_dx = Symbol('dv_dx')\n", "dw_dx = Symbol('dw_dx')\n", "dp_dx = Symbol('dP_dx')\n", + "ds_dx = Symbol('ds_dx')\n", "\n", "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", + "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", "L" + ] + }, + { + "cell_type" : "code", + "execution_count" : 14, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAQQAAACaCAYAAABPEzaNAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXbIcOdGGexznmjCeCO6BHfCNd2" + "B2AMwKPOzAhO+4c8AOGK/Aw+wAWAGGHQD3RIzjBBuY7310lDUqtUr1p+qq7s6MqFaVflOvlKmUVF367Pvvvz+1oN///vfPlc/bmNfPovta/" + "o8t8vc8HAFHYHsEHhoW8QcJ/28tP93/Sff/0PVz83PXEXAEjo3As4bsfSUl8CrJ7w+6/5n8fpH4+a0j4AgcGIGHKLCM5CX6VuG/LgUU/" + "LAOPhb8R70iD+8VkanGN3ruLI3RxB6hiIBjWoSlmecYvgp/o8J+qcsGyb/q3qbPTK9f6EJefqe45q/HbUll/" + "Usl2JS+V5jCPkunDH9UKJFT+nf6ULtXZl9n4Qj1v+X/z8z/7DHG+T+5LGj85SyCe8xGwDGdDdmsBGP4Khx5+mPs0/+Ui3Lokfzo6/" + "+R+1Ndl1IKWO45wduv8EwVwp/E1GQFkOeYPisfpgkU8H+pf+1eaVJNWovqYRMRcEyfgIo4MH3NB62JSJajjeGrcJsufyjncGKdjX7/" + "lS4UyOZUwkB+lBsUQss1hFAZZY45ghZixJ+j9dBSWBRz0oQy/" + "WcQAcf0CZrncrha0xi+Y4Ocme6ft2ZsaX4PSxOW0kVlwJwIoE7xGXeK5QF4zLOc2iHgmLbDspTTGL4mB0PT5hCujIcsiFKZm/rNVggSbkb/" + "7yJXjOYf5cccCW2HCYRCMFOJdYTf6epRjEs+KAryQhGQ5p2uQIqDRseUQnv+S8+" + "duad71joo51u5m5Hyp8FZVKWe1I8ypyg3RW1LKreIu5WicLPMpmDKVvA/lKbDlHz0/Gc5m787onIGcVXY7u0OFjmJr1F88zR6HlQYyo/" + "+Tjh9akhhFLIc9mqB3cNw9v2QCAiLIJ0gyg8FgMCg6dipoDF7OxaK09sx0DMg0PGYUgThkmsLiamF8Fb+lMXc5r2utPO+0POXujZTCCoXAXwuN/" + "AvF76p2491XYxULh2xhvsp8rYKU+WB8v2V3Km7SoswUP5juO7a7qVKzcC3S640Niha3w5h8qc96VP061/" + "ruWUfXo3dZIUg5qkY25BpBX4jvzCqy39UUBQHhUHHzUdaFANWBiPxSS5g/" + "p17EcomH5Vfy+8lgVuQyqexEI70paqP8kNBvNKVKq4tWEjzHMN9Kaaf0kJ0D85NRqos3+5xDFdFhKfd2r1jNLkRz5PwTZLYLQMI9FJ5oASNsG7/" + "Ir8zy9kiLHGVXxOZmaQQVBiWAJotCL8xLP9RJWBxo2ujQzraEwR4qaJJtys7pRPzwMkVRBIUFArlsA+MFbKkk79X2rzBqD9EBzkjlYP/" + "33QVw88SPHkwQgzyp7ApuLfClDbotW+JZ/" + "G0BtsxXMP0M5a7pN3BywQxZR+L8iTeGZlzYiCqWUVT8c3zRcFSZi3vPE14VpolGK+SGWNkkkJQZBrnr2L00RIudEM+" + "aVrliQAhbIyEgawcuYzUhJ8pEIXVtmnoGG8UZ1DYQkGFH6WhQ1HmN1mwdbRinkoHNpO3WbO8hx6n4D4XU6tfh6l4B3/" + "qPMXyWYTtFFwjhie5i9pd6UoCb/mx7VjrM9U2SAOVD1j1+mwaHu/BudhXCnFzr9kYiyf6n9UV/rr2jZm/mlL/" + "ZzHyoBMrTwGdwA5GrgRU8qFDU5FSZwzTBYWFyibZj23T0KFK+SVZDN6i0bvpSxKLNQu0cNU6SeKvulU5YF7FvRKnhin1y7d3weuk/" + "KZ04KXYzsF1abtTjWa0EF9wtPWDpX1wKcbUfRV2D2PoqXKPuoiWC2VIqjA0z5yK5wJFBUJHVD4AgTBaHLRwr5PGOGjQjuSH4LzVxfyMe4T3g65ACkd" + "b00jM5zoTTvd/" + "Tp+fYgeTs1cfxSEtV2sLIBZ57qjMUdyVinUNyPB6ekrWA5TPKKZKRBuEOis+" + "i4u8Ph7aW24rbGmDqbhOanfldymagy88UVdo0iDaEGPKXIXdM3KYQJgfnSBZfFWEuc4ne665sYPRIWA4kPzorAiadexfyi8FH2WQxuce06+" + "Lo3s6LKv/vGkJn5RBntbBCf+FwjAXWSjk+SSXONZweOFHGGW84BmKfiyE/lb3PeUUImz7U8Vd/" + "Dyq+LmYdtjBuvIAhy90Wd1+HvMlDDxWYxvzmYPraLuLr80p4jAXX/hiQAK/0Ae5H6KIzWqMk/xXYfeQZDR4K6YRBv7ejAJgFIboLO/" + "kR6ecSiiV90rzRi5mP6M4oxN545eP/OxGIOgIZNC2us/" + "ngfDE+kbe0a2DI9xfKxzlk5rKKANTRLoNZAqCcuEHYqehuvgXYm3wIx6m4D4LU7HJYiltAG7f6QI3LB9rA9rEqBW2s3AVb1Pa3Xjc2p2Mr/im/" + "6L4ULInPdNn2VHI+yzBRq0wDvmprFXYTVIIlERBVoOlrvJAeZxZGgN+" + "oRilKS4UJTwwX07zpPN1mlnpg6KQi9ZOdzJe6jk36cL0JaapNaKSXobESxV3hc/" + "CdGb8VtjOxlV8jrX7RRpgDl4LeW6FcYfHQj5C+mddLld4o4pjpXCl1gGdD63MOwOEGaG1UwXQUxwxUsnP0t+" + "V2xjbvXFFaXIdihpj3KRu164Qeg0tgBF663xo3pw+4aF4xEFh2LQCP5QH5p69GKPb+yXh0QTbI+" + "AqHphS5ttwuzduK4xbVuShZWY75cV0gXkTCzMIPCY20wP+/" + "5COCvgzJyceaTploHuIhTWom248Pd71bwtsHdd6F2qBcb2EGaFXrxAk4AhwVYgVh9Gf7cywhiCXRugtYOqZBUZ2OVIlIq/" + "7JWHRAlvHtdKFGmFcKWFe0NUrhInVfa94TAX4gg3ThRdyeyaknlEEVcWicKdzBKrYOq7ngC3wqWK8IL/" + "BJPeiEMJ2kDrnGyHxudyLvWA0iPztBDi227flxTC+C4UgBeAj/0ad1rHdCNgk20tifJMKQQDy+i0vIV1EEagc1ijexjZkpwLa/" + "EMjT8X47zUhoL7Ci3aHeMeihNtVbzuWKiSweSORvz1fRBlEHnjLj50OLhYs2e1gN8PJEcgRoK+k78Pk4bs+" + "35RCENBhpJZ7aQ38lcpksdKI11H9kBpDw90OAfUTXqLjT3WsZx2ObkohCF3+" + "88ACzKUJBcT2mpMjMIqAlAE7XLwTwwB2KLqZNQSBy9z9C7m8unxRig2clomCYA0jf/kpjdPdKx5vWLK1RB1mnVyltHQqFCEvAH3Sc/" + "rZN3ndL43hqnBGafqLWXdMMx8jYuD6QheKnqmg+" + "cfg1Q4DF23OFPMwdDMKQYjyJmLv3YI9UI6dMKxjTC1faVAcrHvMPrkqdlReqGLNwq2UBPQxXBXOH9j2Ol2Jvsp6Aq/" + "Qt1Y2CQrzbm9pysDOwq6LNWpYRnjWDxDuWY2s+OkoNa8Vn2Lnf95akseuacBAF+3YjMZwVTi4QR+enLNfRnKshdZ80T8YCEr/" + "uZH3PnQTFkLSqLuNkOIBZYBpGaYs8fkkN/" + "0nZq2VSZd+r6EWtxemMtYqk15+Oz4geFwtaQzXMexoV4jvd7Qm+itTht0tW6vYTSgEVYZGXSRMBsQaNwo/IwkKwUYc1hGYxkwl6rB0q3Ss00/" + "l4RbjjeFqCnxovSeEC5ghC2INZnxsyC2EHEEJkZlkaOElpzS9VDpMsE1JfDId+C4WQnn22XDm79Sh9+6B4he3P+VvUwusB/" + "JDEaBI3ukKpDg8869NPv/GGkGwQPRMuT2M9Bw6veKwdvFCFwuLpGclu2ihyD+tC/jxwsxShaTk+5P4H8W1wOWgwlB+YEg4in5IYRSynOxFnuG7Hcp/" + "8/47hauHKZEuEOetAAF0OjQrr6kJRQdHML7VNUQI46ehwLX+4ouOxvoEPAY+5GIRYO4hrJPPp1BcOhi7AqwzBGGVa2sfqUB+KX/" + "K42MvlPUoN3xSTfcIc8BIftSdjguxSGV5Ugbx4LEjhVtdyCuUF/" + "1QMnxPsahAugwOeiO+p+La1UBpDDfDP4TJH4xQ5vRHPp9X63shzcIf67OUt4XCmc3W7gohNsrfI+" + "fB9M1q8VrPjGA1Qmls2ZHpMIOnVtUYS8NUV4QXQUXQU3657z79rjA6iH27krrxkpNtJ5JHqjARBIhXpdM88SNuTtSlZw2QLqYdnOYoHOXCNh2K7BCd" + "1yomfibhavET17Dja9zUzwjsUcSDU74Yfy0ej7FA2vgQtLtCEArpfj3zqc5sjgjlnbwEHB3CtG0vPHaWv8mzJBy9uMlD91FVpWd0RkB7fMl/" + "slWQ5Eunw0RMBZpgOmY6CsHrNwSIGMUQ1EBK291HL5QoyiQXUtKleZ4UJ9RFbul7kUHxxDxLDmkXHX6TZxb5MGFMg4NgKDyvI3GoY8/" + "aSRJOxTVJEm7D+kAl3zx++twCj2KfTQu59P3uCkGNEbSkXMwzBOFMWBRW6sApVuQROlPqyX3Mf83fnVFSLU6tgp2QFzdG4o86o3A6s1V+" + "QbjlmtCYcrBkqZsrk5PSkR/XhzSi7s/KJzzGhw+z1PDOifZJpzR5+ORnlVcSePigjCUnLJ3VS3md4VpgEOxyRVqIVvRqgYf12cMoBhTCj2J1zS3W/" + "gKeYbqghkS4U9piuyfNf/" + "A+" + "dio6Viesg5FHAip50ZlPCi8JGyPi4O5JzLOnTCIbCBxrDl1nj3GH6mIC2lkUMf5b5YP5TDrWcToFo3CE6Re6MLe7kVv3pcNvFG0binyW6lXD9aR08A" + "6VcH8KSX5jOa3xgG/" + "o8cnZ7fcnVvIzuzmAS8fuOjD8qBHQwphmY8S0wsAdizs5XOVbQ5nbS6twhGIu5VOgYPKTCfXVBQ5G5N8JqXkm7lCn5yUaW3T8ijx1WR3MTbIJL93wx" + "l7gTe5zBbJjwloD+SA0CFAQnhg+" + "6fAbpbkUzcEVnqztRpX9hngczkJAIfwvtpi58fHiDsqgEwY1Avd05LyhS4xh6n5RCmjgh0B0I6DlJ76Yt36y5zFX8RFEBCqtIwoPQfuoC2LHwoQy1F" + "9+tQ6LMimNcAi0jebpzgF1CfNmuYFUHvnz/" + "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" + "L4GuEO6lpVfWMwo+" + "wt0JfswSJXFSeEmAh7YiWWjsKOb9Vh7Ff5AqHAuEaciUcyQnldkV7jc9BHxRsQeHP0xAIDf3EcAwPZDg5mdTYjnY1CFkTRzdhJex8NAzSmbwH6QxnH" + "cxsGjIn/gnuSgIFEVOo2XmCfz5BwRcIfyAhd9VEJAAPioYKwCBCyQ/hBvB/Pjk88PZlPEZZZDG5z4/r5N1ido/" + "SFnz4NVuykpffEIZWLm67WhKmV1kv+kj4FOGPh7+VEeABcepZ1OeJMTsRvBiFTsTYaqh+" + "3ztgilHupCJoHfTD8UPFolctinThUt2KfLpy0nxppSppE4lBFwhlFDZyE+dFXOXuTIv89Ch+" + "WR8z6SW32FJvGIlpMJrvJb8QpjSFBc3CVQYeHCl0xCmIKvOkayVqbydKgj4lKECzgZBHDX3QR2WUZKtOJ4vTQg11+" + "4kHHq86NnWBbAQwmJlxuQnnhUPK2LtOZJZ1v4IAm4hXKgfqBO/UVEf5ZpFwKhIp+a6mICqrM4cv1DVx4rBusDMZ2ERgef/" + "HUwPNj1HUvk7FRBwhVAAZSMvTOfUfP6Cci6pDDaq16pso4KqKinFea5C7uIcyVVgNkjsU4YGII5lETs0K+zpqjgjY7pINpbNPYe/" + "V+" + "XZZTgJS6YLfEgmf9mJYKeVCLiFsBLAicnpxHTmMDWQi3LA797PQwSWKcR7C2xXMu36XK7jNgW1BXFQCMxlMWXDgs2CPDzJOAKsnPMXZjo0SoHvHvDH" + "nYutHai8qyXhVJ1SXG3FjsM4+" + "IbpLAqB0QoNjKd3UIGwAbFewBajTxE2ANezXI0A1io6wA9qWQ3ltAzYTvNRbhpWHmtHBHxRcWPwZRVggfFqrltfG2Pt2a9HgCmD04YISBGwRsMagpM" + "jcHgE3EI4fBM5g47A5RBwhXA5rL0kR+DwCPiU4fBNVGZQUxEWKnlhhzUKPz6tDJP7zkTAFcJMwI4SXQqB/0TwLgPfejz7G/" + "BR+HQ+rgsBnzJcV3v1uJUyYP8Y8i3NJxz8dyUCrhBWArhzcnYv0q8I7cyOF3/tCLhCuO4WxEJw6+C62/BQ3LOG8KPIkbmHYtCZeUJA0wMWD/" + "n+IO818MUlFAELi+90BVKc57oZOj6NuJxGHd5Zl8u/B8mv6X8qRnjY5Ag31cFpHQI/" + "seRYCP+LD+ZamLsHQUBChiXAB0T4kAgXX1xCmKHUQqgdZcan21AqRrw5yXP4LoN5NnBrPLxQ/" + "lsc4daA7bvO4r9WexSC04ERiCPukuPT8n+volS63QjliyJhpwKLo0iK8wdd3+vCuhilGG/sCLfB8kYL8AibI+AKYXOIVxeAJTB0fFpqHbC4aP+m/" + "I3S8O+1QFFQmU6k8Qnjk241AQ15KA6KYwrlPHzIElGWKYwsyB+" + "PgIArhCO0Qp0HhLsnyBJQhBtzPx3xmQKcFMbaAOHpF4WwDh4Lgs2cvkbk1Su7Fln513gg6SvFMaVVy8rDdkKARUWngyIg4UGwuTrBj6yiJE4KLwkrW" + "5HdScwxPn69uErLNKA38sfyWGtAUVAu8/" + "1ulFc4ioV0Y0eqDW2H9o5wUz5OB0PALYSDNcgAO7lZH4SeuBLS0vFpeXysidzvS6XtlITuUQAsXHKwCtYFYQh/" + "iBPDpx6pRnm5ssHa6KYxunc6IAKuEA7YKMaShPBR9wgkAhZIfggWgvrxyad4fBrCHUjxGdVf6ErzwC+3OliraHWkGsogLY/7/" + "Ag3eTkdDQGfMhytRc754evMS45PYzRGofDOwk9jHubHmQfpGoOCw8Eo6QlMKI3UgggWhtIxjUjXAV7quadcFIet0bEj3JTM6WgIuEI4Wotk/" + "EiwEOpUUC1GyS+EKU14+cgiRrcWH4uCK51WMC1ZfKTaAA+RFXeOisCzozLmfF0Ogah0UDyB9MyUxCyEsIAZg8z5xI3iEYct0d56gUVy9/" + "oQcAvh+tpsK46xIDD1WVhE4H+ni+" + "mBH6kmEO6FXCHcS0uP1FOKgPWCbs2gFF1xmFb4kWolcG7EjykD80bmnMEMvJF6eTW2QeC9smWX4yTlwHTBj1QDjOsnBoKw7oRCYEuI1We2ppwcgRoC" + "YZdCyuCNIv1Srh+pVkPresJQ7rTtyacM19Nou3MqBVCdUuzOoDOwGgHfZVgNoWfgCNwOAs0sBI0eLDi9jdAwDYFey7/" + "bznry8l9HwBE4KgLNFIIqyH/nuxdidM+chC0sTjp2cgQcgStAoOWU4SspARYnjHg3nvfXecnFyRFwBK4AgZYWAtaB/" + "eFmVtWj0mBLi6mGHzoyC71yZMe0jEsr3zF8FR52YlSeDZIsyNr0mek1u3rICy+Dmb8e96VmCkGVyv8sg4LgCzqjr7XGOH7oSMO+4Jg2BLOQ1Ri+" + "Cue7l3+Uy0E6vMzFf0N6JD/+FPYfuT/VdQil0HLK0FVWlWOawAssk/eplSbVpF1e135DvXTxJeSL061iOhfIrdpgDF+F23S5+8hMxjvrbFgLu/" + "SPjJfw2FwhCATMftYP5n7ee+grOyW+r8mPBufag24V07lYbtUGY/iODXLICnSYL0k1mzJQq6gMmBMF8yg+45/+rZaoJQI8f/" + "GlhMxyP8d0OXZTUo7ha3IwNG0O4SpoyIKYwkPTOLMVgoSb0Z+PbkCPuvhyL3MktB0mEArBTCXWEfjXXI9iXPJBUZAXioA073QFUhy0+" + "tChIxc58EM80OD8C5B6Uj/qNkW5KWpbUrlF3K0UhZtlNgVTtoL/oTS9dR8987n3zd8dUTmDuCps93Y3TFNXfI3im8aP94MKQ/" + "nR3wmnTw0pjEKWw14tsHsYzr4fEgFhEYQKhC/myEUBIDBoOt45oDFxO1IclEJHegYEOh5TiiBccskXSi0EDvygLNYi2IFIO+8LPedf7pFXO1K5CCD/" + "9Q/8y4Vv6vbjdqWM56Ry6Yg13E+Rt1WYKg+UL99nHPyQyji34zGU/xiuu7Z7qQYz8O2SK40Nita3Q5j8aU/" + "6FP3613pOvz4V4qz4WY3dZIUgJqnYt1kF+HhGGNXlPyooioPCoOPmIy2KoftSsOIB5t91QSibfFR+Lb+" + "XBJZI6el0bPugdGZrX6WhsRCO9KUqtohQECwSpopL3pvSGO5LMf2UcQ3Oo1ip7ouxVdoqriofnha3e1afJo/" + "ieRK+hcIYQCC+UA1mRli3fInqzHK2CDH+rP6rNKtkxsqepBBUGJYAmi0IvyWW/6gSsLjRtdEhHe0JArxUU6bblZ3SiXng5AoiCQq38PtG/" + "I128DxhfH4vN28w6g/" + "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" + "bKmZ/" + "iMlr3zHeLbK7ioCi40mkIU5Clh9yclGeucKw4d68EgWdXwqez2RgBCS8KhiuQnpl+" + "mIUQFitjkDmfuFE84pQOubF47l4xAm4hXHHjNWAd6wJTf9UhNw348CwOgkCqENinztn6Vn5nJmkeyZ+" + "vEwG1LesF3ZpBqRaKw7Ri7JCbUlL3OyACak92n7rF35xFFAJzyKG5Xzq/zNP6830g8F7V5NVk/g/xSm7pkJv7QOI2all9Oe2z77/" + "nQztOjkAZgagEGFGwFDjkhhecnG4Ugf8HQyG8B0WFfIkAAAAASUVORK5CYII=", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}c^{2} dv_{dy} \\rho - c du_{dy} \\rho v + dP_{dy} v\\\\v " + "\\left(- c^{2} drho_{dy} + dP_{dy}\\right)\\\\\\frac{dP_{dy}}{\\rho} + dv_{dy} v\\\\dw_{dy} " + "v\\\\c^{2} dv_{dy} \\rho + c du_{dy} \\rho v + dP_{dy} v\\\\ds_{dy} v\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ 2 ⎤\n", "⎢c ⋅dv_dy⋅ρ - c⋅du_dy⋅ρ⋅v + dP_dy⋅v⎥\n", + "⎢ ⎥\n", "⎢ ⎛ 2 ⎞ ⎥\n", + "⎢ v⋅⎝- c ⋅drho_dy + dP_dy⎠ ⎥\n", "⎢ ⎥\n", + "⎢ dP_dy ⎥\n", "⎢ ───── + dv_dy⋅v ⎥\n", + "⎢ ρ ⎥\n", "⎢ ⎥\n", + "⎢ dw_dy⋅v ⎥\n", "⎢ ⎥\n", + "⎢ 2 ⎥\n", "⎢c ⋅dv_dy⋅ρ + c⋅du_dy⋅ρ⋅v + dP_dy⋅v⎥\n", + "⎢ ⎥\n", "⎣ ds_dy⋅v ⎦" + ] + }, + "execution_count" : 14, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute the y-transverse terms\n", "\n", "#drho_dy = Symbol(r'\\frac{d\\rho}{dy}')\n", + "#du_dy = Symbol(r'\\frac{du}{dy}')\n", "#dv_dy = Symbol(r'\\frac{dv}{dy}')\n", "#dw_dy = Symbol(r'\\frac{dw}{dy}')\n", + "#dp_dy = Symbol(r'\\frac{dP}{dy}')\n", "#ds_dy = Symbol(r'\\frac{ds}{dy}')\n", "\n", "drho_dy = Symbol('drho_dy')\n", + "du_dy = Symbol('du_dy')\n", "dv_dy = Symbol('dv_dy')\n", "dw_dy = Symbol('dw_dy')\n", "dp_dy = Symbol('dP_dy')\n", + "ds_dy = Symbol('ds_dy')\n", "\n", "dq_dy_def = Matrix([drho_dy, du_dy, dv_dy, dw_dy, dp_dy, ds_dy])\n", + "T_1 = simplify(Sinv * A_t1 * dq_dy_def)\n", "T_1" + ] + }, + { + "cell_type" : "code", + "execution_count" : 15, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAREAAACYCAYAAADDXN0qAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXa7kttGGew7mOpicD/" + "C97R0k4xVksgMnswI7O5jgXNl3g2QH8axgHO/AyQpiZwdJ7gPkYJAN+HsfHpZCsSmJUlPdUncVQFHiT7H4kiwVKUp69tNPPx1a0Ndff/" + "1CfB4ir0+i/4XCP7Tg7zwcAUdgmwg8byjWH6Qwfmf8dP4nnf8o96mFue8IOALXh8Czr7766heqFoO9RN9JGfymFJGHKR0mza/l/4U4+Vgj/5D7pc7/" + "TpiTI+AI7A8BjV/Gsc0uehVQ3LPUEvmjYkmc0j/Ti4lzrJAfJtIUoyUIiuydHIJ+q+vOoilm8MDZCDjGsyE7KcMU3op/" + "owJ+LfcqFsTN16b+LA3cyzGefq+0Fq7Li9AfCqUi++eEp5bIpxJ2jtIo8P1fkHhR8Ofyq6czSos18xv53/2Pk5+1RMAxbonmNK8pvGP83+X/" + "MuemsO8V9lLuY51fWpH0xJM8XyrgT/Kf3fViGl2IMZYFWuoImKEilCfVyEPJPPwEBBzjYfDARo6B0Yym8FY84wR6/" + "+QdHVlXxCppKtdRKScGNFciAoYpCVYIayFztCfm0T9n5jmx+jeX3TEebnIGK64lTeE9deNkLEH/" + "9+Rt85iuiZwsYVQgzOEA7xCv8WumSQAaFmVPFsQZDCHgGA8hs074FN42ToYePIR4iTZkqawj9Uyus5WIFAJWxn9iOVgaPyiMOR1aE/" + "MLJWJmGgukv5frUUwLH5QLvFAe5HkrF0hpuCtgxqGF/6Hrb0KEDjon7e/khwVY+Uydllg/xrLKVzl0Cp5WUW/" + "qS11rFKSStiWVW2wHK0XxZhHWYMy61Y/K02EMH13/" + "Wd7qe31UziCuittcPwCbnCTnJN55Hl0PKhnxo48TTx8bUjIFlsNBa2H5fLjIfkwEiYUeKhUWPuWjNBhUaEweE9PgvcfFStN70qJrgKFzMt0JA1A+" + "fKHUEnlQOGWhIHhyk3bwB11TlpENahahUh4Wf7IvORi0L+Sb4qIe1PXnJzOfwUDl01nH2uGgNCdjLB4ocBbGqx7xz6hCL6n4T+" + "G6qX7QEz5ezMC7y648dqO1vh/iFE770sfo960fMqyCZbUSUYWoLPtG0icnv1XYW7mDwicHk9Iw8FEg+R0cZYI1gzKAFwD/" + "jXMRCuoxnP3vwCAJ5RKk9H+RQ1uvYhWINw2aP2ni8RtK5RXl6/xcNNUOrTAG9yZ3wCFgpnBVPtp9M/2gVA/" + "VoQrvQl76MPSZeKBIjdhm8b3Cjix4S7DEF7/" + "VxlSVEpEAWBxoyG7gUhGFTyoO0iVkd53UqiAaQFPlxAKrdeBOUZFQ4YBBw+UDl2nVoBJRHGXzbH7J5rd3ypc3KnhAyHJEKo/" + "wv8oV448yPAVw57F6HyVRXE07nIxxLLinqI+" + "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" + "9CgtnZInKaybhMEt39Yx0jq+" + "Vjjl8cElyuJjzigEBj6uw01h1J8OD7FYZ3wph7TI2ZHirT7wC2XGMJQT310tKp2OwQZPJHMtrp30ymOYGf4hTuHgww2APtr6T3WhjHiwPkt5ayiptK" + "xF55tTIrHR/hZrg5loIFoF6Qjp3di+yzrVqe+VbyqNlbHEp5MN/iGwlqHqz2BnYKMcUnk55+kASvMgn05l37ulbmxcs8e28OgUiM4hcIPYap/" + "yJYz0OVGfntVBvpiXwVOchikehcRjURTgZjq9ZKnCVXLnZLjN/" + "lNdIyxCe0so2niTtDklIpTSvRPMBVOFwV2BzpDejXUZpgz5wCA8JfLlCinExw72V12Qppa6v9UpP1YAg7qTFSYKr7Y+SB+" + "JQYj5WlICwcKJ6ZD123gOLgzsQMrbnVuYfBQySigf2ORN+" + "R6UJtRHfum7snRm6jpE5J39k7CUWSzfBm8aRdnIV6ofdetZU2lGndfimmULuFHmGO88j12fjIUYFfusFbAFHyXysyiI+" + "ReVS431AQHkYyYyUNLBRMfCZM8Hgt2RFT1I8A2dME8RyzzlHzIoOyyiIHvOf+" + "Z14JXmEV9wYOB2JrVhIN8GmymUNGt6TrpcWcAT9z5NqPMjGYhXWaRFFrMUCc6JdsuVfJ5m9FrllJQE5cN79hfZY2FHdRK/" + "I1wLgoFb3t8KyYpBJ2MhrtZnH4slXC7wIyv6uZ1s0Lc7ZzowCet1UHWEXyhsaSOfXO3YEemM3QBfynSEFwPgoPhe3WM53CFHnzpFvj0lFPMyWHtKeU" + "QGstjg7pRRTP+" + "gOBQ5OLDQ21NKSkMbMUWjLZEXWQ4KL9WHqKYUZSy10RiuyIfcUJWcsZzWWCA3BHabpDtJ9d8omflbEZSOlk9RSmEsLtY0MrysQZrVUWVb45rf4614s" + "xR64RMXeb2DQiWP+H0uFwZh5HFkYRR4Dw0WNkcFS088v4SvnNXD/JQd6dm9GeST/0LXPG1i7QQ+tAMDL28PlA/" + "Kg3WUcK70eRpFrU5zcEUYa7vJG8SKWNxHVLZmifzbWgslslXCuqCTBlIj0aAA2g2gGDbZwE8cggn+Mp639hhAR3Nmycc8vLrxlZ6By+" + "BK64hJzMD8QQ7iSY8NYtLhpjA4suBgJAJfsxrSJy7UhzwdqUzK4J2ddEGV+jGN6w1OXfcsQ13zhIcwk9ssmo7/" + "micqexauiSxYVQflr1F4a2FB+2ItUodN0vNNSiWhBBpPJ7jDsTgFgOyV+FjuXRJW2guhJEUKSkl5WbRs2iDiFx6ryqcj2frMC52/" + "XVAWyog6vpFvfwlkQPNYljDwMKKDMZWZ6uTIwnQiJxQCltwruU456DytD7jz1Ify83KwcFLliaLP0ygotCeKsFdOiDjfoRpX1ROMwRaZD7pGgfIYvb" + "TQTBJoLSxYqytiGkrdwGGzSgRs1GilO1baaashFC9b+MQaad4o4t8NwmqhCgnFBwVXquNRGHVSWnusW+D2FKR0PavCEip8cFAobrQ+" + "ikcx4VIrhHIYbIQf5FMXfJRLtyCqawboo8WTZm2KZR1hqHKPwpS21O8GRVT6NbGgv6Y3jkE5LhVxd6mCL1QuTzCKA+" + "pC8uy22Dgog5KgEroOloZOUWzclQMpHIWBhYbSOPpJ2FOq6iPldWVW51o5oerVk6sVFuLzQqKDK/" + "12s7RpS2QF1NDo7AcZvcuuUO61suQuzrSTxVXWfsD1tRzTTBvshP1KDsXyTg7L5ejur7BJEs/" + "mFuRkofUJ1sACzNjAaFjWS3PGlDf38yo1CGsD7+V3jynPiLcX5QhUI6A+yvpat5BenfEMCSUbT+" + "pYs3x2a9MZ4P1C7oETJ0dgqwgkgzRdc9qkuDenRNQ4mIY8NWGe7uQIbA4B9U3WkXitYnDhe0tC35wSAXw1DlMZ5u08NXByBLaGAOtIi9aNLlGRW1tY" + "7TCWAgk7NbsAP3EENoKA+uasR8yXFhtLhDkXQrO67uQIOAKOQA0CPCkLyg4lwvyLR5/3ck6OgCPgCNQgwFJA2AR3s9OZGpT2mEamMJuT2I/BzWH2/" + "2n2WGeX+bIIuBK5LP7NS5cS4R2hxf+naS6QM7x6BJjOOF0ZAlIkmJrQlnd4Pknox90j4Epk901YrADvB41+" + "qKiYywMdgQUIuBJZANoOsmCJuBWyg4a6BhF9TWTnraipCwuo7L7lUT3f/kB5sLj6Vi6Q0vA2KO86lP7jw/sZvETX7F2iifKQje+VhMeD8vnoEvLP/" + "q2o8jhtAAG3RDbQCEtF0ADE4uANWpQAjm3Stp0/" + "tUQeYhwfWLZ4nQbi0T5v3raksfJ4bwnFZ8RrCFzz3QynHSLgSmSHjYbIUgpYF7yRjPJIX9LinN8nMDhJx50f5QGFtZKn0+7IC4lp/" + "i5iyUmhvHwTI4qPL4UFUnqUHU+UmsnwxNmP50LApzPnQrp9OVgUfOox377PIE2nJoP/" + "8YkijQ5e8aecN3K1P6MaLC8qGJRfaiUhBr8aHZWDRE7bRMAtkW22S41UfLCmNxg1EBmgTA3SO71ZJKw9EH+" + "kdJQvVTpK0qOwK1FpsBYmSenGykPB9X5RERnad2kn+XuC7SGAEvlZFMv87UnpEvUQiMoChdApi5gAxXJQfE+" + "5xLihx74sto4RyqfEbywPcZTXTatiYsJ6vCQr060qBRV5uLcNBD4yMZjO/" + "DdemG9x7m8fgXwKEAYuYmtwMvgZxJYGC6U3WGOaYGmQB1IYyonFT6wDzll0fS/" + "XkdIw8FmPwerglXV4kzdVEIRZ2URDhOVWz2vl49V3p30h8G8T985O3N8PAhp0DF4GbBi8SK4wlAaD+weuRfln9VAgaXrO+QJ7N9B1jtLgaQ+" + "fvWPaQxnwTJWDLsPbm+Gbonau9HkayoNfIMUzlbmXS2UgLLemQno/7AeBm/vG6n6aZlzSOODfKRVPXuz/" + "NCgXFkIJ4xcZueWB1cFADgNX8b31EV3b+oft4UCB/KjwZ/" + "KPSOEoBPZ8FC0J46c0yMUeFspD5kc5wub8N0jJnbaCgNq2+8Yq0xmnHSKgRmQQlr5+VQoLNVSeoBxGqsuaSpofSyG3MIwXCuaVeBYVCIkGykv5B15+" + "2DcCd/sW36VvhYAG/" + "AvxwnXTG52zxhJ+RhXjdRmUA8rlpcLCN0DlMy0ir9MNIuBK5AYbvVRlKQEsG1wgXQdLQxdYIuGpDxEKZwrDlKnFz6hg6bRzBHw6s/" + "MGbCw+" + "Uw12wLK4yroFU5XXcqv8jEp8na4AAVciV9CIraog5YHVUVwDsTKUxtZVWCTtLcxaGvdvCwGfztxWe3ttHYHmCLgSaQ6pM3QEbgsBVyK31d5eW0egOQ" + "K+JtIIUq0VFN92VTiPQ1mgxGcNgScgPA5l0xeUv8r/FOpHR2AnCKBE2BfAYhmr8U7LEWC35xspjXyXKDtHeSzKXgpblAyl6BrFw+7RT0OAHxyB/" + "SDAAnzoz0xn6OC2HXo/" + "VdiepGNvux69vRrFZys4+Ds5AntDAMs6vCaBJeK0AAFZEUxJHuQG33ZN2AL4F8m1naLJ87daLc59R2AXCGCJOM1EICqQmrddD0qLpYHC6fZfECbHq/" + "RMdY7eJVHYH+Tg7+QIbB4Bt0SWNRFrGSiA9D2Tg6576yGRNVYIi6lfKj4GhXWoL3RNeIlYJ0Hx7IpUH7bK85YuitN/" + "4bmr1lsurCuRZdhVv+0q9mE9RAMsvKxWWVx48a0y7WaSqY4oUf+" + "F52Za5DyCuBKZibMGChYCLrVCwqCPcQf5qYWBJTL4urwVrzx8nwGCN4u0YdGKAEjxWD+Es4bCguw3WTkKqiflRS6mVU23rke+CNJN3+" + "ql8pR7RMDXRGa2Why4nZLQdfFtV9gq7mg9pFSc0qFAPpWPYsBiuZefKimy8bUxHgWzkMtUqpOByAWEssK1JhSq/" + "8KzNaob5udKZFnj2NuuDH4Uhb3terDBLf+Nws2a4OtfYwOWpzQhrdKhlOwThzp9IoUzMCkPBVJae7Gkl/" + "axcNwKuXQrnLF8n84sAFuDmEEyOlCUBouidh0EBfMYRWEQ8iGgz+W6x786ZzrzVj6/" + "XECZsHD5Iea5iKfyUaDIhdXEFAtMUIJv5QIpDXVD3tIvPEm7+i81tyBDAONKD26JbKNhsWT49SRrHhDTlvtwpoPCsWqYxvxZ5/" + "iEXVqBoOx4DM22fRwKE4UCpQp2C7/" + "U3IIMT8hc4dEtkQ00qgYgFkdndeQixQFKcNNF0Lyc2mvJg3XBPpf8vR8sku5fM0qHpcFHoyHWSszaCgE6oIhSq8Wmavl6kKU/" + "iCeKCqVa9Ue+NWTohPGTgABK5GcRC/MdmhEE1Cl/Gok+e5TkKX6J3QRRPGstDNacgqWjeNZjckIRHG2CSxIxkE/" + "6haf4o2BQRqnVQhFTv9SkPkfvKJFxgPy3ngPAnBj8keVHifw3Xphvce4XEFDnHx20hSwXDRpQEgeFM3XiEW/tuk1aj9/" + "qojf4xQeFwBoJG+UCKSxMuWJZxKeWFIptyS81kbtXdihs4LCSDAOl3VTwv622KBEnR6AagagsUAidsoiZUSwHxZcGOFOZbpoT0xPWS6u8WCd/j/" + "HBi+U96GLwHaWYj+kVSgsLCmV2UHjKf7EM8HIaRsAXVoex8ZhxBPJ1izBIyaLBy5OlMJAjC87z9KWw1+" + "nA1znKisVb9shgxaAUUDSpctBleCU9PHa385QPCUSl8kphPRmesvpxDIG7sUiPcwRyBDQ4udsziBmAgRTGFIPBbftbSr/wRCEEUnqmMvdyKQ/" + "CcuuGtZfJd5TEj8fEWDBBUXGt85yIXyJDzsevMwR8OpMB4pdVCHDXf6fBylMS+" + "4UnlghvHxMWNs7JD6QwnuJgTRCOEmJPycdy8LCw0i81mSKlC7womtwKUVCwflBirygrBGQHwikrKa9WhoyTX+YIuBLJETnDtToyd0Tm+XTkz+" + "TYRNZbC1DYZkmyogjSwW2ylsJCnPKUrIOx9GCES6dBKKrwRz6YRjnwUS7dIrGusXD4uRZydqTrWTJ0Gf1kFIG70ViPXAuBv4rxe3Vqnoy8leP63MQA" + "6w2ycwswVl5UAJ18ug6WhvJgiYRFXPIrHIXBtAel8Qs5FAoWR5dX104rIuCWyIrgllirc2PusxfCLA/" + "utOy5wJ2t46us4rSgJPMFw7BUmIawuPrIudxrOf8jn0DYCrkSOX9LYFKnZvVLRDinAjl/lZeVGBXdqLJTGsOSpzfpPpRlhXqu2Qj4dGY2ZMszqMO/" + "UG7Mb3uKATPutoNb3kng5AhsGQG3RM7bOszXD1ImYdoiH4VC2C8Jd3IE9oiAK5HzthpPF76T8mBdBEXC27q8SHa2tRCV5+" + "QINEUAJcLCHvNKFq6c1kWA9Q8e5/r0ZV2cnfv6CLBWFdajWBPBpGbDDzsIndZFgMeUowuF6xbv3B2BZggwDUdvHFAiTmdAIK5/" + "tPg26hmk9SIcgXoEmq2JaJDw5IFdmBDWDTT2b5WnFDdyFD5MG1kTcXIErgqBZkpEqPDehD2zP+" + "gcU4dNQv6z6qvqMl4ZR6CPQMvpzJdSHMyTjNiKzPsMrAM4OQKOwJUi0NISwQpJN1FVQxYVjf9+sRqx+Qkd4/mYnZJjCm/" + "F85if6a3deFlwt0f9LA3woIPxxLZ/C9fl9qiZElFF8y3HKJX0+5aDtVde3iPx3y8OInR6hGN8OoZzOEzhrXhevvyjfL7Zy1ffjtbLFMb3Vf4l/" + "2O5zSqSltOZDmNVmCkMH6qp3ompPKlG7nhd2wn1lOM/LGenW8F4CbBrtMsU3oq3qf77AZlZV8QquUh/GZDpKLi5EhEwn6gU1kPm7sREE9/" + "C7xfpFLhL0K1gvATbNdplCu+" + "pGydjCeLDT5ulZtMZahgVCHO4YJrFa8LTD8sMgQGgvhFrCJ024Y5xGxxruUzhbePEPguR8w3xChyyVPL0F7merUSkELAy+" + "CIX9EEufBsjKgzML5SImWmsixx9ri6mhQ/KBV4oD/K8lQukNNwZLvr7xShK50kmOgVv3VJv7hLUtUZBKmlbUrnFdrBSFG8WYQ3GPIb/" + "UXl661q65gvqq+/1UTmDuCpuc/3AME59yTmJd5o+ng8qGfFjPBBPHxtSMgWWw0FrYfl8uMh+TASJhR4qFd79kI/" + "SYFChMdkTQoPjd6Q0KJKOdA0wdE6mO2EAyrcP9KaWyIPCKYu1FZ7cpB38QdeUZWSDmndTUh4Wf7IvORi0fDgo1Ec+9aCuPz+Z+" + "QwGKpfOOtYOhyjbSRiLBwqcr7bTvquR+E/huql+UAJiBt5dduWxG631/RCncNqXPka//" + "42uW75ntQqW1UpEFaKyvIGaVorP1AXrQeGTg0lpGPh07vwOjjLp/kuidAD8NzkIBZW/HMgADuWSQOmb/" + "34RvkbiT4MyoNKNczx+Q6mwULqK4rLyM3+qHVphDO6Td0DVHSXA40puCpPp07oo/SiuSku7N+0HafktzlWHKrwLZdGHoc8ihk9XT//" + "X4TuyRxa8JYjpZ2GuPM3HlMlTpUQkABYHGrIbuDBQ+" + "KTiIF1CdtdJrQqiATRVTumj4U5RkVBlAgYNlw9cplVjUwvqMOf3i0re0Tud5Y0KHhCyHJFkoTzrKGn8PReK526TE4p08M4feU61w8kYR6GQvdfeubD" + "xek1cw1Q5ltOkH0QMW7ZLLd45fGG9Y6y98wzJ9RLM1xhTQaTniWBjpzRgi5fHAp+0IIHIIGRgdGadwj6QRj53KuJTpUMH+KC4/" + "K7HH9LGCF654hlLH+JUDuUhw7dZYuuIuRyWr6QkrE7dl8kznlOXNe0wF2OrX4ex6kx7UOcavFbDVXI07wfi2bpdqvAuNCy4F/" + "tOIW0eNBvzNbA0oZ7byZCvwulMuG6QD6UdCx/hQyMcFF/qsMGkVlzoTJE/Yb20isc66TWIwpD5Qe7U3y9iGXRTLZ0b8cFgtPuY9WNpT/" + "ZjfUbbYSTNGMbUL3+0Tic9iF8P0xh2CVwX9wNkXosW4g2u9Feo14+fgo6PsZwWfRnmzbG8Oxa5H6IK2AA2v5dA8XZH7oWPXOSDLlSK9OK1xd8vUj/" + "WPzqSnHQC3ODUo4tbPHQAAAZASURBVEvc6ERlGv7m9zgrPm2HuRjnyqJT1OL7pdwLCos+" + "i8n8kgHLhUEADvlg4G4PNkwBw7nS52nm4IpllNepFPa6UI6yrk65bGN9GmGsrSZvzI0xp+wSbqWwaizv4FpBdJijAaMKMh98rMh/" + "UFo6Px0JgQMpjDsendAG6aZ+vyj5GDzIey8XKIaxOGy/bowxZ/" + "FG22Ehxr0BIB60x0s5UyyfRr5UkPY++beWEcM5uCJLUGQIofwMQtok7UuETQ5KpWlGEZe5fZrysWKpR65YCc6pCeYJ0+ZYPk+" + "YD56qsgwYXvWnQrb2QKPyqT+UQy2hiPb0+0W7Y/A06U2sJE9oePRmg6y27ienU5k17TALYwmFtUCb0Lb/kUOp8LqC/" + "RLzvc6NmBalNxPwKQ4E8UMZvZIP/" + "5xm4QoPOawfFhTpb8hZ8xvOvNw1rqvxjvKj+MDmoGuUHk9ieI9miFphHvirrOZYVikRSqfwoVrWhosHHSDthJa1FBbilKe0EDaWHuWGS++" + "wmJc0FuGHKAc+nblb5NQ1Dfxo8ToPZqmu4TXW0Io+D0mW0XaIspfwKYUdatMr3UVxVfmz+sF5WqPrSyVsj8IG6jAoamPMu3IG5DiSt8swcXI3Eb+" + "7aAH0QULjAuk63BF1wR0zLDASoXAUBndflMbQ7xcH77TwWEg9+" + "RbyOHs2YdSTG8wkhOGzBVxPxaRXv1OZtcjfGPMWIhV5VFsixdzbDUSrYraxCPjIudxruerfLyrvC6VH0dhmJ52eTuJbNP9P53wWDpvF9dTab7hdTsb" + "8VGym8j/" + "76quvuKMw2FhAS6cAU3mvOl5YcJdlzvpznXOXcmqAgOPaAMQNsFA78loE61TPrm460xBfnhjxtMgVSENQxcpxbYvnxbld63TmZGCj8tjz1ONkDNZg4" + "Liugeplebolcln8vXRHYPcIuBLZfRN6BRyByyLgSuSy+HvpjsDuEXAlsvsm9Ao4ApdFwJXIZfH30h2B3SPgT2d234T9CujpB/" + "t+3sl9IvetrkvbxfuZ/MoROAEBVyIngLfFrFIavBjoPwLbYuNcqUw+nbnChpUiYbct5PtcnnDw44oIuBJZEdwLsubt4/" + "xrZRcUx4u+ZgRciVxn62KJuBVynW27uVr5msjmmmSeQJq6sIDKJw14eZKP9aA8WFx9K3dESm8fHyKODyzxtnPT94PEjzegN/" + "XjMSrrtA4Cbomsg+tZuGqwYnHwBjaKAMeHk1AS0JElonjeSn5PupiWzzxaevK0In6ShCx8RiHnzweHUXxGKDCu+" + "SSj0w4RcCWyw0ZDZA1S7vYoAZRH+gkHzo++" + "Tq80DNRX8tPPOvKdFZTQICk9n0n8SQ7rZpJiOvsGC2szfM8lJRQfyiyQ0qPskCmtw1OkH3eBgE9ndtFMRSG5w/MHvu5/MTEVg/" + "S7Yg4FKj0DGOXDB5cZ5FPEd03n/" + "PRrtZ8kTQnq8ZdBwC2Ry+DeolQ+SdibskgpYJ1gcXR3eitIcdzpmWKgZFAMfOUtn2oo+Ij4In+vnKMUSYB4Mj05yCcf8qRKjrKX/" + "HhM2Zy2ioBbIlttmRG5NEAZnLhcWYRvnSq+OOgVzvSF6Q+DmXMsjN4X+3UNX9YtTv3pl33k+" + "oN4GRHWk03lMU1Kp1iW1v2dIOCWyE4aakDMfB0hDFzSanB2PwLTOesa9qsP4opTGYWjQFgjafFzKiyiXL5S2GvkUVqnnSLgSmSHDadBx92dgcegDKQ" + "wpg/c1Us/ArMpzFNiHWP6byIvC2d6c/LPqSIzrAuUUiCVgwz3cqnMhOXWVEjvh/0g8Hw/" + "orqkGQJ8Bbz2R2BfKO0rDWT2btjAZm0ifzmP6RB8jRjkRStBeVFY8GRadESEy231h1NH8nrAcgRciSzH7qI5NUCxRtIBb/" + "IchSktVsHouoPSoFxw6RSE6dGSn34pW7B2ciVF8JF8BDrtF4G7/YrukrdEIColFFMgXQdLQxdYInN/TvXExI83gYBbIjfRzNWVxEpgGsLi6iPncq/" + "lqn/6pbRON4aAK5Eba/Cx6kp5YHUU10Asn9LYFIX9H+keEEvi/" + "o0hkCoR7jZ59b9TmM9hc1T82hG4IQSkA9ge0D1Vy6uOEmEhze4ueXy6yJbH+bUj4AjcBgKjO5v/HwKeLUfK0MYJAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}c^{2} dw_{dz} \\rho - c du_{dz} \\rho w + dP_{dz} w\\\\w " + "\\left(- c^{2} drho_{dz} + dP_{dz}\\right)\\\\dv_{dz} w\\\\\\frac{dP_{dz}}{\\rho} + dw_{dz} " + "w\\\\c^{2} dw_{dz} \\rho + c du_{dz} \\rho w + dP_{dz} w\\\\ds_{dz} w\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ 2 ⎤\n", "⎢c ⋅dw_dz⋅ρ - c⋅du_dz⋅ρ⋅w + dP_dz⋅w⎥\n", + "⎢ ⎥\n", "⎢ ⎛ 2 ⎞ ⎥\n", + "⎢ w⋅⎝- c ⋅drho_dz + dP_dz⎠ ⎥\n", "⎢ ⎥\n", + "⎢ dv_dz⋅w ⎥\n", "⎢ ⎥\n", + "⎢ dP_dz ⎥\n", "⎢ ───── + dw_dz⋅w ⎥\n", + "⎢ ρ ⎥\n", "⎢ ⎥\n", + "⎢ 2 ⎥\n", "⎢c ⋅dw_dz⋅ρ + c⋅du_dz⋅ρ⋅w + dP_dz⋅w⎥\n", + "⎢ ⎥\n", "⎣ ds_dz⋅w ⎦" + ] + }, + "execution_count" : 15, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute the z-transverse terms\n", "\n", "#drho_dz = Symbol(r'\\frac{d\\rho}{dz}')\n", + "#du_dz = Symbol(r'\\frac{du}{dz}')\n", "#dv_dz = Symbol(r'\\frac{dv}{dz}')\n", "#dw_dz = Symbol(r'\\frac{dw}{dz}')\n", + "#dp_dz = Symbol(r'\\frac{dP}{dz}')\n", "#ds_dz = Symbol(r'\\frac{ds}{dz}')\n", "\n", "drho_dz = Symbol('drho_dz')\n", + "du_dz = Symbol('du_dz')\n", "dv_dz = Symbol('dv_dz')\n", "dw_dz = Symbol('dw_dz')\n", "dp_dz = Symbol('dP_dz')\n", + "ds_dz = Symbol('ds_dz')\n", "\n", "dq_dz_def = Matrix([drho_dz, du_dz, dv_dz, dw_dz, dp_dz, ds_dz])\n", + "T_2 = simplify(Sinv * A_t2 * dq_dz_def)\n", "T_2" + ] + }, + { + "cell_type" : "markdown", + "metadata" : {}, + "source" : [ + "### x1 Upper Outflow\n", + "We replace the $\\mathcal{L}_0$ component with a relaxation term for a specified pressure at the outflow boundary to obtain " + "$\\mathcal{\\tilde L}$, and then compute ${d\\tilde Q}/{dx} = S \\lambda^{-1} \\mathcal{\\tilde L}$." + ] + }, + { + "cell_type" : "code", + "execution_count" : 16, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAvUAAACWCAYAAABevXdQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dTa4UR97uC8S4RYPU8wbpLsDgFT" + "TeAQbpvWPwDkAMrugZsneAmb8SmB3YvQKDF3AlfOctGR/1Al7f5xcnIh2ZlR+RWflRVecJKU5kxuc/fhFZ9WRUZJ5rL1++/GK3232Ub3Pv//" + "nPf37dluA4EzCBSwK6Rp7q6FeFP5UyUd6byvsi5r8TwyeKvyitw/nGEzD38cxcwgRMwARMYHkC+n56Lf9NX0tK/6T0pBlqWZV27UYW852OyZy7X/" + "MTH5uACdQJ6CJ6qJh7Cr+vpwyefasy1cWr49cqwc313cGSznAIAXM/hJ7LmoAJmIAJLEWA76cf5b/" + "qaeDbljTyo0V217KV+ruqaHMRLxvuHIMdLdBWjTpWDsdq19TBOaQ/Kstq+78U3hvbvsr8oTJfKQyr+wq58+ammhuEX8bW5/" + "xlBMy9jJNzmYAJmIAJrE9A31H88n9TIQvtRS6WYZX/" + "2vWiEitlkkHP1BTbgez080rkcTQsznR8DuH8gwaHFfYpjlX6D1MKusxBBMz9IHwubAImYAImsBQB6Sx+9f9GIYuGo12+/" + "aaocBR2XypzWOpXyErjheJre+91juAhD3uEES/PFde5Aqk08t5W2Hp3ongEPz8xPJDHhXYvD3d0/pZ8aoc2N3Fz2al6fpL/Qv6p/" + "NitHbP3XTYMjQ83Y4w5K82b8W92XLawAo6Q+00+bW1hLgYbFU7iHOu9r7DvZ7KmOdW5yjXHFBvZl995jaTCygPrN/" + "L07Z3OKWtXQMDcCyBtmMVze0P4sWmPwfpjMMRc6Sehf9Ymd8bcWCzkO76mq0v4Tt5+I5hsH0CEJKFUa0/xiMDH8oMP/" + "ykvorxoG0Ns9xeFe1seFPej6rkv/3cdbyos57JT9bDP+h9b9kdtt45PjGfifY7cEZt/3dJWtV852YE9DxRWN4o65qcttr3ULhadj+Ks/" + "Fx03Mw+rxqceKA6Jt0QqRzX4NcK309s+koXM/fjHX7P7e3HxmOw/hgMMY/pR69/1iZ3btzUHzTX7/" + "JFekr50TXTt9+oAkQIrlVMxAZ2ChEcJeKajf+D2xhUV2r3bWh9/w91AIMObuZmtpM+tT0YsWb/" + "WseHsZVnjFkp7hqTNe2s2pJNzIPHCitBHxN5biTNoyq/DsZyZo5xE3mQk32stsN31C8cKpf/YnWQDcdUmH7JL379mvsxjXrdlnOd2/" + "VeHveZx6B7fGAjP/tn1BBzpafvra7v2qPQP93kdjv6KD8rO+qMbba+fU7pJ8dNNqOb+dX+UR/" + "PtrTrbZEFcQliTdTIEDb3I1DY0tAq+DvqfqT8ze0IbVlTu62DpwJ3YqHbbYVXjJvNzsgFPojUrVzp+" + "GxlX1u7bFtqW0VnhX5vi8sYzsqbPiTY7jXZqR7mK1uB+OWAGyT296c5PFQv2374pYyL/5wc83zRuR4Zm/vxzppzndvHS3zfMo/" + "BPpMUs9Rn1BDz2XRF6sgG4RLszpUb+" + "qK2o6BkvG6UZGrJw7aanb4cK3GtY4QOK6NtQqqlisso5WebTulbdxi8ncrsibLL2sKeew677mRjtsWDue2ED3dsJTc+s3Zu5PjM2vbclcW+" + "8MG4t3UrtlXKmToOEtSyBfHOygriMt0k8ItH6fWDDdX1p2O7AgLmXgBp+yye2x6D7Qmsb8HQvJ9bV6zfw2VaPFduvA1v9Er9jYmMESGVsNYXJT+" + "nsH1gygN7TNRScdI5eFEYkY5IqmzT+RZubjvhA6fVRX1st3R8tmC916bGP/BXmITzhTKlFfC+bS6lnL9UfdQ56GQDv1zxkC6OMh/i/" + "GQPP6sWhJVT2t41FPtBPdx0UBd2cg2+kg9OeaiL65BfqT7pvJorOubDgetizK9nKjLOqX64s7JAP+FNm6U37Mo+n1O7x8CdMeItBmFMFbKAgV19c/" + "BgCGrnFMYh9FO2Mk9K5zbPb31UmWpuU4nOeUB/" + "8Nkt8h7i1E4nV6Vtfv119U22dV0LoYjSr8IYbHIt9ozJIPOWsuF7rSV+" + "pzGkf6TPon9U31HO55K52sJnNW60PcBuzDxEx7L7Bc93apG7UZQry6TKAYQLQk/nPJWdPpRDwsg/PNjKimWvUzvAwDW3/" + "HBx8KXJF+bmDw0uZCeiLHHX4aquaHxWtWi4MbazhBVvhXzh4xCXzDPmS9dNXylnPvA+y3c6tUs7zNVKTCuO9hG92PdXhYNO+Rj39FahIJAVl66B/" + "GbrheJpi+vgjXwufG7pnF/XFhP1apfPAD58koDFbm5YivqpfLM4tX9M3F+oU8yV5Phgxj6uqXzsUvrB4amMAx2VrQfPbdXBjexDhaN/ph4DW/" + "UPze9Nr7+2vsjm3muBMspzVcZg9WuxbUxGMq+q0DitrX+OcT6XztUtudF2H7sx8zBpDK7jLs1S9TUd3EgHI8LwE5Dy/6aJxn+/" + "QkiwgvJUIR+uY4XDoECKtjGguC/" + "VBh+wySHE+A9cpdsWUrmlwlF2ym6EDzcjfSuaDC4Du4UrHZ8tbBtsU1wrcatj5g0+zeFm+VLOiOS+8aJehPd7tZlfD/" + "yUVq2uk6nPqSzsEfRcY3l7HPMGBETiTiEf+D9zLEff8rzEPZHn14VWp/" + "Iw4eacFeTiD49UmcpwI8G1n78J64PiEPkP5BcRsKn9Rrgld+ZP7vgsqMYbDvLwbY5PVUbpk8dCZU9mHGTr1LndZMx8H5yzS3JV+9g0+fqrBn/" + "+g95r4czHoDlPRl+L8w9H+KwumvctbY/SFXn5sXNf+Q/6Psnbnuu4dK62tLcaN9puYXfIPAzf76oWvVHsbhTn/DNjgnShDqQ3i/" + "BFxIoJdyG5iPmzVPcRBifju3NFIaY2D1qRUXkuqn/" + "JE5Y6RPfgF0esLAjGEjujLbyLvvNLPtZJeq+9sa4l+lU6PqUsQ76l7I31skWlzcExzd+" + "u9F7OsRB5mhdrVZ9seK0TbsIqQUei4seuWnNdIYyrGxPqkaMP+XWWv9++7cZhaH5h7zO1UzrHsSF3/" + "DLQvKlON6GtPNUWbbaNRfgAU3pY8c8b0TE3Mp3Xf6zzKLjLli9kL31v3tCw/" + "apvPA4ZiynjgI2zfm4UjsNcc5s5VLvOdN7mluSattTR7ujrT7w8Bm0jVo8bmtudYzD1WozzeNbPKHWpdN7Xe3+Y/hk79w/" + "9PtktwO4UuDFmnewmzMNOjdGcHPn5jfyk8JgvK1acKqGhYzrClxercojUqeKgzwQuroPrlW0XqqfrQcm+9kvTxthZmndQWK/" + "Qr9L+F+Vb0N6+rQ3MXca/" + "yw1yjgWpg7xdji92rpG+trrK5vGhnjxCdd7UOcKVVbjgUjsKWaklvbo2L3OE6zLdgMeoWkC5pvisZeg6UZvMYdp818hDPK71mlW5NtG+" + "i33gLUB99l7WvP/" + "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" + "6UFHxgQmYwBoELOrXoOw2TMAE5iDAK2+" + "br9aco96SOriR4G0cdiYwSECCni15vFWLG1E7EzABE1iFgPfUr4LZjZiACRxCQOKIfez3FY56K8AhbeZlo0jLoxD57OsffI2q8rCaz2vk6MM7nY/" + "6pUH5EYbc0PDudP6zLP+N2k4ExKKXrdJZLWfOpF9Z2LaVnoOA6y15btbYVpXidTqL4waUcT/" + "owbdZLHElJmACV4KARf2VGGZ30gROngBvBTiKB5KjkAx7+0uoKj/Cn+cA/" + "lA4eq91FJv8TwD28PvXggz6EFulf6fs3ymEPf9Qbe+mUHGMyf9T+" + "Hf5OYU985X99TdnrlfV2pmACZjAPgFvv9ln4hgTMIHjI8Abb0YL4rm7IXHGajv76RHpxQJQefOV4qlmsSq9OYOpxsNAnnGc1Q2xVTrccG8vg72/" + "rKizaj+rbWqX+cEN3SN5OxMwARNYnIBX6hdH7AZMwAQOIZCJsk1XqWUHgp5tGmG1N57vFJb80z7KsF2n+EYgZ6Zyc9wU5FVucYxwxs/" + "thtgOsWNccbcvg1n/MmfZfnMUvzLN2jNXZgImcHQELOqPbkhskAmYQIMAomyyIG7UNelUohrhx4ouoj6t/LI3vvQ/" + "CdOHQ17DOSRcVf2VdUNs001Y1/MPIV30ulbyDwH7SYW9Un8IQZc1ARMoJmBRX4zKGU3ABMYSkABmZZZtDTzc+VHntRVLnfMA6NA/" + "cfpSeSatcKvcKCd72FrzWyxEmx8UhxhkPzt9qb2bXml7D70qjhsA6mEFn7oQ89wIvJIPTnk4fyz/hY7ZLx9+BdA5bX7SeY2T4oJwVTx7+W/" + "Jw5M6eMNK6y8Fis/7AkP+KdIhNxaqYlsn+wfZtljYKfpVHwxJ52atS/" + "S3VFkcRZ3sqfe++mJkzmgCJjCVgEX9VHIuZwImUELghQQNggkx+ka+EquKQ+w/VDj0dhDE9Gf5xZxsQCyyXx1b39OQQlbmsQ3R/" + "VfihpzyIRC5UWHPfRDbCtM++FxQP1Y8bf0oTzsXChHoCHF8zon+Iz5xPHiZ6qUd8tb4KT31hfpCmzGOm4W78q03AVR+" + "zE52l7KtuqEyiVsag5CmeBhxQ8a8/FrnYcxD4rx/" + "0rylvSVuGua11rWZgAmcNAGL+pMePhtvAsdLIAqqn6OFbHFIAicZTVyJ0LmlfEsLUUTf+" + "4a4Y9tEtbqu416nsohvhDZiPbeXY968wir8TiECj20ZOPrGP7FKr6mkjkrQk0EOMYvjF428XuLI33T0pbYqT7lYFiHbumVI6dwg8ApIbkhKxkVZ13G" + "yp4htizWJ3ZexfykL/LmhamVBppj/UB5hzFUd42xnAiZgAosSQNTzRfvf8v+zaEuu3ARM4KoRyN/" + "j3iaQEVwlohlB17whqFhKfJH+" + "L3nCUsfqbBCuClkpR2jXbFF80ep81iCimG0WbaI8XwnGznexHCvJCO3gVLY6TnEKw82P0ppCm7J5vTvlCX1RyKscmy7cQDQjs3PKPmtpJ8syfBhtSG" + "I6LxCErdLb+shNT+0Xh7ygjkvZNooFdruBuptl0vkcPDrnbWrEoQmYgAkcSOD/qjw6foeo54P2v+T/" + "j7ydCZiACcxCQELqgooUIvAQspXYVRwimrh8S4pOWx31BEHYlhrbudeWVhjHDcdPsZ7CIq3ZQj15iuqkj/" + "S12v6huHQzkYRvEvh50fyYfE3xTp34t3lGHe/" + "ZQLraTLzTLyeNYuGUrSgl49FWtopTW22iHRuon18l2m44qvIdB3v9Uj17bFvKwq55M9SSrTVqDh5p3lrctyJ2pAmYwAwE/pfqQMf/" + "7xszVOYqTMAETKCPACuwzbfXIJgQelMFV197xWlRGCIOK9FdXDjL2FMPYpR+tonlNi5ZraFcl3BFOLMPv+LXYwN1JqFd3RzE/" + "C+UxlYU2uHB3dpNgvI8UxyO7UGsljNu4Vhpza1ASprf9fSrj+1O5b6I1rSx3zM0tjM3D7jiLi4D/" + "zUBEzCB5QhcX65q12wCJmACgQCrxJX4jEzYUhLElsTU0yioYtJegHhM4mgv8ZAItZvEVgpr1Sk9rabX4ntOmkK3em5AdfFQMCyS21uBTwlZ2CVcecg" + "4/" + "PKhOuHHCnjqQwqzasIbiPjPqsE+hTeVyJt82HtPPYwFIrgSwIpH0POcASvrrDiTl+P78kkw63A1N4YtRqWxG7xhU7+" + "W4gE3nFfqLzn4rwmYwIIELOoXhOuqTcAEAoGaGJOAQhAiDJPQ540sbUI04WPLCPmXcojavf3csomV6SIxFu1HEFeiXXGsatPXD/" + "I43qKTRDX58EOCs7r5oYLMIULTqnr+Rhv6QpnKqU3aeKcwfyiUvrHlqDk2aUwozy8BKZ32kq08sFut+JNxSae2mBvFbDNb+OVhp/" + "LVjUqW1jxcigdjDMe++" + "d20xecmYAImMImAt99MwuZCJmACIwggJt9I2CCceG87QpE98LyekdXgJE512OoQmjyAip9dHKnO8CpJhdjHVhQcIvbVyPa4MaCf9In/Tkq/" + "ENipnzx4mRxijy1JQ4ITO3ijTtPBlNdiPpCvxLqO877AOm2VabbDLwD5jQyr2rU8qiv8EqB4HOlhC4/" + "ic+EfElf4U8xW9sEZvuHXBJ1zM8Kbbvr28i/Fg3le46pzOxMwARNYhIBF/" + "SJYXakJmEAiIDGFEM8FZEpqi0tpVajy6SFWVusXEUhqoxLGVcMjD8b0kz6p+vQay86WlK+" + "26p4yKr5ToCqtty9K50YBn1bhqZZ2EL7E7xQyZsHpGHFcrdrrnK0+edmYc7kg2tM2X/bilDc9P1BkkPIvyYM5m9/" + "MFdnkTCZgAiYwhcD1KYVcxgRMwARWJvBO7bUK3JXtOPnmokBuiva0Us+K9U55EO6/" + "x84+VpiL+N6bhlimLaDNqt22DFvELcVD9XKzwA0Rc9fOBEzABBYn4JX6xRG7ARMwgRkIsNrJu+inCsoZTDirKljh5p9k8bAszw3AFfHOf50N4lsh+/" + "DZShT20sdjnU4bA5Vf5FcWDJrBLcGDGyQeND66G5kZeLkKEzCBIyRw7eXLl6wk8MGeP2x1hKbaJBMwgatMQOKIveVvFa72kOZV5u2+" + "H0ZA85TnM6qHow+" + "rzaVNwARMoJ2APmt4GxpvJ7vm7TftjBxrAiZwfASeyKQXx2eWLTKBOoHsSzbftlTP5DMTMAETmJmARf3MQF2dCZjAMgQklNjGwBtpeEuNnQkcJQHNT" + "96887XCzoeZj9JwG2UCJnDyBBD1f4m9SOHJd8odMAETOE8CEkpsvWHfNw922pnAMRLg+YS9t/Ico6G2yQRM4CwI/C31ggdl/" + "xNPUpjSHJqACZjA0RGQoM/fn3509tmgq01A83PUKzWvNi333gRMYAYC/" + "051ePtNIuHQBEzABEzABEzABEzABE6UgEX9iQ6czTYBEzABEzABEzABEzCBRMCiPpFwaAImYAImYAImYAImYAInSsD/" + "fOpEB85mm4AJnDcB7c3mf4i8kb8jzz+C8l7t8x5y984ETMAEDiJgUX8QPhc2ARMwgWUISMT/" + "oprvKfxDYfivrsu05FpNwARMwATOgYC335zDKLoPJmACZ0lAgj69uvOns+ygO2UCJmACJjAbAYv62VC6IhMwAROYncBXqvFXiXv+" + "8ZadCZiACZiACXQSsKjvROMEEzABE9icACv1XqXffBhsgAmYgAkcPwHvqT/+MbKFJmACV4CAVuN5IPZb+V/lf5NHzPOw7Cv54JTnpg6eyt+W5z/" + "rVv+IS8efFPdcIf91dzaXtXlXlX7M26QRnf+g4IlC/5oAEDsTMAET2IiAV+o3Au9mTcAETCARkCBmRf6jPKIc/" + "52OEfi4fKX+RUz7WfEpPWTSn1vyj9PJjGFqk4d1a23KFm4wHiq0oJ8RuKsyARMwgSkEWKn/SyyYwin1uIwJmIAJmMAEAhLErL6z2o2YZ5U+OY5/" + "SYJZIav2iHlc2Gt/eVj9faKjL6uzxoHKI8ifyfNGHd6sM+ha2vzcKO4zWMkAABeeSURBVIQdRXU1yvnUBEzABExgHgJ/" + "S9WwUv+feJLClObQBEzABExgeQKI7ZsS0NVWmthkcz89D8ymrTWPlOdtwzRuApLobySF09f8VR1jRHizzVBHVjk2Nu3Ikn1oAiZgAiawMIF/p/q9/" + "SaRcGgCJmAC2xBAoOdbbBDerN6zx756P73iwhYXhQ8VT/" + "reTYDSkuhX8p6jXK2dvRyNiKxNxHutTaVhH3Gj6mw04VMTMAETMIGZCLD9xs4ETMAETGADAhLGiGJ8Jd6jGQj9ndLbBHPXay55eLZyse4XiuABWtpg" + "v31tVV15nikOx0Ow/GKA8A/HSsu3An2t+OarNcm7U74xK/" + "8UsTMBEzABE1iAgFfqF4DqKk3ABExgJIFcQFO02qsu0cyDqKyKJ8dxTUiTR3HV1hidI+J58Pa1jlnR5+" + "aAPfnVTYLiEfTvFfJQ7i158nJ8X568udtrU4nYGOpTuafytGlnAiZgAiawEQGL+o3Au1kTMAETkBC+EAWEcSXaFYdAR1R/kMd9pbhc9CPo8/" + "wc32nkYdX9p0bcTuf5zcBFlo4gT78W8HrK5jaevH3qwT7Ef6rvruLoi50JmIAJmMBGBLz9ZiPwbtYETMAEIgG2tryRKGblnC00bJFhFfzbGFetwCtu" + "pzjeksOqOm/MCUJcx6yw547tO9SbHHviq1V6IlUm35NP+jcxPgl1TpN7rgNs5GaBd+gj8u/" + "JJxux2c4ETMAETGBDAhb1G8J30yZgAiYgocwKdy7AE5S2uJCmMkGAp4x5qDRW3fH56jo3CT/" + "GtJ3CalVdx6y6V6v2Om+u+" + "qf8bfa0xak6OxMwARMwgbUJePvN2sTdngmYgAksSCAK9qZoTyv1rOAj0hHuv0czeIA2vwFgVd7OBEzABEzgxAh4pf7EBszmmoAJmEABAVbQ2abDw7K" + "fOZZHvH9SHIKflfl38mz5SVt4OMZZ1F9y8F8TMAETOCkCFvUnNVw21gRMwASGCUiss3++toe+WUp58i08vXmbZX1uAiZgAiZwfAS8/" + "eb4xsQWmYAJmIAJmIAJmIAJmMAoAhb1o3A5swmYgAmYgAmYgAmYgAkcHwFEPQ9I8TMs+y7tTMAETMAETMAETMAETMAEToMA2yfDdkpE/" + "R153oN8S97OBEzABEzABEzABEzABEzgNAjwdrPw/0y8/" + "eY0BsxWmoAJmIAJmIAJmIAJmEAnAYv6TjROMAETMAETMAETMAETMIHTIGBRfxrjZCtNwARMwARMwARMwARMoJOA31PficYJJmACJrA+Ab0//" + "gu1+kae5534B1H5++TXN8gtmoAJmIAJnAQBi/qTGCYbaQImcFUISMT/or7eU/iHwvDfXq9K391PEzABEzCB6QS8/WY6O5c0ARMwgUUISNDzNgOc/" + "9PrJQf/NQETMAETGCBgUT8AyMkmYAImsAGBr9TmrxL3Fxu07SZNwARMwAROkIBF/QkOmk02ARM4ewKs1HuV/uyH2R00ARMwgfkIeE/" + "9fCxdkwmYgAmMJqDVeB6I/Vae/+79mzxinodlX8kHpzw3dfBU/rb8J51/HxL0R8fk/UZheKBW4UOdUx/" + "78mdd6Vd9yY67qv+jzis7dL7T+Q8KniictV3qtjMBEzABE+gn4JX6fj5ONQETMIHFCEj8siL/Uf65jvHf6RhBjstX6l/" + "EtJ8Vn9JDJv15Ic+NQXIIas7vp4gZw2QHD/DW7JB93HQ8VGhBPyNwV2UCJmACpQQQ9X+JmVNYWtb5TMAETMAEJhKQ+GXVm5VtxDyr9Mlx/" + "EsSxwpZiUfM49hr/zkc/fmHG4PqLTnKz80Ab9DJ6/" + "wzt46U51v5P+Spu8jFvH12YBvt2pmACZiACaxH4G+pKUT9f+JJClOaQxMwARMwgeUIsNJ9U2K5toVFcc399Dww+z6a8Ujh63i8i0Kbm4N8VZ/" + "kD0rrFPVKD3UozxgR3mkHDcph99tw5D8mYAImYAJrEfh3aghRb2cCJmACJrA+" + "AQR6TYxLZCPQ2TqTr7yH7SxKY6886flNAEL6okWcf1J8n6OuWtt9mUlTG8kO2qzZoTRsJm5UncpvZwImYAImMBOBGzPV42pMwARMwAQKCUgEI4DxlX" + "iPRRH6COg2cRy2tyjtIuYlIK6WV+lsqamtwCuOtth7j9jn+LF8bVVdeZ4pDsdDsPyKgPAPx0rLV/2/" + "VnzzdZvk3SlfrV3i7EzABEzABNYh4JX6dTi7FRMwARNoI5CLZdKrfekSyDx0ygp4chw387fFPVa5SujrGBHPw7ivdcwqP2kI/" + "zwPgv690nlQ95Y8eTm+L0/" + "e3NFmU7xXNxcq91SeNu1MwARMwARWJHB9xbbclAmYgAmYgAhI9F4oQFQjkINTHKvdCOgPlzG7rxSXi3iEdCWWlcY2GAR4XgdxzdV/Vt1/" + "atS103kuzNnCk9qijVQHr6dM+/kVHVzKF06Ujs2I/1TfXcXRPzsTMAETMIEVCXj7zYqw3ZQJmIAJZATYxvJGAphVct4/" + "z3YYVrx5Mw1x1QOxOt4pjrfksIJOPKKZd9r/XZ46UlztHfZKwz2Sp63kEP7VKj2RKt/cp5/eeZ+EeipL+FyeNrlZwAZE/" + "j35ZDf9sDMBEzABE1iZgEX9ysDdnAmYgAlAQKIYYZ6L7QSmLS6kqUwQ2yljDPvys+qOz1fXuXH4UXURn+zgkGNW3atVe53fkc/Lkme03aFy/" + "zEBEzABE1iUgLffLIrXlZuACZjAdgSiAEeEB6dzRHtaqWcFH5GOcP89ZLh8gDYX8azK25mACZiACZwAAa/Un8Ag2UQTMAETOIAAK/ls3eFh2c8cy/" + "P2G7bqIPhZmX8nz5afsJc+Hus05CW0MwETMAETOHICFvVHPkA2zwRMwAQOISCBzv752h76Zn3Kk2/" + "r6c3bLOtzEzABEzCB4yDg7TfHMQ62wgRMwARMwARMwARMwAQmE7Con4zOBU3ABEzABEzABEzABEzgOAgg6nkoip9e2WtpZwImYAImYAImYAImYAImc" + "BoE2DIZtlAi6u/I845j/omJnQmYgAmYgAmYgAmYgAmYwGkQ4I1m4f+aePvNaQyYrTSBkyKgBy9ZLDh5d2g/Di1/" + "8gDdgT0CnhN7SBxhAiYwEwGL+plAuhoTMIFLAhItvBqR96Gfg+" + "Md7vRntDszDqP77wKdBCbPqc4anWACJmACIuBXWnoamIAJzEZAQvahKrut8LvZKt2wIvXjJ/kv5J/" + "Kf19qivLOygEb1PYbeX4B4Z3y+SsoS826cvmGuCmdGzb+wy4/X+PYm5r+WddNHbMt9YM87/lP8Tqd7lTPpDk1vUWXNAETuCoErr18+ZIvC/" + "4pyV192OT/SfCqMHA/TcAEZiCgzw9E0L8U3puhuqOqQn3iM/IfCgeF3ZIcVPcfsuNrhe+PCtCRGzPELab/onBv7iqOf8h1X/7vOh4c/" + "1IUqqt4TpXW6XwmYAJXj4A+S56q168VXvP2m6s3/u6xCSxF4FtVHB7WWaoB6tUH14P4IbZkM8266Rf9K3GLcKDfsfGz/" + "OdQS43rEDelp61ibzsGl7HnhpUvzjndmDk1Z7uuywRM4EwJWNSf6cC6WyawAYFHEkjFW1QOsA+BhV/" + "NxX7Rv5J2l+LANpFfZcPFah1ft6GlxnWI29DNEluecLcvg3n+jpxT8zTqWkzABM6agEX9WQ+vO2cC6xCQQGEP+blv36N/j/qILswB8XmWq/" + "R9TGdIG+KG6N9p7H7paCukK61rJb+jWFH04JwqqsWZTMAETEAEbpiCCZiACcxAAOEzKDglnNia8ltsjxXnDz1iKmabL1BbrAazjeKu/" + "Eed135Z0PkPin+isG01nP7Rz1oZneduFg5qn9VhWCH64EXbbBN5JR+c8hzSl1TNLKFsQTh/LQ83bOfB0tVv8kq4ybam6xT9qg/mpNOfLtHfrG/" + "MecmcGlOf85qACVxhAhb1V3jw3XUTmJEADxJ27qePYosHDhFH4SFPheRHCKaVUB0u7l6oXWzglwXeJlMJdMUh9h8qxKY290mRCLw+" + "dzAHtU8b3Fzc03EQxgphh8tvnA7py2VtM/" + "yVbdx83FQY3sijEPt5CPSvM1RfXEVst4RbVafKpP30iW9IUzw3JvSHebLkg8klcyrY5D8mYAImMETAon6IkNNNwARKCLBq/LknI6LpvcRS/" + "tYWtrJUK889ZWdJigLu51gZNxJNe4nrW40lP2Kvzx3EQTZSHmHaXOlG3PN2FlbCdzP0hWoOdrID0cuNEL98JMcrIBH5PNCc34Sk9NlDtVPEraXhdJP" + "2perg5iQ5xPaPinueIhYKS+bUQk27WhMwgXMjYFF/biPq/" + "pjANgRuqdkgOJvNSxixIo8Yrgl4xfeu5MZySXTl1dLWTulhZThP0DHCt2ulnYdMk2hvu6GgrZqNjboR1ojHPncoh7TqXf2CEBvDtvyG6NC+hGrFg/" + "Z4Vzu/" + "CiQ2Ia3wD792NIVvuvFpZaV2mA9zjiumlnIjb+7Cr0SyqWvO5HlrxzOwo76SOVVr1ycmYAIm0EXgRleC403ABExgJgIIaP7hTqvo72pD+dtE+" + "07xrA7zXzlH/YMr5Q/" + "tK0RQIjgr4aw4hChxfSvLnYJd5UpcCYeQJ69MtmEX9lVbRGboS2oCgf1M9Y0W9CqTOL5LlcUwCfbWOlVu1nGNbRZxa9jJKba22tmStxk1mV1W0aFzK" + "qvKhyZgAledwPWrDsD9NwETmIXAZ9WC+Kw5CTji8JUgrWXY5oRV2earIblR2MnePoFHP+hnn5vMoYcVghXb2m44pvYl9YF+t9Wb0vtC2q62BGUZH+" + "sYvuF5gCx+kcOJ3OD5RTRoav8PYZdYlMyplNehCZiACfQSuNGb6kQTMAETKCOAgEvbLqoSEk4X8pxfVJHZgdJW23edNYudTfHONowg7mQTD8y+w/" + "asDIesqg4J1ckcVDd70XHNNqq9/rIJIYmQTnlG9UXlEJEv5NkzzjEC/K185ZTnWTxhnzzbWmgzHGftkoVV7pogVjpCGb/3n1kVt7RLTFI7fdzIg/" + "24ohvOmdldtlw2p1JehyZgAibQS+" + "B6b6oTTcAETKCMACL5y46sbHNhVbfmJJIQjEMr37UyM53UxF8UovdVdxL6dxXXFPQ0jVBNeThvc5M5xDYRyQj14BSHoEYkJ8H/leJy+/" + "PjndLI29oXpSHieSsN/06cMaEt8lfCXPEIeh5oZmvTLXnyckyd5A1OcdSFneQJLsbxkO83Oh7iFEsdHqgtxmosNxrmhman8lX/" + "OW9zyjMbu0b9JXOqUcSnJmACJtBOwCv17VwcawImMI4Aq70Iuj0nQYTI+" + "xavRFaIcYikV4pDkK3teLDzTbSHd8AjjBFX2IiopS9tjpXd1v3gWeZDOXDzg23YcVue+lhxTraxjzt3Y/" + "oCf55taN4I5AKcX1ZSOmOUVrF5d3+eL61y85aefGWf1z/m+XJblzwu5ib7YMgNSbhJ0Tl95E03fc9ozMku51Ayp/" + "L8PjYBEzCBTgIW9Z1onGACJlBKACEnv5P/guNmOcUhPo/CyRZuJPZ+OeiICzarTFg9V9i7qqv0gziMtW1k/keNPiIoa/1RfdXDw0qrBCf9CiD+/" + "BO2tiieG4A+MfxniQWPxnBQ3qEbszZL52QX6pcdRXOqzRjHmYAJmEAbgettkY4zARMwgQkEWM2cIpjGNoUoX3uFn5sS+lfi1uJQYkvIIwHJqjs+" + "rcITjzBnhZp3ypNWOZ2zil2t2us8CNAqQ8t++" + "ixt6iFjij8qF9nMyS71b8ycSmUcmoAJmEAnAYv6TjROMAETGENA4odVXl412RSAY6oZzKv62UKSrygPljkkQ+wP/" + "SpqM+ZbnMOYPsmmmmDWOaI9rdSzCr1THDb/Hut9rDC/" + "Aah+aVEeBC5jnP6RVyxyWKB6Vx3XUmtl12zsUpuqE37FcyqVc2gCJmACfQRu9CU6zQRMwARGEmBbC3vrWQU+F8ce7LG/QBwjB2xiDzwPy37mWB7x/" + "ikJV4W89Yc98mEvfTzWae0fTPHQLK62decy6mz/" + "zsUuAZoyp1JZhyZgAibQSuDay5cvWbHhQ543PuQrM60FHGkCJmACfQT0OcIq5EOFm++17rOzJC2KWt4GM/" + "qz8Zw45KzUL1bq7yu8SqI+R3DQsbhx0zRpTh3UsAubgAmcJQF9pvAaZt5Uds2i/iyH2J0yARMwARMwARMwARM4dwK5qL9+7p11/" + "0zABEzABEzABEzABEzg3AlY1J/7CLt/JmACJmACJmACJmACZ0/Aov7sh9gdNAETMAETMAETMAETOHcCFvXnPsLunwmYgAmYgAmYgAmYwNkTsKg/" + "+yF2B03ABEzABEzABEzABM6dgN9Tf+4j7P6ZgAmcLAG91YBXDr+RvyPPO+THvi//ZPtuw03ABEzABMYRsKgfx8u5TcAETGA1AhLxv6ixewr/" + "UBj+IdRqjbshEzABEzCBkyLg7TcnNVw21gRM4KoRkKB/EPvsf/Z01Qbf/TUBEzCBEQQs6kfAclYTMAET2IDAV2rzV4n7iw3adpMmYAImYAInQsCi/" + "kQGymaagAlcWQKs1HuV/soOvztuAiZgAmUEvKe+jJNzmYAJmMDiBLQazwOx38r/Kv+bPGKeh2Vfye855Scv+XB35Z/PvaKv+m6q3qex/o86/" + "17HldP5Dzp5Mne7VQM+MAETMAETKCLglfoiTM5kAiZgAssSkChmRf6jPMIc/52OEe24vZV6pfPg7FvyxbyI65SfMnO5F7F+2qvVr3jE/" + "kOF3ho0F23XYwImYAITCXilfiI4FzMBEzCBuQhIFLMajihHzLNKnxzHvzRFs85Z0X+gkLfjJPdcB9TR6ZQfUf5Mnjfq5GVbyygPvxL8HBPZ2/" + "+5kZG4wXoaZXxqAiZgAiawAAGL+gWgukoTMAETGEkAsX1TIrq2tUVxrN6/76pL+Vk9R8j/" + "pGME9pB7rQzPlLdUiPOAbsr7SGWb24Cwrxk3ZIPTTcAETMAEFiDg7TcLQHWVJmACJjCSAIK5tsVGYprVe1bk995PrzRW8Nmeg6hGqH9SXG1rjOLa3E" + "NF1tppy5TiVGfYVqOQdrCnuulQHLYRV1yf8tqZgAmYgAksRODGQvW6WhMwARMwgQICEscIY3xTvCP0d0pvFc2KZ7sN23UQ3ByzAv9K/kLHwemYel/" + "If5Ln+LH8W/nKKQ/bcXA8aMuNAcI/" + "HCstbQX6WnHN12qSb6c8aSWfUzsTMAETMIGNCHilfiPwbtYETMAEGgSSgE7R1X51CWceRmVlHBH9rTwiPTgdt269UTwingdvX+" + "uYFXZuDtgjX90kKB5B/14hq/635MnL8X158iZH203xjn2hLpV5Kk97diZgAiZgAhsRsKjfCLybNQETMAEISAxfKEAcB9Ee41gFR1R/" + "4FzuK+VLoj9tublM0V+lkf/7WFeKZ9UdwZ/" + "KhXid5+L8IktHlKdfC3hFZb6Xv1kHtiH8U113lZ9+2JmACZiACWxEwNtvNgLvZk3ABEwgI8D2ljcSxqyc35Zniwwr4azKE8e++" + "eSe6OCB4nmdZFodR5x/kzLE8JFC6k2Om4FqlZ5Ilan2yOuU9FCH4pNYJxuO7T3Yx40C78VH5N+TT/" + "Zhr50JmIAJmMCGBCzqN4Tvpk3ABEwAAhLLrHLnAjyB2YuLgrspulP+ECoPYh+fr7Bzk/BjTNsppM3gdMzKe7Vqr/" + "M78lXZmHfPFpVpi7us1H9NwARMwARWJeDtN6vidmMmYAImsDyBKMKboj2t1LOCv1MehPvv0RoeoK1EvI5ZmbczARMwARM4IQJeqT+" + "hwbKpJmACJjCCAKvovB2Hh2U/cyyPeOf1lwh+VubfybO9J+ylj8c6tagHgp0JmIAJnBIBi/" + "pTGi3bagImYAKFBCTQ2T9f20PfLKo8+T783rzNsj43ARMwARM4LgLefnNc42FrTMAETMAETMAETMAETGA0AYv60chcwARMwARMwARMwARMwASOi0C+" + "/YZ9lk3r+KckfrtBk4rPTcAETMAETMAETMAETGBFAtLk/OPBO11NIup540G+rzLPm78NIY/3sQmYgAmYgAmYgAmYgAmYwHoE+F8hne7/" + "A9LmuNjm6wJzAAAAAElFTkSuQmCC", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}K \\left(P - P_{t}\\right) - \\left(1 - \\beta\\right) \\left(c^{2} " + "dv_{dy} \\rho + c^{2} dw_{dz} \\rho - c du_{dy} \\rho v - c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right)\\\\u " + "\\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\\\left(c + u\\right) \\left(c du_{dx} " + "\\rho + dP_{dx}\\right)\\\\ds_{dx} u\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ ⎛ 2 2 \n", + "⎢K⋅(P - Pₜ) - (1 - β)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ - c⋅du_dy⋅ρ⋅v - c⋅du_dz⋅ρ⋅w + d\n", + "⎢ \n", + "⎢ ⎛ 2 ⎞ \n", + "⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠ \n", + "⎢ \n", + "⎢ dv_dx⋅u \n", + "⎢ \n", + "⎢ dw_dx⋅u \n", + "⎢ \n", + "⎢ (c + u)⋅(c⋅du_dx⋅ρ + dP_dx) \n", + "⎢ \n", + "⎣ ds_dx⋅u \n", + "\n", + " ⎞⎤\n", + "P_dy⋅v + dP_dz⋅w⎠⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎦" + ] + }, + "execution_count" : 16, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "K = Symbol('K')\n", "p = Symbol('P')\n", "p_t = Symbol('P_t')\n", "beta = Symbol('beta')\n", "v = Symbol('v')\n", + "dp_dy = Symbol('dP_dy')\n", "du_dy = Symbol('du_dy')\n", "gamma = Symbol('gamma')\n", "dv_dy = Symbol('dv_dy')\n", "\n", + "T_phi = simplify(T_1[0] + T_2[0])\n", + "L_outflow_x1_upper = Matrix([K*(p - p_t) - (1 - beta)*T_phi, L[1], L[2], L[3], L[4], L[5]])\n", "L_outflow_x1_upper" + ] + }, + { + "cell_type" : "code", + "execution_count" : 17, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAA0YAAAC8CAYAAABcxb76AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXdLdNLaGN6lcd6VDVd8fmAE/" + "I+gwAyAjSHoGULni3KVgBsAIAsyA7hEQmAGc+64i/VVPgPM++iQje0u27O3961dV3rL1u9Yj2fKyZO+3/vjjj52dCZyawP/+7/" + "++o+23U9fr+kzABEzABK6fgMeQ/TY0k30mDtkOgbX6/0MV9J6w/VxB94PiP6nEOdgEFhFQn/" + "pMGTGKJg0jpX2idI+0vaPtXW3fK+yf8jfvzGbzXcAATGDLBHi49rG2r7YMIekuDs3jasoz5nt8GaPjuAsl0HRNUN/+VfJzT7nnFPfWgyyUi8s/" + "BtvXWbx3TeBgAup0H6uQt+X/0FgYhhAGOv3zc20/NubbQjKz2UIrW0cTMIE9AhoTwgMy+c/" + "3IjcWIAZzx9UWQh5fWig5zcUQmHFN+FJCD+2d7p70YabR1yp08gl+lv6ku/HE/+WSZawBkcyfaVv9qdYlMWnRUWmY+Xkh//0aq0J4nhYL/" + "66QZqtBZrPVlrfeJmACO40lX2n7Wdt32lYfG1QmBsdZ7zskw+j9g+" + "KXjKstvcfjSwslp7koAjofJq8JSvPNUGiFEcT5vssNI46P5lQpS6Kw0KgYoX5UWGehaZ/" + "lfNz4coEjXed0zBOh3+TvGW4Ko1xmEvApl4sjF4rH2nCfl/LdR7X/" + "HlKP8tJQGJ49vdpr30+psqpMSK14WMIkuUcKO8g4U364fqrtH9rPL5o7ytY2pSNW+qxZSJWZtzn5J5d2Kg/pWFbwvvZ/" + "kX+TzmyWN+tW+" + "shSQuazT67GROEnGYP2JTpOyBXqyZiSngCvBkUcRsfY1SqaKEhyTI2t1XFVeYPRFKvgngD3TOHcJ406pTnJ2Kt64Mw9HPcPB92jjCp0AZHS7+" + "bvTWo6KvyU18mDrgkPTtVXBIVp75+03WmfG+vcKAIY8f9DnPzO6ZgT+yP5xfdKYvj3SoPhRLkYQvjcQHNir7L0SuVR/" + "yH1MC3NSXGwUzlTTHhv7InSfZM2HTNTQ75FTnkpkwsYZdTKmdLxU+RZIoDy0dFp22I/GJQZjC+lvXijKOo1EH/" + "e4a2ymUdhduqr6SOzNVsnw03zWXjeFZmorEPHhnVarFDKFvSUjowpjC21calHpoVJLKt639Er8DQHY2Pr2Lj6pXRh3GTjnuiNtto75UVNlI9+" + "f7SxV+" + "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" + "Z4pf/GakCLH/" + "IdjkcO42HkRdIkDWH7TSBkvtWEY1d4zalGMcocnEWXvuRXkH61H5X+mStGRxmfZVncjHoXh4hROBo4Vz0k9l2eVicp7pPJ+p+yB6zFaWO+" + "gyOphT8dqqn4Ecndc+lH1o6jvMG84kWLcTj4XKhwMOuOLY8V1J6j205Q85fFUrbtQKY5jBiyWfoY88nufJtcx+dA9n2Ggvq4PKM2w/" + "+8UxtKAsT4w1E9FTjuVSb5h3hobBpigb8onP78JvMtrVFyVFekUzwAMM3SnP3bLORSHTFOclpwXQ11VTZCF8GFcjQN9pGt37XPMtYnlDt0ArP2q/" + "oob7SuKn9RfdeKq/TXKMtZn7kvo/w4ZhNgozzDuaHyoVHUe1D+iWs19VvXNOu9mMkEc2mp0bCCRyl3cb8gvV+0TRKr8a9Cz2vboINfcrvfJu9/" + "H2rvrjuLOXCYxW22MHZ4nXXWqZ8k1i/y06eQ1J1a0ZGylX5CPB9HhmhGPCU96nmLszXWM6gQP/bsxM8rGsjpWdOTXXdjn12COe+ed0o+dX/" + "SrD7QxG8WYRF/" + "BSOzOmXxfccEpbNH4rHzIx5azPdp1VfWN6hflWXXcnakjPHvtRUDJqdyD2jErs3hNyOKruw+qMStGxEajxPxma6dwbjLpoC+" + "IHDrFcyLQmEWneOLofL1yi4kPCGytJ+qzk8+" + "MWXdDnFWNvLXZpCxZfVfljjFJJ35XgNJjrLG866iMugrv26uk4xuloa1Kbk8nycsAOuqUhr7DFpyOuThw8qErT2tyR/" + "1sO6WjHagzOB1zIrIEkRt4+uRj+fkFjXSs7+aiulMc9XDS5Y56iQvyyKcOwp4RfoA7BRtkDmzk04c6Jz1g0/" + "WdeDzFCqMRVvQDHhJ0baTjk3KKdXf163isj0i8+4FM6ZDzUTwOMhOp8EP7Sqv+tEdoE9XZ66/IscAV+5HKhs2p+azRP5C5qc/" + "OZTWHSWwb+kl3jpTqU7pD+w3FrtonzqTnWNuj49J2pQ1Sf6CcxU5c9s6VWNheuNJOjlMNgoSxRmUVrzlZ/" + "tL9Azqje9GpTPJglMAdQ4PrH0Z8YrVIJ5VDO7EFF8tF/t7Yq3DqZyl57fwIxsJ9KeGXMtK909MsHEa5nt/qmP93Qv6d/Knzi5UZrMJ4pY3PsLPfya/" + "9pa7IT+U38ckqHe0DK+jXOu5kIo3vztFRaUM/UIm1fhAqW0HPXGj6S+rnefjk/" + "sPJFAcmkKLcmIcnFfIxGLrZIe3zdBUXvjim49JTN9am8gShd6Oq42q590Wu8zunHqWlIcZONjh0TygOkLDIROVx0eMCCBvkQB7SdjMjOl7kVAYdG9k" + "5wWgPBoRuBkX7ydV0pP0oo+SYWeGJVopH7pelhIWwlJcXADkJ6ENcUH9VeXlbIPtThYUbf/" + "lpqZqCg16Us1M4DLsnWDGMp1e8QJqeesFguMQKvUmX2GMYDJctKGi2S/odkw3MXkh2jD+YcZ7Svhg29J/" + "83INjlZXidqTXFgyqQV6iz8EpMZzqI88kH/0w6K19Bmj0CIOvfNyo/so71Vda9R/rr/eSzPtNDEr9KMUdnQ8i0ye0Hdo/" + "5vTZeaTuU08ykQ5zxqBD+w1Srd0nKPPUeo61PfIsbdfHyptfpyjrEIecw/uOxKp0Di2tq+Wak8rm2kEfyN3YuEo6zmnGU/" + "zOSbdUziE6pbxj1w3qToZOV3+2M4znxhnDhfHnZZYO3dO1mVcD+IBAXi76IM9O4aUxPI333ditdPS1Q11iUOoTKW6MD/" + "W39IFD9YPfMe9PqjqK85rXyTntuPiacArDiJvy4o25gNGx886twz3HCUKn6HVi5a2Wu1fCAQEz6+" + "Gke011yvdcW2pEjrkA4K9x8S4yieVzE5ffyBF8sIty99pgWOiEjsj04TAPx7Fs2ni2U14upKNPISh0Ih1t84Z0cuHCqfTDpZA8bUv1hIv0ffLuF4ML" + "o3+qP3cZWnZUHv3lnGyGYk6yksxhUJN/p40b4O/" + "YjwWdnJPqbu0jw+tRqS0n9ZeeY32lSf9WmYeNUztWedV+1FqX0q3CR+Uc3D9aZa7xmApvKV9p5oxBh/" + "abXYtMU3oN41vKXFNPlTXW9rsWeYY6xGM+KLDmuLc3xkq26jlUkWkyWGW2nFNwof/gD+8fquNqTP/" + "XMSFieUcbX1Q+8gWDpSSH4hlLOxfl2UvfIOfo+aX8PHznfO3Gbh337tE6IWbsjMmluJONO6prSr+mcWeG6iFpi45Ks9p1skHPXIXF14QHeSmXuB/" + "BMxWbLPJLFDPJFC7MkjU8DU2B0U8X2kHw/" + "MMLZjKm4ytpypOcS3TpKeXHUThme3jakLswExfb9on84SCMbslwyvNN7Q8Huqn0544fZSUuPB1ixoUPSODv5N/hR7eUU8p/bn9U/yjcWF+5dv2n+I/" + "yuaD+cerzbpRLQ7+Z4l6Lvxg9G9q+pkNLeDcT0JB4kolk5Vp+SfcdtbH1ksfVhqZYLcnU+cV/GHJfxkoPVo6w/" + "7qh9sm+0lDGGkkO1e9axp1D9cxZz7km5Pl2b33xxRcAYxqM9wYupRP0hORAsnFh6Jbh7SW44IB4EjI1v+" + "TGuapZzkT7tCPvxqxaR7XyQYTq5UIzqqPScKP8ifyhUTEo7bIOJS9GObMATEVjPDHV3z1li/HcDPeefl2WFueXZgucoo7FvrIF/Q/" + "pZVvmM9ZvDmG6hbyRHS/Jh3dA19RZZZ79vkMyjI6tir/KcXXNdnJZdQLqH9y/" + "bOr+JOo865oQzzM4vfWwjvOyYiQs60vDdPJlSdYkTb6UqClDS6KcifbPbWy06JieenVGRYueF5CGfscTp8fyeYrYk1/HPFCwUTTRUBvhVO0rG9F/" + "ohfUozfOp9pv6sQcEwnwlJmxZXWnPnkJ9x1TY+u1jqurt5cL3Cew0evqQdeEq5kx2m9uh1wjAZ2kTGXzcv/" + "Fzk5eI1fLbAImYAJbI6BxZHNPw0tt7HG1RMVhWySw9JqgfMzMhhmjB1sEZ53PSoAXK9PX3c4qiCs3ARMwARO4agKMJb0Z/" + "KvWZrnwHleXs3PO2yJw8DXBhtFtdYiL10ZW+Z2EZMaIl/TtTMAETMAETGA2gTiGePWByHlcnd19nOEGCax1TWheSqcK/" + "7hBjlbJBEzABEzABEzABEzABEzgRgnIhnlrTDXFd0vpmj++MFXoWIWOMwETMAETMAETMAETMAETMIFLJtBsGF2yEpbNBEzABEzgPAT00Iz/" + "i+CrarwIzyeT+Q+r6t8GKI5P3v8i/6wfYFH96U8RJY6dCZiACZiACex2NozcC0zABExg4wRkJGDYvIgYMHBwzxTOO4FTDkPorySK5fxHu8VlC4pP/" + "8lyVqMoyvqV5OErRH55HyB2JmACJmACO398wZ3ABEzABEzgSxkI/GcLG1+4eqONP/5uce9niTCqisaUysX44s+Rq7NJWTmn2sWoO8p/" + "4JxKAddjAiZgAiawHgEbRuuxdEkmYAImcK0EnstAYElcchgL7yjsvRRQ85Umn/0hH4ZVyRF3UZ/ql+wYaU/" + "kY7TZmYAJmIAJbJyAl9JtvANYfRMwARMQAZaTvZ4iIQMC4+Z3bcwKPdLxVymP9jF6mHH6JYUNfAyQ6rI1xVXLHpQzeqhyMPAw6D7UfmekaZ/" + "Zoe44KyQYRzr+IQvzrgmYgAmYwAYJeMZog41ulU3ABEwgJyCD4Rtt+RI4DJjfFNYZOdr/VWE/yscYwohK7yTtFIZRE4wi7e/9R5nCqkvslI/" + "81bKJb3Uqh5mf9+Qj48fxeCcfQymfEcuL/EkHH+UB3jcBEzABE9gmARtG22x3a20CJmACRQLRiODLcd27QwpjNghDKb0fxPK5v1OAwngXCWPoP9rn/" + "+5Ks0IYRry3tOeUp1r2XuLpgMdKgpGH/" + "MibjD2MotqMGGmQz84ETMAETGDjBLyUbuMdwOqbgAmYQCIgQwIDgdmf9zOjguhPtXXL0GJcmE3SfmdAkbDimMlJRsowyVjZzPQgz5T7h+" + "TAEArvO8l/qgwYXMl9qJ0f08HALxpsgzQ+NAETMAET2AABG0YbaGSraAImYAJTBGRMYBSxHC4sK4vHO/" + "kYGxg2+UcWpoobxqcyhuEcV8tW3RhfS5a5MUOUG0Ycv1R5LLMLBp2Ok0PvQ3RL5dg3ARMwARO4cgIPrlx+" + "i28CJmACJnAgARkLGAcYEvyvD8YDMzWfa0uzKRgTpOmc0rTM5IT0SruXvytIf/aq/" + "cVlZ+UMd4Oxo7oxipLxxf7QUTfvONmZgAmYgAlsnMDDjetv9U3ABEzABO7/" + "swjjofffRTIq0vtCLKNjNikZMKR9ORMcS934BPhwdmaNsoeiPIvyYvBQH1+c489lMcKGjhmppOcwzscmYAImYAIbImDDaEONbVVNwARMoERAxspfS+" + "EpLBozhxoPzDBRBjNRnVup7K48dlQmhhBbcvl+CiMdBh7+0Fjr0njHBEzABExgOwQebEdVa2oCJmACJnAuAjI++KId/" + "32UZp3OJUpebzLW8jDvm4AJmIAJbJSADaONNrzVNgETMIFTE5BRxIwRX5ALMzWnrj+vTzKwtI4/ffVsUQ7G+yZgAiawYQIYRn+J+id/" + "wzisugmYgAmYwDEJyBDpLaU7Zl0TZX8nWdL/Mk0kdbQJmIAJmMANE/hb0s0zRomEfROIBHSzdElLfdwuJnBzBHSO3Z1bqUuQ4dwMXP/" + "xCHgcOR5bl2wCxyTAxxf+GytI/" + "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" + "F+" + "mpCkttmMuxmf2Hm9F0WlEuctzApht0DAgMGp4ypLBhKdycjt1UpjLHjKtQpup4TzucLFOOJUTDG8HWejjBeKpUcnuGgerhxnd4sftA4Zx4uWN6PS0R" + "mGKS52OfJXXkCU7lHMIhFVPz93SMCbnY1tqRp4LdzJ7kI10yLmL2Ua+XXylpg2Rk7VReaEv5TxXeLa3UMRyGnBUU3HBATuFjPsZnbhAzS0b9QW/" + "5S9q6p1ssq5VNL69EaeIS0yFr51Tv8LbcQ5QAACAASURBVHxIccfgtKR/9nQdcOrFSfAxDrneGM21/nEs/VNfGe2r0s+MBudzbNe8/Xap38o/" + "+Nwb9pvUAaLfOj7k2ZrOnUyHqT5xczpG5sU2zUHGfa5Rj/" + "Lwhe1OGeE8zMvSfu86orJJE67F2p91Pg7aNNdv7JpTGltnyzrUQ8fnvh5KhDBuHnXsHOpJpZmbe/" + "42nbtZ+Wm31IYpblP+w01pO64sJ2De+Un9UhuGUe09o72LHZkyR5k1oypLFm5QuYjRoZe4yXqkw2cqGP0w/" + "liy1d2ExwoxgHo3mEoz5LFTGEvKxuQsMlEeLpK/x7pyrye70h3CIS+3tL+nYynRIAy5e1wG8dXDqPMwf7hoxbid/" + "LtYABw6A0z7TxTXGdTaZ3knjvKYXeoGLMVxzKDF0s+QR373eXLtkwfd8xkG6ur6gNIsaeuhbipy2kV5hnlrXBjUg64pn/" + "zOsFTcXV6j4qqcSKd4Hj7AC93pj8zWhTLkI9MUpyX9c6irqgmyED6Mq3Ggf3Rtrn2OuS6xjAmZgtN+VX/" + "FHdxPYjVTffVqGaGfOB3URyKj5n6r+made0o/" + "p98gDu01OQ6p3GLfUfhov4n6TvWJi9Yx6rCTrtW2V5rmNk3lZf5j7d9lx9Q1i0nMWxxfFTe8jnRVqZ4l5yP5adPJa06sqDS2zpJVcs7p102yqcxin0" + "ZmxdGeH2hjCTxjAe3D8viuXbSPTFNjQpdeaYNTvup9Uixz2F616z7lTZ6/KvMgPe+lDnouuteJ+W/" + "GeyBNAEHDvrkZrWYqok7FCYLLb7h2Cucmk5PlBZFDp3guOJw0e05xhNP5e2XuJTwwoLWeqMtOPjNO3Q1xVj3y1maTsmTjuyq7xiRdgLoClBZjjeVdR" + "2XUVXjfViUd6fu0Vcnt6SN5W2b2dkpH32ELTsf0My5y6MsTvtwhAxv5aAvqDU7HXPRYhshNPH3ysfzhBYz1weEdJ8VRz2NtyVHnTuFBFvmUT9gzwg9" + "wi9hEOVq5kC5wkU8f6pzKgUvXd+" + "LxFCcMRjjRD3hI0Mmh45NyinV39et4rH9IvHsDXemQ81E8DjITqfBT9RPaI7SJ6uz1VeRY6Ip9SeXD59SM1ugjyNzUb+" + "fymsMktg99pTtPSvUp3VTfGbu+UOSqfeJMOqLHWNsf0qa0QeoP1LPIicveeRIL2gtX2qZxakKQMM6orOI1J8u7d/" + "8wV1alhy9bcDo+9vWQ1S+sdHmljc+fs9/" + "VH4Q4wpgwR0+lhSt9p3r+Ks3UuduiJ+rutSGBG3IwDkbuQ+0Ag6cCBA47hYJu26lTcXOOtY7DaOhmh7TPkzJc+OqYjktP3XgvhA8qdDeq2q+WeV/" + "cOr9z6lFaTq6x9oXB3pOPhZLuMVE5XOQYdGCDHMhDum5WRMeLnMqgDyM7F2/aggGhmz3RfnI1HWk7yig5ZlZYVpnikftlKWElLOXnhVIGRvrQU22/" + "qsy8PZD/qcLCzb/8tDRRwUE3ytkpHI75zA9hvI/0vcLT0z045Mus0Js0iT2GAU/" + "G8voVNNsl3ZawSXmnuMDrhWTlxgx5OUdpXwwb+k933hGnrcpJcTvSawsG1SAv0efg1MrhmeSjHwa9tc/DDfTghii5Uf2Vd61+MtZXkyxz/" + "cSh1JdS3FRfOZgRQtMvtB3aR+b027msSD/JRDrMGYeqfUflTPUb5Dlmn6i2+1o6ogBO5Y21/SFt+ljF59eqUN/" + "CH2Ts3XOonNQfSufPwmrCg7Opa04qm2snfWDo5sqa9Ki2eazg4HNdDNMY242XCqONc4dexxw7q3pKltbzt3ruokijniSttSFxW3D0A+" + "6hvnm4BW3HdFSn4ca8eHOuOG4+SrMreZHcpNExuxNqrMw846H7M+uh0cMNtfI915YuCjvtc7OPv9aFe49JLJ+" + "buPxGjuCDXZS7418qcEJHZPqwkg8mpQt+KflemOrlgUP1aU/KMJGO9nkT04aLuNIPl0OypCrVwwUu54GxhcE/" + "1ZdjFW2eylvMJsqa5K1W2JouFjDJSeXRN8PDD+1z8/udfAwu3Mk5teqndMNrUaktJ/" + "WXjgf3k1aZA9HGH5VZ7Uut9a3FSOUc3EdaZW7Es5espXylqY5tewXeP6gau8aM9ZtdizyFOkeDWspcWUf0qLZ9izwjCvGXFGuNfXvjq2Srnj8jMo1G" + "qcyWa85O6bju4CPD0M2SVWW0jpctso1eD1UXD7w5R7rxUse9eyPFHWtMmNQzyla8Nx1APlhP1TXWhoPqbv/" + "wwe2reFwN1aHo4HzZKz2pOW6Fy0sPF2XJGZ6EDopJF69BcPGwdPHrJbxQJmM6vpICzMRcqsPIYdbk4yggMz48gcxdmI2L7ftEfj4Io9ukEZIXFvcn2" + "7qQ55xBo5zEhCdwzLjwsRD8nfw7/OiWckr5z+2P6h+FO0Y/" + "Obfec+ofZXRBfeTU594oFwEe6zdz+OdpL0rHhrbPZZ+7Hx5oNWSaZCI5L+2eozq2nlnWqT7N/wZyP8TqClZrsP960EZLx4TJdhzUc8jhGnpW2/" + "AQwa4171tffPEFDc90HmvzT9mY18qsKLfY0bG6ZXjFRBcYGC8GTHcvuXEe1SgxUSKMRt6LWb2OUQFiZIuOSsON8ifyc4Oipfizp5HM8OWJLlP+GE+" + "slw6zXDGOmxqeitlVCGyBU9TR/aTSB6aCt9BHSgzG+k0pvcP6BCI/" + "XsYP74D2Y5cfqbyz33NIBoyJyfuHS5B1LmnJzLh682NnaxvO5Xdt6SMH2vutzS+lW6vxBJO1uGE6cq0yT1ROvpRo1SoTE/" + "nnNjZadExPTBYvm1sV3rzC6Hc8/Xosn9nLTgft87DDRtEEz41wcj+Z6Adj0RvpIyUE1X5TSuywPQI80Wd8WdWpP17CPUfL2Lq7EFln8d/" + "Q+d7UhrPgXXlizxhdeQNa/" + "PUI6ELIlDov93vmdD2sLskETMAENklAY8kmZh022bhW+" + "qYI6Fxl9jPMGD24Kc2sjAkcRoAv4qQvux1WknObgAmYgAlsnQDjSTeDv3UY1t8EroGADaNraCXLeBICemJwp4qYMeIlfTsTMAETMAETWEQgjiNegbC" + "InjOZwPkIbPodI124/" + "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" + "14ZBxAcYXmoLTmn4U9fn2t7W9quOvwkR+tH+r/" + "L449cfUph9EzABEzABEzg1Ac8YnZq46zMBEzCBGyIgY4aZoZ+" + "1YdiwfaV9jCRcPmP0Isb9pPAUHxLphz8Yf5oO7JuACZiACZjAOQjYMDoHdddpAiZgAjdAQIYOs0Dfa8MgYrYoOfZ/" + "UVh4v0g+s0cYRLjw7tH9bvf7THt5/" + "i7COyZgAiZgAiZwKgIspftLrCz5p6rb9ZiACZiACVw3AWZ+" + "Hsnw6ZbFRXWYRcqXxfERBj7hjftUW7fELoRMGEXKSz2faeMT4KmcmNWeCZiACZiACRxE4G8pNzNG/" + "40HyU9x9k3ABEzABExgjABGTr5cbifDhVkk3jnq/" + "r9IYWnm6GOFE79nSClNbkgpSc99zZHS2CjqYfGBCZiACZjACgT+ncrwUrpEwr4JmIAJmEAzARkpGDhsnQEUM2MsYcT0DKYYV/" + "uENx9kGHMYVKXyxvI4zgRMwARMwARmEfBX6WbhcmITMAETMIEBgeG7QRg/" + "YWZHxhEGDe8apTTMJPVmfWKaMCOUylUYBtcLbXytjn0+zPBKW+eUhqV1uHe1sdSOusJ+Vp+" + "C7EzABEzABEygjYBnjNo4OZUJmIAJmEBGQMbHnQ6ZxcHYCU5hGCd8aOH1fcjuo4GRglGUp2f/" + "nTyN9jGE+Mrd19pnyR11UGY3Y6RwjKIf5PMFvMfaSMv+B9pIa2cCJmACJmACswl4xmg2MmcwARMwAROIBD6R/" + "200VFgOx6wOM0ZfxrDhTBBfr8OI4Ut2YQme9jFocsfszz8VnmaZQpyO85mmuyweQyot53s2SJeX630TMAETMAETGCVgw2gUjyNNwARMwARqBGSEMGu" + "EcTR0pbCQRnn+MUw8OOYdpTw/X7jrZotIqzLyjzcQH8pUeG48kdTOBEzABEzABJoJeCldMyonNAETMAETOCYBGTbM/" + "rDls0XMQP1IXIzvRNAxy+a62SMdd8v0ukTeMQETMAETMIFGAjaMGkE5mQmYgAmYwHEJyLBhBootuGj4pBmj9LU73kn6T0zCRxlyI+" + "rzGG7PBEzABEzABGYT8FK62cicwQRMwARM4IgEWEbHu0h8gOEN+" + "9owgH5NhpP877TxAYb0nhL7OBtG9xz8awImYAImsICADaMF0JzFBEzABEzgOARk8PA+Ue+domFNSpO/" + "pzSadpjXxyZgAiZgAiZQI+" + "CldDUyDjcBEzABEzABEzABEzABE9gMARtGm2lqK2oCJmACJmACJmACJmACJlAjgGHEi6ssS2Att50JmIAJmIAJmIAJmIAJmIAJbIUAS7LDEm0Mo3e0" + "8Sd8/Hu4nQmYgAmYgAmYgAmYgAmYgAlshQBfPw1/" + "SO6ldFtpcutpAiZgAiZgAiZgAiZgAiZQJWDDqIrGESZgAiZgAiZgAiZgAiZgAlsh4M91b6WlracJmIAJHJGAPqH9nor/VhvLs/" + "mfofyT2kes2UWbgAmYgAmYwDoEbBitw9GlmIAJmMCmCcgQ+kUA3pf/h/zwx6ubBmLlTcAETMAEro6Al9JdXZNZYBMwARO4TAIyiniBFec/" + "Xb3n4F8TMAETMIErImDD6Ioay6KagAmYwIUT+Ejy/" + "SYD6e7C5bR4JmACJmACJrBHwIbRHhIHmIAJmIAJLCTAjJFnixbCczYTMAETMIHzEvA7Rufl79pNwARM4CoJaFaIjyx8qY0/" + "Cf9dGwYRH2B4qS04pXmknefa3tb2q46/CRH60T5p/yE/fKRB/sc6pjzeU/" + "KMk0DYmYAJmIAJnJaAZ4xOy9u1mYAJmMDVE5DhwszQz9o+1z7bV9rHqMHlM0YvYtxPCk/" + "xIZF+XmjDuEoOY4jjD1KAfRMwARMwARM4JQEbRqek7bpMwARM4MoJyNBhFuh7bRhEzBYlx/" + "4vCguzPfKZEcIgwvHu0Zuw9+cPxlX39Tqlx6Diy3Z5mX+m1p7SfKntD22UbWcCJmACJmACqxLAMPpLLDH5q1bgwkzABEzABG6KADM/" + "j2ScdMvionbD94v4CMMPMe5T+V/H/" + "V00bDCw8tklol8rrmoYKT6UoTQYUHYmYAImYAImsAaBv6VCMIz+Gw+Sn+Lsm4AJmIAJmMCQAEZOz6CRoYKRwzK4fAYozRzx7hDxuSGFEXVXMHB+" + "VfiYo6xe3WOJHWcCJmACJmACDQT+" + "ndI8TDv2TcAETMAETGCMQDSAMHI6Ayimx1jaKb5ktLCMrltiF9MT1kurvCyP680Exfp4FwmDiXqfanulrXNK81k8eFc+" + "s1kYT2FfcWOzTzGbPRMwARMwARO4J+B3jNwTTMAETMAE5hIYGhzB+KEQGSMfa2P2KDn2h+lLYU+VrzOWtI8hxAcevtY+" + "s03EYTzlaTCKflA8H394rI207PMBB9LamYAJmIAJmEAzARtGzaic0ARMwAS2TUBGx50IYJh0ho/" + "CmKHBCHmtDfeRwnJDiFkgjJzgFMcyOoyYvAzChrNQzP78c1DWTsf5rBLL8VJd1JHKeKbw9H6Tgu1MwARMwARMYJqAl9JNM3IKEzABEzCBPwl8ot1vZ" + "XgwW8P/" + "E7G0jRkjvhhHWPeRBe3vFMbX65jJIRzDiv88+" + "h9tlJHCev9xpDjcp9qoKzmMp262iEDlH763lP4TKTeeUn77JmACJmACJjBKwIbRKB5HmoAJmIAJ5ARkjGDc5AZLii6FhTjlCQZLShj9sfTM/" + "rCl2SCyYHz9qLII30U52GWfGatu9kjH72jL84Z0/" + "jEBEzABEzCBMQJeSjdGx3EmYAImYAInJyCjBuOLLbho+KQZI2aSdgrD+" + "PnPfYrwUYbcEPo8htszARMwARMwgWYCnjFqRuWEJmACJmACJyTAjBLL8PgAwxv2tfFVOpbdBcNJ/" + "nfaWL4X3i2K+zoMafHtTMAETMAETKCZgA2jZlROaAImYAImcCoCMnJ4n6j3TtGwbqXJl+" + "iNph3m9bEJmIAJmIAJDAl4Kd2QiI9NwARMwARMwARMwARMwAQ2R8CG0eaa3AqbgAmYgAmYgAmYgAmYgAkMCWAY/" + "SUGJn+YxscmYAImYAImYAImYAImYAImcIsE/paUwjD6bzxIfoqzbwImMCCgdxreGQT50ARMwARMwASaCHgMacLkRCZwagL/" + "ThV6KV0iYd8EJghoQOPrV/xfip0JmIAJmIAJLCHAZ+YZS+xMwAQukIC/SneBjWKRLo+ABrKPJdXb8r9qkU7p+M8V/" + "oiSGaZ3tX2vMH81SyDMRhDsTMAENkmAcUDbe9qea/tmkxCstAlcMAHPGF1w41i0yyCgwQsD54X8OX8aiSH0gzYMKfKF/" + "1m5DI3OLoXZnL0JLIAJmMC5CMRx4R/yGVvsTMAELoiADaMjN4YufB9rY9bg6pzkPsp0/yUxadTxSzXe1zMb8P0sPe3PH1La3RMwG/" + "cEEzCBrRNgTGFsWdVdyvjaMrZeiqyrNsANFdbShjekbqeKl9J1KMo76hgsieJPBFlKxbT3jwr7QX5w2udf2bnx5R/Y8z8b3On4ucJ/k/" + "9bSJz9KIxymUnAp1xunHl69Fgbjn9838t3H9X2e2gdyv+Vtq+" + "19fRqq72cSmVVmZBD8bCESXKPFNa0fC1lGPrKD9dPtfGELr8p31G2tikdP1WaWQyUPm87Br9PhnINj5WHdBij72v/" + "l2H8rRybzfKW3EofWUrIfPbJ1Zgo/Ohj0L40xwu5Nj0l7zfa/qONsX6VB2cqZ3R8PR79/ZIly+jYuoasKmMrY2ZRT+l/1HN4qg33W/" + "02Qh7chhrH00Idg/dCftJ2p31urHOjiE5J/P8QJ79zOuZm/" + "CP5xfdKYvj3SoPhRLlcHPG5geam+uClVyqLug+tg2VPnJQHO5UzxYQPGzxROgaMsOmYJWzkW+SUlzIZLCijVk5VR+XHIM6NHB22O+XnqSBtW+" + "wHg5LCrJTSXrxRFPUaiD/v8FbZzKMwO/" + "XV9JHZmq2T4ab5LDzvikxU1hrjwzqtNihlK3pKbcYWHtqNuhYeSjM6vo5WcLzI4ti6oqzFvn08dQ4vuaUtC7UU9VRZpziHi21YkPFmgmwYtTXlR0rW" + "u7FVhwzLzOTXnvZgTITOPFLFXrkx7e/ymTlZwx1URzzxMFZqRsUcGaeYPFU93cuo2sfwfC3/bk4leVrl/UUbM05V40bxtG1Nxxq/vJrivspFX/" + "oHMoT+Ukz4ZyBGWK+f/Rl1cXsH9c8bZ3PMxrqmPnJMDrWyb53PkvNujEnt+rbmGFRrq7HwrejJ9Z42mHItPKbG16k6Vo/" + "Xdb42tq4l61jfXl2flQpsacthVWN6HvUcHmnDoYw3c/zwZjQ5riLcoIcZIXUSOjX7L7U/" + "dsPOjXZvFqkgIuU+K4STr5uZKsTPCVqjjnBxW0GmKpPI9Sf5GBBva+NCwCxdb+mbwo7lajp+" + "oApHDVzJyEWeGwn6Q1j6pzCWWDJb9Zn25QXDrLckUOEYmy+0/aqN/afaXmkLTvG0HWV8qP2wFE8+de3kz/" + "kQBFlGncpLsqDHh9ro3wfPXKmMU7JBhy9VJzOv7P+fNpYlVo1ixc9ysVza7OicECyrr7mPxHw85ZtcvknaOS6TZ09/" + "xR2tv6rsvX6E3Jk818pn9T47xWTQ3muMD4Mi/zyULMfsE+maVWz7P6UIe0fTs6Jja7siO7Kt4arjK4VLzuI5NLfikr6x/" + "No1pzS2LpJVdY+2+QLZ5qq/lz6Tae+auJe4MSAr86x9OxO31IZZ9G3tPrgtddbXRh2UG1Mcn9hkSdbP2n7X/" + "h2BJac4jKdqPHliGk5yOlxwhGlj6Rt1HXxTs2IdLCVseap1r0jhN8oyxoTBARYYhFwMckNUh0d3NR1poze12qUXsvLeGUbPa23cNO90zA35W9nGJ7s" + "7p3DKpS/xfhOzZOhOXwv9IcbzSVfK5QMepMchZ/" + "GJk9JgFFDmEvcvZXoV63upfY4Pcirr1GxYkhLYqG76GgbR2qxOyWlRH5Hu9KPRmy2lWdpXivqrPGSd1V+Vvsmp7Fo/" + "ugU+zX22BVZsh+p1JS9DaTk3YNg8BilPc7+JshyrT4y2/" + "an0HNGxtV0ZW4rXqFyHqf3Ylne1dIovnkO19LXwmr4KH7vm9MbWpbLGuqt9e6FsQVXlbe7XBTbFa2IhXVPQlJ55IUo76xw+QM9eG+Yy3OL+" + "w1tUamWd0g0GN+rMHHATy81v7+m/jnNHZ63eTMeElMuF7Lk6awwKN3LPdFy9wKWEjX5THfHkYslXMEYKZSPPoRfvKSbvRr2pKyyn0/" + "Er7SPTqrMjKq/kajo+VuJie0g++gPviKUbC27E/" + "14qvBDG0zsM4N5sho7TLA318p4VM2fUEWSQzyfAmdEpOd5Le1SKGAtTeczSsWQx1Y1MzHyxFXUfK4845Ts5G1WL8Z6/m0f/" + "6fHVcXKzWUmnU3Na1EekIOc9RvqYW1V/VbSkv47JF+Im+tHV85GSc/" + "rsJC8lmGKSl9E0PuQZtD+n3xylT0R5LkXPoo6SsbVdw7V2wHjJYXV8nTiH5tZV03fsmsMYkt8/LJV1qs2XyJb0n9OvU57dMcYEFT6lZ1e/" + "duaew4v0VD3DNsxluLn9hzenUUEhdd73FExnm3IswRneSHGB4wY23ZxjQGDM8IQhhQ3L5eZ06oYylTtmYO1Uxxqyj9YhWTm5eKJUcz0jb6FMLUyG9b" + "OkjnzBLaw3ZZ/yezpOJY7xPBXsZvYkH22ejIupInp5lZg2SAbWTmWFfij/qcK7ZZU6pj9wcSu54WBcSlMKw/" + "jMjWKWDyJD6MPyMXLygY3oDxQ+lIOlFOkdsZ5+sayjspFMMETWzqne4fmc4pawmuK05Fwd49SLk+BjfSTXG8N52DZJ7+SvrX/" + "qapLySwAAEaRJREFUK9X+qrYwn8H5HNs0b7td6rPyDz7vYvnddSU1fvSbxqBCnqm+FbJkelT7BAmvWc+" + "ajlKr9Vr0WGnDuQML3EIej5S1V04o7P6ndx1R+aQL12LtzzonlT4fl/" + "J+O3bNGY6ti2SVzD09dHzu6yF0p8aESzuHl1z30XPYhoTdrHsozejoNO7NKq6TmYsAHWKJ4+" + "TLbxop46U2DKPae0Yw5eQfc5RbM6y6fCvIPlqHyv9MlaEfxh9Ltrqb8E6I+5vi7gZzoUxVJioPVr9n9aXdHqOF9aaypnxu/" + "Dsds8ScF7W2JLyUJ8u+vxv1HeYNF6wYt5N/F3PCoDO+tP9EcZ2hq32Wd+Ioj9mlbrBSHMcMWCz9DHnk9z5NrmPyoXs+w0B9XT9QmmH/" + "3ymM5YNj59RQPxU57VQm+YZ5a2wY1IO+KZ/8/" + "CbwLq9RcVVWpFM8D09ghu70R2bsQhnykWmK05LrzFBXVRNkIXwYV+NAH+naXfscc21iGRMyBaf9qv6KG+0rip/" + "UP1ZT7a9RlrE+E4voeUMGSZeT8qFSyX9Q/4haNfdZ1TfrvFP6OUwQh7YaHR9IpHIX9xvyy1X7BJEq/" + "xr0rLY9Osg1t+t98u6XNmOM6dxcHjFjdXxVfPEcIp/qWnLNIittOnnNIaHccGydLavknNO3m2RTmWP9mvb8QBtL4BkL7rSxPL7rq1GmqTGhS6/" + "8wSlfdeyMZQ7bq3bdp7zJc1hlHqTnvdR7bRiDb8rj3iG01wPt0LB08Mfa7DIC6lCcHLj8ZmuncG4yOVFeEDl0iudiA9eiUzxxdP5eucXECwNb64i67" + "OQzW9bdDA+qRd6xGaVB8v1DlT3GJF2AuoxKj8HG8q6jMeoqu9+" + "p6chFvNaWezpJ3smZSaWh77AFp2P6GRc4dOWpWO7e6IBtp3TIQZ3B6ZgLHksQuYGnTz6WPzTUWBsc3m9SHPUMz3Pq3SkuyCOfOgh7RvgB7hRskDmwk" + "U8f6pz0gE3Xd+LxFCuMRljR13lQ0LWRjk/KKdbd1a/jsT4i8e4NdKVDzkfxOMhMpMIP7Sut+tMeoU1UZ6+/" + "IscCV+xHKhs2p+azRv9A5qY+O5fVHCaxbegn3TlSqk/" + "pDu03FLtqnziTnmNtj45L25Xr8fCaTXmznJjsnSdZAXtxSj85TmX5a7tBbpVVvOZkmbgOdPcPS2RVHviyBafjY18PWRHB6odX2vjbFfa7+" + "oMQRxgT5uiptHB9pK16DivN1Pnboifq9tqQgBt09ONg7D+8QeVWUUkdihvz9HQTo6GbHdI+T1dx4YtjOi49deO9ED6m0Lvo6bha7n2Rh//" + "OqUNpObGGJ/" + "xQCDjsPfkYJmo4LjJRPi5yDDywQRZkIm03M6LjRU5lcEIjO52e9mBA6GZQtJ9cTUcGFWZdSo6ZFZZWUgcOuV+" + "GvemflJeXSblxoA891farysvbA9mfKizc+MtPS9UUHPSinJ3CYZjP+hDG+" + "0jfKzw92YPBcBkMepMusccw4MlYLoOCZruk3zHZwOyFZMX4Q17OU9qXQZj+k597cKyyUtyO9NqCQTXIS/Q5OCWGU33kmeSjHwa9tc8DDvSg7yY3qr/" + "yTvWVVv3H+muSZY6fGJT6UYo7Oh8Epk9oO7R/zOmzcziltJNMpMOcMejQfoNca/" + "cJyjy1nmNtjzxL25WvrubnKWUtdci4d8+hwhKr0jm0tK6Wa04qm2sHfSB3S2RNehz9fBfHNM52Y6bCaOPctV4T8zwt+" + "5N6zjiHp87fFj2RudSGLbpcZRobRpVmU8fjprx4Y644bjxqsyupRG7Q6JS9k2ms3JTxUH9mHZz44YZa+Z5rSydKEEPH3Ozv5Oc3mSFuwU+" + "RSSyfwWGtAaITLcrda4MuMu5M6PhKyTAu9lwse3jB30tXClBenvJUn/SkPBPpaJs3MW24gCv9cDkky6lSPVzchiwwuDD6p/" + "pzrKbNU3n0l3OyGQo6yUoy0z/" + "DAxDtcwP8nXwMLtzJOanu1j4yvB6V2nJSf+k41lea9G+VORBt+" + "FF51X7UWpfSrcJH5RzcP1plbkBTTNJSvtJUx7ZCoYf2m12LTIV6R4NaylxTT5U11va7FnkqCnHdXnSdLJSHjKV7juo5VCijKUj6tpxTcKH/4A/" + "vH2bLqjJOdj1UXTz05jzpxkwdD++Pmq6JTUCzRC16RtmK96dZUeyOnr8qZ1JPpam14aCq2zl8cDuqXJYmsXPzVa/" + "0lOayBPxTmmCMSM7wJPTP4G4vXcC6gKU7F8ykqqNkTnyYkbk0h5HDjMnHUTBmex4PhAwzcbF9nyR9sjTolQynLHhydzjQTWY4c4JRVuLCU3RmXPiAR" + "Fj2If8uk3kpp6yIs+6O6h8lG+sr167/FPxRPhfUP0593o1yaeg3U9xr8RejZ0Pb13QYDVe54d5Afsv1d5JHLOfS7jmKY+sFyDrVr/" + "nvQO6JWGHBig32Xw8adOk1cbItB/UccriGnsU2PESoS8/71hdffEHjMjXJ+vtTNtils1lFPjGlU3XL8FYp9ESFxIsBU94tF+5mqXIm2qf/" + "8W7MqnW0CqN6ueCN6hjT9F68bC3/nOkkNwMvswAsk8J4Yq1093QyxnMzzFMxuwqBLXCKOhb7yhb0rzR9U/CW+Yz1myZ4G04kdixx/" + "ll+b5XGoUhU3kXcc0iOlrH1ImSdy1y6Mbbe/NjZ0oZz2V1q+qgrbfqWDaMTtJJAL/4/" + "mBOIV63imHIfs+yqQoWIVjmUjidHvMNyNQ8PJCtG51NtzIDQB1um3pXUbmsE3Fe21uLr6Ot+s4yjuB31xlrln/" + "2eo1WG1nTLSDvXIQS21DbSFUPehtEhHcZ5t0WAC4Q0ZpmVZ1e21fTW1gRMwARWJaBx5OoetK0KwIWZwIURyA2jBxcmm8UxgYskoJOG902YMeJdFDsT" + "MAETMAETmE0gjiFXtfpgtpLOYAJXTMBfpbvixrPopyWgAY1ldF6Odlrsrs0ETMAEboaAxhGPITfTmlbkFgncvGGki9Aft9hw1skETMAETMAETMAETM" + "AETklA99VvnbK+U9e1BcPophvw1B3G9ZmACZiACZiACZiACZjALRLwO0a32KrWyQRMwATOREBPE/" + "mTYb66dVYnGfw+4FlbwJWbgAmYwPURuPkZo+trEktsAiZgApdFQEYGX2V8EaVKRs8zhed/grvTcfrvkrN/1l6yfKWNz692/" + "911WVQtjQmYgAmYwKUR8IzRpbWI5TEBEzCByyPwpQyMz+P2icR7o40/Bu+c4jCe+BPhs/" + "xZcydIf4dP7PMnknYmYAImYAImMEnAhtEkIicwARMwgc0TeC4D40lGAWPjHYXxJ8LJEfZ1OrgEPxppT+" + "RjtNmZgAmYgAmYwCgBL6UbxeNIEzABEzABEWA52usJEhgg1WVrisNw+l0by+8e6XjRZ4uVDwMNg+" + "xD7TN7FZz2mR3qjlO4fGawyPNDFuZdEzABEzABE9gj4BmjPSQOMAETMAETyAnI4PhGW/4+EQbQbwr7hXTyee8ojye4c4r/VQc/" + "yscYwsBK7yt1aVp2lJ+Zn/" + "diOXzkgeOdfAylfEaL4OR+0s5H6cC+CZiACZiACdQI2DCqkXG4CZiACZjAHoFohHysiPezSAwj3jvac0rP8jqMqPTuER9m+" + "PtewraAx0qGkUb9lJmMMYyi2owWaZDPzgRMwARMwARGCTwcjXWkCZiACZiACUQCMkQwMFgS935mlBDLzE0yUjjO3ac66Ja4xXxppomZHsqbcv9QPgy" + "h8LU7+U+VIX+f6UMd/" + "1gppGiwVdI62ARMwARMYMMEbBhtuPGtugmYgAm0EpAxglHEl+nCsrR4vJOPscKGcVRyhAeDZhipvBhIS5a5MUOUG0Ycv1R5LLMLRldWF3IX68/" + "SeNcETMAETMAEdg/MwARMwARMwATGCMjYwLjAEOF/" + "gTA+mOn5XFuYjYnGCGlKDkOlF6f0LbNEpbLysGDsqCyMomR8sT901M07TnYmYAImYAImMErg4WisI03ABEzABEzg/j+LMD6G/" + "12Uf4WOpW58wns4O8MyOmaaknFEOS8PhPoslonBQ318cY4/" + "lx3OFikozEjlchJmZwImYAImYAJ7BGwY7SFxgAmYgAmYQE5ARs1f8+" + "PKPrNAGCDMJHUuGkqrGiYqE0OILbl8P4XtlA4jDH9orHVpvGMCJmACJmACicCDtGPfBEzABEzABJYSkPHBV+" + "f4f6I0M7S0qDXzJWNtzTJdlgmYgAmYwI0SsGF0ow1rtUzABEzg1ARkFDEzxBfkwkzNqevP65MMLK3jT189W5SD8b4JmIAJmECVgA2jKhpHmIAJmIAJ" + "zCUgQ6S3lG5u/" + "hXTfydZ0n8nrVisizIBEzABE7hVAjaMbrVlrZcJmIAJnImADJK7M1XdVXsJMnTCeMcETMAETOAqCNgwuopmspAmYAImYAImYAImYAImYALHJGDD6Jh" + "0XbYJmIAJmIAJmIAJmIAJmMBVEPDnuq+" + "imSykCZiACVwPAS1j4w9gv9X2jjbe9Vn1c93XQ8KSmoAJmIAJXBMBG0bX1FqW1QRMwASugIAMIf5o9X35f8j/" + "8QpEtogmYAImYAImsPNSOncCEzABEzCB1QnIKHoSC/WX4Van6wJNwARMwASOQcCG0TGoukwTMAETMIGPhOA3GUhn/" + "0Kdm8IETMAETMAEWgjYMGqh5DQmYAImYAJzCTBj5NmiudSc3gRMwARM4GwE/" + "I7R2dC7YhMwARO4DQKaFeIjC19q+" + "03b79owiPgAw0tte07pSUs63LvaPvfMUmDhHxMwARMwgTMSsGF0Rviu2gRMwASunYAMGmaGvtfGxxYwjHby0wcX9maMYhyGEB9oIC35MZT85TqA2Jm" + "ACZiACZyNgA2js6F3xSZgAiZw3QRk1DySBhhFGDrBKIoasf+LwnrvF+mYmaUn8oNRFNN+Lp8yqk7pMZw+" + "04bxleet5nGECZiACZiACcwlYMNoLjGnNwETMAETSAQwWB7JWPkmBUSfWaAfBmHdodIzo4Qx9E/" + "t85GGKfe1Enxmo2gKk+NNwARMwAQOIeCPLxxCz3lNwARMYNsEPpX6veVyMl6YRWJmKC2n6wgpjpmkr7RhOGHs/" + "KowjKsp97ES9OqZyuB4EzABEzABE5hLwDNGc4k5vQmYgAmYwC4aQBhBQwMIY4n4oiGjcJbOsfQO44h9ZoJeauuW3Wmfcl9o+1Ub+0+" + "1vdLWOaVhaR2OjzdgXGE8hX3F5cv6FGxnAiZgAiZgAtMEPGM0zcgpTMAETMAE6gSGRghL49KHFT6WkcLs0U7+" + "l9owdILTfnEZncIxhH7W9rX2WaKHgcUX7jpDS+EYRT/IZ/" + "bpsTbSsv+BNtLamYAJmIAJmMBsAjaMZiNzBhMwARMwARkizPBgrATDByIKY9YGw+Q1x3IfKSwZTmn53H2MfmP6b+RTVnLM/" + "mA0pXwhXMf5RxfusngMqTRr9Uzh1XebUgX2TcAETMAETKBEwEvpSlQcZgImYAIm0ELgEyX6VsYIMzhva2O5GzNGzA4RxntEyT3TzhOFP5ePMYPDwBl" + "+pvtThVNuchhU3WwRgcqTf+yB+FCGwnPjiaR2JmACJmACJtBMwIZRMyonNAETMAETyAnIEGGmJzdiUvReWDRaRg0XpcFgYstnizC0foxxO/" + "nUGZz2mZ3qZo90/I62PG9Mac8ETMAETMAEpgl4Kd00I6cwARMwARM4AYFo9AwNnzRjxEzSLho//" + "4ni8FGG3BDiYw52JmACJmACJrCIgGeMFmFzJhMwARMwgSMRYLaJr9bxAYY37GvDAOLT3hhNzBB9p42leuHdorivw5AW384ETMAETMAEZhOwYTQbmTO" + "YgAmYgAkci4CMHN4n6r1TNKxLafL3kkbTDvP62ARMwARMwARqBLyUrkbG4SZgAiZgAiZgAiZgAiZgApshkM8YsUxhqDj/" + "E7H3Eu0wkY9NwARMwARMwARMwARMwARM4JIJyK7h//S6v5kYyophxIur+bKEPE3+Umse7n0TMAETMAETMAETMAETMAETuCYC/Fde1f0/" + "zAqgP06ZYyAAAAAASUVORK5CYII=", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}\\frac{- K \\left(P - P_{t}\\right) - \\left(\\beta - 1\\right) " + "\\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho - c du_{dy} \\rho v - c du_{dz} \\rho w + dP_{dy} v + dP_{dz} " + "w\\right) + \\left(c - u\\right) \\left(2 c^{2} drho_{dx} + c du_{dx} \\rho - dP_{dx}\\right)}{2 c^{2} \\left(c " + "- u\\right)}\\\\\\frac{K \\left(P - P_{t}\\right) + \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} " + "dw_{dz} \\rho - c du_{dy} \\rho v - c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c - u\\right) " + "\\left(c du_{dx} \\rho + dP_{dx}\\right)}{2 c \\rho \\left(c - u\\right)}\\\\dv_{dx}\\\\dw_{dx}\\\\\\frac{- K " + "\\left(P - P_{t}\\right) - \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho - c " + "du_{dy} \\rho v - c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c - u\\right) \\left(c du_{dx} " + "\\rho + dP_{dx}\\right)}{2 \\left(c - u\\right)}\\\\ds_{dx}\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ ⎛ 2 2 \n", + "⎢-K⋅(P - Pₜ) - (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ - c⋅du_dy⋅ρ⋅v - c⋅du_dz⋅ρ⋅w + \n", + "⎢─────────────────────────────────────────────────────────────────────────────\n", + "⎢ 2 \n", + "⎢ 2⋅c ⋅(c - u) \n", + "⎢ \n", + "⎢ ⎛ 2 2 \n", + "⎢ K⋅(P - Pₜ) + (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ - c⋅du_dy⋅ρ⋅v - c⋅du_dz\n", + "⎢ ─────────────────────────────────────────────────────────────────────\n", + "⎢ 2⋅c⋅ρ⋅(c - u) \n", + "⎢ \n", + "⎢ dv_dx \n", + "⎢ \n", + "⎢ dw_dx \n", + "⎢ \n", + "⎢ ⎛ 2 2 \n", + "⎢ -K⋅(P - Pₜ) - (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ - c⋅du_dy⋅ρ⋅v - c⋅du_dz\n", + "⎢ ──────────────────────────────────────────────────────────────────────\n", + "⎢ 2⋅(c - u) \n", + "⎢ \n", + "⎣ ds_dx \n", + "\n", + " ⎞ ⎛ 2 ⎞⎤\n", + "dP_dy⋅v + dP_dz⋅w⎠ + (c - u)⋅⎝2⋅c ⋅drho_dx + c⋅du_dx⋅ρ - dP_dx⎠⎥\n", + "───────────────────────────────────────────────────────────────⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎞ ⎥\n", + "⋅ρ⋅w + dP_dy⋅v + dP_dz⋅w⎠ + (c - u)⋅(c⋅du_dx⋅ρ + dP_dx) ⎥\n", + "─────────────────────────────────────────────────────── ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎞ ⎥\n", + "⋅ρ⋅w + dP_dy⋅v + dP_dz⋅w⎠ + (c - u)⋅(c⋅du_dx⋅ρ + dP_dx) ⎥\n", + "─────────────────────────────────────────────────────── ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎦" + ] + }, + "execution_count" : 17, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "dQ_dx_outflow_x1_upper = simplify(S * Inverse(lambda_waves) * L_outflow_x1_upper)\n", "dQ_dx_outflow_x1_upper" ] + }, + { + "cell_type" : "code", + "execution_count" : 18, + "metadata" : {}, + "outputs" : [ { + "name" : "stdout", + "output_type" : "stream", + "text" : [ + "x0 = std::pow(c, 2);\n", "x1 = c - u;\n", "x2 = c*rho;\n", "x3 = du_dx*x2;\n", "x4 = rho*x0;\n", + "x5 = K*(P - P_t) + (beta - 1)*(dP_dy*v + dP_dz*w - du_dy*v*x2 - du_dz*w*x2 + dv_dy*x4 + dw_dz*x4);\n", + "x6 = (1.0/2.0)/x1;\n", "x7 = dP_dx + x3;\n", "dQ_dx[0] = x6*(x1*(-dP_dx + 2*drho_dx*x0 + x3) - x5)/x0;\n", + "dQ_dx[1] = x6*(x1*x7 + x5)/(c*rho);\n", "dQ_dx[2] = dv_dx;\n", "dQ_dx[3] = dw_dx;\n", "dQ_dx[4] = x6*(x1*x7 - x5);\n", + "dQ_dx[5] = ds_dx;\n" + ] + } ], + "source" : [ + "drho_dx = Symbol('drho_dx')\n", "du_dx = Symbol('du_dx')\n", "dv_dx = Symbol('dv_dx')\n", "dw_dx = Symbol('dw_dx')\n", + "dp_dx = Symbol('dP_dx')\n", "ds_dx = Symbol('ds_dx')\n", "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", + "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", "\n", "T_phi = simplify(T_1[0] + T_2[0])\n", + "L_outflow_x1_upper = Matrix([K*(p - p_t) - (1 - beta)*T_phi, L[1], L[2], L[3], L[4], L[5]])\n", + "dQ_dx_outflow_x1_upper = simplify(S * Inverse(lambda_waves) * L_outflow_x1_upper)\n", "\n", + "common_exprs_upper, final_expr_upper = cse(dQ_dx_outflow_x1_upper, list=False)\n", "for var, val in common_exprs_upper:\n", + " print(cxxcode(val, assign_to=var))\n", "print(cxxcode(final_expr_upper, assign_to='dQ_dx'))" + ] + }, + { + "cell_type" : "markdown", + "metadata" : {}, + "source" : [ + "### x1 Lower Outflow\n", + "We replace the $\\mathcal{L}_4$ component with a relaxation term for a specified pressure at the outflow boundary to obtain " + "$\\mathcal{\\tilde L}$, and then compute ${d\\tilde Q}/{dx} = S \\lambda^{-1} \\mathcal{\\tilde L}$." + ] + }, + { + "cell_type" : "code", + "execution_count" : 19, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAvUAAACWCAYAAABevXdQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXc4Ut6KuG8T1EotI6z4gnQEEMo" + "IFMyAg7XMdMgMiLo5YdyiZAeF+SxBmkGQEAQZwJHLulxTyaQ1g57yPP7viqq4fV3VVV3V/ryW3Xf73Y3f3a7er+trz58+/2O1272XbzNt//" + "etfX7VFOMwETMAETMAETMAETMAETOA4BKTJP6qm2221Ke7a9Szie/m/" + "adiXWby9JmACJlBEQB8urR86RZk3lOjQfhyaf0Mo3JSZCHhOzATSxZjA1STwnbrd1OpvE4obySP3pT5sfsuu7TUBEzCB0QT0OfJUmfgsOYfPk9vqz0" + "NZNj1GmTPjMKrvTtxLYPKc6i3VkSZgAmdPQN8rPzQ7qTCCHvKSi3qubUzABExgMgF9uPDB8pnc0SJ4cqULZlQ/" + "fpb9QvaJ7N6HaVfVSjsrB9qgul7J8gvIG12zU2MzQGCIm+JZgD6QvR+L+" + "lnuRfTflHtL9p3st0qbwmP0NEflTJpT02pzLhMwgatE4Fp2pv6OPmzOYWftKo2f+2oCmyGgzw9E0C9y726mUTM1RH3ivqN/yh0UdktyUNl/" + "qh1fya1+bp2pi2ddzBC3GP9B7t7cVdhPgnNP9nP5B8e/FKTKKp5TpWU6nQmYwNUjoM+SJ+o1p21qZ+qvHgn32ARMYE4CnPU71/" + "tw6Bf9KzGLcNAHdr6bXNIOpxGBIW6K51cQzOtLZ++" + "VsWfByhfnnGbMnJqzXpdlAiZwpgTyG2XPtIvulgmYwJEIPJJAKj6icqQ2zVJN7Bf9Q9wNmaU4cEzkN7Vhtt3ioY6cSfwQt6HFUrrp+" + "7M5eYycU3NW7bJMwATOlIBF/ZkOrLtlAsckIIHCGfJzP75H/" + "x71cV2YA+KTM9824wgMcUP07zR2HzqKDfGK69rJ78hWFDw4p4pKcSITMAETEIEbpmACJmACMxBA+AwKTgknjqb8Hutjx/" + "ldj5iKyeZzVFc6RnFHpb7Xde2XBV3/qPCv5bbthtM/+lnLo+vczMJB9bM7DCtEH7yom2MiL2SDUZpD+pKKmcVVWxDO/" + "KcJ3Gg7N5YefZFXwk1ta5pO0a/yYE48/ekS/" + "c3yxlyXzKkx5TmtCZjAFSZgUX+FB99dN4EZCXAjYed5+ii2uOEQcRRu8pRLeoRg2gmVd3HzTPXSBn5Z4GkylUBXGGemeXxl1x/" + "u8acfCLw+czAH1U8dLC7uyh+EsVzYYfKF0yF9uSxthle1jcXHTbnhiTxyaT83gf59huKLi4j1lnCrylSedJ4+8Q1xCmdhQn+YJ0vemFwyp0Kb/" + "GICJmACQwQs6ocIOd4ETKCEALvGn3oSIpr4h+r8qS0cZal2nnvyzhIVBdyvsTAWEs32Eta3G0t6xF6fOYiD2kh+" + "hGlzpxtxz9NZ2AnfzdAXijnYqB2IXhZC/PKRDI+AROTfl80XISl+dlf1FHFrqTgt0r5UGSxOkkFs/" + "6Swb1PAQm7JnFqoahdrAiZwbgQs6s9tRN0fE1iHwC1VGwRns3oJI3bkEcM1Aa/" + "w3p1cxSPUfpHFLTXsqnYJc24yTXFtCwoEXq2NjUoR1kNtOZRD2vWufkGIbaBt+YLo0L6EYsWD+" + "nhWO78KJDYhrvCFXzuawjctfFpZqZ65x5WmlnJrdiv8SqQ2df0600xfXc/" + "AjrJK5lRVpz0mYAIm0EfAor6PjuNMwATmIICA5g93LsYUFtPvPTd8TBl52lS/" + "XAQywrISzgpDiBLWt7PcKdiVr8SUcAhp8sLUNtpF+6ojIjP0JVXBguupyhst6JUncXyTCosu4ZjWMmPbZxvXy6rCDcy1sVM9e9xi2tyhra3tzBN1+" + "Cezy8o7dE5lRdlrAiZw1Qlcv+oA3H8TMIFZCHxSKYiomonCivBKkNYSrHPBrmzz0ZAcI9mpvX0Cj37Qzz4zmUMPK4Q+bauJ1tiIqX1JfaDfbeWm+" + "D6XuqsjQVnCx/" + "LDN9wPkIUv4p3IDZ5fxAZN7f8h7BKLkjmV0to1ARMwgV4CN3pjHWkCJmACZQQQcOnYRZVDwulCluuLKjDzKO5o566zamlnU7xzDCOIO7WJG2bf0PYs" + "D152VYeE6mQOKpuz6JhmHdVZf7UJIYmQTmlG9UX5EJHPZDkzjh8B/lq2MkrzNF5wTp5jLdQZ/" + "Fm9JGGXuyaIFY9Qxs69E68iB01ikhL2cSMN7ccULThnZndZc9mcSmntmoAJmEAvgeu9sY40ARMwgTICiOQvO5JyzIVd3ZqRSEIwDu181/" + "LMdFETf1GI3lPZSejfUVhT0FM1QjWl4brNTOYQ60QkI9SDURiCGpGcBP8DheXtz/" + "07xZG2tS+KQ8TzVBr+TpwxoS7SV8Jc4Qh6bmj+Xu4tWdLip0zSBqMwyqKdpAkmhnGT7zfyD3GKuQ53VBdjNZYbFbOg2Sl/" + "1X+u24zSzMauUX7JnGpk8aUJmIAJtBPwTn07F4eagAmMI8BuL4Juz0gQIfK+" + "wyqSHWIMIumFwhBkxzbc2PkqtodnwCOMEVe0EVFLX9oMO7s85rDPHMqBxQ9tox2fyVIeO86pbZzjzs2YvsCfexuaC4FcgPPLSopnjNIuNs/" + "uz9OlXW6e0pPv7PfdqJy3e25/MTe1F4YsSMIiRdf0kSfdsHjpMnOyy+somVN5evtNwARMoJPAtefPn/" + "PBxu4Nu1Ppw7wzgyNMwARMoI2APj8Q7GuJurYmzRamviECEX75oxtby98qB7XrDzWY8Qk703IR4+z8s2jYMwr/" + "U4Gt3wuKQxjfk8ti6OyN+jkbuwRLZRbPqZTHrgmYgAk0CeizhCOj/Kp67Xoz0tcmYAImMJEAu5lDO9kTi149Gzvi9K/" + "EbI6DPuzZdcfmGzeIeRYqPFOeuMroms2eatde1wjQ3LDDPHhsJc9wqv7IZk52CcWYOZXy2DUBEzCBTgIW9Z1oHGECJjCGgMQP57RvtwjAMcVsLm3sD" + "/2qHoHZ18gtclCbLtRmbDC6RrQnYf6IQIXRR3akMY9l8wUAAjQYpUHgIvLTH3ldRpzpq/" + "o7G7uECNbyF8+plM+uCZiACfQRuNEX6TgTMAETGEmAs82crW890jGyrK0k56jJ2F8gtsiBNnEGnuOWn/DLIt4/JuEql6f+cCwnnKWPfl3W/" + "mCKm2YxV2Kn/" + "rKr4UbvOdjF4nZT5lTKa9cETMAEWgn4TH0rFgeagAlMJSAhyC7kQ7l9Nx5OLf6o+aKo5Wkw+" + "a51URvOiUPeYfWLnXrO018lUZ8jOMgvbiyaJs2pgyp2ZhMwgbMkoM+U6ky9Rf1ZDrE7ZQImYAImYAImYAImcO4EclHvM/" + "XnPtrunwmYgAmYgAmYgAmYwNkTsKg/" + "+yF2B03ABEzABEzABEzABM6dgG+UPfcRdv9M4MwIxJ8af5N7tDPdqotz5M8iSu4ZwPCHTDwZxcYEKgKaEzwveuyN1VV+" + "e0zABExgKgHv1E8l53wmYAJHJyCx9FCV3pV7NEEfO8k/uvL0EyxPkeHpMTxFxsYEmgSYK+mfeJtxvjYBEzCBxQhY1C+G1gWbgAnMSUBCKeyWy11jF/" + "SJ6uW57snwB1M8Z5znvduYQEVAc4InJf0ol6fc2JiACZjA0QhY1B8NtSsyARM4kADPv+f53msYFhLv1qjYdZ4eAQl6/" + "qjsG7ksRG1MwARM4CgEfKb+KJhdiQmYwCEEJI44x86z0Vf5U6so0vIuIPI51/8hD2zzKw27+a9k6QN/" + "7jTqlwalRxiyoOFPnz7p+" + "o5cGxEQi162ime3nDmTfmXh2Fa6DwKut2RZrHGsKoXrchbDApRx57iWjQmYgAksTsCifnHErsAETGAGAvz7Kbufq5soJMPZ/pLGKD3Cn/sA/" + "pQ7+qx1FJsP5HKG378WZNCH2CqeP0D7Xi7sP8jdWxQqjDH5f3I/l51T2DNfOV9/c+ZyVayNCZiACewT8PGbfSYOMQET2B4B/" + "jFvtCCeuxsSZ+y2c54ekV4sAJU23yme2ix2pVdnMLXxMJBlHGc1Q2wVDzfM60tn75UddXbtZ22b6mV+" + "sKB7JGtjAiZgAosT8E794ohdgQmYwCEEMlG26i612oGg55hG2O2N1zu53Bg5ZMjDcZ3ihUBeoPLNsSjIi1zDj3DGzm2G2A6xY1wxn106s74yZzl+" + "s4lfmWbtmQszARPYHAGL+s0NiRtkAibQIIAomyyIG2VNupSoRvixo4uoTzu/nI3nWFCJoQ+HPIZzSLiWtOFc0wyxTYuwrvsfQrzgdO3kH8LtozJ7p/" + "4Qgs5rAiZQTMCivhiVE5qACYwlIAHMzizHGri5872uazuWuuYG0KE/" + "cfpSaSbtcCvfKKP2cLTm95iJOt8pDDHIeXb6Uns2veL2bnpVGAsAymEHn7IQ8ywEXsgGozRcP5b9Qn7Oy4dfAXRNnR91XeOksCBcFc5Z/" + "luy8KQMnrDS+kuBwvO+wJA/RTpkYaEi1jVq/" + "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" + "fvrm2ucGXW0Cmp+jHql5tWm59yZgAjMQ+" + "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" + "oZgbsoEzABEyglYFFfSsrpTMAETGBGAhK/" + "7Hqzs42YZ5c+GfwfkjiWy048Yh7DWftPwffXCwuD6ik5Ss9igCfo5GX+lVo+pflO9k9Zyi4yMW1fO2gb9dqYgAmYgAmsQABR/" + "7dYb3JXaIarNAETMIErR4Cd7psSy7UjLAprnqfnhtm3kc4jueHvwLmOQpvFQb6rT9Q7xXWKesWHMpRmjAjvbAcVytDu18HnFxMwARMwgWMR+" + "EeqCFH/n3iR3BRn1wRMwARMYDkCCPSaGJfIRqBzdCbfeQ/HWRTHWXni80UAQvqiRZx/" + "VHifoaxa3X2JiVMdqR3UWWuH4mgzYaPKVHobEzABEzCBwwj8O2W/" + "kTx2TcAETMAEjkNAIhgBjK3Ee6wZoY+AbhPH4XiL4i5iWhzCamkVz5Ga2g68wqiLs/eIffyPZWu76krzVGEYboLlVwSEf/ArLt/1/" + "0rhzcdtknandLV6CbMxARMwARM4DgF26m1MwARMwATWIZCLZVpQnUuXQOamU3bAk8HfTN8W9lj5KqEvPyKem3Ffys8uP3EI/" + "zwNgv6t4rlR95YsafHfkyVtbqizKd6rxYXyPZGlThsTMAETMIEjErh+" + "xLpclQmYgAmYgAhI9F7IQVQjkINRGLvdCOh3lyG7BwrLRTxCuhLLiuMYDAI8L4Ow5u4/u+4/N8ra6ToX5hzhSXVRRyqDx1Om8/wKDialCxeKp82I/" + "1TeHYXRPxsTMAETMIEjEvDxmyPCdlUmYAImkBHgGMsrCWB2yXn+PMdh2PHmyTSEVTfEyr9TGE/JYQedcEQzz7T/" + "XJYyUljtGfaKwzySpa5kEP7VLj2Byt88p5+eeZ+EesqL+60sdbJYoA2I/" + "Luyqd30w8YETMAETODIBCzqjwzc1ZmACZgABCSKEea52E5g2sJCnPIEsZ0SRrcvPbvu2Hx3nYXDTyqL8NQOvPjZda927XV9WzbPS5rR7Q6F+" + "8UETMAETGBRAj5+" + "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" + "B4H/IrVbjJJkToRXEf5VDPmF/" + "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" + "Krc69yo/" + "giWJKc7n8qHLF3vtw1hhTcMOIeXtGeVlkUCdlLXTNV+KPOmmqpfwtc0B7aRf1ZdzTz8QBEymNUzn+" + "NAY9T2NHW3EsJvLmDNOfLEc09AG5swt1f00Vsxigyc18YSmIVPK+VcV1LlwVV3Me54MxXsinaHm/cMCji/" + "TUoOQe6U89IV+MBbs6lA2YfS1MgpjcYhYZ0yCgJS/+V6hTelXtTwvH0IYPkh+UD4WEPlxB9ikxYS8waQxp97EG85jbiyPRR3uqA1rc2c8GN/" + "fZT+XZexSWO2/AxSHGRqLkIh+4ZGbPn+bnwWnOA6j5ra6z4IGnjCDL58xLMLTe4H3RjJDXEvn+CiualvJ+y+1cVFXbSl5L6w5BqH/" + "tBOP3FnmtspJY5Ded6XvxUXHIyu8mLn6Qh/" + "G6p+55j5jklj2fZ9kXVvUuza30DkxGZqvKV1id8g8ZOz51W2MZtjdGBqGWCBAew0TQAmwo4zycXxgJ8vOSRIWoQxdN7+" + "8RpV9rMRT2qk8fGEMDpjSpQ+7EvE/e5dVf+f4UJniB+fG7I3qLpDjIm9j9CheyjeGc1iFK89N2dY3nMJHvxea3Yplt/" + "FtCwvZlWfoPfNICfP8zMOKlfKHRbjcxwpPLCn7S9naTrOuw8/" + "GMU9z8UCeoxu1ZUvcc85tLHrHIs+gfrEBcL+jfyc3DuoH75s2Pm1hu5Hpe7mqrNI5Ppqryh56/" + "+XDuqhfbel9L4xkuhuZvncM8o6r3FnntsprG4PWeZW34xj+MQw7+" + "jHUzF7uKrN07od6JrZhqI2j49fmljdYbembr1XSDnZj5iGbFtV3c1XwgOf6QPyxolldtr0Rj1X/" + "GvUwMcKAafARh1y3GT6Y4bOmuQrjU8xZY8W4IUr4+f9kDPNMjcWGD/bYcIQLv6owB4lLhvmYi/ia+I+J2sJS/" + "qkuXLFnbcaMhdLC+Z7csHCSy5GqfKw8DnG2RC6wmWOOL8F1zLw+yffCmDFQ2jXm9pgxaEu7yXEZw12dKvl8b+" + "v7oWGbYzeGW8F8PZRPnh99kX8H53Gd/k2IeoHimAZfVGG3tLO15xXBMQWOcWCeyeZfQiEw8oDLsY+xhPrTyymMj9rIFzk/tY42Ezm/" + "UUUI4pMx6mftA1XXfLAn4cIOT9OEs3xKRxpEf/VLmvzw5v2a5nAz76RrlVt7XO6kQk4gk/pZNBZKB2MW1Z/" + "k59dMxoIjVuTfyfU4ACKayCWwIUjXk+b4UlxTO0tcteEk3wtq96bndgn7vjRbHZdS7lnfOj/" + "fszSzerfIrpSb0vV+Fs8JSnXxuc5nFzpjlLkxKvWyiflZgrNbJyWUDkDCWSvOPXIfAk++qb6IsjJDmux6Te/" + "Wx4dV7eifqiLQKZzJw5+Y9f7EHcvfksM4ct7vvVw+1Gn/Y1nOfOdzkHDmJ+nIUwl6+THpV4qpzC9LudqvJWPBOPxTlkXXK1kW/" + "+RLxuOQSPzllnAldd8cN9e/eE7xlYyB5/YUsv15SrhTQt/c76/hPGNLuA3N1znJ8HnPP9Ln38lF5V97/vw5qwG+uHl6wN5ucVEpMyVS/" + "ayEeOLGJs7nztStScWIwVNlZFBXHZO88ec4PodwVl4WoSzI8rPnObKT9Ks/" + "7BJws3GYe3L5CZAboKtfjGIajoRY1K84yh6HafAjt845bq7TuM6Zy2MwJ82/" + "yhqa+3+ltG8tAhojHrDRfLpdZ3OUns1hfsG9tqWd+p0ahIi48oKekROLzXE4x/E5kPPXGip2689K1Ks/" + "7AhzrOZ78eG4B+KnEvS63umaHQQLemCsaDwOk+H3znFzncx1toweg9lQNgvqnfvNxL4+LgHN+" + "yTQJ23oXj9uc12bCZwPgfil80Lu2jcyzw2Vo0UX6he/FrFbwF34NiZwTgQ8x89pNN2XMQQ898fQOmJafddyWoVHQk/" + "e1N3UTv0R2bkqE5iFgN58HJFiJ/" + "u+7FnsXJ9LP2YZYBdylgQ8x89yWN2pAgKe+wWQ1kvCuX3O9082FvWT0TmjCVwS0Idk7WiKuZiACZiACZiACZjAGALSEgc/" + "2t3Hb8YQd1oTMAETMAETMAETMAET2CABi/oNDoqbZAImYAImYAImYAImYAJjCPj4zRhaTmsCJmACRySgn2N55DBPq+AGqjdz/" + "Dx7xOa7KhMwARMwgSMSsKg/ImxXZQImYAJjCEjE86dfd+X+KfenMXmd1gRMwARM4GoR8PGbqzXe7q0JmMCJEZCgvx+bfBZPVzox/" + "G6uCZiACZwMAYv6kxkqN9QETOCKEnigfv8mcT/" + "6L8OvKC932wRMwASuJAGL+is57O60CZjACRFgp9679Cc0YG6qCZiACaxBwGfq16DuOk3ABEyghYB247khln8o5i/" + "Cf5dFzHOz7AvZPaP0pCUd5o7st3Pv6Ku8myqXvy6n/Pe6rv0vg65/VPjXc9erMm1MwARMwARGEPBO/QhYTmoCJmACSxGQKGZH/" + "r0swhzLX4Uj2jF7O/" + "WK58bZ16SLaRHXKT155jLPYvnUVytf4Yj9h3J9NGgu2i7HBEzABCYS8E79RHDOZgImYAJzEZAoZjccUY6YZ5c+GfwfmqJZ1+zo35fL03GS4S/" + "GKaPTKD2i/KksT9TJ87bmURp+Jfg1RnK2/1MjIWGD5TTy+NIETMAETGABAhb1C0B1kSZgAiYwkgBi+6ZEdO1oi8LYvX/" + "bVZbSs3uOkP9ZfgT2kHmpBE+VtlSIc4NuSvtIeZvHgGhfM2yoDY43ARMwARNYgICP3ywA1UWagAmYwEgCCObaERuJaXbv2ZHfez694tjB53gOohqh/" + "lFhtaMxCmszDxVYq6ctUQpTmeFYjVzqoT3VokNhtI2w4vKU1sYETMAETGAhAjcWKtfFmoAJmIAJFBCQOEYYY5viHaG/U3yraFY4x204roPgxs8O/" + "AvZC/mDkZ9yn8l+lMX/" + "WPa1bGWUhuM4GG6EZWGA8A9+xaWjQF8prPlYTdLtlCbt5HNpYwImYAImsBIB79SvBN7VmoAJmECDQBLQKbg6ry7hzM2o7Iwjor+TRaQHI3/" + "r0RuFI+K58fal/" + "OywszjgjHy1SFA4gv6tXHb9b8mSFv89WdImQ91N8U77QlnK80SW+mxMwARMwARWImBRvxJ4V2sCJmACEJAYvpCDOA6iPYaxC46ofse1zAOlS6I/" + "Hbm5jNGr4kj/QywrhbPrjuBP+UK4rnNxfpHFI8rTrwU8ojI/y98sg7Yh/" + "FNZd5SeftiYgAmYgAmsRMDHb1YC72pNwARMICPA8ZZXEsbsnH8myxEZdsLZlSeMc/PJfC3PfYXzOMm0O444/" + "yYliO4juZSbDIuBapeeQOWpzsjrkvhQhsKTWCcZhuM9tI+FAs/" + "FR+TflU3to702JmACJmACKxKwqF8Rvqs2ARMwAQhILLPLnQvwBGYvLArupuhO6YOrNIh9bL7DziLhpxi3k0udwcjPznu1a6/" + "r27JV3ph2ry3K0xZ2WahfTcAETMAEjkrAx2+OituVmYAJmMDyBKIIb4r2tFPPDv5OaRDuf8TWcANtJeLlZ2fexgRMwARM4IQIeKf+" + "hAbLTTUBEzCBEQTYRefpONws+wm/" + "LOKdx18i+NmZfyPL8Z5wlj76dWlRDwQbEzABEzglAhb1pzRabqsJmIAJFBKQQOf8fO0MfTOr0uTn8HvTNvP62gRMwARMYFsEfPxmW+" + "Ph1piACZiACZiACZiACZjAaAIW9aOROYMJmIAJmIAJmIAJmIAJbItAfvyGc5bN1vGnJH66QZOKr03ABEzABEzABEzABEzgiASkyfnjwdtdVSLqeeJB" + "fq4yT5s/DSEPt98ETMAETMAETMAETMAETOB4BPivkE7z/wHHbrNZ+cN5OQAAAABJRU5ErkJggg==", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}\\left(c - u\\right) \\left(c du_{dx} \\rho - dP_{dx}\\right)\\\\u " + "\\left(- c^{2} drho_{dx} + dP_{dx}\\right)\\\\dv_{dx} u\\\\dw_{dx} u\\\\K \\left(P - P_{t}\\right) - \\left(1 - " + "\\beta\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho + c du_{dy} \\rho v + c du_{dz} \\rho w + " + "dP_{dy} v + dP_{dz} w\\right)\\\\ds_{dx} u\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ (c - u)⋅(c⋅du_dx⋅ρ - dP_dx) \n", + "⎢ \n", + "⎢ ⎛ 2 ⎞ \n", + "⎢ u⋅⎝- c ⋅drho_dx + dP_dx⎠ \n", + "⎢ \n", + "⎢ dv_dx⋅u \n", + "⎢ \n", + "⎢ dw_dx⋅u \n", + "⎢ \n", + "⎢ ⎛ 2 2 \n", + "⎢K⋅(P - Pₜ) - (1 - β)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ + c⋅du_dy⋅ρ⋅v + c⋅du_dz⋅ρ⋅w + d\n", + "⎢ \n", + "⎣ ds_dx⋅u \n", + "\n", + " ⎤\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎞⎥\n", + "P_dy⋅v + dP_dz⋅w⎠⎥\n", + " ⎥\n", + " ⎦" + ] + }, + "execution_count" : 19, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "K = Symbol('K')\n", "p = Symbol('P')\n", "p_t = Symbol('P_t')\n", "beta = Symbol('beta')\n", "v = Symbol('v')\n", + "dp_dy = Symbol('dP_dy')\n", "du_dy = Symbol('du_dy')\n", "gamma = Symbol('gamma')\n", "dv_dy = Symbol('dv_dy')\n", "\n", + "T_phi = simplify(T_1[4] + T_2[4])\n", + "L_outflow_x1_lower = Matrix([L[0], L[1], L[2], L[3], K*(p - p_t) - (1 - beta)*T_phi, L[5]])\n", "L_outflow_x1_lower" + ] + }, + { + "cell_type" : "code", + "execution_count" : 20, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAzgAAAC8CAYAAAC0RQvRAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dXdLdNLaGN6lcd+" + "WEqr5vmAGEETTMgCYjSJgBVK44dymYATCCADOgewQEZgDnvqtIf9UT4LyPPsnI3pIt/+z/V1XesvW71iPZ8rJk77f++OOPnZ0JrCHwv//" + "7v+9o+21NGc5rAiZgAiZwmwQ8huy3u5nsM3HI7RDYov8/VCHvCdnPFWw/KP4flTgHm8BO/eMzYcC4mTRwlPZDpXuk7R1t72r7XmH/lH/" + "zzmxuvgsYgAncMgEekn2s7atbhpB0F4fmcTXlqfkeW2pkHH7mBCavCerbv0oH7if3nOLeepCFcmH5dLB9ncV71wR6BNSBPlbA2/J/" + "6EXUDzBoMJrpa59r+7Ge9OZizObmmtwKm4AJQEBjQnjQJf/5rRMRg7nj6hQyjy1ThBx/dgQarwlfSvCh3dLdjz7MtPpaBU4+hc/SL96NJ/" + "Avx6pvsaCFjJL5M22bP2U6JyYtOioNMzEv5L9fwFQLytNidd/" + "VEt5guNncYKNbZRMwgXsCGku+0vaztu+0bTo2qDyMhpPec0iGyXsHpVkyrk51IY8tU4Qcf5YEdD6MXhMU/" + "81QcIURxPm+yw0cjpucCmCpEVYThVDBjwrrrCbts+SNG1guVKTrnI55QvOb/D1jSmGUy5N9fMrlIscJ/" + "1gb7vNSvvuo9t819SgvwDEGe3q1176fUmVVmZBa8bCESXKPFLbKyFJ+uH6i7VPt5xfAHWVrm9IRy3nWDJ/KzNuc/JPLH5WHdEzXv6/" + "9X+RfpTOb5c16K31kKSHz2SdXY6Lwo4xB+xJtH3KhOjKmpKeym0ARh9HxdZNKGgqRHIvHVeUNhk+shvsB3DOFc4806pTmKOOu6oEz92/" + "cO6y6PxlV6Awipd+t3JcU9ZT+x7xOLr4mPFjSV6Qc08k/abvTPjfIuXGD4sT/jTj5ndMxJ+lH8ovvXcTw75UGA4hyMWjwuRHmJN1kSZPKo/" + "419TDlS8OPOqWZNACUZooJ70h9qHTfpE3HzJyQb5FTXsrkYkQZtXKmdPwEeZYIoHxwoW2L/WBQZmCotGdv3ES9BuLPO7xWNjmFLTjl5Wn/" + "YvrIQO7iofkUsVQDF/" + "Iq9hmVtXZsqMq5JuIWdISP9GRMYWypjUsdxhYmsZzqPUdX2MhOSz0j2YdRS8fVLyUHYyYb90NvtNXenR7WGY6jHgcbd1U+" + "bcfD6JZxvSjjBQUWrx8XJH+rqEU91dZHu07GftV0TRgqtcjAiYV8JL/XkSUIT9p38jmJ7mK63MMoCMDywMH+Xrkx/" + "nf56cnFIMuiw8X1SDf0xuiYugi3yDvF5Knq6QwJ7WNAvpZf4tsEQnmZqucJS/5kp5dX8VUdFcfMXTVvr6DBgfKiL/0DGUJ/" + "GSQZHlJXr58NE5zRcUt7V8W9cja53qs45QXF/UvqIwXx94LMZw/" + "JaMASXmN9ZvHYMCrlushb0DERYmxhdcGUa2EyNb5O1UF8Sz0t5ex0jV86rj5XXsb+5NCLl7B5WDnplO7g467qCJzkn/3DyElg0wnGrh/" + "TuS8nxZiex7xOtl4TemQf9o7mHXCyhRma2LHZf6n9sRtvjILerE6hSsp9VggnXzdTVIifG7S2nnCh2kCmKpPI9Sf5GAJva6OzMWvWW1KmsEO5mo61j" + "t3JIRm5oGKU0h/" + "CkjqF8cSJCzJrkeUFI6k3la1wjMYX2vg6BvtPtb3SFpziaTfK+ED7YYmbfOrayWd6fDOn8pIs6PGBNvr36ou3yjgmG3Tg6R8zoez/" + "nzaW+y0yUJV3z8VyabODc6LyrL7mPhLz8fQ09BmOt3CZLHu6K+6gfVXl7/" + "UjdMpkOjmfgTytjDbvs1NMBn1h7dgwKO7PQ8lxsD5x5jrOaVPGHcaY7sHenwRn742Nr8XzZ24NpTalDIXXrjdLxlXuf15PyaY693RS2M/" + "Kt3bc5d6DNmEVzWNttCdfQmVsSWMJffufOmZ1CI5rbXiYGY6yn0xO7mt2Ot507M6qmrWbyXWnjN2rAApH31n3JVSsfLU+" + "QPQql8m0d11dWnBWZnHsGJR7sOvkoB4OF10THhQKmgwSBE4WXOrMnEC/K5xOUXSKw7qvxpMppqEjoUxwhGljORl1bXJzslE9LNHjhF/" + "sohxjTMIFQxVg2NHhgnEY8y2ud0bGmo5PojzFoiQfsvJeFsYLF2UuDDsdc2P9VrZxgeycwml7+" + "hJreBnc6Af0tdAfYvx78imXT4qSHoecxadsSsMFmDKXuH8p06tY30vtc7zKqaxjs+FJaHqyRl9jMNqa1TE5Leoj4k4/" + "4nyqOqVZ0leKuqss5JzVV6uCFSJG+tG58UH6uYya+2wBzV5QbIvqdSXPoLScGzBsHoOUp6nfRDkO0icuQMc5bco1sniNyttqaj+25V0pneKoY2+" + "MKqUdC6u1qcLHrjezx1WVxxL1XBfuBVjK3z1w035RJ4WvGnej/o/lf6/tW45VJmMw9wHomRz3Q9yvheX02scYCmN/" + "SoCveM7FwF77GDacE8koIknnFN50bnUZVuyorhq/c7ymoum/tG12fyL9R/" + "XM0Srtwa6TeT3ZPm0z+5rwMCtgzm66UeAk+1obN6N05N7TeB3nDuFYNzrmKJeT+" + "LkApnTckDW9TJcyNPhN9cRG5AlEMCwG5SLnbOCDMqaYvKu6qYctPM3S8SvtI88xnnjUdHyk+" + "ottKfnoD1x40w0C7fd3bS2Op08YsumJUMij43QR5yLLxZOnSdSBfDv5fHqaGZaS4yKLvLOcymPWjKWAqW5k4okOW6h3VoFKrHxHZ6Nq01O3JC79p8c" + "3RcifzUo6HZvToj4i3Tjnp56AztJ/" + "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" + "fLUsJCWMrLS4h0ZvoQF8dfVV7eFsj+VGHhBl5+" + "WvKn4KAX5ewUDsPuqVIM44kSL0umJ1EwGE6BozfpEntu8IdLAhQ02yX9DskGZi8kOzfnMOM8pX0xUOg/" + "+bkHxyorxe1Iry0YRoO8RJ+CU2I41UeeST76YdBb+wy26BEGUvm4qv7KN9VPWnUf66v3Usz/TQxK/SjFHZRPEpk+oW1t/5jTZ1PVc/" + "xJJtJhzhi0pt8g9yH7RLXdt9IxgZ9o+zVt+lh15NepVOUSn/45vOdI/aF0/iypgzwt15tUNtcO+sDQjY2rtCtjKX7npFsqZ41OKW+176hC6k4GS1d/" + "tjOM5+YXA4Sx52WWDt3TdZnl9rwkn5eLPsizU3hp/" + "E5jfTduKx19ba1LDEp9IsWN8aH+lj6whX4wPOT9SVVPsd7qOjm3HRddE+YaONxcF2+wpTidNO+oOtxzdHYauNchlbda7l4JKwJm1sMJ9JrqlO+" + "5ttQgHHMy429xES4yieVzM5bfkBG82kW5e20wLHRCR2T6YJiH41g2bTzbKS8XxdGnAhQ6kY62eUM6uXARVPrhEkOegKV6wgX3Pnn3i+" + "GE8T7Vn7sMLTsqj/5ySjZDMSdZSeYwQMm/08aN7Hfsx4KOzkl1t/aR4fWo1JZT+o/" + "1kybdW+UdNszYscqs9qPW+pRuCz47lbO6f7TKPMZkLK6lfKWZMwat6Te7FnnG9CnFtZS5sY7oUW37FnlKesQwXp7fatzbG18lW/" + "X8GZFpNEpltpxPO6Wj7+CX7h3GxtX/GRMglnewsUXlI1swPEpyKJ5xtHNRnr30DXKOnlvKzwN0ztVu3NZx7/" + "6sE2LGzphcijvamKO6WvRrGntmqB+StuipNJtcJxv1zFVYdE14kJdw6P0IkGnOZCUfuso15YcLrGQNTycHBaWL5iB477B0EeslOmMmYzq+" + "khI8XTlHl54cfhyFY/YF6z93YWYstu2H8oeDKbolAyjPN7U/2d5TBRw5fpSVuPC0hhkQPoyBv5N/hx/" + "dpXMa1V86jvWTpbondmP+ufSjUT4H7B9jbEpxx+Y1ykUCjvWbkvwtYWelY0Pbt+hUS9M9na8liOGTTCQn1/G19xyT9UzImUdf6ria63DI/alzi/+/" + "456MVRes4mD/9SEF2rjsLfQ75Nizpbpjus5tx9ZrQk/" + "+t7744gtgMSXFWvwtT+ReRfmB6uEk75a35XHnvh9PKKa9l9wAV9XLmWifNuHdkU3rqFY+iFC9XDRGdVQabnj/" + "IX9oHAxKO69DyYtxzZN5pngxgphG7558xXhuUHpPpM5Li9NLc+2con7FfnLtum/Ru26V0Vi/" + "2YLrtZcR+fFxnvCO5Fb6qryT33NIhqsdV7dqJ5czTiCeHzd1fxJ1br4mxPMMRm89HMd5mFhVzBrMMFV7mBoOWmq+RGezinIm2j+" + "10dCiY3oS1RkHm8E4bEH0O54ePJbPk72e/" + "DrGyLdxM9EGN8Cp2k9uQPeJ1p+OvmFG1X4zTc0pRICnvowtmzr1x3O457jmcXXT9nJhZQI3el1dfE04yQxOuekcemkEdLIxTcxL7EeZ+" + "bs0PpbXBEzABEygjYDGEWbXb+" + "rpdImMx9USFYfdIoEl1wTlYaY0zOAc9R2cW2ygK9eZlwjT18iuXFWrZwImYAImcEACjCW9GfUD1nXORXtcPefWsWzHJLDqmmAD55hNdWV1yVK+" + "k0rM4PAyup0JmIAJmIAJzCYQxxCvBhA5j6uzu48zXCGBLa4JzUvUVNkfV8jQKpmACZiACZiACZiACZiACVwAAdkjb9XEVFy3RK35IwNjBdYqcrgJmI" + "AJmIAJmIAJmIAJmIAJHJNAs4FzTKFclwmYgAmYwHkR0EMu/ouAr4TxMjif8eX/kYqfslc4n2D/" + "Rf5JP0Ci+tMf50kcOxMwARMwgVshYAPnVlraepqACdw8Ad3wY6C8iCAwVHDPFM77dFMOgyb8o3os5z/KsLdUQHHp/" + "z5OatygjGT5Shtf1PHL61Ot63gTMAETuCIC/sjAFTWmVTEBEzCBCQJf6maf/wRh42tNb7TxR88t7v0sEcbRnlGkMjGg+PPc4sxOln90V/m3/" + "Dojhtnm/60yqoAjTcAETMAETkrABs5J8btyEzABEzgqgee62WepWXLc+L+jsPdSQM1XmnxGhnwYSENH+BbGSZpdGpY/+1hyY2x9KB/" + "jy84ETMAETOAGCHiJ2g00slU0ARMwgUiApVqvp2jIGMBQ+V0bszSPdPxVyqN9DBhmgH5JYZmPIVFdDqa4arlZGZO7KgcjDaPsA+" + "13hpb2ma3pjrOCgpGj4x+yMO+agAmYgAlcKQHP4Fxpw1otEzABExgS0M3/N9rypWUYI78prDNWtP+rwn6Uj1GDMZTe2dkpDAMlGDfa7/3/" + "lY6ZdcnL1uGfTvHVcv9MNb2ncpiJeU8+" + "8n0cj3fyMXjy2am8sJ908FEe4H0TMAETMIHrJWAD53rb1pqZgAmYQJVANAj42ln3bo3CmJ3B4Env0LAs7e8UojDe1cGo+Y/" + "2+V+04UwNBg7v9Ow5pa+Wu5d4OuCxkmCoITuyJqMK46Y2O0Ua5LMzARMwARO4AQJeonYDjWwVTcAETCAnIKOAm31mY97PDASSfKKtW+" + "IV48LsjvY7Q4iEBcfMSjI2htFj5WL8DI2PJ6rvx0EhLD/DsAnvAsl/" + "qnjyJveBdoZ5UlzR8EqR9k3ABEzABK6LgA2c62pPa2MCJmACowRkGGBMsMwsLNmKxzv5GA4YKfnHBEbLGkSm/IPgcFgtV/" + "UOZ4KQhSVyU0vKmLHJDRyOXyofy9e6JXdRGHReqlcswp4JmIAJmMClEHhwKYJaThMwARMwgXUEdOPPjT5GAf8NgyHAeyufa0szHBgGpOmc0jDTM+" + "mUbi9vlmkvrrXcrIzSbjBaVBbGTTKi2B86dOIdIDsTMAETMIEbIPDwBnS0iiZgAiZgAvcEeI8GQ6D33zcyENIsCsvTmN1JRg5pX2prdbwTw2enh7Ml" + "a8st1f9MgciK4UJ9fCGNPxnFmBo6ZoOSjsM4H5uACZiACVwZARs4V9agVscETMAEagRkDPxPLY7waJisMQSY7SE/s0Kd26Dcrqy0ozIxaNiSy/" + "dTGDphpOEPja4ujXdMwARMwASui8CD61LH2piACZiACZyKgIwIvr7G/" + "+akGaClomxpjCSja6kszmcCJmACJnBhBGzgXFiDWVwTMAETOGcCMm6YwflUfpg5WSJrLGNJ1l4elcOSNb6+tqXB1KvDByZgAiZgAudHAAPnL1Gs5J+" + "flJbIBEzABEzgYgjIoOgtUTuh4N9JlvSfPicUw1WbgAmYgAkcgcBfUx2ewUkk7N8UAd30rF1Cc1O8rKwJzCWgc+xubp6t05+" + "DDFvr5PLOh4DHkfNpC0tiAkMCfGTgvzEw+cM0PjaBqyKgQYl/Y2fJyuSyFaXlk7MstcEgelcby138RFggcOZzz8G/" + "JmACN0mALwZ+rO2rm9TeSpvA+RH4dxLJMziJhP2bIMBgJEXfll/84lIBAgbND3EAY9lN7Z/" + "SC1lvIsh8bqKZraQJmMCQgMaF8LBLPu962ZmACZwRARs4MxpDFzGe1Fzk0ibJzazF5u6cmEzpqHhmYl7In/" + "N+wPsZNNr+5MtuMnnOYdd8zqEVLIMJmMBJCGg8YfZm1Uc1aoKr7JPfc0iGyXuHc5CzxtDhYaXFZBteI6eb+h8cnYQsN+ILPzzF/0bbjwrrnuRrnz+/" + "4yaWF1N7/wWhY57Q8Cd2e8uaFEa53DTjUy43wdxMP9aG48/o9vLdR7X9rq1D+b/Sxr+X9/Rqq72cSmVVmZBD8bCESXJ8PnbVVL7yw/" + "UTbQwo+c31jrK1jenI52L5F/dmp/LydiM/f1g46ZSPtFxU3td+6Y8HJ8u4hARz+dwKl6m2M4cpQuH6cRPn0DSJP1PU+o3CDz4G/" + "SnFYfcuVEfGFfrr0cbXw7bCn6WrPUbHVcWP3gf8WVJ9r9bm9RyXGVPTU+EHPX9V/mgbXibNaakfTCe5nhRqZKaTf9J2p31ukHPjhg5G/" + "N+Ik985HXNT/" + "ZH84rsXMfx7pcEAolwMGnxuhrlBXr2sSWVR99o6WE7ERXjUKc2kEaA0U0zeUyUfKt03adMxsyfkW+" + "SUlzK5mFJGrZwxHT9BliWVKx9MaNdiHyiUGRgq/dkbN1G3ggrtQTP4XAyXXPstGOXlaf8iOQx06B2aUQ/" + "H5MFCXsV+o7K2GB8mZZ6b4BZ0hIn0ZFxhfKmNSx26FiaxnOo9R1fYyE5LPSPZh1HFcXULOWNFxX49FOIKjot6iuMxzt9iG14B06oKN2XgRAofye/" + "dpKpzhek7+dzA3hVoYRSEjlmIS0F75caI3+Uzk7GFW1VHPIkwOqYuwi3yTjF5qno6Y0L7GJCv5Zf4NrFR3l+" + "0MQOUz6r08iqett3TUeHM2lXz9QoZHCgvutI3qL91qpf6ev1sUOw5Hba0d1XemXwuiUuu8ypGeUFx/1I5FFTpgsyoQ9G0s4TXWL9ZNT40STw/" + "0S3omKgwvrC6YMq1MJkaX6fqIL6lnpZydrrGF8dVZd5CTmQY69dNMl5IojE9D3r+jrThhaCbL+bD+VkuPgc32mGGRg3OBYD9l9ofu/" + "Hmhrk3q1OgQLnPCuHk62aKCvFzgraoI1yoNpCpyiRy/" + "Uk+xsDb2jipmTXrLSlT2KFcScfaxaOTQfJxscYgpS+E5XQKY9kiM0efaV9eMJL2ltkpDqPxhbZftbH/" + "VNsrbcEpnrajnA+0H5a5yae+nfw57wSRZdSpvCQLunygjf69eiZJZczmk8kyhwvyf6m8zIKy/3/" + "aWOq3yEBV3j2XyXVwRlSe1dfMIebjqVvTssg9JUcCMnn29FfcQfuqyt/rR1HX1G8vldHm/TZrpyKTQRNvMT4Mirw/" + "PGSfOHMd57Qp4w7jTPdgrwizLXBsfC2eP23F/pmq1KbEKrx2zSmNq1U5Y1lFWafafIFsfyq2cC+Tae+auLDIXVbmSc/" + "fTP5SG2bR17X74LrUGddGnY0bTNw/tc9Sp5+1/" + "a79OwJLTnEYQdV48sQ0XAjpPMERpo0lZdS1+" + "gZlwzpYosdFeLGLsowxYaCFBYYdJ3ZuUOrw4K6k4xPViixFJ52I450sjJfX2jBWdjrmxvqtbONT0T2nONqevsT7Pwxu6E5fC/" + "0hxr8nn7J5aZT0OOQsPmVTGm7wKXOJ+5cyvYr1vdQ+x6ucyprNR3mWcuEpaOCiMuhnGDZbczomo0UcpDt9iHOp6pRmaT8p6h/" + "bbFZfrQpXiFD5tX50DYya+20BzV5QbIvqdSXPoLScHzBsGoOUvrnfRDkO0icOqSN8WvUc0XFOm9K3i9cpZGl1koUyuO7tOcUVz5+" + "9hBMBNX0VPnbN6Y2rY3JSveKLsir8HM91RP6Xts3GzSk9qTA5pT3Y+ZvqiH6vDQdxV3f48Oo0Glco3Sxww82SM25GuZHdeyKvsOToeG/" + "SQcWnXC5Iz9VRUxJuyp7puHihSolm+" + "E11xBOF5VTBqCiUjzxrL8JTTN6NelNXeJql41faR6ZNZytUXsmVdHykhMV2lGz0Bd6fSjcHtN3fSwVXwnhKhSHbm2HQcZo1eax43kViJot6kG8nn89" + "PM8NScry3hcyznMpj1oylgKluZGI2ii3UO6tAJVa+pXwWcVGVGOD5e2v0nR5bHSc3m5P0OTajpRw45zG2x9ym+" + "quiJX11TL4ubqIfXTwjKTqn33ZcRnammORZm8aHLMOcfnOwPiF5Dqkj6rbqWdRR+" + "ee0KePL2rEVmYvj68T5Q745rqbv2DWH8SPXrygnQkzIOtXmS2RLure2d0offMm7+" + "Ziggqf0zGU45Pmb1zNswzzu6vYfXp1G4wpxseJGNN1kYwhglPA0K4UNS+Amc+rGMJU7ZijtVMd7KotOP+VYmjO8oWuqQwVzovDkpOZ6N/mqh5vX/" + "KJFvicK50KRO6at09R7C5M8L/ssVSNfcCprDYtUTPRxaeQAACAASURBVM3v6RgTcdGstSNP6bpZNslGumQgxOyjXi+/" + "UtIGyVjaqbzQlvKfKrxbrqhjGAw5Kyi44cCawqd8jMjcuGXmChmC7vKXtHdPv1hWC59ePonRxCWmQ87Oqc7h+ZDilnA6NqM5HHK9MX5r/" + "eNQ+qd+MtpXD9CPLp6RGoT+nbffLvXbLXjF8rvrSuoA0W8dH1K25vMm0+HgfWJjHdG1Sc+ajlGeYptS+MBxjXqUhy1sd8oI52FelvZ754jKJk24Ds+" + "tZ6Bvrt/YNWc4rtbkROyqrMM4HY+NC62yUSeuqb3vk/Z+p8aEJfcrPQaqradnr/Z7ubk3Hb2HzPIs1XPYhlmR17f78PpUGtWIDpbf/" + "JH4pTYMnNp7OHsXLTINHOXWDKQuqergYkTHXOIm61D5n6lg9ONEYSlUdzOdVYgx090sKs2Qx05hLNUak7PKRPm46P2e1Zd2e/" + "Ir3RoWqcya39OxligLR+aOSRY+uRv1HeYPF58Yt5N/FwuCQWdIaf9DxXUXNO2zbBJHecz2dBd3xXHM4MOSypBHfu+T2DomH7rnT/" + "2pr+" + "sHSrOkvYf6qchxF2UZ5qtxYfAIuqZ88vMbubu8NsVVOZFO8TxEgBd60xeZPQtlyEemozGK9bVyoH90ba59jrkusTyI8yU47Vf1V9xoP1H8pP6xmqm+" + "ulk/" + "ijIdjRH6qc5VfSQyau63qm8Wr5lMEIf2Gh2DVObifhP13bRPHEJH5BzTM8ZX217xzW1KWQP3WMd3eZhkmdXuMW9tfB2eI11VC+" + "shP206ec2JFQ3H1ZqcJC/KKjkJH8bVxoUm2cbaW3G05xNtLC1nLLjTxrLzrl2iTFNjwqz7lVhmq54SafX5O6knlcgN2/A+9Ep/H0gvOimN/" + "eZKdQxqxY7Ofn7jtFM4N4t0+hdEDp3i6dh0iqJTPHF05F65xcQLA1vriLrs5DMD1N3UDqpF3rEZnkHy/" + "UOVPcYkXUy6jEqP4cWyqYMx6iq73ynpSP+mnUpuTx/" + "J2jLTtlM6+g5bcDrmQsOFGV15gpM7ZGAjHzJSb3A65uaDpX3cjNMnH8sfGl2snw3vACmOeh5ryx317hQX5JFPHYQ9I3yFm80nytDKhXSBi3z6T+" + "dUDly6fhOPpzhh+MGJfo6x38mh46MyinV39et4rH9IvHtDW+mQ81E8DjITqfC1/aRVf9ojtInq7PVV5Fjoiv1I5cPn2Iy26CPI3NRv5/" + "KawyS2D32lO0+" + "G9SnN2n5DkZv2ia11RMBGPcfafk2b0gapPyDOIicd9s6TWNBeuNI2jVMTgoRxRmUVrzlZ3t64OiInWYqyKg982YLT8aGvh6xGYeXJK218dpv9rv4gx" + "AHGhDl6Ki1c6Ttrzt8WPVG314YEXKGDYzBgH2oHhbHgCRw2vIIu36kDcYPNUwIcN//dbI32eeKJC1/" + "J0nHpKRjvTfDRgN4Np46r5d4Xuf53Th1Ky0ky1YZw6J5erJCwyETlccFiAIENsiATabuZCh0vciqDvorsXIhpDy7u3YyG9pMr6Ujbkb/" + "kmOVguWKKR+aXpYSVsJSfF4IZ4OhDT7X9qjLz9kD2pwoLN/Hy05I/" + "BQe9KGencBjmszCE8b7O9wpPT9tgMFy+hN6kS+" + "y5yedpVS6Dgma7pN9cPinfFBd4vZCcGHDIyjlK22Kg0Hfy8w6GVU6K25FeWzCMBnmJPgWjVg7PJB/9MOitfR5SoAc3C8mN6q+8U/" + "2kVf+xvppkmesnDqV+lOKm+spqRghNv9C2to/M6bdzWZF+kol0aB2D1vYb5Dlkn6i2+wwdk4xw2ynf3nU0ho+1/" + "Zo2fazy82sV1S11yDi850j9oXT+LK2n5XxKZXPtoA/kriQn8WOyprhqm8cKWmSb6tdpjO3GS3GljXOHXoccN6t6Spatzt8WPdG51IY5i2vYp625T/" + "rm4TVoM6WDOhE318UbbMVxE1Gb7UhFc7PFidQ7McbKTRnX+jProGHDjbHyPdeWOn0QQ8fcuO/" + "kb3ERLjKJ5XNDlt+UEbzaRbl7bTAsdERH5PlgmJ7jWO7wwl1KWgxTfh4OVJ++pEwT6WibNzFtuBgr/" + "XCZIUuVUj1cqIYsMJww3qf6c6ymzVN59JfZfKKsSd5qZa3pYgGTnFQefTM8xNA+N7Hfycdwwh2dUat+Sje8FpXacVJ/" + "6TjWT5r0b5U5EG38UZnVftRa31aMVM7qPtIqcyOevWQt5StNdWwbFLi23+xa5BnUOXnYUuYMHalvUk+VV237FnlGlOJvELYa9/" + "bGV8lWPX9GZBqNUpkt15yd0sEVf3jvsCdnlq44ZqiM1vGyRbbR9lZdPLjmHOnGSx0P742aronoNce16BllK96bDuparafqqrXhoKrrOXxwPaocTpPY" + "UfkKVXpycrjK1pUcLq6SMzyZLBSVLkaFqF7Q8CLWi+TgjJnUdHwlsXmid64OY4VZjI+jgMy+8EQwd2FmLLbvh/" + "KHgyn6TRoUeYFxf7K9C3lOFTTKSUx4IsYMCB/FwN/Jv8OP7tIZjeofdRzrJ0v1T/zG/" + "HPpR6OMDthHxtiU4o7Ja5RJFG6s35Tkbwk7po7IM6pnQ9u36FRLEx5M1SKz8EkmkpPr+Np7jsl6Mpmmdovj6kZyTtU9Fj/a3srI/" + "85xP8RqB1ZPsP9aW+4OeU3M61mzv4WexTZcI9S5533riy++oHGZQmNd+5YnxLnrPls+" + "8aGDdMvbZhdwwgzxxGY6eckNcFXynIn26Uu8O7JpHdXKBxGql4tXVUfFc8P7D/" + "lDw2BQ0vkdSmaMa57MM5WOEcR64u4JWYznBoUnVXYFArfAKOpY7Ce3oH+h2WcF3SqjsX4zC+CNJo78+DhPeEdyKwwq7+" + "T3HJJhdFxF13OQcwlzyc24evXjZksbLuF3jnmirrTpWzexRG2rRhAw1seHab6tyjxiOfkync2qzZlo/" + "9SGw5SO6QlGZxhsBuLwBdHveBr1WD5P9no66JiHEzZuRtrhRhhV+8mN6D/SA6ajbphRtd9MU3MKEeAJO+PLpk798RzuOabG1d2ZyDmb/" + "Q2d75NtOBveBWTwDM4FNJJF3I6ALmhMVfMSu2crt8PqkkzABEzgJgloLLmJWYCbbFwrfXEEdD4y4xhmcB5cnPQW2ATWEeALLulLZOtKcm4TMAETMIF" + "bJ8B40ptRv3Ug1t8EzoGADZxzaAXLcDQCsu7vVBkzOLyMbmcCJmACJmACiwjEccQrAhbRcyYTOCyBq38HRxegPw6L0KVfKgH1jc3XTF8qC8ttAiZgA" + "iawiMCXGksWZXQmEzglAfXbt05Z/" + "6HrvgUD56ob8NAdxOWbgAmYgAmYgAmYgAmYwCUR8BK1S2oty2oCJmACF0BATwb5k1pevj6pkwxeinrSFnDlJmACJnAaAszg/" + "CVWnfzTSOJaTcAETMAEDkZAN/t8CvhFrCAZH88UzntpmzmVl/434+RfKpQsX2njizp+CXyzFnZBJmACJnC2BP6aJGMG57/" + "xIPkpzr4JmIAJmMD1EOBdAf5Xg42vCb7Rxp88b+ZULkYUf0K76s9+lX/LLx1+r/L8vt1mreyCTMAETOBsCfw7SeYlaomEfRMwARO4bgLPdaP/" + "YaYiN/3vKOy9LGztLmVuYZykGaa18uykH8bWh/" + "IxvuxMwARMwARugMDVf2TgBtrQKpqACZhACwGWab2eSihDACPld20sXXuk469SnmgksMyN+A+0vVTYLylePoZEdTmY4qplZ2VM7qocDDUMsw+" + "0z2xUcNpntqY7TuHyg5Ej/4cszLsmYAImYAJXSsAzOFfasFbLBEzABHICuvH/Rlv+vg2GyG8K6wwU7f+qsB/lY9RgDKV3drQb3L/" + "0+yrGv9Q+x8EpjFmXvPwY08VPld1LXztQPczEvBdl4GMGHO/kY/DkM1QEJ/eTdj5KB/" + "ZNwARMwASum4ANnOtuX2tnAiZgAnsEojHwsSLeT5EKY2kZBk96f4aPBPw9i+" + "eLZK8Vnwwi4pnhCQaG9jFweK9nz02VvZdhPOCxojHWkB95k1GFcVOboSIN8tmZgAmYgAncAAEvUbuBRraKJmACJpAIyCDgRp+" + "lYu9nxgHRn2jrlnfFuGTMEM+MT7787AmBWRkYOsnYICp31bKVH8NqaHw8UfiPeQHaZ/" + "kZhk34Opv8pwojb3IsmRvmSXFFwytF2jcBEzABE7guAjZwrqs9rY0JmIAJVAnIKMCQ4CtqYblWPN7JD7MxigvGw7AAxWO8kDefIcEYyt9pSWUMs3NM" + "/lrZudEU8qo+lslNLSljxiY3cDjmnSCWr+WGGWUie7F+Iu1MwARMwASui8CD61LH2piACZiACZQI6Kafm3wMAv4XBiOAd1Y+" + "15ZmNzAKSNM5pWGmB4fxsNNxmKGRTzrCnhGOU9he/vuY8LsXp/Sp7CzZ7N1gtKgsZElGVJB1UBLy8g6QnQmYgAmYwA0QeHgDOlpFEzABEzCB+/" + "+8wQjo/" + "feNjIM0g8KMDLM7ycgh7csIjtmUHxTHezgYOe9qGy5xU1B4J4ZPTw9nS8bKJt8Sh3GFvBgu1MdsEn8yijE1dMif9BzG+" + "dgETMAETODKCNjAubIGtTomYAImUCIgQ+B/SuEpLBolNSOA921Y/" + "pUvSUtZc59ZGcpgZqhzE2V36ebsRFlyefL9riilw1DbRRm6cO+" + "YgAmYgAlcL4EH16uaNTMBEzABE9iIAMvZ0tfVqkXKiCANX1ZLs0DVtBMRwxmgieSj0cnoGk3kSBMwARMwgeshYAPnetrSmpiACZjA5gSisfJP+" + "SxNm3RKxwzOp/" + "LDzMlkhkKCWEYhZl6QymHJGl9f29JgmieEU5uACZiACRydAEvUuPAzIL05eu2u0ARMwARM4KwJROOAd1ianfLwbsxiA6e5oumE30mOJsNsuiinMAET" + "MAETOHMCrCIIS62ZwWEpAV/W4c/T7EzABEzABExgNYFzMCzOQYbVIF2ACZiACZhAKwG+ohn+PsBL1FqROZ0JmIAJmIAJmIAJmIAJmMDZE7CBc/" + "ZNZAFNwARMwARMwARMwARMwARaCfgz0a2knM4ETMAETKAjoOVffFntW20sc+Zdl7DuuUvgHRMwARMwARM4EQEbOCcC72pNwARM4JIJyKDhDzX5s88/" + "5P94ybpYdhMwARMwgesi4CVq19We1sYETMAEjkZAxg0vdOIm/yPnPpl/TcAETMAETODwBGzgHJ6xazABEzCBayXA56N/" + "k6HjTzFfawtbLxMwARO4QAI2cC6w0SyyCZiACZwJAWZwPHtzJo1hMUzABEzABO4J+B0c9wQTMAETMIFJApql4WMCX2rjz6F/" + "14Zhw4cGXmoLTmn4c8/n2t7W9quOvwkR+tH+r/L4A9AfUph9EzABEzABEzgEAc/" + "gHIKqyzQBEzCBKyIgo4SZmp+1YaCwfaV9jB1cPoPzIsb9pPAUHxLphz+TfpoO7JuACZiACZjAoQjYwDkUWZdrAiZgAldAQAYLszLfa8OwYfYmOfZ/" + "UVh4/0Y+szkYNrjwbs79bvf7THt5/" + "i7COyZgAiZgAiawJQGWqP0lFpj8Lct3WSZgAiZgApdNgJmYRzJguuVmUR1mdfLlZnxsgE9H4z7R1i1dCyETxo3yUs9n2vj0dConZrVnAiZgAiZgApM" + "E/ppSMIPz33iQ/BRn3wRMwARMwAQwVvJlaDsZIMzq8E5O9/" + "83CkszOR8rnPg9g0hpcoNISXrua46UxsZND4sPTMAETMAEGgn8O6XzErVEwr4JmIAJmECPgIwNDBW2zpCJCTB6MEZ6hk+" + "Mq306mg8PjDkMo1J5Y3kcZwImYAImYAJ7BPwVtT0kDjABEzABExgQGL47gxETZlpk5GCY8C5OSsPMTm8WJqYJMzSpXIVhOL3QxtfV2OcDBK+" + "0dU5pWLKGe1cbS9ioK+xn9SnIzgRMwARMwAT+JOAZnD9ZeM8ETMAETCAjICPiTofMqmC0BKcwjAw+KPD6PmT30cDYwLjJ07P/" + "Tp5G+xg0fJXta+2zlI06KLObwVE4xs0P8vli22NtpGX/iTbS2pmACZiACZhAkYBncIpYHGgCJmACJhAJ/" + "EP+t9HgYJkZsyzM4HwZw4YzM3xtDWOEL6+FpW3axzDJHbMx/" + "1R4mvUJcTrOZ37usngMorRM7tkgXV6u903ABEzABExgZwPHncAETMAETKBKQMYEszgYOUNXCgtplOfTYeLBMe/w5Pn5Ils3e0NalZF/" + "pID4UKbCcyOIpHYmYAImYAIm0CPgJWo9HD4wARMwARM4JAEZKMzGsOWzN8wI/" + "UhcjO9E0DHL0brZHB13y9+6RN4xARMwARMwgYyADZwMhndNwARMwAQOS0AGCjNCbMFFAybN4KSvs/" + "HOzn9iEj4+kBtDn8dweyZgAiZgAiZQJOAlakUsDjQBEzABEzggAZan8a4OHxp4w742DJlfkwEk/zttfGggvcfDPs4Gzj0H/" + "5qACZiACVQI2MCpgHGwCZiACZjAYQjIcOF9m947N8OalCZ/" + "j2c07TCvj03ABEzABG6bgJeo3Xb7W3sTMAETMAETMAETMAETuCoCNnCuqjmtjAmYgAmYgAmYgAmYgAncNgEMHF7eZCkA66DtTMAETMAETMAETMAETM" + "AETODSCLCcOSxvxsB5Rxt/1MY/" + "RduZgAmYgAmYgAmYgAmYgAmYwKUR4Iuc4c+" + "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" + "0u4nh7lGgIdrMp95Xm62wwyNGo8Ox/5L7Y/" + "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" + "Kz4uQb7TRh55q+1Vl5u2B/" + "E8VFm7i5aclfwoOulHOTuFwzGdiCON9ne8Vnp62wSFfvoTepEnsucHnyVNev4Jmu6TbEjYp7xQXeL2QrBhwyMs5SvsymNJ/" + "uvOOOG1VTorbkV5bMIwGeYk+BadWDs8kH/0w6K19HlKgB303uVH9lXerfjLWV5Msc/" + "zEoNSPUtxUP1nNB4HpE9rW9o85fXYOp5R2kol0mDMGre03yLV1n6DMY+s51vbIs7Rd+Upofp5S1lKHjL37jVhQYlU6h5bW1XJOpbK5dtIHcleTNU/" + "Tsj+mW4o7+PVB3NOY3I2vCqNP5A4Ohxxrq3pudc436pl0LrV7irtI/9oMHG6wizfZamhuIkqzHXnDcbPFid11dOWrlplnXLs/" + "sx5OynBjrHzPtaWTdad9btrx85vFNeLtMYnlc5Hf6kLfyRfl7vh3EdnOhI6vlBQDYc/" + "FsocX7r10tQDl50nK6NMU8k6ko33ekE4uXFyVfrjMkKVKqR4uOjkPjCYM96m+TPnNTuXRXxaxibImeat1tqaLBUxyUnn0zfAQQ/" + "vcyH4nH8MJd3ROrfop3fBaVGrLSf2l4+p+0ipzINrwo/Kq/ai1rq34qJzV/aNV5gY0xSQt5SvNnDFobb/" + "ZtchUVGYksKXMLfVUWWNtv2uRp6IO1+xF18lCecjYu98gjWSrnkOFMpqCVGbLNYe66T/4w/" + "uHoqxNlWeJYrlFfoprHV9bdBk9D1QXD7o5r7rxVce9eynFHWoMmdQzyla8l81wpt2qro167pSu1u6pjov0H1yk1AcSWo1Mx+" + "NLVOnJyYFqWl1sMCwkZ3g6OSgtXYgGwcXD4UVsL9GZMqnqKHkTG2ZHztFhrDCL8XEUjhmYxwNBw+" + "xYbN8Pk04xDXpNGhOD8jicbOtCnlMGjXISE55qMwPCRzHCcgr5d5nAl85pVP+o5yH6SYawuHsu/" + "WiUzwH7RxHKSOCxeY1yiXKO9ZsRVUajzkbPhrYfVaQWqXLDfYH8luvvJI9Yzhb3G5N11XQqhBfH1g1lLVR5kKCp84D/qeP+idURrLZg//" + "VAkksZQ8Z0bdETtYvtPuBxcYdvffHFFzQiU2Wsd9/yRLk4GElgcaCxu+VtKfzc/" + "XiSMpXccgGepU5iokxc5HlvZPM6WgRq0TGm6b0w2FL2OaSR7PDlyTxT4xhBrA8OT7xiHDcnPHWyqxC4BU5RR/eTSh8YC76F/lHTf6zf1PI4/" + "J6A2LFs+Gf53YqJLdiovLO435Ac3OSP3j+ci6xbcB8rQ3oyDt/" + "EWNvS7mOszi0u6kPbvWUDp9I6grP4P0UqRR48+NAyH7r8FkCtMigdT2Z4x+OijHbJywOHp9qYlaAPtk5TK7ndrRBwP7mVlt5WT/ebZTzF7aA3vCr/" + "5PcbrTK0pltG2rmOTeDa2lP6YKjbwDl2R3J9xyPASavaWL7k2Y7jYXdNJmACJnB1BDSOXOQDs6trCCtkAhMEcgPnwURaR5vARRJQJ+" + "d9DGZweFfDzgRMwARMwARmE4hjyMWtBpitqDOYwJURuKqvqF1Z21idlQQ0MLE8zUu8VnJ0dhMwARO4VQIaRzyG3GrjW++" + "LJnA1Bo4uQn9cdEtYeBMwARMwARMwARMwARM4MQHdU791YhFWV39NBs7FN8bq1nQBJmACJmACJmACJmACJnDjBPwOzo13AKtvAiZgAnMJ6Okef07Ll" + "6VO6iSD37E7aQu4chMwARM4TwJXM4NznngtlQmYgAlcBgEZC3x58EWUNhkvzxSe/4HqTsfp/zJO/" + "gl2yfKVNj4JWvx39MsgbylNwARMwAS2JuAZnK2JujwTMAETuEwCX8pQ+Dxu/" + "5AKb7TxJ9CdUxxGEH8+u+qPfpWfP03cyvE5eP4s0c4ETMAETMAEAgEbOO4IJmACJmACEHguQ+HDDAVGwzsK489nkyNsC+" + "MkzRClchf7kg9j60P5GF92JmACJmACJrDzEjV3AhMwARMwAQiwzOv1BAoMiepyMMVhAP2ujWVt/Dv7ok/sKh+GFobVB9pnNik47TNb0x2ncPnByJH/" + "QxbmXRMwARMwgRsl4BmcG214q20CJmACOQEZDt9oy9+3wZD5TWG/kE4+sy55PMGdU/yvOvhRPkYNhlJ6n6dL07Kj/MzEvBfL4WMGHO/kY/DkM0wEJ/" + "eTdj5KB/" + "ZNwARMwARum4ANnNtuf2tvAiZgAnsEojHxsSLezyIxcHgvZ88pPcvWMIbSuzl8gODvewnbAh4rGcYW9VNmMqowbmozTKRBPjsTMAETMAET8BI19wET" + "MAETMIE/CcigwFBgqdn7mXFBAmZSkrHBce4+0UG3dCzmSzM/GD9D4+OJ0vyYF6B9lp9h2ISvs8l/" + "qrD8fZ8PdDzMk4ooGl4p0r4JmIAJmMBtEfA7OLfV3tbWBEzABKoEZFRgiPAltbDcKx7v5GN0sGHklBzhwTAZRirv3js7CmMp29SSMmZscgOH45fKx/" + "K1YDxldSF3sf4sjXdNwARMwARuhMCDG9HTapqACZiACYwQkNGAkYBBwf/" + "KYETwzsvn2sLsSDQqSFNyGBy9OKVnFmitC0aLysK4SUYU+0NH3bwDZGcCJmACJmACXqLmPmACJmACJhAI8J83GBHD/" + "77JZ2B4J4ZPRw9nS1iexsxPMnIo56W2Ne6ZMlMmhgv18YU0/" + "mR0OHujoPCBgVxOwuxMwARMwARulMDDG9XbapuACZiACWQEZEj8T3ZY22VWBkOCmZ3ORYNnUwNDZWLQsCWX76ewndJhTOEPja4ujXdMwARMwARui8C" + "D21LX2pqACZiACSwlICOCr6Tx/zZppmZpUVsaI8noWiqL85mACZiACVwZARs4V9agVscETMAEDklAxg0zNZ/" + "KDzMnS+" + "qKZSzJ2sujcliyxtfXtjSYenX4wARMwARM4PII2MC5vDazxCZgAiZwUgIyKHpL1E4ozHeSJf33zgnFcNUmYAImYALnRMAGzjm1hmUxARMwgQshIMPi" + "7tSinoMMp2bg+k3ABEzABPYJ2MDZZ+IQEzABEzABEzABEzABEzCBCyVgA+dCG85im4AJmIAJmIAJmIAJmIAJ7BPwZ6L3mTjEBEzABExggoCWh/" + "FHoN9qe0cb78Js+pnoieodbQImYAImYAJVAjZwqmgcYQImYAImUCMgg4Y/3Hxf/h/" + "yf6ylc7gJmIAJmIAJHJuAl6gdm7jrMwETMIErISDj5sOoir9kdiVtajVMwARM4BoI2MC5hla0DiZgAiZwGgIfqdrfZOic/" + "Itqp1HftZqACZiACZwjARs459gqlskETMAELoMAMzievbmMtrKUJmACJnAzBPwOzs00tRU1ARMwgeUENEvDxwS+1Pabtt+" + "1YdjwoYGX2vac0pOWdLh3tX3umZ7Awj8mYAImYAIHJmAD58CAXbwJmIAJXDoBGSbM1HyvjY8KYODs5KcPC+zN4MQ4DBo+REBa8mPw+" + "EtrALEzARMwARM4KAEbOAfF68JNwARM4LIJyDh5JA0wbjBYgnETNWL/F4X13r/" + "RMTM9H8oPxk1M+7l8yqg6pccA+kwbRlSet5rHESZgAiZgAiZQImADp0TFYSZgAiZgAokAhscjGR3fpIDoMyvzwyCsO1R6Zngwav6pfT5GMOW+" + "VoLPbNxMYXK8CZiACZjAFAF/" + "ZGCKkONNwARM4LYJfCL1e8vQZIQwq8NMTVqm1hFSHDM7X2nDAMJo+" + "VVhGElT7mMl6NUzlcHxJmACJmACJlAi4BmcEhWHmYAJmIAJ7KIhgzEzNGQweogvGiQKZ0kaS9owcthnZualtm45m/Yp94W2X7Wx/" + "1TbK22dUxqWrOH4SAFGEkZQ2FdcvlxOwXYmYAImYAImcE/AMzjuCSZgAiZgAlMEhsYES87SBwQ+lrHBbM5O/" + "pfaMFiC035xeZrCMWh+1va19ln6hqHEF9k6g0nhGDc/yGc26LE20rL/" + "RBtp7UzABEzABEygSMAGThGLA03ABEzABGRQMOOC0REMGIgojFkUDIzXHMt9pLBkAKVlafcx+o3pv5FPWckxG4Pxk/" + "KFcB3nHxe4y+IxiNIs0jOFV9/9SRXYNwETMAETuF0CXqJ2u21vzU3ABEyghcA/" + "lOhbGRXMqLytjWVkzOAwW0MY79kk90w7Hyr8uXyMEhyGyvDz0J8onHKTwzDqZm8IVJ78owbEhzIUnhtBJLUzARMwARMwgR4BGzg9HD4wARMwARPICc" + "igYOYlN0ZS9F5YND5GDRClwfBhy2dvMJh+jHE7+dQZnPaZLepmc3T8jrY8b0xpzwRMwARMwATuCXiJmnuCCZiACZjA0QhE42VowKQZHGZ2dtGI+" + "U8Uio8P5AYNHy2wMwETMAETMIEqAc/" + "gVNE4wgRMwARM4EAEmP3hK2t8aOAN+9owZPikNMYPMzbfaWMJXHj3Ju7rMKTFtzMBEzABEzCBIgEbOEUsDjQBEzABEzgUARkrvG/Te+dmWJfS5O/" + "tjKYd5vWxCZiACZjAbRPwErXbbn9rbwImYAImYAImYAImYAJXRSCfwWFpwFA5/oNg70XSYSIfm4AJmIAJmIAJmIAJmIAJmMAxCMg+4T/" + "Xur8wGNaJgcPLm/lSgDxN/mJnHu59EzABEzABEzABEzABEzABEzgFAf5Prer+H7UjCMDqgAVaAAAAAElFTkSuQmCC", + "text/latex" : + ["$\\displaystyle \\left[\\begin{matrix}\\frac{K \\left(P - P_{t}\\right) + \\left(\\beta - 1\\right) \\left(c^{2} " + "dv_{dy} \\rho + c^{2} dw_{dz} \\rho + c du_{dy} \\rho v + c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + " + "\\left(c + u\\right) \\left(2 c^{2} drho_{dx} - c du_{dx} \\rho - dP_{dx}\\right)}{2 c^{2} \\left(c + " + "u\\right)}\\\\\\frac{K \\left(P - P_{t}\\right) + \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} " + "dw_{dz} \\rho + c du_{dy} \\rho v + c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c + u\\right) " + "\\left(c du_{dx} \\rho - dP_{dx}\\right)}{2 c \\rho \\left(c + u\\right)}\\\\dv_{dx}\\\\dw_{dx}\\\\\\frac{K " + "\\left(P - P_{t}\\right) + \\left(\\beta - 1\\right) \\left(c^{2} dv_{dy} \\rho + c^{2} dw_{dz} \\rho + c " + "du_{dy} \\rho v + c du_{dz} \\rho w + dP_{dy} v + dP_{dz} w\\right) + \\left(c + u\\right) \\left(- c du_{dx} " + "\\rho + dP_{dx}\\right)}{2 \\left(c + u\\right)}\\\\ds_{dx}\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ ⎛ 2 2 \n", + "⎢K⋅(P - Pₜ) + (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ + c⋅du_dy⋅ρ⋅v + c⋅du_dz⋅ρ⋅w + d\n", + "⎢─────────────────────────────────────────────────────────────────────────────\n", + "⎢ 2 \n", + "⎢ 2⋅c ⋅(c + u) \n", + "⎢ \n", + "⎢ ⎛ 2 2 \n", + "⎢ K⋅(P - Pₜ) + (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ + c⋅du_dy⋅ρ⋅v + c⋅du_dz⋅\n", + "⎢ ──────────────────────────────────────────────────────────────────────\n", + "⎢ 2⋅c⋅ρ⋅(c + u) \n", + "⎢ \n", + "⎢ dv_dx \n", + "⎢ \n", + "⎢ dw_dx \n", + "⎢ \n", + "⎢ ⎛ 2 2 \n", + "⎢ K⋅(P - Pₜ) + (β - 1)⋅⎝c ⋅dv_dy⋅ρ + c ⋅dw_dz⋅ρ + c⋅du_dy⋅ρ⋅v + c⋅du_dz⋅\n", + "⎢ ──────────────────────────────────────────────────────────────────────\n", + "⎢ 2⋅(c + u) \n", + "⎢ \n", + "⎣ ds_dx \n", + "\n", + " ⎞ ⎛ 2 ⎞⎤\n", + "P_dy⋅v + dP_dz⋅w⎠ + (c + u)⋅⎝2⋅c ⋅drho_dx - c⋅du_dx⋅ρ - dP_dx⎠⎥\n", + "──────────────────────────────────────────────────────────────⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎞ ⎥\n", + "ρ⋅w + dP_dy⋅v + dP_dz⋅w⎠ + (c + u)⋅(c⋅du_dx⋅ρ - dP_dx) ⎥\n", + "────────────────────────────────────────────────────── ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎞ ⎥\n", + "ρ⋅w + dP_dy⋅v + dP_dz⋅w⎠ + (c + u)⋅(-c⋅du_dx⋅ρ + dP_dx) ⎥\n", + "─────────────────────────────────────────────────────── ⎥\n", + " ⎥\n", + " ⎥\n", + " ⎦" + ] + }, + "execution_count" : 20, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "dQ_dx_outflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_outflow_x1_lower)\n", "dQ_dx_outflow_x1_lower" ] + }, + { + "cell_type" : "code", + "execution_count" : 21, + "metadata" : {}, + "outputs" : [ { + "name" : "stdout", + "output_type" : "stream", + "text" : [ + "x0 = std::pow(c, 2);\n", "x1 = c + u;\n", "x2 = c*rho;\n", "x3 = du_dx*x2;\n", "x4 = rho*x0;\n", + "x5 = K*(P - P_t) + (beta - 1)*(dP_dy*v + dP_dz*w + du_dy*v*x2 + du_dz*w*x2 + dv_dy*x4 + dw_dz*x4);\n", + "x6 = (1.0/2.0)/x1;\n", "x7 = -dP_dx + x3;\n", "dQ_dx[0] = x6*(x1*(-dP_dx + 2*drho_dx*x0 - x3) + x5)/x0;\n", + "dQ_dx[1] = x6*(x1*x7 + x5)/(c*rho);\n", "dQ_dx[2] = dv_dx;\n", "dQ_dx[3] = dw_dx;\n", "dQ_dx[4] = x6*(-x1*x7 + x5);\n", + "dQ_dx[5] = ds_dx;\n" + ] + } ], + "source" : [ + "drho_dx = Symbol('drho_dx')\n", "du_dx = Symbol('du_dx')\n", "dv_dx = Symbol('dv_dx')\n", "dw_dx = Symbol('dw_dx')\n", + "dp_dx = Symbol('dP_dx')\n", "ds_dx = Symbol('ds_dx')\n", "dQ_dx_def = Matrix([drho_dx, du_dx, dv_dx, dw_dx, dp_dx, ds_dx])\n", + "L = simplify(lambda_waves * Sinv * dQ_dx_def)\n", "\n", "T_phi = simplify(T_1[4] + T_2[4])\n", + "L_outflow_x1_lower = Matrix([L[0], L[1], L[2], L[3], K*(p - p_t) - (1 - beta)*T_phi, L[5]])\n", + "dQ_dx_outflow_x1_lower = simplify(S * Inverse(lambda_waves) * L_outflow_x1_lower)\n", "\n", + "common_exprs_lower, final_expr_lower = cse(dQ_dx_outflow_x1_lower, list=False)\n", "for var, val in common_exprs_lower:\n", + " print(cxxcode(val, assign_to=var))\n", "print(cxxcode(final_expr_lower, assign_to='dQ_dx'))" + ] + } + ], + "metadata" : { + "kernelspec" : {"display_name" : "Python 3", "language" : "python", "name" : "python3"}, + "language_info" : { + "codemirror_mode" : {"name" : "ipython", "version" : 3}, + "file_extension" : ".py", + "mimetype" : "text/x-python", + "name" : "python", + "nbconvert_exporter" : "python", + "pygments_lexer" : "ipython3", + "version" : "3.11.5" + }, + "orig_nbformat" : 4 + }, + "nbformat" : 4, + "nbformat_minor" : 2 } diff --git a/src/problems/RadDustMG/test_rad_dust_MG.cpp b/src/problems/RadDustMG/test_rad_dust_MG.cpp index c5cc5ce63..17cba0312 100644 --- a/src/problems/RadDustMG/test_rad_dust_MG.cpp +++ b/src/problems/RadDustMG/test_rad_dust_MG.cpp @@ -70,8 +70,8 @@ template <> struct RadSystem_Traits { template <> AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto -RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray /*rad_boundaries*/, const double rho, - const double /*Tgas*/) -> amrex::GpuArray, 2> +RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray /*rad_boundaries*/, const double rho, const double /*Tgas*/) + -> amrex::GpuArray, 2> { amrex::GpuArray, 2> exponents_and_values{}; for (int i = 0; i < nGroups_ + 1; ++i) { @@ -82,9 +82,9 @@ RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray -AMREX_GPU_HOST_DEVICE auto -RadSystem::ComputeThermalRadiationMultiGroup(amrex::Real temperature, - amrex::GpuArray const &boundaries) -> quokka::valarray +AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeThermalRadiationMultiGroup(amrex::Real temperature, + amrex::GpuArray const &boundaries) + -> quokka::valarray { auto radEnergyFractions = ComputePlanckEnergyFractions(boundaries, temperature); const double power = radiation_constant_ * temperature; @@ -93,8 +93,9 @@ RadSystem::ComputeThermalRadiationMultiGroup(amrex::Real temperatur } template <> -AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeThermalRadiationTempDerivativeMultiGroup( - amrex::Real temperature, amrex::GpuArray const &boundaries) -> quokka::valarray +AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeThermalRadiationTempDerivativeMultiGroup(amrex::Real temperature, + amrex::GpuArray const &boundaries) + -> quokka::valarray { auto radEnergyFractions = ComputePlanckEnergyFractions(boundaries, temperature); const double d_power_dt = radiation_constant_; diff --git a/src/problems/RadMarshak/test_radiation_marshak.cpp b/src/problems/RadMarshak/test_radiation_marshak.cpp index e7902309a..a2dcd9449 100644 --- a/src/problems/RadMarshak/test_radiation_marshak.cpp +++ b/src/problems/RadMarshak/test_radiation_marshak.cpp @@ -68,17 +68,17 @@ template <> AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeFluxMea static constexpr int nmscalars_ = Physics_Traits::numMassScalars; template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, + std::optional> const & /*massScalars*/) + -> double { return std::pow(4.0 * Egas / alpha_SuOlson, 1. / 4.); } template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, + std::optional> const & /*massScalars*/) + -> double { return (alpha_SuOlson / 4.0) * std::pow(Tgas, 4); } diff --git a/src/problems/RadMarshakCGS/test_radiation_marshak_cgs.cpp b/src/problems/RadMarshakCGS/test_radiation_marshak_cgs.cpp index fa4a1f997..b724c9ac4 100644 --- a/src/problems/RadMarshakCGS/test_radiation_marshak_cgs.cpp +++ b/src/problems/RadMarshakCGS/test_radiation_marshak_cgs.cpp @@ -70,17 +70,17 @@ template <> AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeFlux static constexpr int nmscalars_ = Physics_Traits::numMassScalars; template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, + std::optional> const & /*massScalars*/) + -> double { return std::pow(4.0 * Egas / alpha_SuOlson, 1. / 4.); } template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, + std::optional> const & /*massScalars*/) + -> double { return (alpha_SuOlson / 4.0) * std::pow(Tgas, 4); } diff --git a/src/problems/RadMatterCoupling/test_radiation_matter_coupling.cpp b/src/problems/RadMatterCoupling/test_radiation_matter_coupling.cpp index 43b171c77..ed17b1f2b 100644 --- a/src/problems/RadMatterCoupling/test_radiation_matter_coupling.cpp +++ b/src/problems/RadMatterCoupling/test_radiation_matter_coupling.cpp @@ -68,17 +68,17 @@ template <> AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeFluxMe static constexpr int nmscalars_ = Physics_Traits::numMassScalars; template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, + std::optional> const & /*massScalars*/) + -> double { return std::pow(4.0 * Egas / alpha_SuOlson, 1. / 4.); } template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, + std::optional> const & /*massScalars*/) + -> double { return (alpha_SuOlson / 4.0) * std::pow(Tgas, 4); } diff --git a/src/problems/RadMatterCouplingRSLA/test_radiation_matter_coupling_rsla.cpp b/src/problems/RadMatterCouplingRSLA/test_radiation_matter_coupling_rsla.cpp index 465fb7edf..e61548026 100644 --- a/src/problems/RadMatterCouplingRSLA/test_radiation_matter_coupling_rsla.cpp +++ b/src/problems/RadMatterCouplingRSLA/test_radiation_matter_coupling_rsla.cpp @@ -70,17 +70,17 @@ template <> AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeFluxMe static constexpr int nmscalars_ = Physics_Traits::numMassScalars; template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, + std::optional> const & /*massScalars*/) + -> double { return std::pow(4.0 * Egas / alpha_SuOlson, 1. / 4.); } template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, + std::optional> const & /*massScalars*/) + -> double { return (alpha_SuOlson / 4.0) * std::pow(Tgas, 4); } diff --git a/src/problems/RadSuOlson/test_radiation_SuOlson.cpp b/src/problems/RadSuOlson/test_radiation_SuOlson.cpp index 4e6570cf9..a5cda31e0 100644 --- a/src/problems/RadSuOlson/test_radiation_SuOlson.cpp +++ b/src/problems/RadSuOlson/test_radiation_SuOlson.cpp @@ -83,17 +83,17 @@ template <> AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeFluxMea static constexpr int nmscalars_ = Physics_Traits::numMassScalars; template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeTgasFromEint(const double /*rho*/, const double Egas, + std::optional> const & /*massScalars*/) + -> double { return std::pow(4.0 * Egas / alpha_SuOlson, 1. / 4.); } template <> -AMREX_GPU_HOST_DEVICE auto -quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, - std::optional> const & /*massScalars*/) -> double +AMREX_GPU_HOST_DEVICE auto quokka::EOS::ComputeEintFromTgas(const double /*rho*/, const double Tgas, + std::optional> const & /*massScalars*/) + -> double { return (alpha_SuOlson / 4.0) * (Tgas * Tgas * Tgas * Tgas); } diff --git a/src/problems/RadhydroPulseMGint/test_radhydro_pulse_MG_int.cpp b/src/problems/RadhydroPulseMGint/test_radhydro_pulse_MG_int.cpp index c08b26d59..619fee4dd 100644 --- a/src/problems/RadhydroPulseMGint/test_radhydro_pulse_MG_int.cpp +++ b/src/problems/RadhydroPulseMGint/test_radhydro_pulse_MG_int.cpp @@ -172,8 +172,8 @@ auto compute_kappa(const double nu, const double Tgas) -> double template <> AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto -RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray const rad_boundaries, const double rho, - const double Tgas) -> amrex::GpuArray, 2> +RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray const rad_boundaries, const double rho, const double Tgas) + -> amrex::GpuArray, 2> { amrex::GpuArray exponents{}; amrex::GpuArray kappa_lower{}; diff --git a/src/problems/RadhydroShockMultigroup/test_radhydro_shock_multigroup.cpp b/src/problems/RadhydroShockMultigroup/test_radhydro_shock_multigroup.cpp index d36bd680f..a72799c2b 100644 --- a/src/problems/RadhydroShockMultigroup/test_radhydro_shock_multigroup.cpp +++ b/src/problems/RadhydroShockMultigroup/test_radhydro_shock_multigroup.cpp @@ -77,8 +77,8 @@ template <> struct quokka::EOS_Traits { template <> AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE auto -RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray /*rad_boundaries*/, const double rho, - const double /*Tgas*/) -> amrex::GpuArray, 2> +RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray /*rad_boundaries*/, const double rho, const double /*Tgas*/) + -> amrex::GpuArray, 2> { amrex::GpuArray, 2> exponents_and_values{}; for (int i = 0; i < nGroups_ + 1; ++i) { diff --git a/src/problems/ShockCloud/boundary_conditions.ipynb b/src/problems/ShockCloud/boundary_conditions.ipynb index 2aefa6415..096838100 100644 --- a/src/problems/ShockCloud/boundary_conditions.ipynb +++ b/src/problems/ShockCloud/boundary_conditions.ipynb @@ -1,812 +1,1978 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Shock jump conditions" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from sympy import *\n", - "init_printing(use_unicode=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Euler equations in 1D are:\n", - "\n", - "$\\partial_t \\vec{U} + \\partial_x \\vec{F}(\\vec{U}) = 0$,\n", - "\n", - "where $\\vec{U} = [\\rho, u, P]$.\n", - "\n", - "Using the weak form of the Euler equations, and assuming a steady state on the left state $U_L$ and right side $U_R$ of the shock, we can obtain a jump discontinuity solution:\n", - "\n", - "$u_s (\\vec{U}_L - \\vec{U}_R) = {\\vec{F}(\\vec{U}_L) - \\vec{F}(\\vec{U}_R)}$\n", - "\n", - "where $u_s$ is the speed that the discontinuity travels (i.e., the shock speed).\n", - "\n", - "*A crucial simplification is obtained by working in the shock tube frame, where (by definition) $u_R = 0$.*" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAACgAAABLCAYAAAACnsWZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEBUlEQVRoBe2a3U0cMRSFF8RzRDZSCth0QJIKAh3kpwJCB0E8wRsiHZAOktABSQUIOoACIgWhVJDzzfrOeAfPjNeehSjylcz1z/W9Z47tWdvD2uHh4dZkMrlUCsnZ0dHRu1DDWHXyfy1fs5A/ta1teA2flcfYlxu/sKL8ScDvjureUu8DPBXihwC0gEcxvyxUqKA6qu4BpDJZ5NSY+C0nL5ROVJf9wOvJiLyOAsIcvpDeV2Kq7CudKx+cW17XwWw2QIH4qCib0mcWTfk75SmfWl2qzgaowKzyqwCAC9VtC+xmoC26agyA24p2G4ho84/2ZMkCGMnONBmdOmYBVH8Lzpzrkkcf4i5gVv/MMik6l8HQ3DMcxi7vxWTJAuheJwQPDaPV2WJJApkF0EX8IT0LRDcGaU+WMQB+V/RXAQQvVXflsRwwGa7KBigA/NjfSlc/7oRUnuF9r7RLOUf83UyOH9hic/BamkWBfqNy6BdGTfEyCkABuVPIvfiw8ZbZQxwfKs2yAEzjrelVGGy4SMsVBtN4a3oVBhsu0nKFwTTeml6FwYaLtFxhMI23plfUflD7vS114YaAjSi75Jkrc6Qkv+v2hMqOK7FD/EEAuLVCfirNKCtxi8WpjXPJSmSQQYGAPS6CENi6UV19k6Uyt7KflGpRO2wDHs2ZhR035xROevSnLUpiGPQBAfZryzOBJwpaaZfnqHmuRN89ADnNTRg3XtHXcgB8ooSYnpfcXznj6SfSsIG0z7ncJ9+ZXWUx/8N8bdvSwm1E6JhKm8lzywDwjyuYtra2BgiMVIC9RoB/88qWpR4Wa3EPCbih4+gv67RhmQhNwAVGFJDbVQAvzCnVz1THkLOYqhtY5bm3vlT5qXS0RAGUU4Ix/xieShwIgHH+DbEK29XKd/1Z6W27ubOev1EA1R/2ECa7rVjegTsqhy6HmA4127JhjrIwALnAtsq9EguQgNyzXKF7Pc4beaD2PGPRLM0giyRGCFgz0tdBD2Hzr21PfTVFZMOrhvKgrA9ZyBHzD2f2su7sIluG395xB66v2R8rw1BjsyUdmhpmW+veIZYTbqwOnDUBp0r3Pl2ZN7WxKKqFYXWm1cbU4JJpKRkCyE+a/7O2lPMxjAeHeIwgOT4KwBz26FsY/O8Z7H3NLPP0es+VL+7LEFbbirnyxb1mIzHDTqfapbT622aA9mTJeg9qeNnpDMl0yKCvPQugHFvwvo1ozEN0YswF2OnYa+BokCy5AENzz8AYu+WLuzHSpTl7zAKNxmD7bBIw7a7KHWI8c5QMXWWwvS9f3GEoRmCrfHGPYerBbcZYJCsFXQDm0vvPM+ifSa61fWo/8KP+ozdgAMjGsuufcmzTie2qxA5bQf9/AVFzKbuXGLjzAAAAAElFTkSuQmCC", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}0\\\\p_{R}\\\\0\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ 0 ⎤\n", - "⎢ ⎥\n", - "⎢p_R⎥\n", - "⎢ ⎥\n", - "⎣ 0 ⎦" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rho_R = Symbol('rho_R')\n", - "u_R = 0\n", - "p_R = Symbol('p_R')\n", - "gamma = Symbol('gamma')\n", - "e_R = p_R / (rho_R * (gamma - 1))\n", - "E_R = rho_R * (e_R + u_R**2 / 2)\n", - "U_R = Matrix([rho_R, rho_R*u_R, E_R])\n", - "\n", - "F_R = Matrix([rho_R*u_R,\n", - " rho_R*u_R**2 + p_R,\n", - " (E_R + p_R)*u_R])\n", - "F_R" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\rho_{L} u_{L}\\\\p_{L} + \\rho_{L} u_{L}^{2}\\\\u_{L} \\left(p_{L} + \\rho_{L} \\left(\\frac{p_{L}}{\\rho_{L} \\left(\\gamma - 1\\right)} + \\frac{u_{L}^{2}}{2}\\right)\\right)\\end{matrix}\\right]$" - ], - "text/plain": [ - "⎡ ρ_L⋅u_L ⎤\n", - "⎢ ⎥\n", - "⎢ 2 ⎥\n", - "⎢ p_L + ρ_L⋅u_L ⎥\n", - "⎢ ⎥\n", - "⎢ ⎛ ⎛ 2⎞⎞⎥\n", - "⎢ ⎜ ⎜ p_L u_L ⎟⎟⎥\n", - "⎢u_L⋅⎜p_L + ρ_L⋅⎜─────────── + ────⎟⎟⎥\n", - "⎣ ⎝ ⎝ρ_L⋅(γ - 1) 2 ⎠⎠⎦" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rho_L = Symbol('rho_L')\n", - "M = Symbol('M')\n", - "u_L = Symbol('u_L')\n", - "p_L = Symbol('p_L')\n", - "e_L = p_L / (rho_L * (gamma - 1))\n", - "E_L = rho_L * (e_L + u_L**2 / 2)\n", - "U_L = Matrix([rho_L, rho_L*u_L, E_L])\n", - "\n", - "F_L = Matrix([rho_L*u_L,\n", - " rho_L*u_L**2 + p_L,\n", - " (E_L + p_L)*u_L])\n", - "F_L" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we want to obtain the left (post-shock) state $U_L$ in terms of the pre-shock state $U_R$ and the Mach number $\\mathcal{M}$, which is defined as $\\mathcal{M} = u_s / c_R$." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "M = Symbol('M')\n", - "c_R = sqrt(gamma * p_R / rho_R)\n", - "u_s = M * c_R" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\rho_{L} = \\frac{M \\rho_{R} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}{M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - u_{L}}$" - ], - "text/plain": [ - " _______ \n", - " ╱ γ⋅p_R \n", - " M⋅ρ_R⋅ ╱ ───── \n", - " ╲╱ ρ_R \n", - "ρ_L = ───────────────────\n", - " _______ \n", - " ╱ γ⋅p_R \n", - " M⋅ ╱ ───── - u_L\n", - " ╲╱ ρ_R " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rho_L_sol1 = solveset(Eq(u_s * (U_L[0] - U_R[0]), F_L[0] - F_R[0]), rho_L).args[0]\n", - "Eq(rho_L, rho_L_sol1)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOoAAAA8CAYAAABo8yZ8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAOYUlEQVR4Ae2d67XcNBDHN/fcAi6XDqADSCpI6IBHBTd0QA7f8i0ndACpgEcHgQoS6ACogJAOLv+fViMkWV7bu/b6sZpzvLJkPWZGM5rRw94H9/f3uwrr4cDz588/EbZPdD3SdafrIx//0N/fKc973S8WtkDDuZl7de4Ga3snc+ArCfp3vpbfFH5EXNcz3f+l62f/bMnBFmg4K3+vz9pabewkDnhL9MZXgiX9S2m/RJX+qftvovhOz7G+X+v6XBd53yjNFF3R84LaxiM4hgYGImj5QRcew42uW13wgGebhqqo6+pehPIPjzIC/yJDH+HdKc+NLuf+KvxVl3OXFX6R5e+Mqgx1Yrld3Z0F9hm+UDnDMy9yCg14Dww6ART/Xdf3eXrIsJGbqqgr6kgJoykflgX4dR+E3890997yhdTdjvQ8b/S4/dbX9Wl7jmFPDDeFQ2lgTl6i4Z3SHw7DYn256xx1fX0GxigelskpbkQCwv9TFLdb0l9bZCHhyTR4ZUdJ7xZC02RoXE9Wc614Sg6geIl1kdA+VRqKm8zXlI7bCyT590mz/g6hgfk4rjeuL3Ry/7Eu3N4PFG4eqqKurIslmAgpyofL50BpCDIK+lj3KGsMKATuMCvCi4AjacCDcItgvjyr2zmti6BvCiSqok7B1WnrRPGAZxJYW+FlD/UzxUvKWJyfemF/qHAOS3sSDcKZged70YyyJh6E4puEqqjr61YU7w8JKquqbSurMVUoRbJS6h9+qzBfNY7LTXl/DA35PJTFpYuxqHUxaUpxnKZuFK+XFZQyF+enSmdPlfneXII+hAabn+Y0k+7cf9HxRBfxzUK1qCvqWgnjjdBFIO3AQCv2yotb/JXP8LXi3FKeVVIUGKt2djiCBsPzW5V9ocsGF7yBV4o7919hrshnp23KBh/Us75Tsne8uiWIWEHcVZQMl5dNfk7prAa2QMNczK6KOhfna7uVAwM4UHR9NfIxh+C4GW4GrhYrjKUVRT2qUDlQOTA1BxqKKoV8qUY5K+pWCr3S/q60UTeWVS/L6wwIQ4DVzsHnVYc0UPNWDiyRA4nrKyVgHvRSIac+HOieBYh/dbFPFybsukfJUGbKzP5WhnCoUDmwWQ7kFvWVKM03kG3ZG4UNgNLqYmGDpfFFWTnhU9+GDz1Vb7bAgaCoEm4sJMqYH+omHShtrrN0Hqysy7WAH9HyYAFoVBQqB0bjQFBU1YhVZA7IAlIM7MVxzrK0mIQSu7lsXKDPveqrc9Q+jKp5KgfEgVhRUbrEOkqZcG25Gu8j+md6lJYhoQ+o/FEK3qfumqdyYGsccIoqpcHlZS56awT6NA49c6ql5Pai2It6K8NwX2ooPuJFvFYYfz5lqehWvCbigNctvppRetup2KpZVJQOiN/IYOX30Cc1ivNTj8Rcb2U4Ipb445X0dm1KKnwZrFnZXwQIn9WvP4gGDNydGMr7tJ8S72KuKSpKx/yUeWjfD1+h3CX3lWNuL3RV8BwQX3nZmcGrMYVYMpOEL57WJwpXrxxL47N4ir5xZoGdls5dkytPAEqXzE99ejFQA8xbgaSM0hl553wrwyG1pB/PKzrk8ZLw6okLclHd9J7MGppNssFZbQ4XdXos18pk89PONzJARPkX+VbGUCadMT8j5g/iW6d7c0ac+jbFin/1jvpy67h8WNO/JR+cS2iVEVzfh77+xDq2tanKcI37usdt1VxEunjFSIn3sUZrSh/h9pYWEnlWYQQOoJy6OLtw0AXG9X2ri+OBrdo8Aj6XWgUuL1+xXx1vhfOg6dCldvBIdCMnn4vn7LwUAdcXIeplTYs11MQiB8RXLCmMX6vryEIh20kJeGGywyq4ayxEOtD9U13uHVnulcjiGS90GJCXl7+rlTaOKBQ/OFCEDsLz/Aivy2mLSS5Sf0blAKvfB+cdo7Y2fmW4vaUBHCVly8Z2CpwyKy8Dkzu9pvsbjw75eA4fUGAGLdIqNDkAXxjcisActcI0HGB+ygi5OpBS4fY2rJ7SHU0K7TgpCojbBjzRva1d3CrOvAvB+yXKj/fWcO98HSxSmjXhq4ooO/v6lLkEYFB0K8CiubHSXhV1AhEQo7EuQMki7Z9Ev8qPQLP6h4IAHDRpdNb+0f5XzxFslARBpp0fu8ooT18Alx/zzC310y74B4VS3CwrVvd1VA98CfmidPLEir5THdB3cIElKr/6W3jm+QbPGn1fFXWaLnYr6Z7xnS0oH24hWzi4P1ithtWJK1E+BP6RT0Opew0IcR0d9yhNX28ApfxZ+cM7zFHd8MGsJMls92Bpc4CenIZcyfMyW4zDAyc7OXFVUXOOjBN387chVUnQUU5nWRSWhD6uLnTm2Eqq+lCahtsbNx7fKz/bC438SoOeG13Ogvo4dZdOZzHovFMeBqlbXdDPx9salkXpWwb+NrM4T73aMtUz0oYLa/O4vmhQhhGVckER88ISXjoSq2T58yynxrF6Dbe3rVKvgLF7a1nBDwVm28Hmn23nWsnLfBTFhAcobEP5lbZ1sCkDA1oC10msRsbiAJZkqKIixLi/b1X2yxIieoaVol6sDm2UFETJJwFKwupsX0DJwDkHLCeLTbbAlD93cT2Hjp1Cs7w2V0NYh/LQ1bniH6OXfk4Gqs0qqhcArA9uFG8puP0960TFmQ/emYBY+oghbswxQDknvIXCWCcOUJh7lM/rCkX6J6leNxAM5AmHZRLe+hadlezReknR8Sj4dleixD3qGi2Lb/vc8mOKykCcwJZdX76szmiO1bEtBEe80ukAhN6N4i5xpB/VibAD7/ZB968vYwcDXGdF9bgKFMfSmUIwB94pLRl1XcbTfmhj6D6nCVdoWXjBb/iAErcNOuBPe+w38/pf7O7h2kMjByhG7yPV2wfOLj8RrQ2ebdKi+k5/43uDDs+VpnWxR2UZ4VnxRIiYM71R2kH3TXliaDA5fthyT5tmHU3wg+un9l2dCk1o4/wtVR6VzPz08ZCSwile1XVFfVojPa9X+eAvVwJK77vinJQbK6L24f1c8gMZ7CMnsElFFYXMc8zaMN/L51wIep7mGKNyzKvoKLYo2E8cCre+gClVn/JufkpGtcl7ityaZeYey+IGC4Wko7ijzk9Vbz4Y0G4CyjPL1x3V7sH3YT3ufDHB0ZAg3R459FGEOeUHjBt0bFJR1XHvoVYhCgnR5jKSZoJuFoysOWBxDz3P88dxs94NZseZOu7B323RCF+z7FYEmoBj8duXbv4yoB1c7RUuBxWmWeV5UoQX/Cpt+xyFgK9vp3AO+SnifFVM3U4iFpHRkY40QPDpBLO4lh6HdNCoFiuuPL4XHlhvm5/aI9xfXsB3yq7Q3GGeM4gU9y55mIPKsijjaM6fZXF41XBDszyXFp1LfhoLkVtXVKxnrpDBWkqAcSmdMpgEKo7iAMdaLBsUzAXe19b+y6CQt4ViPtQFfrnylPIXa1dZFJQ9TOaeXcDAEA8IXfkv4fkc8gNfTYYCj7euqIngeSVEAUx5P1ZazhQUAYuVlA0c674Z6vrylce8LRYyGEASJfX4k95p7X1esIVWaGoF5UWhk7ZaM1/Wg6RfPE8nkx/Vz8AAmAztY/rduqK6lUcxAPcPywIjmMtgPYiX5mTB4up5AOXnzYaDAk9m5UHxudwck7QSKB/nY3FxwIV9XtsbJTvKFf5BT8+e6GLbhAvgGeVR2jZgsEH5oBHczVMo5cfilnhRyntJaeeWH+tP5CeB6yS2sYiEE4JLK7elNKMeZSxtD7DfV1wptoJRyEhso2OU/P+tcGvFQc9whYM7nMf/r6X9TmXMGlg9KCMDQAlG+eSK2kTQ4NM/uh7pWvVL4qLn3PJjMvNWvEtg04qaUNojoo4xq2PC7UopHdcQy9cY6VqqhdGsos4OwpntHvAuegN6RnpC7wlIs0XCaS/ahJfEk7/rVPpLpeHNOGulkD1DFHz17556mkVKyk+l95UfBrd88ZP6dlVRHRucy4rwYHUA5o2ECBBzEoQOl7gvsIr7VHXgcvZV7r51H5MPReQkVgkfLLu51MfU7cqobvj3VqFZbSw67eVtMr/GlQ+HSHzZV0pv9TL0bNHgaThVfpAz419Cb1VUzw4vOEF4Ei4Nj/ykInyCBGu1hEUa5p+M6iV8UJqSq6/sg4A64noY4HaqOx+oEMbcgjMIdi6QUd9SYST5oX9iHgZyq6IGVox3g3DqQhgRwCUoqikGI37ARzi2juBDuKF68DyYX+HyG2AdQ1uWqBD3rr57GjGEW/EQJQWsr/Yx/3uVxGpkTA7gTi5lnopVw6UyYTA6UdwxVntdvRI2Zz0VorSk3VlDUUh6ffc0Yoi/ZVBnbm+LgEmOqqgJO0aN4P4yP8uVY9RGBlSGQoIPVtSAeWvJ6tnzvqHzHFTXN7rYZsJ9a7wkrmdY3p1CU2iEkivGiSyXCPDtRRvh120PavppHEAYdTHnZZVztHOoJ2BlLhVWlJEbq1ccvY9og/koWzFdSs+gFbvHNEXZWd89BYk5QXxjIW53iH/Vok7YQ2L8M1XPts7sFkM44PpiyczCY/VY8BoDoM8GgmJ9ap/FLPZYl/juaRHnMybCl9I0IaBQLWpgxWQ3KCtbD0uxqm6bRvigsK2ulp71AikglplXA50721ZIz7G2DYurdAaMiwXRjzVl77TBm5gp1aLG3JjgXh3gXrFTGB8RnKClXlXawhEjOCuvB5WrT42qAyFjjlphIAfENwY5+qJz/7gq6kDmHpmdryaw0knHzAnmnjKKn3zIYU5C1t62ZOFGNLB3zEmuzrWCqqhn6HF1BJYLq9N1kH5SbDwedvKFVekK83GAgZJFtIMur6FXFdU4MXHoR01cnLmtKu4vq74nu70Ts2yz1Yv3WFOUNHx5pIvYB/f3s3wGpwuv+nwiDnghYSXaLOtELdVqx+TAf4iZNXMdmpz8AAAAAElFTkSuQmCC", - "text/latex": [ - "$\\displaystyle \\rho_{L} = \\frac{p_{L} - p_{R}}{u_{L} \\left(M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - u_{L}\\right)}$" - ], - "text/plain": [ - " p_L - p_R \n", - "ρ_L = ─────────────────────────\n", - " ⎛ _______ ⎞\n", - " ⎜ ╱ γ⋅p_R ⎟\n", - " u_L⋅⎜M⋅ ╱ ───── - u_L⎟\n", - " ⎝ ╲╱ ρ_R ⎠" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rho_L_sol2 = solveset(Eq(u_s * (U_L[1] - U_R[1]), F_L[1] - F_R[1]), rho_L).args[0]\n", - "Eq(rho_L, rho_L_sol2)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\rho_{L} = \\frac{2 \\left(- M p_{L} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + M p_{R} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + \\gamma p_{L} u_{L}\\right)}{u_{L}^{2} \\left(M \\gamma \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - \\gamma u_{L} + u_{L}\\right)}$" - ], - "text/plain": [ - " ⎛ _______ _______ ⎞\n", - " ⎜ ╱ γ⋅p_R ╱ γ⋅p_R ⎟\n", - " 2⋅⎜- M⋅p_L⋅ ╱ ───── + M⋅p_R⋅ ╱ ───── + γ⋅p_L⋅u_L⎟\n", - " ⎝ ╲╱ ρ_R ╲╱ ρ_R ⎠\n", - "ρ_L = ───────────────────────────────────────────────────────\n", - " ⎛ _______ _______ ⎞ \n", - " 2 ⎜ ╱ γ⋅p_R ╱ γ⋅p_R ⎟ \n", - " u_L ⋅⎜M⋅γ⋅ ╱ ───── - M⋅ ╱ ───── - γ⋅u_L + u_L⎟ \n", - " ⎝ ╲╱ ρ_R ╲╱ ρ_R ⎠ " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rho_L_sol3 = solveset(Eq(u_s * (U_L[2] - U_R[2]), F_L[2] - F_R[2]), rho_L).args[0]\n", - "Eq(rho_L, rho_L_sol3)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle u_{L} = \\frac{M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} \\left(\\rho_{L} - \\rho_{R}\\right)}{\\rho_{L}}$" - ], - "text/plain": [ - " _______ \n", - " ╱ γ⋅p_R \n", - " M⋅ ╱ ───── ⋅(ρ_L - ρ_R)\n", - " ╲╱ ρ_R \n", - "u_L = ─────────────────────────\n", - " ρ_L " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "u_L_sol1 = solveset(Eq(u_s * (U_L[0] - U_R[0]), F_L[0] - F_R[0]), u_L).args[0]\n", - "Eq(u_L, u_L_sol1)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle u_{L} = \\frac{M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}{2} - \\frac{\\sqrt{\\frac{\\rho_{L} \\left(M^{2} \\gamma p_{R} \\rho_{L} - 4 \\rho_{R} \\left(p_{L} - p_{R}\\right)\\right)}{\\rho_{R}}}}{2 \\rho_{L}}$" - ], - "text/plain": [ - " ________________________________________\n", - " _______ ╱ ⎛ 2 ⎞ \n", - " ╱ γ⋅p_R ╱ ρ_L⋅⎝M ⋅γ⋅p_R⋅ρ_L - 4⋅ρ_R⋅(p_L - p_R)⎠ \n", - " M⋅ ╱ ───── ╱ ────────────────────────────────────── \n", - " ╲╱ ρ_R ╲╱ ρ_R \n", - "u_L = ───────────── - ─────────────────────────────────────────────\n", - " 2 2⋅ρ_L " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "u_L_sol2 = solveset(Eq(u_s * (U_L[1] - U_R[1]), F_L[1] - F_R[1]), u_L).args[0]\n", - "Eq(u_L, u_L_sol2)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle p_{L} = M \\rho_{L} u_{L} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + p_{R} - \\rho_{L} u_{L}^{2}$" - ], - "text/plain": [ - " _______ \n", - " ╱ γ⋅p_R 2\n", - "p_L = M⋅ρ_L⋅u_L⋅ ╱ ───── + p_R - ρ_L⋅u_L \n", - " ╲╱ ρ_R " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p_L_sol1 = solveset(Eq(u_s * (U_L[1] - U_R[1]), F_L[1] - F_R[1]), p_L).args[0]\n", - "Eq(p_L, p_L_sol1)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle p_{L} = \\frac{- M \\gamma \\rho_{L} u_{L}^{2} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + 2 M p_{R} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + M \\rho_{L} u_{L}^{2} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + \\gamma \\rho_{L} u_{L}^{3} - \\rho_{L} u_{L}^{3}}{2 \\left(M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - \\gamma u_{L}\\right)}$" - ], - "text/plain": [ - " _______ _______ ______\n", - " 2 ╱ γ⋅p_R ╱ γ⋅p_R 2 ╱ γ⋅p_R\n", - " - M⋅γ⋅ρ_L⋅u_L ⋅ ╱ ───── + 2⋅M⋅p_R⋅ ╱ ───── + M⋅ρ_L⋅u_L ⋅ ╱ ─────\n", - " ╲╱ ρ_R ╲╱ ρ_R ╲╱ ρ_R \n", - "p_L = ────────────────────────────────────────────────────────────────────────\n", - " ⎛ _______ ⎞ \n", - " ⎜ ╱ γ⋅p_R ⎟ \n", - " 2⋅⎜M⋅ ╱ ───── - γ⋅u_L⎟ \n", - " ⎝ ╲╱ ρ_R ⎠ \n", - "\n", - "_ \n", - " 3 3\n", - " + γ⋅ρ_L⋅u_L - ρ_L⋅u_L \n", - " \n", - "─────────────────────────\n", - " \n", - " \n", - " \n", - " " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "p_L_sol2 = solveset(Eq(u_s * (U_L[2] - U_R[2]), F_L[2] - F_R[2]), p_L).args[0]\n", - "Eq(p_L, p_L_sol2)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle u_{L} = \\frac{p_{L} - p_{R}}{M \\rho_{R} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}$" - ], - "text/plain": [ - " p_L - p_R \n", - "u_L = ─────────────────\n", - " _______\n", - " ╱ γ⋅p_R \n", - " M⋅ρ_R⋅ ╱ ───── \n", - " ╲╱ ρ_R " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# write u_L in terms of U_R and p_L\n", - "u_L_sol_new1 = solveset(Eq(rho_L_sol1, rho_L_sol2), u_L).args[0].args[0]\n", - "Eq(u_L, u_L_sol_new1)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle p_{L} = \\frac{M^{2} \\gamma p_{R} \\rho_{L} - M^{2} \\gamma p_{R} \\rho_{R} + p_{R} \\rho_{L}}{\\rho_{L}}$" - ], - "text/plain": [ - " 2 2 \n", - " M ⋅γ⋅p_R⋅ρ_L - M ⋅γ⋅p_R⋅ρ_R + p_R⋅ρ_L\n", - "p_L = ─────────────────────────────────────\n", - " ρ_L " - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# write p_L in terms of U_R and rho_L\n", - "p_L_sol_new1 = solveset(Eq(u_L_sol1, u_L_sol2), p_L).args[2].args[0]\n", - "Eq(p_L, p_L_sol_new1)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\rho_{L} = \\frac{2 \\gamma p_{R} \\rho_{R}}{2 M^{2} \\gamma p_{R} - M \\gamma \\rho_{R} u_{L} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - 3 M \\rho_{R} u_{L} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + \\gamma \\rho_{R} u_{L}^{2} + \\rho_{R} u_{L}^{2}}$" - ], - "text/plain": [ - " 2⋅γ⋅p_R⋅ρ_R \n", - "ρ_L = ────────────────────────────────────────────────────────────────────────\n", - " _______ _______ \n", - " 2 ╱ γ⋅p_R ╱ γ⋅p_R \n", - " 2⋅M ⋅γ⋅p_R - M⋅γ⋅ρ_R⋅u_L⋅ ╱ ───── - 3⋅M⋅ρ_R⋅u_L⋅ ╱ ───── + γ⋅ρ_R⋅u\n", - " ╲╱ ρ_R ╲╱ ρ_R \n", - "\n", - " \n", - "──────────────\n", - " \n", - " 2 2\n", - "_L + ρ_R⋅u_L \n", - " " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# write rho_L in terms of U_R and u_L\n", - "rho_L_sol_new1 = solveset(Eq(p_L_sol1, p_L_sol2), rho_L).args[0]\n", - "Eq(rho_L, rho_L_sol_new1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We finally obtain:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle p_{L} = \\frac{p_{R} \\left(2 M^{2} \\gamma - \\gamma + 1\\right)}{\\gamma + 1}$" - ], - "text/plain": [ - " ⎛ 2 ⎞\n", - " p_R⋅⎝2⋅M ⋅γ - γ + 1⎠\n", - "p_L = ────────────────────\n", - " γ + 1 " - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# substitute everything\n", - "p_L_sol_final = simplify(solveset(Eq(p_L, p_L_sol_new1.subs(rho_L, rho_L_sol_new1).subs(u_L, u_L_sol_new1)), p_L).args[0])\n", - "p_L_lambda = lambdify([M, p_R, gamma], p_L_sol_final)\n", - "Eq(p_L, p_L_sol_final)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle u_{L} = \\frac{2 \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} \\left(M^{2} - 1\\right)}{M \\left(\\gamma + 1\\right)}$" - ], - "text/plain": [ - " _______ \n", - " ╱ γ⋅p_R ⎛ 2 ⎞\n", - " 2⋅ ╱ ───── ⋅⎝M - 1⎠\n", - " ╲╱ ρ_R \n", - "u_L = ──────────────────────\n", - " M⋅(γ + 1) " - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# back substitute\n", - "u_L_sol_final = simplify(u_L_sol_new1.subs(p_L, p_L_sol_final))\n", - "u_L_lambda = lambdify([M, rho_R, p_R, gamma], u_L_sol_final)\n", - "Eq(u_L, u_L_sol_final)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\rho_{L} = \\frac{M^{2} \\rho_{R} \\left(\\gamma + 1\\right)}{M^{2} \\gamma - M^{2} + 2}$" - ], - "text/plain": [ - " 2 \n", - " M ⋅ρ_R⋅(γ + 1)\n", - "ρ_L = ──────────────\n", - " 2 2 \n", - " M ⋅γ - M + 2 " - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# back substitute\n", - "rho_L_sol_final = simplify(rho_L_sol_new1.subs(u_L, u_L_sol_final))\n", - "rho_L_lambda = lambdify([M, rho_R, gamma], rho_L_sol_final)\n", - "Eq(rho_L, rho_L_sol_final)" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "const Real x0 = std::pow(M, 2);\n", - "const Real x1 = gamma + 1;\n", - "const Real x2 = gamma*x0;\n", - "const Real x3 = 1.0/x1;\n", - "const Real x4 = std::sqrt(gamma*p_R/rho_R);\n", - "const Real rho_L = rho_R*x0*x1/(-x0 + x2 + 2);\n", - "const Real u_L = 2*x3*x4*(x0 - 1)/M;\n", - "const Real P_L = p_R*x3*(-gamma + 2*x2 + 1);\n", - "const Real v_shock = M*x4;\n" - ] - } - ], - "source": [ - "## cxxcode\n", - "vars = ['rho_L', 'u_L', 'P_L', 'v_shock']\n", - "exprs = [rho_L_sol_final, u_L_sol_final, p_L_sol_final, u_s]\n", - "\n", - "optim_exprs = cse(exprs)\n", - "expr1 = optim_exprs[0]\n", - "expr2 = optim_exprs[1]\n", - "for var, expr in expr1:\n", - " print(\"const Real \" + cxxcode(expr, assign_to=var))\n", - "for var, expr in zip(vars, expr2):\n", - " print(\"const Real \" + cxxcode(expr, assign_to=var))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Converting between parameterizations\n", - "\n", - "We want convert between (pre-shock, right-side) background density $\\rho_R$, background pressure $p_R$ and wind velocity $v_{\\text{wind}}$ and Mach number $\\mathcal{M}$.\n", - "\n", - "That is:\n", - "\n", - "$\\rho_{bg} = \\rho_{R}$,\n", - "\n", - "$p_{bg} = p_R$,\n", - "\n", - "and\n", - "\n", - "$v_{\\text{wind}} = u_L$." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle \\left\\{\\frac{u_{L} \\left(\\gamma + 1\\right)}{4 \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}} - \\frac{\\sqrt{\\frac{16 \\gamma p_{R}}{\\rho_{R}} + u_{L}^{2} \\left(\\gamma + 1\\right)^{2}}}{4 \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}, \\frac{u_{L} \\left(\\gamma + 1\\right)}{4 \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}} + \\frac{\\sqrt{\\frac{16 \\gamma p_{R}}{\\rho_{R}} + u_{L}^{2} \\left(\\gamma + 1\\right)^{2}}}{4 \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}\\right\\} \\setminus \\left\\{0\\right\\}$" - ], - "text/plain": [ - "⎧ __________________________ _________\n", - "⎪ ╱ 16⋅γ⋅p_R 2 2 ╱ 16⋅γ⋅p_R\n", - "⎪ ╱ ──────── + u_L ⋅(γ + 1) ╱ ────────\n", - "⎪ u_L⋅(γ + 1) ╲╱ ρ_R u_L⋅(γ + 1) ╲╱ ρ_R \n", - "⎨───────────── - ──────────────────────────────, ───────────── + ─────────────\n", - "⎪ _______ _______ _______ \n", - "⎪ ╱ γ⋅p_R ╱ γ⋅p_R ╱ γ⋅p_R \n", - "⎪4⋅ ╱ ───── 4⋅ ╱ ───── 4⋅ ╱ ───── 4⋅ ╱\n", - "⎩ ╲╱ ρ_R ╲╱ ρ_R ╲╱ ρ_R ╲╱ \n", - "\n", - "_________________⎫ \n", - " 2 2 ⎪ \n", - " + u_L ⋅(γ + 1) ⎪ \n", - " ⎪ \n", - "─────────────────⎬ \\ {0}\n", - " _______ ⎪ \n", - "╱ γ⋅p_R ⎪ \n", - " ───── ⎪ \n", - " ρ_R ⎭ " - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "v_wind = Symbol(r'v_{\\text{wind}}')\n", - "rho_bg = Symbol(r'\\rho_{bg}')\n", - "p_bg = Symbol(r'p_{bg}')\n", - "Mach_solve = solveset(Eq(u_L, u_L_sol_final), M)\n", - "Mach_solve" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle M = \\frac{v_{\\text{wind}} \\left(\\gamma + 1\\right)}{4 \\sqrt{\\frac{\\gamma p_{bg}}{\\rho_{bg}}}} + \\frac{\\sqrt{v_{\\text{wind}}^{2} \\left(\\gamma + 1\\right)^{2} + \\frac{16 \\gamma p_{bg}}{\\rho_{bg}}}}{4 \\sqrt{\\frac{\\gamma p_{bg}}{\\rho_{bg}}}}$" - ], - "text/plain": [ - " _________________________________________\n", - " ╱ 2 2 16⋅γ⋅p_{bg} \n", - " ╱ v_{\\text{wind}} ⋅(γ + 1) + ─────────── \n", - " v_{\\text{wind}}⋅(γ + 1) ╲╱ \\rho_{bg} \n", - "M = ─────────────────────── + ─────────────────────────────────────────────\n", - " ___________ ___________ \n", - " ╱ γ⋅p_{bg} ╱ γ⋅p_{bg} \n", - " 4⋅ ╱ ───────── 4⋅ ╱ ───────── \n", - " ╲╱ \\rho_{bg} ╲╱ \\rho_{bg} " - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# use positive root (only physical solution)\n", - "Mach_sol = Mach_solve.args[0].args[1].subs(u_L, v_wind).subs(rho_R, rho_bg).subs(p_R, p_bg)\n", - "compute_mach_number = lambdify([v_wind, rho_bg, p_bg, gamma], Mach_sol)\n", - "Eq(M, Mach_sol)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle M = 1.42225795167899$" - ], - "text/plain": [ - "M = 1.42225795167899" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# numerical example\n", - "\n", - "import numpy as np\n", - "mH = 1.673533e-24 # H mass (g)\n", - "kB = 1.380649e-16 # Boltzmann constant (cgs)\n", - "gamma_bg = 5./3. # assume gamma is constant\n", - "\n", - "v_wind_kms = 200. # km/s\n", - "nH_bg = 1.0e-3 # cm^-3\n", - "rho_bg = nH_bg * mH # mu = 1 for OOM estimate\n", - "P_bg = 1.0e4 # K cm^-3\n", - "\n", - "# compute Mach number of shock\n", - "Mach_shock = compute_mach_number(v_wind_kms * 1.0e5, nH_bg * mH, P_bg * kB, 5./3.)\n", - "Eq(M, Mach_shock)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGIAAAARCAYAAAAmE3lhAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADZUlEQVRYCe2Y61EUQRCAD4oAKMgAMlCIQMgANQIkAy3/8Y/CDJAIVDKQDBAykAykyOD8vmV7q3duuZs7C7Wu6Kq5fmz3TE8/ZvZ2ZTwej5YRjo+Pt9jXh3ZvO+A7eeQ3raxDyE5b5hd4m3GK7LZTaIlavdIu+Gn2K8uYCDZsEs7A+0UQ3sPvI79M8mvoE2QXysDrIGXqdcmArtJzjiGYZb86ZLQEMiv8KO+DQNgd94xvIUf2Dnod3CRBObQ68mfyArIqvQftyd8a+2VNxB7h+EkArO4MdoKBt2OE14yJowrZFWMv2dfqYTYIM+2XNREG/JZAWt1DEAkyYd4dJcSR5HOhVu9Be/J3pv2aNm3mbT8vqmv4z8oD4G3nQ/BjGwvV/wLjpxU4BC8U8vyGEckY0gvZRq1eGJS41r5JBMYfMfCN4gD6nNElApkJOgA/tjkeLwbM6TlstcwDBnFuX7AxCR5J8Sa10S46rbhMVq1eO90EqrJfax30TBR8yyhbVdnQOTrC1iB6KZpAL7grZJ/AVYBu70KtMlpcya6+mMc/9Dcrl6vVe2y6TTvCszQC/Qb+pNA22KWsUcHukmGlebHNXaXFOk/G4pud5z6zj2XB5fWjiv1fUauX7TNdZb+Kc01rgg24rZiPJVtZWffeDV2CHTPtean/V3n25dHqWd/9p9AB+GbfkO6vhJDlCz9kWTdkcbnnZw1du44dEWC15IWVe+TodHSMbAkmcKEjhnmf9I5gfv3fBnedAG1xjcAGzwJqeGUJoiOiwGr10hQ9cqZ9ToQOlQHvqh3Hrayv4PtYAtpjSQiHH7jKX+wXSmDN9K1vu+C4nMPM5ETXe2/E5414Ln7J8KUg9lqrl+fI9Ez71aTda692Izs61OpYWeFYmNkN98h7tvHwX2H8sajcvH/e/NTRDWRH8M0+wCbkDtx0PvQIeh3kXXkoLyCr1XO9McPPIR3U2OeOsHLOMbJCvKQMrpXhBzC/0XxhlNB1TH6AvpvZAS/UKXmuBenv2JkMu7iEKKyQxx53Ebhv8St8n1sPmyjKHzF5wlPX+aOPfizsp1srLFq9WRfeZPohreyg5NczmSOQj6Ysn0kT5MH7AbltvvWchJkh7Cnko6n3YBpDkD2q3rY6doRkcxyBTVDvVdGHzzA9Ar8BRWCJ/3OY4W0AAAAASUVORK5CYII=", - "text/latex": [ - "$\\displaystyle u_{L} = 200.0$" - ], - "text/plain": [ - "u_L = 200.0" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute post-shock fluid velocity in km/s\n", - "Eq(u_L, u_L_lambda(Mach_shock, nH_bg * mH, P_bg * kB, 5./3.) / 1.0e5)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/latex": [ - "$\\displaystyle u_{s} = 527.384360142785$" - ], - "text/plain": [ - "uₛ = 527.384360142785" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# compute shock velocity in km/s\n", - "u_s_lambda = lambdify([M, rho_R, p_R, gamma], u_s)\n", - "Eq(Symbol('u_s'), u_s_lambda(Mach_shock, nH_bg * mH, P_bg * kB, 5./3.) / 1.0e5)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.5" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 + "cells" : [ + {"cell_type" : "markdown", "metadata" : {}, "source" : ["# Shock jump conditions"]}, + { + "cell_type" : "code", + "execution_count" : 1, + "metadata" : {}, + "outputs" : [], + "source" : [ "from sympy import *\n", "init_printing(use_unicode=True)" ] + }, + { + "cell_type" : "markdown", + "metadata" : {}, + "source" : [ + "The Euler equations in 1D are:\n", "\n", "$\\partial_t \\vec{U} + \\partial_x \\vec{F}(\\vec{U}) = 0$,\n", "\n", + "where $\\vec{U} = [\\rho, u, P]$.\n", "\n", + "Using the weak form of the Euler equations, and assuming a steady state on the left state $U_L$ and right side $U_R$ of the " + "shock, we can obtain a jump discontinuity solution:\n", + "\n", "$u_s (\\vec{U}_L - \\vec{U}_R) = {\\vec{F}(\\vec{U}_L) - \\vec{F}(\\vec{U}_R)}$\n", "\n", + "where $u_s$ is the speed that the discontinuity travels (i.e., the shock speed).\n", "\n", + "*A crucial simplification is obtained by working in the shock tube frame, where (by definition) $u_R = 0$.*" + ] + }, + { + "cell_type" : "code", + "execution_count" : 2, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAACgAAABLCAYAAAACnsWZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEBUlEQVRoBe2a3U0cMRSFF8RzRDZSCth0QJIKAh" + "3kpwJCB0E8wRsiHZAOktABSQUIOoACIgWhVJDzzfrOeAfPjNeehSjylcz1z/W9Z47tWdvD2uHh4dZkMrlUCsnZ0dHRu1DDWHXyfy1fs5A/" + "ta1teA2flcfYlxu/" + "sKL8ScDvjureUu8DPBXihwC0gEcxvyxUqKA6qu4BpDJZ5NSY+C0nL5ROVJf9wOvJiLyOAsIcvpDeV2Kq7CudKx+" + "cW17XwWw2QIH4qCib0mcWTfk75SmfWl2qzgaowKzyqwCAC9VtC+xmoC26agyA24p2G4ho84/2ZMkCGMnONBmdOmYBVH8Lzpzrkkcf4i5gVv/" + "MMik6l8HQ3DMcxi7vxWTJAuheJwQPDaPV2WJJApkF0EX8IT0LRDcGaU+WMQB+V/RXAQQvVXflsRwwGa7KBigA/NjfSlc/" + "7oRUnuF9r7RLOUf83UyOH9hic/" + "BamkWBfqNy6BdGTfEyCkABuVPIvfiw8ZbZQxwfKs2yAEzjrelVGGy4SMsVBtN4a3oVBhsu0nKFwTTeml6FwYaLtFxhMI23plfUflD7vS114YaAjSi7" + "5Jkrc6Qkv+v2hMqOK7FD/" + "EEAuLVCfirNKCtxi8WpjXPJSmSQQYGAPS6CENi6UV19k6Uyt7KflGpRO2wDHs2ZhR035xROevSnLUpiGPQBAfZryzOBJwpaaZfnqHmuRN89ADnNTRg" + "3XtHXcgB8ooSYnpfcXznj6SfSsIG0z7ncJ9+ZXWUx/8N8bdvSwm1E6JhKm8lzywDwjyuYtra2BgiMVIC9RoB/" + "88qWpR4Wa3EPCbih4+gv67RhmQhNwAVGFJDbVQAvzCnVz1THkLOYqhtY5bm3vlT5qXS0RAGUU4Ix/xieShwIgHH+DbEK29XKd/" + "1Z6W27ubOev1EA1R/" + "2ECa7rVjegTsqhy6HmA4127JhjrIwALnAtsq9EguQgNyzXKF7Pc4beaD2PGPRLM0giyRGCFgz0tdBD2Hzr21PfTVFZMOrhvKgrA9ZyBHzD2f2su7sI" + "luG395xB66v2R8rw1BjsyUdmhpmW+veIZYTbqwOnDUBp0r3Pl2ZN7WxKKqFYXWm1cbU4JJpKRkCyE+a/7O2lPMxjAeHeIwgOT4KwBz26FsY/" + "O8Z7H3NLPP0es+VL+7LEFbbirnyxb1mIzHDTqfapbT622aA9mTJeg9qeNnpDMl0yKCvPQugHFvwvo1ozEN0YswF2OnYa+BokCy5AENzz8AYu+" + "WLuzHSpTl7zAKNxmD7bBIw7a7KHWI8c5QMXWWwvS9f3GEoRmCrfHGPYerBbcZYJCsFXQDm0vvPM+ifSa61fWo/" + "8KP+ozdgAMjGsuufcmzTie2qxA5bQf9/AVFzKbuXGLjzAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}0\\\\p_{R}\\\\0\\end{matrix}\\right]$"], + "text/plain" : [ "⎡ 0 ⎤\n", "⎢ ⎥\n", "⎢p_R⎥\n", "⎢ ⎥\n", "⎣ 0 ⎦" ] + }, + "execution_count" : 2, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "rho_R = Symbol('rho_R')\n", "u_R = 0\n", "p_R = Symbol('p_R')\n", "gamma = Symbol('gamma')\n", + "e_R = p_R / (rho_R * (gamma - 1))\n", "E_R = rho_R * (e_R + u_R**2 / 2)\n", "U_R = Matrix([rho_R, rho_R*u_R, E_R])\n", "\n", + "F_R = Matrix([rho_R*u_R,\n", " rho_R*u_R**2 + p_R,\n", " (E_R + p_R)*u_R])\n", "F_R" + ] + }, + { + "cell_type" : "code", + "execution_count" : 3, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAASAAAABYCAYAAABVhSqYAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAVOklEQVR4Ae2dX7LdNBLGT1L3eSoTqmYBYQcQVk" + "DYQSArSNjBUDxd3lKwA2AFhOwgsIIEdgALmCoyqdlA5vv5SkLWkW3pHNnH9u2u8rEkt1qtT1a79cc+d66vrz86HA6/" + "6cjRy2+++ebz3AVLMwQMAUNgCgHZjz/E8yDHp2t3rqIL3ykMc0x/" + "xhELGwKGgCFQicC3Gf7PlPaY9NgAfS+" + "LZAYng5YlGQKGwGkIyKb8kOZUGkmdAbqbXrS4IWAIGAJLIWAGaCmkrRxDwBA4QsAM0BEklmAIGAJLIWAGaCmkrRxDwBA4QsAM0BEklmAIGAJLIRCvg" + "i1VppVzYQS0CvFIKrC/652OBzq+OnUFVPnuKf8zHR/q+E3x3qqH4j8r/" + "anOlGVkCPQQMA+oB8f+IzIE7Mv4XOcvdXyl8Pc6hjailgDyteSwh+yVjt6eD6VjmB7rbManBMlbyGMG6BY1ugwBey8wCF9G1X6j8D2l4RVVkfKwi/" + "61y8TmsreJANJ+T9IsaggEBGwIFqC4FYEfVUu8npgYgkEMpQI5g4Shwmi91PFaaXg6Mf2pNG9gvtCF5/FFhTFqaVrHUig/" + "EWfRvSFgBmhvLTpQH9fhMTIvEhbv+XhD0l0W/y868HAe6Zx9H1Dp3dBKZ2QgO8z/" + "KA3DRtovOo5I1yflH2WyhN0hYEOw3TXpYIUwIr97oxFxPVEYTyb3Gg5DqKwBifITRDYyOoPkrnVb7ZXWM2zumj+Vyvf8dt4ZAmaAdtagI9XBS2G+" + "J5CMAx4OR9bDUTp5mFyeIryd1NAE46JynunAG0qpVH6az+" + "I7QcAM0E4acqwarvNjJO57PpfGEjmrYanxOCgNwwSVeEA978nlfai8Xu6HSou9o1r5nSL2sz8ErvZXJatRBgE8DYj9Pv++" + "CXb7dliO90bCJYcTed7pes+4hKv9ABPbP4qXZfi/" + "dJDnYx3fuvJ+UjilGvlpXovvBAEzQDtpyIlqdMvhzpikK1lDWcMQKmaQDIZSD3UOnpHCeDe5YVwuzYsrlu8z2Hl/" + "CNgQbH9tmqsR3kYwGDmGTBp5cvM/Xyu9N5eUyVuSNLf8Eh2M58IImAG6cAPMXbzzWJj/" + "8RsGJ4tUnuz8j9JZ2XrgPJ5JOUMMc8sfKtfS14eADcHW1yatNWIyGCrygGQcmCNiaR5igppzN+zSGcPE0Olkmlv+yYpZxosgYAboIrAvWijDpc/" + "U8XurUEMaiI85otJ5oiExg+" + "lzyx8s2C6sEgEzQKtslnZKOcNT5P20K9UkGQJlCNgcUBlOxmUIGAIzIGAGaAZQTaQhYAiUIWBDsDKcjGsjCGjIyYQ5WwUgVv8g+yDaDQ6r+" + "zUDtLomMYXORIDd1+F7Rwr7D67xxUajlSFgQ7CVNYipczYCvPj6KJLC6yHsXfJ7m6JLFrw0AmaALt0CVn5rBPB+" + "WuzUbq2XycsgYEOwDCiWtF0E5OmEj6K5WmCQ4i83brdyO9TcPKAdNuopVWLYooOPyO+" + "G3LCL10d4M99ohQiYAVpho1xIJVaPOHZBMj4PVBHmfz5WuGgX+" + "C4qvrFK2BBsYw1m6k4j4IwP3z7q3ltz8YPOJd82mi7AOJohYAaoGZSnC1LHYIWGlZtPdDzVwdOb+AcuvKl9LKoPuvMtIDwP6rLYHx+qbMpj6Z0y/" + "coX80Dpv4EoyejSCNy9tAJWfofAE3UW/wLor0ph2fg7HXQantp8OnUTJJ0Z9lzyjw/5k0UMIGd/PJNeNgwTIGujq7UpdNv0UcfgKe2/" + "1cPTmxWblxEOfyjsP6PaJes6HYynOhOs8Ob+s0vJy5L0Qh/" + "++DDe9MeSePfHh0oPL8WW1EE8MTYMp94mNSKt90lZ5flnwmPRFSOAAfqH08+fV6zuLlWLl4jpcM+TWnYTw+pYdOLuKa7zyf+" + "ppbwMTzBgKd0nQdcxbCnxdz5jn1f1/DV/fFhShxibqj8+9ArZeZUI/" + "MtrZR6QR+JCZ3Vsb1S8UQheglOJpzwfh0+HEKSnvJO1GDAwB6XjvXRDv0khGQblR3+" + "M5Yvksq9Xz1NxPKN1kMwYG2SHPT66hrdIWjUGrmw7rQABDND/" + "nB7+vAK1bqUKdEae+F2nixCgA4eOl6TnvJWIZdEgHlLtHx9St5I6IDvFBoN5EF45w0a6l72qYSo6Gx3+4zHAABmtAwE6TO9prk7ExkAMUm8FR+" + "kM1aAe/03SxX5z+qMnx9FGwMo64O2khiZ4Tw6nFzoH461wyRDvYmBZwTcI2CrYCu4EdRaGEnRUOlpHSiOM4fk07lg3V7s5nNL/7HJZ5js5/dH3vi/" + "FpQ3+8aH4MFildejt35FssHqowxuloz8+1DUoGKmbqP2uDQHzgNbRInRGiL0rfsWLPUB8y7nX+TqugY7lOn3vP7sc/" + "9ynnP6shI398WHWOAzUAUNc+8eH1Bm9SoZ48BpdAAEzQBcAPVMknZH5E57o/qmeYQtJQx2LD3E9D1zLBbz+GEu/" + "n2mq9OI6CBeGVrlVuFxaV67y4CVBaxqm3mhkvwEBG4IFKC4aoDMWdZShjqV0v4oV5kEqa0S+U/" + "MW649OM9YhrjI6lQ7x4nwWXhCBqwXLsqIyCKgz3lMy8yd+M2KG6yZJvAzPnjiGpv/ZJdlFBjBVrkZ/" + "8s5Zh0S3miFektWiSyFgBmgppDPlqDPitTBsgr5W/L6O3JJ7x6BrDG9KhzhdngV+mAyGigzYgnXAA8rN/" + "1xqmNqBZD99BMwA9fFYNKbOyGsU8WsXi5bfqDBetSj+48NGZY6KEa7Z+R+" + "lnztMHS3XLtYjYAaoHjPLESGgTs28UZH3E2WbLSh9Zhumzqb0LRZsBugWN/4eqy4DtMZh6h6hblKnO+/" + "fv28iyIQYAoaAIVCLwJ3r62vGy3w3hd2kuU1vtTIX4ZeuvNX9Suetz6EsgldNIYZtDVrr4FWbMenuV1TZBPqz0kaHxroOP9+fyu22V3Kfavn7uf+" + "OSQ6vGH2v851N7gOS4hgfVozM+" + "Pzdrk1Chm0TGC8hBIPzUgdDUHaOv5pSQrzM3z3V8ZvCGKNRquUfFeYubs4ACQSsJ68bDO6CLam48RwjYNgeY7KhlPiFX/" + "aVYVwmSW3Oznu+" + "Ysm3nCapln9K4KYMkCrPcBGwPp2qmF2vQ8CwrcNrbdxqv3j6pPssbqmOysves3s6s01hkmr5xwRuygCpIljpHwRAkXUfq7hdO0LAsD2CZHsJ6htMT/" + "BS8+j8T6ZmjCh44XdyKOby1vJnijwcNmOABAzWGQ/" + "oEi9bZsHbS6Jhu4+WVDvi+WB8eLHZf1WhqHLi56H+QkfpUKyKf0iJzRggVQBw+acI836GWvP0dMP2dOxmzan7/RHGREfvn1EycVayMTr/" + "1TX21uReQ5nSlfuAPxV4MMXortfyH4ndxEZEAYLnAyjm/Rw14XkJa8BWOrCwwCQqncgTL5M+17WSz5P4PLs6q+4Mhz7SmQfve+I6eMOf/" + "sCyeyClxZPQIb0mIBl89pahG8aLlbRRquXPCduKB8QLhHxi07yfXCuel3ZRbNWmdDKIJzzzF7Qzk6I8bHpPfcVvG91XhZnzZPoh/" + "iY2xod38OYgMOeBUEq1/D25m/CApDENcIpL2ausRbIIXBpbOhlzD9z07GPxqzk8bI6GArqO289Qg/0uPym+Ww/" + "JY6Ezn2DBOHv6RIFXPhKfG+CDB9StiElWyT67Wv5Y3fVPQgsE3E2odlb/Jpf9DiKwBmylg3+yM+R6HSlLu+c8XjoeebrJ1oh/z0E8ntjQEvcf3U/" + "rfRY+tIcEctAek1TLnwrcwhDsIUq7iqb6W/w8BNaELbrEDxme+nhGKWGYYr70+l7jnWeofoDxYdhKnHBKLfAB3+7eSIUPxGv5g5gtGCAscWz9g/" + "JrCnBj6KgZO69B/VVgK9wYatGpOo/HxelIuYlQdI4nqxVdJzW8J56qhv4PC8CJoRH3Wq5ftMCHvwMH/" + "1Kq5Q9yr0JovYHO3VyvekEzbgyOLdFasEUPOhNLwODHy5QfK9wZJBIi4sm8lfnAJveEcMDgxPMxcTiCpgu2wMd7W6zA5YxcWmYtf8h/" + "FULrDdCIXQXXq+JmNVsLtiwhM6fBxPIg6XrnKencux8UZ5/" + "MaN5BoTu60BAfjy94Fxsg8ZbyB9SLDJAqxo2Ky8eTiTdne98tVpyluKc6v9N5DsLFGySVi7vIU5TVAdxVgCD+" + "gQvPqZuKaEuqD7qz1R08qQvut78pFG1Ko9g2LWlYGPXNDbfSHEfzG8KFFbHbOCeUYkO8FT7+" + "XrufKySTVssfRNwNofEAH0znCcMMO8uggZSOYcJ1bm58JJPOB729OQ3+PnH6wfCrjgfEdXBTAw4GchMkncGXP/TjXy/" + "Qn+XX5nMekl2K7ay4ufqiC9+" + "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", + "text/latex" : ["$\\displaystyle \\left[\\begin{matrix}\\rho_{L} u_{L}\\\\p_{L} + \\rho_{L} u_{L}^{2}\\\\u_{L} " + "\\left(p_{L} + \\rho_{L} \\left(\\frac{p_{L}}{\\rho_{L} \\left(\\gamma - 1\\right)} + " + "\\frac{u_{L}^{2}}{2}\\right)\\right)\\end{matrix}\\right]$"], + "text/plain" : [ + "⎡ ρ_L⋅u_L ⎤\n", "⎢ ⎥\n", + "⎢ 2 ⎥\n", "⎢ p_L + ρ_L⋅u_L ⎥\n", + "⎢ ⎥\n", "⎢ ⎛ ⎛ 2⎞⎞⎥\n", + "⎢ ⎜ ⎜ p_L u_L ⎟⎟⎥\n", "⎢u_L⋅⎜p_L + ρ_L⋅⎜─────────── + ────⎟⎟⎥\n", + "⎣ ⎝ ⎝ρ_L⋅(γ - 1) 2 ⎠⎠⎦" + ] + }, + "execution_count" : 3, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "rho_L = Symbol('rho_L')\n", "M = Symbol('M')\n", "u_L = Symbol('u_L')\n", "p_L = Symbol('p_L')\n", + "e_L = p_L / (rho_L * (gamma - 1))\n", "E_L = rho_L * (e_L + u_L**2 / 2)\n", "U_L = Matrix([rho_L, rho_L*u_L, E_L])\n", "\n", + "F_L = Matrix([rho_L*u_L,\n", " rho_L*u_L**2 + p_L,\n", " (E_L + p_L)*u_L])\n", "F_L" + ] + }, + { + "cell_type" : "markdown", + "metadata" : {}, + "source" : ["Now, we want to obtain the left (post-shock) state $U_L$ in terms of the pre-shock state $U_R$ and the Mach number " + "$\\mathcal{M}$, which is defined as $\\mathcal{M} = u_s / c_R$."] + }, + { + "cell_type" : "code", + "execution_count" : 4, + "metadata" : {}, + "outputs" : [], + "source" : [ "M = Symbol('M')\n", "c_R = sqrt(gamma * p_R / rho_R)\n", "u_s = M * c_R" ] + }, + { + "cell_type" : "code", + "execution_count" : 5, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAALUAAABSCAYAAAASEpWTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAP/" + "klEQVR4Ae2d7bXbNhKGZR8VcPemgiQdJE4FdjrIRwV2OkhO/" + "vmfT9JB4grspIPNVmAnHWw6yF134H0fXAwNgEOKpCiKEjHnUCQHgw8OXgwGQ0h68P79+12lqoFUA8+fP18NKNSWB2nbhlzvhwhVme1oQCC60dP+" + "rfOnl/rUDy+14bXdJ9PAE5X8+8lKX6DgCuoFlHxhVXyr9r66sDZnza2gztRRb6SBz+R6/" + "HXJmqigvuTem7ntAjOuxx8zF7t4cXWhuLjKV13hd2rdL2ULBfZPIj+AXvdfmoyun+n4lXuudfpcx5/cR0L2hdIWs/" + "4V1Kb6ekYDuB6epQbov+n4SceXkvlFx3c6PtP93zp2uiZqAiH3bx2fikcU5W3kZdEU8Snrex0/6IA+0kEZPyjtHYypVEHdoTkpFqvztQ6sE/" + "S1eL1RAaXTSXQWnQI4Xh3KI5lVkNrJc7asqfhfiQ+AA3h1/YeueUboia5/vr/c3er8Wgd6+z2RRxdY+pIAfpp/" + "pzzo76UO9D6ZKqg7VCcFM6X+" + "qjOWh471OqbJLTms1heRwQDwLF4jv8ILgPSqbJeewxvIDFbA21hU3ZvFxt0AsEbopZEzps7wSx2VeRPx4ZcV1D26UkcB5GBRdM6mTyfbI+" + "MpX9lZlrTmM1YTn3oIAeDfJO/" + "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" + "ldH2ummxRiBtAWO2qAY2SK6jPBbXl6jW/" + "mreQc7xwWa7lE2uqoJ6ouEvJFi2zxaVfX0q7j2mnG9KTIgjD8HaIqYpFQbPlUteVLk8DwQXZgutB17RArQdnhcx+" + "gfAaNQKcvcXZzisyH0MqlzdKDJ4xxKYYBlulcRpgT7i5IeNyXqB0Fv0QYFglExRvvl2h6xvxCAuFr77bM4oPIAE+eQjAEypyN+" + "IorVLVwGIaKC01WwHLt024HxDgbkgAtq/wszmmWs9GM/" + "Xi3BpoQB0tL8AtFxPmIthiI20zwffVTWt6Fve3KtKG1+vr1UADaj0i1haflcVhSmyAyb5hkSQC+" + "ElbGFXPyXxqlX1xv1WR6LReHqmBFNQANLO6Agfv9zla2wljGtVneWAMIeWfNBiGlF1ltq2BEKcWwHA78J1vTR2RR7C+7yv87I+" + "da4OMVV3PVQNHacAsNVYamvwV/vvsYdM4A+SRwD7Jgls5WzlLT6vx/9WWq3DbDNQs+PCnsbpDw3IMBM+FYI/" + "BCx2VDmhA+sYAsF5pQqgHstTkARoI7ofkAOhgy6pOwM+GsjziE7Pmh2DKxWYQrh8tDaD3Q5vsW5kqo18DewHQ/Ok3/aL3qZJnYwwREQh/" + "m3NwOXQG7KvcY0sjV0josc5qM3fMXuU9imVmVrerHoEY92Soi9JVTOXfa2CuH5Sp+kw0gPvB98fO8RX+pBnbu5RxGOXybU9D058Y9wP/" + "d5CVnl5NzelogEU2L6AyUn8QWrUXU2xFaNw5XT/TYf9uwDe4eX+Q/o42smf/LTu14ayE+1HpPBrA9fCMCYDm/" + "QC7JZlB+S4gaxfWK+GdgK5Zw0DI8StHZ/sfcBqxNtoEqAUCrBrbAJjyobP+z7jaQztae2nEJ3oEgO2FFpYacENsHLO1DC/" + "JXuvguc76P+Cqf3W0FVCHHy0XKLBsIezY1xOSwyp+EWVO8T/jDLCwcT9th+r1wnuvxAe8uImBdG8WG3cj/T062t3I3UuHT/" + "jlrFDmTcQv+3IToKaLBAR8VQCAlTz0ssMiQuQrwaDsRxNW13tx5RUMgFf7P+Beg8/NI/qxFQLMABSQNKAtH15gwyoytZt8KXLUvcrHarZcj65CJY/" + "lbcmLzyDFtw6WOd5TdrkfXqzwLGyBYCZAB8xWrTLFuwraEqj5MRcATQgTQLQoAgOZWx0AJp3aW/" + "ITGbxwabkeXWXFNnntYNABTH5GjBdigHkVv2WndpyV9met/" + "TyV82PfANYjADLqf8a9Qg7wsJJj3iICXgZiSYTzWEja4rFMt3svPzPVyX7LziruO6vd9AGzIq4g/zhm/" + "60Tsume9c9TncNMFJgDPzZhqaUYLLPFc7HEu8hr1KR7wGaKDbFh8WadomOdbGAa01GE9bx2ANY3zQM4F8rHM7HBbNHfsnOa4rH4lwQGJLOQRXiCnPi" + "AHQMzRk8hLx9bsdQAwBZ8AdS6x/80gGM1dokSU3mS5iJAhgUaQ9beJo/" + "aCQgYqAAea+12vvj40BwZiT90kZrlm+tG9aN7G5AYkLuibHjeQN4pL31D+9Elz9b6wvdWQI2vaW/i2GIrXWR+9TPxwjSuM2AB5J4fS75jCH/" + "6cVcBqtvdWy0+PrNHWDTa7qUN5il/7z5qpaMPfocvDP6BBff9nR6zlYH2G5VXumMAt+SFapWPQcygIIJEaLRFWwF1+eBYthDWk2JsxJsMCoXMst/" + "fHfmpegIgdKZul5TWCy430wLM2ObWV/" + "qmVm060Bldoxdz+3bimVHp0z+WvDP94dSGXUo+KYlRbf60NZspnX3fBrR0ikdhfE3NLInlOfaMRRoc9Ti2sgvJj6Ut1xgYmd0B/" + "TMYOmfSqwe1Hh4FlKMaED/" + "SwdRd+pyevER9Un6iCKEjfImGSweWdTWJG73AKpfGo7HC0iv9EwyP6Uf3GCmo7NN7rj63AOp0L4U9OIsUlJWBLCoMfqcVsAI4Sx4w4+/iKx+iq/" + "wf8EMPfSA9nSHRJ4DF2BjQ2aj1rigDo9P7he99keFqbqUMogwoae7/GQ86ih3ANR2AojtJsoA/G0CdwttK4IXRS+mHaM4/" + "OgA5vjuzH8bCc9caS670hiSPMQpf+L5mULsrY7QgBTB1NdNXeY/MAMJabP5/wAfoqVNE+sMKe/" + "3k8awcDIgXkiQeHyImVwtq08CpzuoQmzptcOCC2LRZVjvX17YIq/GWjbAksxD32a/Rio/" + "Vw8phBaGPdGDF2PtRTuWkXwzFZ6a9pvPQdvGZCZsvfFdQB7VM/" + "5BC7afasCAtUjr8rBNaQgMYKgeguv8DrrQUrKwHiOE2r89j3pfi91nAAa04n0h8Blu7sE6iMQxWfHAGOG5JoApq08RxZ0DLa90bHSnAKBUgjX2LSL6" + "SmHLTaZfO3Dn10cHlIKLDBy1+KXONpOdkkDYDta+NFdR92hmexoKGKRCrXC4IsZopGIeXGiWVH4tE+" + "OttkpnBUtZF8hc67pSH9tzq4CXTyf4HXGWvjrYQ0ltC6WYZbXoMdQpYWM0uP3tMuxgsO5UXZgGdATi8p/" + "ALgr+ZvdPFs4fbCmpPKyN5EWxeaA+Qe2GpkTUEf3GV/wM+9kGWkN8vUclG6gC8xFfTSAd+tkUhjlED/" + "vMLleW5G2m5WOnURSGNvGfdO00jlqRqqefTduaCCIC4CBb2O7YWb/GXlan68KHXunc6a+upb7I/Mjp1ZddevoC1uf8BX2OfVlDP2CsCNaE7LOZm/" + "gd8RvXNVlR1P2ZTZSjIFoW4AYTVypj1vLXV0lwNVFC7apnMNL+" + "at39zvHCZ3JAtZ6ygnrH3o2W2uPTrGYuuRY3QQA3pjVDWQNHgglTXY6C2TiBWQT2/Uvm+nbkh85deSzyogf8DvDWTuyWQLlEAAAAASUVORK5CYII=", + "text/latex" : ["$\\displaystyle \\rho_{L} = \\frac{M \\rho_{R} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}{M " + "\\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - u_{L}}$"], + "text/plain" : [ + " _______ \n", " ╱ γ⋅p_R \n", " M⋅ρ_R⋅ ╱ ───── \n", + " ╲╱ ρ_R \n", "ρ_L = ───────────────────\n", " _______ \n", + " ╱ γ⋅p_R \n", " M⋅ ╱ ───── - u_L\n", " ╲╱ ρ_R " + ] + }, + "execution_count" : 5, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "rho_L_sol1 = solveset(Eq(u_s * (U_L[0] - U_R[0]), F_L[0] - F_R[0]), rho_L).args[0]\n", "Eq(rho_L, rho_L_sol1)" ] + }, + { + "cell_type" : "code", + "execution_count" : 6, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAOoAAAA8CAYAAABo8yZ8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAOYUlEQVR4Ae2d67XcNBDHN/" + "fcAi6XDqADSCpI6IBHBTd0QA7f8i0ndACpgEcHgQoS6ACogJAOLv+fViMkWV7bu/b6sZpzvLJkPWZGM5rRw94H9/f3uwrr4cDz588/" + "EbZPdD3SdafrIx//0N/fKc973S8WtkDDuZl7de4Ga3snc+ArCfp3vpbfFH5EXNcz3f+l62f/bMnBFmg4K3+vz9pabewkDnhL9MZXgiX9S2m/" + "RJX+qftvovhOz7G+X+v6XBd53yjNFF3R84LaxiM4hgYGImj5QRcew42uW13wgGebhqqo6+pehPIPjzIC/" + "yJDH+HdKc+NLuf+KvxVl3OXFX6R5e+Mqgx1Yrld3Z0F9hm+UDnDMy9yCg14Dww6ART/" + "Xdf3eXrIsJGbqqgr6kgJoykflgX4dR+E3890997yhdTdjvQ8b/S4/" + "dbX9Wl7jmFPDDeFQ2lgTl6i4Z3SHw7DYn256xx1fX0GxigelskpbkQCwv9TFLdb0l9bZCHhyTR4ZUdJ7xZC02RoXE9Wc614Sg6geIl1kdA+" + "VRqKm8zXlI7bCyT590mz/g6hgfk4rjeuL3Ry/" + "7Eu3N4PFG4eqqKurIslmAgpyofL50BpCDIK+lj3KGsMKATuMCvCi4AjacCDcItgvjyr2zmti6BvCiSqok7B1WnrRPGAZxJYW+FlD/" + "UzxUvKWJyfemF/qHAOS3sSDcKZged70YyyJh6E4puEqqjr61YU7w8JKquqbSurMVUoRbJS6h9+qzBfNY7LTXl/" + "DA35PJTFpYuxqHUxaUpxnKZuFK+XFZQyF+enSmdPlfneXII+hAabn+Y0k+7cf9HxRBfxzUK1qCvqWgnjjdBFIO3AQCv2yotb/" + "JXP8LXi3FKeVVIUGKt2djiCBsPzW5V9ocsGF7yBV4o7919hrshnp23KBh/" + "Us75Tsne8uiWIWEHcVZQMl5dNfk7prAa2QMNczK6KOhfna7uVAwM4UHR9NfIxh+C4GW4GrhYrjKUVRT2qUDlQOTA1BxqKKoV8qUY5K+pWCr3S/" + "q60UTeWVS/L6wwIQ4DVzsHnVYc0UPNWDiyRA4nrKyVgHvRSIac+HOieBYh/" + "dbFPFybsukfJUGbKzP5WhnCoUDmwWQ7kFvWVKM03kG3ZG4UNgNLqYmGDpfFFWTnhU9+GDz1Vb7bAgaCoEm4sJMqYH+" + "omHShtrrN0Hqysy7WAH9HyYAFoVBQqB0bjQFBU1YhVZA7IAlIM7MVxzrK0mIQSu7lsXKDPveqrc9Q+jKp5KgfEgVhRUbrEOkqZcG25Gu8j+" + "md6lJYhoQ+o/FEK3qfumqdyYGsccIoqpcHlZS56awT6NA49c6ql5Pai2It6K8NwX2ooPuJFvFYYfz5lqehWvCbigNctvppRetup2KpZVJQOiN/" + "IYOX30Cc1ivNTj8Rcb2U4Ipb445X0dm1KKnwZrFnZXwQIn9WvP4gGDNydGMr7tJ8S72KuKSpKx/" + "yUeWjfD1+h3CX3lWNuL3RV8BwQX3nZmcGrMYVYMpOEL57WJwpXrxxL47N4ir5xZoGdls5dkytPAEqXzE99ejFQA8xbgaSM0hl553wrwyG1pB/" + "PKzrk8ZLw6okLclHd9J7MGppNssFZbQ4XdXos18pk89PONzJARPkX+VbGUCadMT8j5g/iW6d7c0ac+jbFin/1jvpy67h8WNO/" + "JR+cS2iVEVzfh77+xDq2tanKcI37usdt1VxEunjFSIn3sUZrSh/" + "h9pYWEnlWYQQOoJy6OLtw0AXG9X2ri+OBrdo8Aj6XWgUuL1+" + "xXx1vhfOg6dCldvBIdCMnn4vn7LwUAdcXIeplTYs11MQiB8RXLCmMX6vryEIh20kJeGGywyq4ayxEOtD9U13uHVnulcjiGS90GJCXl7+rlTaOKBQ/" + "OFCEDsLz/" + "Aivy2mLSS5Sf0blAKvfB+cdo7Y2fmW4vaUBHCVly8Z2CpwyKy8Dkzu9pvsbjw75eA4fUGAGLdIqNDkAXxjcisActcI0HGB+" + "ygi5OpBS4fY2rJ7SHU0K7TgpCojbBjzRva1d3CrOvAvB+yXKj/fWcO98HSxSmjXhq4ooO/" + "v6lLkEYFB0K8CiubHSXhV1AhEQo7EuQMki7Z9Ev8qPQLP6h4IAHDRpdNb+0f5XzxFslARBpp0fu8ooT18Alx/" + "zzC310y74B4VS3CwrVvd1VA98CfmidPLEir5THdB3cIElKr/" + "6W3jm+QbPGn1fFXWaLnYr6Z7xnS0oH24hWzi4P1ithtWJK1E+BP6RT0Opew0IcR0d9yhNX28ApfxZ+" + "cM7zFHd8MGsJMls92Bpc4CenIZcyfMyW4zDAyc7OXFVUXOOjBN387chVUnQUU5nWRSWhD6uLnTm2Eqq+lCahtsbNx7fKz/" + "bC438SoOeG13Ogvo4dZdOZzHovFMeBqlbXdDPx9salkXpWwb+NrM4T73aMtUz0oYLa/" + "O4vmhQhhGVckER88ISXjoSq2T58yynxrF6Dbe3rVKvgLF7a1nBDwVm28Hmn23nWsnLfBTFhAcobEP5lbZ1sCkDA1oC10msRsbiAJZkqKIixLi/" + "b1X2yxIieoaVol6sDm2UFETJJwFKwupsX0DJwDkHLCeLTbbAlD93cT2Hjp1Cs7w2V0NYh/LQ1bniH6OXfk4Gqs0qqhcArA9uFG8puP0960TFmQ/" + "emYBY+oghbswxQDknvIXCWCcOUJh7lM/rCkX6J6leNxAM5AmHZRLe+hadlezReknR8Sj4dleixD3qGi2Lb/" + "vc8mOKykCcwJZdX76szmiO1bEtBEe80ukAhN6N4i5xpB/VibAD7/ZB968vYwcDXGdF9bgKFMfSmUIwB94pLRl1XcbTfmhj6D6nCVdoWXjBb/" + "iAErcNOuBPe+w38/pf7O7h2kMjByhG7yPV2wfOLj8RrQ2ebdKi+k5/" + "43uDDs+VpnWxR2UZ4VnxRIiYM71R2kH3TXliaDA5fthyT5tmHU3wg+un9l2dCk1o4/" + "wtVR6VzPz08ZCSwile1XVFfVojPa9X+eAvVwJK77vinJQbK6L24f1c8gMZ7CMnsElFFYXMc8zaMN/L51wIep7mGKNyzKvoKLYo2E8cCre+gClVn/" + "JufkpGtcl7ityaZeYey+" + "IGC4Wko7ijzk9Vbz4Y0G4CyjPL1x3V7sH3YT3ufDHB0ZAg3R459FGEOeUHjBt0bFJR1XHvoVYhCgnR5jKSZoJuFoysOWBxDz3P88dxs94NZseZOu7B" + "323RCF+z7FYEmoBj8duXbv4yoB1c7RUuBxWmWeV5UoQX/Cpt+xyFgK9vp3AO+SnifFVM3U4iFpHRkY40QPDpBLO4lh6HdNCoFiuuPL4XHlhvm5/" + "aI9xfXsB3yq7Q3GGeM4gU9y55mIPKsijjaM6fZXF41XBDszyXFp1LfhoLkVtXVKxnrpDBWkqAcSmdMpgEKo7iAMdaLBsUzAXe19b+" + "y6CQt4ViPtQFfrnylPIXa1dZFJQ9TOaeXcDAEA8IXfkv4fkc8gNfTYYCj7euqIngeSVEAUx5P1ZazhQUAYuVlA0c674Z6vrylce8LRYyGEASJfX4k9" + "5p7X1esIVWaGoF5UWhk7ZaM1/Wg6RfPE8nkx/Vz8AAmAztY/rduqK6lUcxAPcPywIjmMtgPYiX5mTB4up5AOXnzYaDAk9m5UHxudwck7QSKB/" + "nY3FxwIV9XtsbJTvKFf5BT8+e6GLbhAvgGeVR2jZgsEH5oBHczVMo5cfilnhRyntJaeeWH+" + "tP5CeB6yS2sYiEE4JLK7elNKMeZSxtD7DfV1wptoJRyEhso2OU/P+tcGvFQc9whYM7nMf/r6X9TmXMGlg9KCMDQAlG+eSK2kTQ4NM/" + "uh7pWvVL4qLn3PJjMvNWvEtg04qaUNojoo4xq2PC7UopHdcQy9cY6VqqhdGsos4OwpntHvAuegN6RnpC7wlIs0XCaS/ahJfEk7/" + "rVPpLpeHNOGulkD1DFHz17556mkVKyk+" + "l95UfBrd88ZP6dlVRHRucy4rwYHUA5o2ECBBzEoQOl7gvsIr7VHXgcvZV7r51H5MPReQkVgkfLLu51MfU7cqobvj3VqFZbSw67eVtMr/" + "GlQ+HSHzZV0pv9TL0bNHgaThVfpAz419Cb1VUzw4vOEF4Ei4Nj/ykInyCBGu1hEUa5p+M6iV8UJqSq6/" + "sg4A64noY4HaqOx+oEMbcgjMIdi6QUd9SYST5oX9iHgZyq6IGVox3g3DqQhgRwCUoqikGI37ARzi2juBDuKF68DyYX+" + "HyG2AdQ1uWqBD3rr57GjGEW/EQJQWsr/Yx/3uVxGpkTA7gTi5lnopVw6UyYTA6UdwxVntdvRI2Zz0VorSk3VlDUUh6ffc0Yoi/" + "ZVBnbm+" + "LgEmOqqgJO0aN4P4yP8uVY9RGBlSGQoIPVtSAeWvJ6tnzvqHzHFTXN7rYZsJ9a7wkrmdY3p1CU2iEkivGiSyXCPDtRRvh120PavppHEAYdTHnZZVzt" + "HOoJ2BlLhVWlJEbq1ccvY9og/koWzFdSs+gFbvHNEXZWd89BYk5QXxjIW53iH/Vok7YQ2L8M1XPts7sFkM44PpiyczCY/VY8BoDoM8GgmJ9ap/" + "FLPZYl/" + "juaRHnMybCl9I0IaBQLWpgxWQ3KCtbD0uxqm6bRvigsK2ulp71AikglplXA50721ZIz7G2DYurdAaMiwXRjzVl77TBm5gp1aLG3JjgXh3gXrFTGB8R" + "nKClXlXawhEjOCuvB5WrT42qAyFjjlphIAfENwY5+qJz/" + "7gq6kDmHpmdryaw0knHzAnmnjKKn3zIYU5C1t62ZOFGNLB3zEmuzrWCqqhn6HF1BJYLq9N1kH5SbDwedvKFVekK83GAgZJFtIMur6FXFdU4MXHoR01" + "cnLmtKu4vq74nu70Ts2yz1Yv3WFOUNHx5pIvYB/f3s3wGpwuv+nwiDnghYSXaLOtELdVqx+TAf4iZNXMdmpz8AAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle \\rho_{L} = \\frac{p_{L} - p_{R}}{u_{L} \\left(M \\sqrt{\\frac{\\gamma " + "p_{R}}{\\rho_{R}}} - u_{L}\\right)}$"], + "text/plain" : [ + " p_L - p_R \n", "ρ_L = ─────────────────────────\n", " ⎛ _______ ⎞\n", + " ⎜ ╱ γ⋅p_R ⎟\n", " u_L⋅⎜M⋅ ╱ ───── - u_L⎟\n", " ⎝ ╲╱ ρ_R ⎠" + ] + }, + "execution_count" : 6, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "rho_L_sol2 = solveset(Eq(u_s * (U_L[1] - U_R[1]), F_L[1] - F_R[1]), rho_L).args[0]\n", "Eq(rho_L, rho_L_sol2)" ] + }, + { + "cell_type" : "code", + "execution_count" : 7, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "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" + "eU6Bd7lsbJ5zLn+" + "jemgD1ihKsoHYThbA1o4m7dRAghOl2MBdE9pHAGHI8WET1EO9bhFqKOPCaUw2s3psJYEwNQUV2pUwNM3fNEXplDGBzYDHOkk39VmN4/" + "JqQOng4nAIwoO87xQ3hVbKOhnYU3g+Ofcxo9GhKaZ22QoTgdX7crPS6Efa74BD8a1DMA3i6wVSPlp/" + "L8l3Fiq0gcUOAohxdq+LcTO6iFO+KTCH9+A1eoQ61J6b5r3az3zEKkoPW7HfyR+Hooj4mwd4H+RADJ9lLme4WaTli3DiSgvCg8ouJS/" + "w3DRw14Q2HhABeSGPCdbn1sspwIQEmKCDIJxMYCwR7lOBQVliNvsKwQoiXRf4GMQGrOyDotCdeOrM/" + "e3kpa+GnwH+msgEQluVh0MfH4jXHeFO3he6T6VTgnI4KJxWZ6ivlFt5in+FrPiWAk3KsuKEJklUfVDlB//" + "PSemMHyZhDmGcKL2k5ODfVDquge9Y0q1+6Bl3Tnh5Oe94zbNwjPIefMpXw/9FeB/rvST/" + "WfSVxgVx9Il5yxy0BeE553KK+++qN5cTjPk8TlGLyoswNgJS/" + "dxZYMt3MRdG474Jrq6JfX0f87UIViorvAhZfNznAHCHo9CqxywYq8eEpFlWFn+IbeLelwda4KsGfwrEd/" + "ClGU4IM+jfDpVXewaFw1DZc6apXS1hbXUpHp4Et6jFLXS/NN+fqd0lvjMPni7Qp1HeU8ce+K8+mrJpkVXxzMfPdLHYbKxD4iNtFp/" + "LGe4nqse2BQ6xHcSVxgVNAhaXF4+PeLf7K8IiNPgETbMygdiR4KvquNqElWL7CtY2BiftZXAcdG8Gqx5NsZhFRJYcyMNqKAzsJJEB/" + "lPybEHiS5aXpXfuws2BAeg8BvCg40obK7T1dNFulXxXuxgLKKSXfTxw3vdR5qR49nBK8+Scc5m5mcuJMKfVliH5Ui0vCpRhK6GBuya0wYCIyWR/" + "pnvuE4fYzYqgp+smxIN7pifP0tEwOB+MKCHiX6kf+QqL+KFVjJJD2VYe4cFypH8tukR6UaaVn4g+UBloiWuNdudtz4uhXFOlmqfv9fnafGdlzqIH/" + "jA2CNtJrHTfQ9GfwHn/iRYLh1p7LAnuznyP/" + "FpiLjMGcuWDEgyyINbzk+7UFUBh5CswWV4cs3d+G5yk3HWSNxIhgkFkDjawT8J+QAovFJcL+" + "DSdMG4LgAl6KeCjo3m72OBE8LcEvvIxIGhbr1WjPKSTz/" + "pyUBx0QRk9V7g1GBTHoMeFMElxKJ8NSgYzZXtBeTt96M28v4Q18J1Vchh7ujNumDv5+Gg447xvSHGOQMfFHXlytrmsTjDn760zkb9P9WyLd7xN+" + "XiokheG2+" + "7ChywCGvnEw2aVkvqGsKbTrPxyQIgOAgyITAj7OYOZT0xUPQgABhwrVdx3bCzbYKCtnMwJikJ3BgL7G6YQSGNFU3qPwBQFebBmAFZhnFgrKZ5mZRRy" + "xh/lRUg91T1fEUEjTjNCZ1x44eRQWjYJc/KquGGa5NlVUPRaJd/" + "VLvjKQo72tazphEHO+4QYCwafiPYl+XTuuQyf+ZtyTjb+VxfygX1y5jWyo6MoFVcrL1SkBcgVoKXsNquURMgllAmMMW0eqHeOH7W12e/" + "K8SsNRdAog/w5z589M2g4AcYgLw30LHuwdkob+t8oY0ehCK8pNmsfiqevniGFlbej91l1MpBpDxPnma6b/" + "e8k9WVNfH8pWqYAbVvCIk103qfUWDTcWCsZ1nPPZXhdGo+lOGuaLZDt2e5FeWGJyd1k60MSt2lLKe3n3DDE4tTQrQKDpuX26+" + "uIhIxZXqZgQlbF43bDghsSUCg+0m0116pGacS38LYy1D1w9B6rkDppM8+tfQ/Fs9pjdWerfKzDJzwrrbcfSp8D4Fsa55x2pGVq+I5ggDY5f4h/" + "D1LRDHy492wRQnQAxe2Z99BgMf4bnY+U7fzW8HT2XO7U2hOhti5RBwuf/" + "HCFK6Uemls0rrRXYgAm9doEj7WxeKfNSkCwvCtmSCKVFwGOlQOwv8Gd8viUGXys0sYAocapoRKtWG3hCjoJYjsfdDdrDCFJfXmduG5fKL7Zn4tl3yh" + "+aOVX3T7hzYV5NY4lC0AL4avhu/GWt/" + "qxOm2cYxnjzmFsHHQf6ucueT+" + "BLmSpAXjR2SMW7Wt5eupcHmxzHBNL1IFssbnc1HnXhDxQosBPisS3PnmVUkJy6TgNGqwbTGgAYcM7WrZHdYxNfpWG8G4EeJJUE8TnTL0lWqEgSm7BG" + "vzkBUeKB6V5EG4TpDwCDPZciBYnfMi9kR/RYTG+CxfCgj2FKeC8n0Kl8Ty4uM26D7mX5Ol49dNyqE1LyAsqQ1ak8zk0wJVSIEP5R8T/" + "oAvhhkCb5AYrY7psrNpMWy/dXlMCrKCautWW4mqoliLCY6vFh6QsVk9TVxKPW+C9yiCk73Wxv8jhkVJeJW0DYv+u0Ufn/" + "TJDqCOgr8jTZXrUg0X9QiEBNnaOT/p93IQ80EcB3E63vK/U169F4zXIsFZYXdtgM/" + "woqdLJHUufeg94Yz0H3XFREfeygIB49o8Q0Ax6lFPHTaA4hwUoEHnivD+RlqJjZ8/uRJRrLs5Cn/" + "3ITp9dKY2zDRceexa5sB0vub8cKB9ohXVk0Pd2uqVPvQdrVbi/" + "1sUxf1aVfC+u5brTMxbVweJ1Z9BzpW0ii8OyFHDeL0vPrWNjDr8udfKuFOlxnyiAcNOFD/U7XVN97J8Q7CtkpjjWEasgrJnOSmgmSdg/" + "YiN+zD3F4uEhq4Oya/3vpKypN/" + "vovL9Z1l224ZrDdnimOJfdUprADxGRzUeORftqe4Beog8uHCwXsyqxZjgosgRAexN8RXyqHzcdBzw42JHyCmsXS+" + "uV4luWleIcFqCA834BIu4HBXO05HYPFHj08WPxS/H7Ic/" + "EnmrSBZeR7m4tDdBM9GEPDuXAu0O8Q1T6nJGip4NwYnFxUAHF4rBSCjjvV8qYFTVLYyS8fqJ7rxx1pVTBMBEy/" + "wRQRel9ZBWNUEgoJlyeHHF1RbIP1h+c9zth9MxuanywuESGshfc69Z3910dgZ8rO6e6IK5DmQLmYmNFdPILs+UqPHalFHDer5Qx126WZCYHkHgxmK+" + "x9Cok2ulKCSpMBBGT/QhW/j9HIk8suZ9skUZ2/" + "Jq9HIedUMB5vxNGz+smC1QOGxUPN6QoXSml1JgQFlHR8ry06dZSP704HmzfROvP5SlbpIDzfotcPaFPkplYSSik3q/" + "KpOiLR8JVmNNTCF4sA4QvLqtBk0t5dgNOi1FWM/jMlTOa2TNsigLO+02x8/" + "TOSF6iRybLg85BByHgfRxegAyfvNAdBYW7qvUl5lObKnwcFbajw1PRsfpGWTo4BZwCTgGnwAYp0FJKEvicnMLMav6LSGFMr//p4o/" + "hGm2nMAoFxUUZ/ITvFMeJKwengFPAKeAUcArMosBdVopP+/OiaAq2d4JyagAFpYsXFPkC9KqsF7XHX75qOOUBp4BTwClwOxRolJIEOZYPiic/" + "MUU8YCeqjk/HX06iNdZTmnDNsPry6Jr1e91OAaeAU8ApMI8CjVJScayd0okpvmNW/" + "NdJxaOwwt6T7lUgxeF7SlUU88xOAaeAU2D7FEiVEgqmZfVIceCe4+p8EiKmQaFWGSKmgMrPUmZTcN9Snqicf9V99Pz+LfXL2+" + "oUcArsiwKSYXjaTv602GPIFpGxd3TPMxDjeOGJv8cuue5QYnxB24+KQ7AZINphLfLxUFdIM+" + "jnRZwCToH1UEBy7INa81LX7wq3ziDUtNIsJRQMwPtI4bPiCnMC70s9lxQSeYv7SbExT3WfZUGBeA8g+vCBV+jUsUK31n/" + "1kcUNpzRXAWqP7zlGTjhvVjEkN9MIjSe2gHitiENzsw7AmVJCwYAMq2fqsW4UWckFx2fJX+ty6KGA6IxLFMb9X0+WzUSrr6yY+" + "DCrK4KVcdV5szKGbKQ5Glc/6sKgmfUHn8F9J1qgYCZbNqoMoQq0ytAIxfG/Q5hxDv0UYBUB4/" + "ZAJ8aWuyf7x8I1U5w316T+tuvGSnojGVftxruLhdhPejeFRsof/g8j5mW/" + "iSAVP9WFssLqcuihgOiF4oZOfHF8D8DpTbec18lp5806+XLzrZKc47wBrxdVu/" + "HuVAhlArSsnmNU91cV4d6b6uLrIvAY3Hbfw7SdkALXXd++" + "5E5IsNpuOm9Wy5pNNAxZ94fmP96zyQfiUEoPuviE0F6EZBW3RResQPbJACxKgP8EqaaXymAhgWMXloP6i3to0mJH+" + "RwuSAHnzQWJvdOqNMZ4v5X5z9mD/EtBvVTBfYdwdcHRS6LwLUCIGkD04hg3/57YfB/" + "wmDLpF+XG55mqFdok7OvLBN2gVwvUfxQz8UFp6blx+Sr8Slf4xD1h5eF0IvQ2IO9rpbn1ZRSZdy/yBlSi7Sh/nDfziL7DUuF/" + "lNTv6Upph0Sq7TJCkq+km+LGJCVujuuD/aRGwdU25AbzQyOjW9p8FJINVqz0H3SxP4klGcx8hbFQAfL9qutzxbHywrInrrUoUDx8Yb/" + "TBv9nCoOD1xz2sghQdydDH29AMMgf0dN5M5nMu8/I/OdfJyafxMN95zBMAZQIgvAkEFMQuEBJSB9TNvSr/mIFdawZBqfiUUDmY8ZyRKEALxS2/" + "cp7PbNRirX0S5IfBcNKPgcUV1r+oDIoqeqN1hzx1p5FlyJv6KfSRvmjPNDfebO1gXGG/mis2Cfq8HBMOoXrSmmEESJq/" + "m+JKCkI3RG4I6jCgRKYNJKvSVZeBDJHKxEiAGf/" + "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", + "text/latex" : ["$\\displaystyle \\rho_{L} = \\frac{2 \\left(- M p_{L} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + M " + "p_{R} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + \\gamma p_{L} u_{L}\\right)}{u_{L}^{2} \\left(M " + "\\gamma \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - " + "\\gamma u_{L} + u_{L}\\right)}$"], + "text/plain" : [ + " ⎛ _______ _______ ⎞\n", + " ⎜ ╱ γ⋅p_R ╱ γ⋅p_R ⎟\n", + " 2⋅⎜- M⋅p_L⋅ ╱ ───── + M⋅p_R⋅ ╱ ───── + γ⋅p_L⋅u_L⎟\n", + " ⎝ ╲╱ ρ_R ╲╱ ρ_R ⎠\n", + "ρ_L = ───────────────────────────────────────────────────────\n", + " ⎛ _______ _______ ⎞ \n", + " 2 ⎜ ╱ γ⋅p_R ╱ γ⋅p_R ⎟ \n", + " u_L ⋅⎜M⋅γ⋅ ╱ ───── - M⋅ ╱ ───── - γ⋅u_L + u_L⎟ \n", + " ⎝ ╲╱ ρ_R ╲╱ ρ_R ⎠ " + ] + }, + "execution_count" : 7, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "rho_L_sol3 = solveset(Eq(u_s * (U_L[2] - U_R[2]), F_L[2] - F_R[2]), rho_L).args[0]\n", "Eq(rho_L, rho_L_sol3)" ] + }, + { + "cell_type" : "code", + "execution_count" : 8, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAOEAAABBCAYAAAAnr8OUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAANGUlEQVR4Ae2d25XcNhKGWzodwKwUwcoZ2LMRWM" + "pA0kYgOwP76E1vc+wMbEUg2RmsNwLJzmCdwc4qA+3/YVAwCIJsXqcvrDoHTaBw/4lCFQCS/eDz5887p+Mi8ObNm1/UgufHbcVftas9D/" + "4KuW9tBPZrV+Dl9yOgAX+lFF/6wO/H6ZJjH15y586kb0/Vzl/" + "PpK3ezBUQcCFcAdSRRf5T6d+NzOPJLwgBF8Lj30xM0T+O3wxvwbEQcCE8FvKqV8KHKfrbEZvgVZ8AAr4xc9yb8K2q/6lsgoTzSeQHIVX4maWR/" + "xu5nwnj1+Urud8JRyLtjeJW1a4q/4ncn1apX/sR6MPLhbAfu7VjMUVrmhDB5NjiB7lnSvOT3LdyXyocBr787KpCpPuX3Bfi/" + "Sn3MfK+0DWR+JT1ndz3kflYV8r4XnGfIm/" + "QRekph3a4EA5CLCRi0nou92OZZTNCqM6jNV7IoV2gF+L17koqnsHG4GWQIizvDuVRmkGkcmhHS1uJz3khAmcD/" + "Df5aQP0VH67iY8Ufi9Hv37N0tNWNGlJCGqef6c89O+tHLgMIuWhfY91tXYMyrf1RMKL+8ikmywZw2RLQogJ97NAsIPx2kA1XHYApsA/" + "IgOBrWmslH6Ch4H/" + "rsynemoTA8KPsCWNpbBpRMxPBMyIdqd0xtQVftmHMm+WvO1VnVfivtYVE9hpJALC7Ue53+Xey6V7tBkhBC91HMELGkHXhrlGfEHXFla+" + "cvBa1JwrWok14RBC4H5R+lqbaaeZmJTFkQcasiQmlFuVgSZDi1IWZm5N6BVVJTRyaw1bTenMLgTADxzTvX/" + "YlfJC+ZiACBSDOglZ2VcNTLQOA9nSl0lmhVU+WqllinYVqvTMmq304jOpoJ3CrBrDlJ0LpYKB6AvrP4QODBDGVpni9dFL5Q+" + "bQn2JPK4bgYgfOHLfAm1NCL9S5xHAj3IM4BYpHj5p0BYAlZt6Ci5CaKuWKdpVcmxTrR0IFoLEgt82XehjEEorT+Fww42vK/" + "3DIbCDSHkQWvI4zUcAHF9aMXvzbOz6H/" + "U3zURF38MOlgYd2hBawxRlQN+E0of9IGxMHCWxNmPBf2iTpJYfS+" + "AH5W0IaFlBFmb9OAgLlUl9rHmZDJjU0MBnJcAr9wEcwTNYFZvRhAKVwWDnaWFARJ7Yd6QwwmHmFiDtxBtrst0V1vEb6+" + "QogQE6lDimqLWDwf6hrxDlo0+v5R7Jn2s+zG36yG7dkLYgtExevaSyWO+wkcUOL2YxayDDvTfvqUTeQx/" + "AkfEYaG+eDVwZsDaT26zMoDSBLDVCnn5JeBAKdmjHkLU35YkDhRuJgKINq4IkPmtAXIPETxsDjYjuAPjcdkeHCYu+YUnkG0ho8Cvx2Igy/" + "HeExacN5KF9H8Q7pNGVbF1SG8b2gYmGvjB5cw/" + "AiaUME21tba6ogOMmhZC1UtByuv4hBxgJCPnRCGEQ6AofMGvrMLFnEevBr7tKUN3VFzzFZ81XI8xm2l6LG8xT/" + "kPvEDKwGGR99FaR5cAzjMEzkeoL52ZiIJyYroNJ6Snr33KNMg8UgHauWRNltil94CC+MakpzFFEeMiirEBhJtXU9n0lwVZYn9TRMGMLLJuNre/" + "MbFCaue+C835VTwBeV+qukuIOCUM137GZajeY0T/M3JwMy5oADF5n5gVG/BY/q5zYB45+auMEq+E6b3fmb0xoD7OIi/" + "UKXMzOcl3CbMQMZoKRm3wMjk+Kqw2cOTixIzZ4V3RORSvkZVAFrDrKRpthYZQTDJof0yzH14pAQNewNqz8sddF+qC+" + "0i8E8FVHA8ARPAPtzXPhV0Ap10UMCviYcuVaBH5tdhO7TcrPZgRrmrKOMjE3uWG2lAlOOBwmrZ72tTATHkx+uJbWinEUNxhnEq9MY/" + "tgyxYmc5YFCBfWFabo33raiiZMk9ImNKE6nD+LadiwqwhoDcGJgwP+oBla6TFlWa8x4x8iblYC/" + "1DiE4vHKsD0apH6BF4MSAZXoMhjAwrsaxYFAx5r4yTwmNEHtDyPo7HfgAOHfGNKwRYxKSVM9q3oC2IIGAYBMzGDH3OUhXLYnJEfENL5lfgMCrQU6SH" + "iMEtf6fopcIof8S0tZZG/k5S2XHd2pj3RCMzorl1d6zuY2QYSA7FvM6S6HlR+BPpa1/vWkLP7oDYzqXAkA07lBpVYiWysBcY+sS/QI0Aw/" + "6oUb3K60WW4mqnNBHTeYGD24+" + "C77y15NOVNu4hxHNXBIOXc779yaKYb8dKsqvAqRB1yO7laHxEo4tFqpWnf1Z7GQMwS0bfZOGXlDfVO7cOrogLuSXXSJp0wYqxwTWPvooWQzq5JAtJM" + "KQMUQesSiNrgndI8tubRzgx6NDHhxvpDfNaoaCSbjR/Lj/CiqToHiOIPEeViLeByQqAaZn0eWfpju2EbbiGJ+FgLWC1z2hjKmvAztg8IE5g2+qAw/" + "Fu5nfpBmeWmFPcEHBM9TD73TEZAYCN4DBxAb1G8GeXNaqU7xFA5CNbHWB/" + "JmQSuFGYw5MR6FiFlrYLjxvOUBmdgk0nlhDWPrmE2pyD5qZvwB8KHSOnpg7WD9SIWBMsElguYcZhz90qqe0ofrJ2vY35rM1ocC4l+" + "MvHaRL2TH5yYZGxJFPLsw6//LIEAQsbTIggFApkTZnHXeipPd8hfaiG2wXeV+tCQpdBjbg3abKLMHrK+UB4U2qBrWV+ILH/" + "UVszVoSZrmX2t8GJ9UP+YkFu7wbHhCG5pRexcEy53W9m4gGra8KluzqBBeldE+1f5bbb+" + "mMUiEDUzkHUJkwGTwjdymD9om9mDX2UwwaDBmOkh2sOjc+" + "XEEyLP5Gf1PkS8wC1pRsPGNaEhMf9qQsa6MAmGQEcrda0Tx9QahNsGu66YNvBqsy78v5M2psMcNfNJ3nmkMhlIQaCpQ37r+" + "7yCj5T7PvqgOjonQNeEC934eCMRtiAsWbEIpWnJjD3ai/" + "nHTux3chwMY9as8u7g6JZ5hlkI7Gfl9swlAghbeVSBSYgmmkusWziOSFq2o0AmAcyrnMg75t3BPK/" + "7V0bANeGyAJtZhvbbSWAwGVtrgIlV1jZbGkWpvudivJZ7JD/pjd7LgyZlfXjOazfrz0VdH/hfoy17PzXI/" + "6cSORvCVGRDZMgzpb2NUDkIMxsrtiPZm94jzwsBF8KF75cEhaMINBIH6Bykfy2eax8B4VRHwM3ROi5zuLYJg1l46wI4B8pt5HUhXP4+" + "27qQc7QlDuiXb6GXeFIIuBAufDui5rNzQTZEnByBXgTCEYUGzpVScfZkLyQ2nm1TPDN65ys9vTVsMzKYpG6KbvPmj+" + "21nRPyECpP2LOhwMO1SQjFQzg56+IRqUVJZfIUB+" + "daY4gHkxdvy5gGDEgLfmaWDkjuSbaMwF4DmvOkDxEEtsBvC0DgmXnViFJeBIgnNxBeDpFHfbZO+" + "VsPs6qMsyf1i93QKmZn3znvwOIIoAk507IB81Lhm6IWBK3khSTKN/mzdUUdHnQENosAmjCcYemKsLE2zE1RDonh9ZlWaMq+eEXfP6k/" + "1e933n9LvEZHoB8BNKER6yy0YhDKyMTM3IlnmjKyGxeEd5JZqXJXWxOq7LP8fmcDWQ9sAoFcCNF6pbAlLadBzQZN488NxbPnEydpQuWfJLybuDPeyc" + "0gkJ8TNh40jgJ2LSRMMPlP9FxLAhJakHfWGnmJcHIEHIFhCOSakNdt3kqgeOiYL3khWLwwyiswPP1hj2PJmyhpysSRR+" + "lZR17rOklD5mW53xG4dASSEEpg0HK187caz3BBE9ZMSp6brO6oWka/" + "OgKOwB0CuTk6ChMJbXU9KD6bOcf6bN2oPnhiR+AUEEiacExjJGiYp+HFVV35eA3ZgwmqK8KJmerkCDgCAxDw9wkHgORJHIE1EZhsjq7ZKC/" + "bEdgSAi6EW7rb3teTRGDSmvAke+KNWgwBrfHZ9WZXnB3zJ3K8YeNnwQJiDXIhXAPVMy5TwsY5MV/" + "vDkdPUSD5n4jGn86ccRdPrukuhCd3S47XIAkcx0u8O5r/" + "ySXfMEUon8qlhy8Ii4+" + "gkmf0a2zK4xQRcCH0oZAjwAvd5YeKMUchjqASIZByHEchnH0PdKQ87qkj8LDOdu7WEIiaDUErv4uDxoPsGeK70N1v9bHFPIH7DyPgQngYo62kQJvx6" + "RA2Y3LioYzyjy4tHgFd4u/WrLxNXt0c3eRtr3YagUprPlJIIDE3ca1/" + "fopxJGvkgeE0DgHXhOPwusjUEijM0Cdyj6yDkcdX9ngssWaKIrT+GpsBNuPqmnAGeBeUFYGCOA/" + "kuWCIHdIXHQJIfHU9GIXXX2MDoYHkQjgQqAtPhkCxHuRAvvPPLAsMEFx/" + "ja0AZUrQzdEpqF1eHgRq8NpOwso6EWrkEd9fY7vDZdSva8JRcF1e4mg+sh60b8/2dlLp/" + "TW2XoTGR7oQjsfs0nJcxw41tFpXJyWEmKtDTdauYpyfIeDmaAbGRr08lvZMwlWeD24Ujvvv9v8BNcNltZu3CcoAAAAASUVORK5CYII=", + "text/latex" : ["$\\displaystyle u_{L} = \\frac{M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} \\left(\\rho_{L} - " + "\\rho_{R}\\right)}{\\rho_{L}}$"], + "text/plain" : [ + " _______ \n", " ╱ γ⋅p_R \n", " M⋅ ╱ ───── ⋅(ρ_L - ρ_R)\n", + " ╲╱ ρ_R \n", "u_L = ─────────────────────────\n", " ρ_L " + ] + }, + "execution_count" : 8, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "u_L_sol1 = solveset(Eq(u_s * (U_L[0] - U_R[0]), F_L[0] - F_R[0]), u_L).args[0]\n", "Eq(u_L, u_L_sol1)" ] + }, + { + "cell_type" : "code", + "execution_count" : 9, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "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" + "s085VPKvsU21di+/ZPnUBHoZbLQ21/FKuzYVWh/" + "ld8bsTKAYIg7trImByxjaLloI7t0q9TdXv95GSP+uRhUknnQQtKytYNmMbdd0eZH4pPx3wufLagHyX5Vlj8Byu4HAQz4FX+" + "QwM4kqaAPikmoyCbaf87MFQxpGL8fQzc0ycT3UFUxeRSoNAx+fZYKdyjjRZxUEfbZzyTL0lnsGiRosdFUfVWe0iVg1ekT/GKgcrrA/" + "3oa+KZ+qNdbVojXG1+J7tU63CKwM9aajiN1ZN30n7sFHUFX+" + "4Zym27kfQ7f8aYVWedxCFmZDMRBFWTYprOu8YGMU60RCs89cUy8q2RAedgw2yTqd88MREhpkgTGAxMStUeGRzsw8tMfuyPPFAJz+HK/" + "yygmVPgkkIgVHS6Cirmfh1Hxz57D7xqZP0jYvp0Ci/" + "1n2Y3HTPgoC9m6ANxTSsqhECttpW8HKncqAj12Spn77DQgn60VRKPDMpHpQm9AX5jBGutM+QBDcFjrcl9/" + "gVjbShYcfiiL6Oq6WvD8+Ue9TWiqvFt0+foq4+" + "rpaGvvwGHAuEdMUfbgqJtxoF6KZtBIGiMIPFhEsLbMWn6RUczdHpz5lS8sqM3iZeg4eBRCdF2KClhImgSRBvFM8EFiax9JniT66+07Qrua/" + "B9YF4YSV7hEfGI/3C+kp4pDxMxq24mId2AMvGpKS0aIwtrVFxtA8DMbhSGns2wKfPvsnyT6HFToFjRvb5oDAMJzcLKWvpK+FF3i7N/" + "aitlbYW3z59qsDSyahaGqr5FbY2H7bmnq54o+7Gbnbgh/0T+BQoqK/cpitLVuphEpAfVhN6nq/2yDPUYb/+b1chqrv4gRrFl1bHFMMqDdq5v9gp/" + "9q/" + "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" + "WbdQo7E5+fz32mc/" + "H5tbbbGxEvTxHYF4E0FDMoWGgrQQBEyMxZR0Ud2pliSC6yHSlcifbQ1HZJyfFyJ97C0LA22xBjeGkOAIXIJAKFLSRXHA02ocGO5vzr+" + "U3Akf3mLtwF2koyn+RILqt0n8dAUfAEXAEloTAvYSY1ksMo7DgNQkmZD5NhUnMh3byTvGtvEmZfusIOAKOgCOwEwRSDYVXrL+UcHgu/" + "x9dCAns5Lz2nH9926svdNu4RoNpYnSj9Oy7PJB/" + "keaSluX3joAj4Ag4AutAoBEomvwxZZVOapXijDs0lJLZivdYFU+GWUb3HQFHwBFwBLaFQCNQ+rIlAVTcP1E8G/" + "mfRAHVt9jNphce7FHZh7YwJb4lrHgzKW6Wd2dsOwh4P95OW07ByUXv8lKnwgTGp20RKvZHxmDminFfKo2buwQGLg7CF/" + "IxEQane0yL4OhY3ULivwtHwPvxwhtoAeRdpKGoYyFETJAsgI3Fk4DwaJkGhSHaCSfneE/aR4vnwAl0BLSfKhC8H3tP6EQgPeXVmcgfDEaAvaa/" + "JEDQ4lKHFveh4jGHuXMElo6A9+Olt9CV6XOBMk8DIDjyP42mNeeCJn3m947AUhDwfryUllgoHRftoSyUl9WRJc3kLxHNAQb/V//" + "qWs8JNgTO9WM9R7PhtCgnScPhFMX5f9cMwA35F+2hbIj/q7GiAcWBhjC4rkaEV+wIDETgXD/Wc/ZdMOuGvRf5CBc+QOf7hgOxX2J2FyjXaxU243/" + "WAPPDDddrA695OAKd/Vh9m78Q8C0lPtxn7o1uEDAPdTUnQQkrHqFDnt6fwlAedwtAwAXKFRpBg4eXYrKncupPo1egzKt0BOoRqOjHfKzP/" + "ntlBaOV41r7hirLP4Vxi8uqf++tmvoVEq+Bw1Hh+/Kb/6SskA0neecInOvHeo7GgdB4nUFFPK70h97iq5xuk/vvGhBwgTJjK2mQoc7zks1GM9E9m/" + "K2apuRGq/KEbgMgcp+TB/nc91sxKeOP0SjnZc25RE2v6SJ/" + "X5dCLhAmam9NIDYhP9Cfm4CQMjwGhZ3jsDiEejRjxEO7Jc0LuZlHDQLKnsYnxFs9lXsmfvrQcCPDc/QVhosaCCsvEqDhc3JdNNyBoq8CkegPwK1/" + "VjpMHX9q4tDJ0F4xDhOd/H28uarsEaF4ngN0VP5fvrLQFmhf7NCmtdIMsIEocL+Se5KtuQ8jYcdgSUgUNuPbZ+E1wshKHAsmh4r3NXfi/" + "snSo9w8k9hgOAKnAuUGRpJg8I1kBlw9iqmRaBHP0Y4sH/CPkntsXiEUOs9YZEb/xRGBGINnu+hrKGVnEZHYF0IIBxK5t0iFxI87KvgWnkUz/" + "6ifwojQLOOH9dQ1tFOTqUjsAoEJAQwUWHe/b2GYKW3T2GQ/FuF8YOZSz6Cxo/" + "Xg8hKnAuUlTSUk+kIrASBB5HOlrbRRbsECCaxWrNYVzEevxAE3OS1kIZwMhyBjSDAUWE+GvduI/w4Gz0Q+D9kPWt41gYn/gAAAABJRU5ErkJggg==", + "text/latex" : ["$\\displaystyle u_{L} = \\frac{M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}{2} - " + "\\frac{\\sqrt{\\frac{\\rho_{L} \\left(M^{2} \\gamma p_{R} \\rho_{L} - 4 \\rho_{R} \\left(p_{L} - " + "p_{R}\\right)\\right)}{\\rho_{R}}}}{2 \\rho_{L}}$"], + "text/plain" : [ + " ________________________________________\n", + " _______ ╱ ⎛ 2 ⎞ \n", + " ╱ γ⋅p_R ╱ ρ_L⋅⎝M ⋅γ⋅p_R⋅ρ_L - 4⋅ρ_R⋅(p_L - p_R)⎠ \n", + " M⋅ ╱ ───── ╱ ────────────────────────────────────── \n", + " ╲╱ ρ_R ╲╱ ρ_R \n", + "u_L = ───────────── - ─────────────────────────────────────────────\n", + " 2 2⋅ρ_L " + ] + }, + "execution_count" : 9, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "u_L_sol2 = solveset(Eq(u_s * (U_L[1] - U_R[1]), F_L[1] - F_R[1]), u_L).args[0]\n", "Eq(u_L, u_L_sol2)" ] + }, + { + "cell_type" : "code", + "execution_count" : 10, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAATAAAAAyCAYAAADbRIdMAAAACXBIWXMAAA7EAAAOxAGVKw4bAAANxUlEQVR4Ae2d65HcNhaFW6oOYCxnYGdgSxFIzs" + "BaRaBxBuvSL+mfypuBrQgkbwb2RmDZGawz2ClloD0fBpcDgCCb7OY0H31vFYcg3jgADi4u2JwHnz9/3rk4AmMQePPmza+K//" + "2YNHPEVT0fzFGul3k+BPbnK8pL2hAC3zg5bKg3V9yUhyuuu1d9BgREXF+" + "p2L9mKNqLdARaCDiBtSBxjwMIPFP4HwfieLAjcBYEnMDOAvOmCvlOrfl9Uy3yxqwWASew1XbdbBXH/" + "uVbyNng94JTBNyIn6Lh7l4ERFxXivB3VySFczL5ky7sZGhpz+X3SfcgcrP9/Iifrm/" + "k5vmJrpe6SMPzl9H9Mk0rPxdHoIWAa2AtSNyjBwEIpqp9iWyuFfZOF8T1L10QEs+poL0Zob2Qm3jIf3R9xbOuH+" + "WGJHlVw8UR6EVg3xvqgY5AjgD2rxaxiHQgK7StL5LoP+r5N11hy8ldYcF2Ft12EEDav+X37yTtf+X+Z/K8UzjkCblx/" + "0UXRIhG+EgX6QlzuTAEXAO7sA4/sbmPRRQ1Az5bx+eVvPGDcJBnSmvaW0pYENv7EOPuD8S0U/xwj27K/U0XaX/QBUFyD2Xo/jPxXC4LAdfALqu/" + "j26tCKIhkzIThdlWMAuSP7auL3UFLcsC8cetu5FbSYpoeqQN8Syd7tjLyrgE3+" + "h6jMNlGwio7xlvr2JrGD9Iyy7qBHYLjP89jAAE8fFwtGqM7zUgayQHUaFRlUQFsbFNLAV/DP6NKC1+1O1p4+mOLSDwk/" + "r2B2uI3GjYf+r62vy4O4GlaLi7DwHIhi3cMcLJYk0gn0yj0kDlMABCy2xa8mcVZlXG2E8c3AzmP/Wc2t7k5bIBBK7Vr7/" + "qsvHB6TZ+2Ws8TmAb6OkzNQGyeXtkWaWNa6eBCAFh/" + "2L7F0R+kBTE9VRuSCwVykdbC5pcTM+BQhkvTePu9SKA9nVQ43cCW28Hn7vmVxVSGVIH0pnxPo0PISEY4+" + "3EEU3tOz3X3jVDA7TVeKc42MjYVkBimbamZ5eVI6C+LU0IEBoLWDaWNk9gajDbjfQ0jOP+9Mi+" + "1dUKZ0KhsrK6M2neH0qjOJsVtR1NKRs4IxrLaw41gZD+Ut7kOyRvCC+zf+kZo75rYAJhyxLHHyfd35btvAQCg8l/" + "EQis1IBgJxolFuE5gsXEQCC7ZtW/9brIv5DHaPuXsCNdTZsCRMJ6FxIiIcrH7F9lX+B/" + "E+OEshS3qzyiuawMgdj3KBPfyt1arB6urD1HVTeCwAQEgOwUo5IhJ1pBlK6cMBZ0afds+zai8aRrEZ9wvZI/5GMvs3Zmqbhow/" + "aO16uY1uJjk2MrSRyMuyeRl9I/04XG7rIABNQXjBFMDJgV6GcOcPBrZN+4tu1gdYaMGOANQZVNFjgM3g+6YHwnrzuAGDjHkAOkktmn9IwWbO/" + "3QEiPdJX2jqZkhWG0r72CsVMYW8/" + "WtqJJPN4BsXK5zIyA+haiYuGCwDBhINjBsvF0KQSG+sk2klONf4BEKREwJik2GwZxS3Mo01zCc8RliI2qBgcDLhPlx7Zx0NYxS+" + "gPl4YA73wxD7k3ovGTjamGwBQAy6GpYP/" + "BWAoD8szJEO7WW7DyW5vwG7uuFTa8bCkcbAtxUANTXPDhgOCTLjBitThGU9kpHfWibHu3KdNKFI4Nb44+" + "oI0Ht3qK05JjsWhltHAPtXOTc0ftmm18q+xB7/btk7HxQomYgEwUvg7wVm5754YtFf7YNCYT5Y+KCEhjhJMrSGOQKC7EYiweyAU/" + "XQ3RyM22xggjtFF+vVqHwsGEVwTCiqA77aCcQcArXilsp8CfurzTZfXZyQ9ig2AHt7vM/" + "IRn8Hh7QvpLSHr2uXPfoGqsrWJ8BwJTZVlBbJVlwvO+Rarmd30dgMnLhCPuH0pTtVUorCqKn6mD1Uine0Ispk0ZadFeI7OgkakuaFFIGv/Wp/" + "iruLQZQkkPBD7KD0LDEGzl7XiWfy9OipPiD2GEkzXdTfCrEuqQ/C2TI+/Zm89H5rHZZEXfjZk72HIYGyxUjD3G4SNdzL3MziO/" + "s4rKX8z4PtTwfYyQviDGZCpXXJvkTNAw0XX/XRdxmbBzaAaH2mbhwf7Fg+qJ9oaTgWZyLT/TNPGnrYfsX2hI5SCzPANWlrnyHoJTij82uhJ/" + "BnrpF4oYmL9VZ9RdedMWI/3OtIq3qP/Np/r0/js1hXdp/" + "hDITuEsOKV0af5p342dO+wEsrL0zE+jfi79y8oonL5hp5SNtzJe8cxrQdWFsIi3mPFd1Kv1GAhMjfpEiO5MFKTRIG4fw9aRY8wQL/" + "pxQzMo4ybBi3TShqA5qT2mPVpFu9pv4YYRg+ZD43nrsLS1AdKLk+GqO3mQd7p9NFLtw7k3/6KeYx6pT609WR6qdy9hZJEX8KD6ZqRhVZI/" + "4wFSGbyTUNwwJ3S3/i/7ib6pzZ0n8i/jUpUbXY9x9Eksd8oT2FBcbMdixnesD/" + "1lczXb6e0LkACbFSV0ShJG5zSTqvCvDoYkTqdT5XSthJ1pFNC1ErbSKH9WRLN/" + "WTgaBYOUTtrpnmoYNtj6Ji3aJnUoMXohf7BL86MIBPyG4ETeJf50HPXsq9PQ/MmKvAIpHsiTqOCB7dPlMALHzJ2XabbqD/oR8nqa+p/" + "ZvajxLUx6dzD7AhwAzFYFZYABmcmabZnkDzkgWfxbr2F/lceQST0ss3os2pPa8ogFweB/" + "rfLLlbbVfhIU0ooTsQCP1oo4EieIpSQqJkbAWHnRFx90b8hzZP5KHgRSeq+rLOs29O7vY+V/" + "3310V9q6XbVx0TV3TKtmISUOi6mdPh97CDQVerV2MLZnGd+xUc0cKBv50DwEJCBSScANIj/cEFfX1wFQjWsax20G8//li51l/TisoK0ZsSkebce/0/" + "6lOISDySNdQaIfhEBZNUJgQAzFKatrrBMrsuX7tfw+hYLv/" + "ozJf6f0TBjayqBwmQABYcq4GDt30LT5HwDsbLgYV+mhkB7PK7EdSxvfgMAYr87LfQIRkRCO8vlpBsI7YIO+" + "DhBi608EgZX7aM3M8jr2rrIhlDCg5GYLiVHUtsCQAW0MZKE77UbLID5CGJO79s5VDSMGXZ9xtLp6qAwGfYkTi8U7hXGE/" + "T9d1BGtjo+70SdoTaUMzj+WSXryhRg7RXFpKyerLocRqI2LwXNHWLPAYU5h3GY7ncNFTxqj1o5Zx7dwsXlZ5ZN90nwmArYdJrit+Elwy0lja9uLV/" + "J/" + "24p9Rg+1gX18VRQGEA0Y5XM10Z2nYQQBlNvPu1i5azBOqgvaVa3uNT8rZXD+SvBMZfCLBEiRLfRVLNPySu+" + "0tbrqpZHcHRCwcTFm7rwssHui51K7LqLc+6O1Y2nju3MHkxIYEyHbVnXBpUFfZUX5Y3BmXz93R3RV/VT/wRhR0H3jNDZ/" + "xbf+tYONvvbQx7MuRKd21hHpGbfHjN0+HLNqqA/Yol3pahbRGAH/G9yKQ35dB0JEuS8Z3A4qoHqegwcg1RIrygbDx/" + "tYER4AEPtQryghW5kXMRJ2H5whM91pEAVuTiJggzCi8feN04n524Bg1TdSK/tsywtR2dbwLEwNl2p4zVNpxs4dmx/" + "88oJfu3yK+bJYYD4I5hvdR9elVr+hfipvcDvIM9bzHDwAqXbu9B68fv0arYltH+SDCpzai/ToAgLqMIBkS/" + "WF3DboCFqlqA28fIrJgO1kJvJjLDDB+rauWZpLfBA+m5k7asvixncch+wWOLxiWxsk4s7Pt57v9YcVuGsVjkn8JgQ+6uJAY/" + "XkFXuTxcq2ANGrudlgbjzc0UZgY3NnUeNb2A7a6T34/HlRvwJpjxL3uRcENEA46WSQ8FMryKwRPYfTMN2bVa8JPMGh/" + "CBGtDoWAbbjzWmw3C6OwGgE9qNTeIKtIGD2Tl6nyAhMzyd/" + "3bQESeQFYXLqGewZkczYHsz94mZZVX9eEQJOYCvqrImrakbizAYmYkEzmlrzwlY05usdvAuFtsa7e2hrV7oe6eJkbs73pFQFlyUh8HBJlfG6nA8BEQ" + "HEwAVRpMLz1O9/vVOeaGCpQJQI5NSI6gWxUj5kxSk320zubD2f6c4Lny6OQEDACeyyBwJkYURiSKCRmXZmfkffRTgQIiQ15usdTxS/" + "Vocb+bPldXEEAgJOYJc9EIIdLJKMIYGWU9rELOyYO5rTMV/" + "vyLTAWEfI6+UxlfA020Rgv81measGImBExesUfLYETYlt5ZSCBpZpUyqH8rgy+xuFKgyNkHos8UsNVNFlQQi4Bragzjh3VUQWRiz2dniLbE6pk/" + "IPRKQ8MMAHiX68poFdywg0hoYbdVjclxrSCrp7OQi4BracvpirJpw4ml0J21O2dTuxUpARgiE+/" + "ERG7lFfN1A6fsi7hC81hIb4n2Uh4AS2rP6YozZoYdciCbZuEM6UP+BGs8P+BUmO+" + "XpHaeeCWKfe2ipLl7Uj4FvItffg6fVPv0yxE9lMSRQQom1TD9Y0kijbzjIN5MoJJPXjkIFnF0dg5wTmg8DIgjfk+T3cJCKSMfuXvfHfm6/" + "is8W0d7z4ITnpTdAK2UoSZ/" + "JfCVghfl8fAv5byPX12eQ1FjHYD2L5suwkP+xXPmhf2NM28fWOyUH3DCdBwDWwSWBcfSZ2Gmja2BQNWtTXDaZokOexPATciL+" + "8PpmjRhDXpB8wlAaGLW1KQpwDFy9z4Qg4gS28g85UPexUqc3pTMV6MY7AaQj8H+dTe9VIFrE9AAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle p_{L} = M \\rho_{L} u_{L} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + p_{R} - " + "\\rho_{L} u_{L}^{2}$"], + "text/plain" : [ + " _______ \n", " ╱ γ⋅p_R 2\n", + "p_L = M⋅ρ_L⋅u_L⋅ ╱ ───── + p_R - ρ_L⋅u_L \n", " ╲╱ ρ_R " + ] + }, + "execution_count" : 10, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "p_L_sol1 = solveset(Eq(u_s * (U_L[1] - U_R[1]), F_L[1] - F_R[1]), p_L).args[0]\n", "Eq(p_L, p_L_sol1)\n" ] + }, + { + "cell_type" : "code", + "execution_count" : 11, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAo4AAABSCAYAAADabVWdAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2d7bXcttWFr7RuATfXFSTuIJYqsN" + "JBHFUguQN7+VfyT8vuwFEFstOBkwospwPnrSCKO9C7H14eXhADcjj8mCE5G2txSOLj4GDjDLDnAOQ8+fjx442DEdgKAn/7299+lK5/" + "Xou+0ufJWnSxHo8I2E4esfDVvAjItlYzaXr8mbdvLW0YArfDsjmXEbg8Ahok76TFHz1YXr4v1qyB7WTNvbNt3Wrb+o/" + "On267JdbeCIxH4On4oi5pBM6OwAvV+I+z1+oKt4aA7WRrPbYdfW1b2+kra7oQAiaOCwFrsYsg8FJS3y0i2UL3hIDtZE+9ua622LbW1R/" + "W5gIImDheAHRXORoBlqn/Pbq0C14LAraTa+np87fTtnV+zF3jyhDwHseVdcgW1Kn3+XxT6/" + "qH+vxK8b8tpb9ks0T0z6XkW+4+ELCd7KMf+1pxifEHfWxbfb2y7jT1HfMUc8gHHVw/1/FG8XZECAjCKRiZOD5g5s/" + "TEPhWRvZlFNH197r+RceSG8apj3paoTZ24itiqfs/RQZdv9bxd+651ukzHegZgbwePAKNfZxtJ/vox75WXGL8QR/bVl+vrDvtW6nHQ00xH3yl+3/" + "p+N261T6rdoMxMnE8a7/spjII2Y86wgOIwRG35DIOsqO+FEhII6/oQYc/Kc/3Or5EF93/" + "R8eNrnkam0C+" + "n3R8qjgGkfd1XIvwKh5ZDCxf6yB8ogMZXyttMa8qFTlMRsB2MhnC1Qu4xPgDKLat1ZtGp4JvshTGdLyPDo8IDMbIxPERtN4rEQY8Vl/" + "owLNF+EJxvU/4Kh3yAQmBbEB63h0rozxbCPzyhnSdJQgzMD9YUlA873OEJFYEUdf/1DV4E17o+ruHy5t7nX/QQR/" + "+I8lPv8RSuy6bALlMy9+oDH35Vgc2cJEgHdA1yOwzXTPwQWYPsEFBxV+Vzaq9thM6vg477v+zjj/" + "AadsKq9rmWf2Xj5HMHTFXbLNRM2t9CkYmjgPBF6i4uP+uc7yAukQ4GmnKh8eLfRQESGbJW/" + "aQurHPGotUawZyPHj5lzPNM+UasvYuF6D6SsQdcg5hajyDug/PI0vTkMII9FGTLyJ1Jj7vr7xskn35S7UBe8Obmi7FM/" + "D9QpyOXN8bxV2bzV69naSWuNf+r9uVNnXp8Ye6bFsp4hu9lu3gAODJeMbSatl6o01ZTO0hGJk4ngC/AGXyrrxROreWNwti8AhVQeUOJvVI2/" + "pZbYNk8euN/YNLBbx/TA5DAiSRZfRS/9An4bFDFgMInsg8QPg/SAbtuteBLAaaElFV0rCg8njE/" + "qDzmAELktjCQHLwNkKS+TFT3Kuj9GuyWduJDCENe+9/" + "te8c4w+Q2rZSw9rotezlOx2Mv8wRN9xvtCmLqQ0mOnoxerpY7fsUzMQPCYScNMQwb6pAZzKHkET+PMsu7tVOSAmE5jNdlzx3k9spuUwMgz2ZtR4H+" + "Wtd7ySr0rO+R3ZKJENf+g1SBlGkvyGQBzIVd2qgfo4xAZ1+lU55efS7q9tTkhs2uGubVfttJ6XefxyDdtf/tc0vOv4AqW2rbFhbjVV/" + "Mgcw7vOQFeOGQ4bAMYxMHDPAjtxCkBiA2d8HaToISieePPc6mOTTpVHd7iPU7YRcsUz6G/" + "d13NwNxCv4bqjQWocS5hAoyN+flScefDkgvEqriJnODC43OtOXHJceYKofLKEXumWh0juL4/ZabNZ2Uuj8vfa/vgeMs+cYf0DVtgUKGw2yFX5Y/" + "09HOoZX47ua1OkA2mhzR6l9Kka3o2pxoV8FQddEDTHB1YvXkcCEXwzKgyeLX8wMguRjL2QY9I2uITvv0zjdRzx7bsgbAyjkZlSQfNqCvizJsmeutZS" + "qe5ZCm/c06p46eZqZgTu+jCyj8itu7gBGb04QWmFWyM9SOg/PHFuaKJVncOHXadXnOjd9VKhnkSjVSX+XQoW/" + "0o95RCfbrOqgLvBhKf+VDuyAe55Q5LqxEV2fO9hO+hGf3P+peNkC/T7LGCRZax5/" + "aLZtq+589RVYnDxnUfxSNqN6cWx8kArpHIn9Mo6Xtiop+vxhTnzQXvIGf6+U9ySMnp4fnm3WKGCZGOMdgJUB1nFNg3TPlypIV/" + "UQg+" + "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" + "77u23OMQYPHn1qnsDPb1ky2FN/" + "hDnGbt5mOds0VvUZ8aNvR79XtXAhYziwI8AuktTdSX0wmXybbn4fUoPyQICZbAvucOCPjmQ4Gc+" + "qYKyArBuFGZq1zaTn8RmnxZDjGeRCUTvyBzIOMRyIkBxz4u8Ygp0wad7rnSMkbeL9QXOPJ1TVl3+ro9N4p7eQguZPbdXKlMxWQ7oPtsMYv7Ix/" + "L8DTG5jjSWZLBBjf6FzERPG2k5n6bqoY9cXgvq/" + "79Fxj0MnjT62fbWuqUTyWpw9ac1aN8a5s5rG581yt+DtFA49+r0wc57GDuaTgaQvPV8iE8BGKE+" + "xD0uOnykOAGhL0mLLIFSRv8HJ4ogFt4fUNOYkjC2SNfVpTA3qlulU4qs4gMCEfMp1jWxwMo8C1nYUZnmqW/" + "AkQQd4hGXt9H2KTT6V12qDSIPLsnR0SbCdDUFo+z1rHoLHjD4jZtuaxm9KcheQ92sw8iD1IWSs+aHf0e2XiOKcpTJeVEp2Q9l4XPHyQE55Iv8hZ+" + "kxZiuJBG8gIBpovweP9K+EwuJ0qH792wS4ChDSvizT23H1QGfS518FeQh6CKuVV0vWFGotL4GE7WYe58T1a1Rgkm5wy/oCqbWse2+oaq/doM/" + "Mg9iBldfig1tDvlYnjnKYwUZY6LfbgNJIUB2HMPWJN+iUupNPUpahoD0vqDSGpjTaWlqc0DUJ6U2PHmaV+4kqeLuJ/" + "T946Hx5fnvx1uDwCtpPL9wHfn1WNQdJn6vgDqratGWxLfXEwZyF2pzYzA2IPItaGT91ng79XJo6zmcL1CJLRdy5FDkGBL40OCGJF8JIyEEk8AVMDS8" + "08wc0XgUkPLyL/28t1E3R/x03E68w7BxkI8WYUB0TyO5wHAfpFh+3kPHBvphbZxKTxh4batjbT3bMoOofNzKLIioWcgpGJ44o7cueqQRDz1/" + "Kw7zHf4zkGBvaP8EBG483sEAJxZckgDZRFrxapTDP4+qwI2E7OCvdVVWbbuqrudmPnQuDpXIIsxwiciEC6VHQjosZy8lxePjyGIb+" + "olupjTyMPfPCgR+yXIu8POvBYvlZ8y0NJosPZEYh+xBt9oz6xnZy9C3ZboW1rt13rhi2JwJOPHz8uKd+yjUAnAiIB/1Miy8MsI3+r6yH/" + "Yd0pjwTJgVjwcAvkz2EHCKgvbSc76Mc1NsG2tcZesU5rR8DEce09tGP9NGjz2h08f7yUm5dzl/7vWNEO14yA7eSae3/" + "Zttu2lsXX0veJgJeq99mvW2kVe4wILBnzShwvDVdw+CNDwHaSAeLb2RCwbc0GpQVdCwImjtfS0+tsZ+" + "wx4unnOV76vc5WWqupCNhOpiLo8l0I2La6kHG8EehAwMSxAxhHL49A7WGM9zbyUIqDEThAwHZyAIkjZkLAtjUTkBZzVQg0r+PRF4gnS3k9Cf+" + "k8UoHDxlw/0l9/ar+kunWwQjMhkC1VGTbmg3PvQqyney1Zy/fLtvW5fvAGmwIgYY4SueXmry/1sGSIQ8q8B48XrR6o/O3OhE/65Oqkss/" + "dEBOTwn8QT1/" + "H+ewDwT4z+" + "NYLtpHi9yKJRCwnSyBqmWCgG3LdmAETkCgeqpaRAxv4x905t82ftE1r0hpyJmuXyuOV5w8Cdm6hvDxP5U8FcuLlnmVSkU0de1gBIyAETACRsAIGAEj" + "sDMEYo8jRDH+ZQMSWbnuk7bGv2hUZ+KVHy/" + "Rzzr4W7AvdJg0AoyDETACRsAIGAEjYAR2ikC1VC3SV70GRedYNs6XDlmihiDmr0shPs+" + "7Cqikq99svoqesBJGwAgYASNgBIzAXhCoiGPSGIgg3secIEIo2QeSB+JZrh4VVM9iexwlu1lWH6WcCxkBI2AEjIARMAJGwAi0EMiJI0Sw5UEUAWN/" + "I0Ty67Sk4uP/fVv50zzHriVjNOk8JtvpRsAIGAEjYASMgBEwAvMi0BBHkbg7iYYMfogqFMcreSCMpb+Cg2SyfP2fyO+zETACRuBUBDSGsPLwk86xz/" + "pUEc5/hQjIXpiz/FelV9j3bvJlEWiIo9SACBJ4JQ//5EHgHY5/0n2JHBb3N9Zf5mc6j/" + "ZEVjX7wwgYgd0joHEC0niv82ZIo3Tl1WS8TWIVQfpc5bYctRvHxSt1wi86f8b9KjrEShiBnSOQEkeIIO9I5J884t88+poP0SwtNX+j+" + "Dd9BZ1mBIyAEdBYwzYYfmR+thU0pGu1MqPzVZK1tfWT+oE5i/" + "cMv9XRvEJubXpaHyOwJwTidTy0CSI4yEuoL2pxf6Pi+RXO+yD9yw9EHYyAESgiUI8hTPifFzOsN5JxcjPe0fXCOJ9msiUe3Lyr55/" + "5BFuSETACRQQqj6O+cPyKZj8j72XsDcrLMvbLOtOXuueS8s90QCjxXDoYASNgBPoQwEP0d40fW/uRydjnFZW+nr1MGt7G/5M9/" + "XODNnUZxFyrERiJwJO//" + "vWveAlZXob0sUTNP8SUXr2jJAcjYASMwDQENL4w5rBP8Hdbm+Sl7686Pp2GgEsvgYD6JfbLesl6CYAt0wjUCNzqy8ayi5debBJGwAicCwGWqL/" + "T2LMpb6P0Hbyd51xAup4WAtgVxJ7tUqUHOluZfWMEjMA4BNI9juMkuJQRMAJGYCACmtBZ2WBbzBaXe3kYEE+pwwoRqMki+/" + "TpJwcjYAQWQqDa47iQbIs1AkbACOQIsC1mq/vQ/" + "ihyUnyAUPGQYZZKK6+k7pu93rp+rYP9nDxFzhPkv+iIQL43ShvyJoso43M3AhB7PI+" + "tP6zozu4UI2AETkXAxPFUxJzfCBiBKQiwv3FzHiEROwhhH7mDNAZp4d237BXn4UE8rPyNKw8QEsjzk45PFUf8+" + "zqutW9S8ZAfHkQMAsQ7dZHBe3Y3tcQvnc8ZIPbVE9bCyVuwzom867oaBEwcr6ar3VAjMA0BTcR41YLI8BaFD9wrvo9QNZUqHySKUPTaPSQ9fio/" + "HjoedIC0Eb5QXC8ZUDpkC9IFuaKed8fKKM+QgB7vShklvyLDOse+Ojyq6EB4oWv2c4LdDzpo0z+" + "SvOhJWh4gl1XZSFAZ2ub3FQYghTO41tjiye21lUJxRxkBIzAAARPHASA5ixG4dgQ0GUNu8KKlS7CQI/61Aw/" + "bEDII2bxR3iBY3HYG5ePtDizx4qWDnJUIVlNe+SCmz+sISOYQnZryRy4gcUVPqeJLBAXCCkmsvIO6rtqsM/" + "hBCiOgc8mDSHyuf142ZPjcRgDcKltrR/" + "vOCBiBORAwcZwDRcswAvtHAJLYIk4iQXgbIUcQu98NgADiM8g7GbIkH7JYed90bi3nRp7k3JAFlctJV5LttEvJgsSdpLfyQxR/" + "VNlcZ3QMr60uq3fi4onMAwT4g8pDmO91IAfiXiKpSnJIEPhV19ilgxEwAgsg8HQBmRZpBIzA/" + "hBguZhXndxlTYOgsaes1xtYl0HGIG9jUgdlqINyDTFM0qtL1Q9RgIBF/" + "jzLlPuXKlxcpu4SKn3wIrbIZo0R+FUexvoeUpoSyRBJOyDmEEXaD4FsydO9QxmB8O6CrYMRMAIzI2DiODOgFmcEdopARd5qQlRqYk4ou/KcShw/" + "U52Uea+jSE5rAkYePHPokS4F63ZygLTR/" + "sGh1inXAzII+" + "fuz0uPBF9pXEckQrvsKy4jXmbZxmAgFSP1nsCIU7eUhyZ9GwAiMReB2bEGXMwJG4HoQEHnh4ZBSqMiM0od6w1hGHBMo10VOIWI8gBLLkyeRvD5lJBP" + "ywQMXLXLXV6ZOgyRCdtPAq3h4cOa7NLJwXSqLt/" + "VblW2RykLZRaNUPySabQvgAs7sJW2w0XWlO3E60JU+YZmdvbCtfyTTPVscXpFX5zlDEEd+" + "SDgYASMwMwJPZ5ZncUbACFwJAprwIY0QiNJSawsF5SUf4cPD6fhnXSbeeViRgUROJUD3EJkgJNWDO4obSmKPK/" + "GwRAzBOTXwwFCuB6Tq5z5BdXt41+W9rlMPI8vwtO+" + "14ucmWn0qNWmqFxL4VgeEEfJLn3KfBt51Gfp9o2vy4XmFbDahlgXhj7xN2tSLRObdVFkubwSMwCECt4dRjjECRsAIDEIAQsWrZY550BA2ZhKHaIX3M" + "LxIkKkgkZXMhCik+alzjsD+xs9HCAp9q6LSMbx01RPoic4t0YpnTyNHKyi+9WBSK/EMN6ofkoh3MX0Iij2YP+mALP6bs/JU/VVfB0mG8OY/" + "GDoflFJZ+pH28qMALH5W3BAbU9ZW4N2XDkbACMyMgInjzIBanBG4BgQ0kfPCa5Zwu5awcxju64hTPEzs/" + "6u8iTpDTBARnkuu8b5VhEJn4iGS+b5C8o0KkpkT06Ic5ftYSlA8+xjzgNcOvfP4k+8l40lfIaWj/" + "790VO3oy5ukQQ5zTynJkLhSXxNHmyiTvncS2wg5f1HaGx1pgBzmcVW6yrGcDwlFXqnOVE7f9Snt7pPjNCNgBBIETBwTMHxpBIzAcQQ0mUMUWEqtloa" + "Pl6hyhMdpymT+" + "myRVr7dR3eGNiuohIoTwUD7cTfuE8Bx9mlq69BK4aSqMLy29wIt9lZODZBU9ftSh4xMdEPfGy0o8lepMv9DnsZ2AuCD5fX2FbfWlK9nBCBiBSyDw9B" + "KVuk4jYAS2iYAmfQgbf5fXeIIgAjUZmK1RkofHKfY3hlyICXVBRG50boiKbiEakJjwcpGlGJSHh0xox7FAGw+WjY8VutJ09iuWsALD/" + "OGiCvsjfQXhnOo9Hvsg1pV2oZttBIYhYOI4DCfnMgJXj4Amesjcc53zh2EgAuFR7MKp8kApMZasu/JFPMQh9zhBFJ/pYKk3Jyml/" + "CGrOascurKEzN7FYwGSmpLTY/mvOb1rPyHexZzMN95E4UtfVj8EAjzdY2eEvP8fYod/hs0NL+GcRsAIHEXg9mgOZzACRuDqEdBkDgHgYRj2n7G/" + "MQ3p3rY0Pr0OYtkiCWmG7PpL1ZMvj/" + "KwBcSvRRprooHcXg9VnY9qIDIQzc6gvAf1dGZ2Agh0LelDvJsfC3UfQP5j6RrvdU7w6Bu8x6NIu8phq4SwuYc7fxoBIzALAvY4zgKjhRiB3SMAKWNC" + "rh7uyM75xH8ARk0OyFftUTzIUEcoH3/TxxIj3j7e/Ud9ESB8PMlbEQqdIayQWQ4CaZSHRJYCZATSCcm503V4tkp58Uh2kaFS/" + "muOA0v6phQq77TS2R6ApxcbYt8l/ct9CePGI6n0Jig/9fQS/" + "jpz9P9Ru2yE+8IIGIHBCNjjOBgqZzQC14uAJuxewjcQGQgfxKEzqJ5m72SeSWksXTbLl/l9nj+/V/7wYIUMyGEX4aleMZPLOPVedUJieC/jf3U81/" + "FGcV11KnmTofEo5tqrrZC3Up+W4qI45LD0+iFwLD6JHQXrc9jY+yzet0bACMyAgInjDCBahBEwAoMQYCLnSeWLBohbTWiK3iulER/" + "kcqquvA6Hf0eJ9xxyn74L8UZp3yoO71vlndOZ/YIQTjyoq/" + "aaST+wCkKuy2lB8sIL3MJf8WwdwEs5BA8Iev5AzjTFXNoIGIEGARPHBgpfGAEjsDACPCX9WpM/" + "S45DCMCS6kBMeBK4pAvesFj+Hq2DZEMG3+" + "scHkYIFvXldbINoLVPtC77VvF9njklXzywrNy7t3SohnWb8QIT2OPKGQLNnkgIJXUNCeQNzIfkdx4jYAROQMDE8QSwnNUIGIFJCPyg0jxYg5eq9YDL" + "JKnjCrO3Di9WSRdIXGmp9NSakJHKgQDdSHZOmiE6LQ+b7mcjZNS5YGBJPzylk6qRHB6Gyh+" + "IGiOTPk1xHyPDZYyAEehAwMSxAxhHGwEjMC8CECYdECRI0aWJYxA1PFyNLtJvFm+V5OApY68dy/MR8B42dUWkziytflAZiOy9DvaTfq/" + "7Ul4lrSqsiqAJM0gjIfr34c6fRsAIzIbA09kkWZARMAJG4DgCLAGvYZ8jXj+WM4NohOYQydKTvpE+" + "9FzJFZGpvIs6QyKJe1UQQDz7GSGKEB4I5CaWWqXzbPsb1eY5Aj9K2E+" + "6Nr3maJtlGIFVIGDiuIpusBJG4GoQYLmaPX45YbsEABBEdMHLGKHrH1Aifei58qpK9lc6eKUQnjn+" + "e7u1TK17PJM3Ea8zhIcj1YksDsMQAOs3w7I6lxEwAmMQuB1TyGWMgBEwAmMQgCDpYB8bTxLP8j/KY/Soy8RyJl5GvFR4BefyVLGfkVfvHFtuhkC/" + "15EGyvLewxapTDP4+hAB4cXDSDcDMD8s7BgjYFhzbiMAAAGkSURBVAQGI2CP42ConNEIGIE5ENDEzsMUvFrlol411c9yMB7A8H7iFcz/" + "FUdRowJtC2JaFKD6WZLm3YT3GRZ4ZfFYvlZ8y0OpOIduBMCytBWgu4RTjIAROBkBexxPhswFjIARmAEByCOvm1mD17F6LY90gUBOXuYU2cNzyV8z9p" + "I+peONPPBIKh4C63ACAsIMbyPvbjzA8wQxzmoEjMAABOxxHACSsxgBIzAvAprgq/8q1jn9S8F5KxkmLR6EwVvFk829ZG+ISMmAwOAxdDgDAsIaok7/" + "rf2dl2dAw1UYgeURMHFcHmPXYASMQBmBzxXN08RM/JcKsZyMx2ryS78v1YhrrVe2c6e28wJy/" + "p1nrv2p1wqn220EBiFg4jgIJmcyAkZgbgQ00ePdwzP3Y00A5q7iqLxah3j1DXsLHbaFAGSfB4m8RL2tfrO2G0bAxHHDnWfVjcDWEdCEj5eIJcZLeh1" + "Zruap6snL1Fvvjy3pr/7C2whprLY9bEl362oEtozAk48fP25Zf+tuBIyAEZiEQE1AeMo7PI+T5LmwETACRmDPCPw/" + "xzFq4ird+u8AAAAASUVORK5CYII=", + "text/latex" : ["$\\displaystyle p_{L} = \\frac{- M \\gamma \\rho_{L} u_{L}^{2} \\sqrt{\\frac{\\gamma " + "p_{R}}{\\rho_{R}}} + 2 M p_{R} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + M \\rho_{L} u_{L}^{2} " + "\\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} + \\gamma \\rho_{L} u_{L}^{3} - \\rho_{L} u_{L}^{3}}{2 " + "\\left(M \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - \\gamma u_{L}\\right)}$"], + "text/plain" : [ + " _______ _______ ______\n", + " 2 ╱ γ⋅p_R ╱ γ⋅p_R 2 ╱ γ⋅p_R\n", + " - M⋅γ⋅ρ_L⋅u_L ⋅ ╱ ───── + 2⋅M⋅p_R⋅ ╱ ───── + M⋅ρ_L⋅u_L ⋅ ╱ ─────\n", + " ╲╱ ρ_R ╲╱ ρ_R ╲╱ ρ_R \n", + "p_L = ────────────────────────────────────────────────────────────────────────\n", + " ⎛ _______ ⎞ \n", + " ⎜ ╱ γ⋅p_R ⎟ \n", + " 2⋅⎜M⋅ ╱ ───── - γ⋅u_L⎟ \n", + " ⎝ ╲╱ ρ_R ⎠ \n", "\n", + "_ \n", " 3 3\n", " + γ⋅ρ_L⋅u_L - ρ_L⋅u_L \n", + " \n", "─────────────────────────\n", " \n", + " \n", " \n", " " + ] + }, + "execution_count" : 11, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ "p_L_sol2 = solveset(Eq(u_s * (U_L[2] - U_R[2]), F_L[2] - F_R[2]), p_L).args[0]\n", "Eq(p_L, p_L_sol2)\n" ] + }, + { + "cell_type" : "code", + "execution_count" : 12, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAJ0AAAA8CAYAAAB8ZridAAAACXBIWXMAAA7EAAAOxAGVKw4bAAALXklEQVR4Ae2d/" + "3XUOBDHl7wtIJer4KADCBUQOuBHBQkdwOM//uNxHQAV8KOD4yog0AF0QC4dcN+PonFkWfba611b2dW8p9gajWRp9PWMNPY6t37//" + "r0olNbAq1ev7qrkROm+0qnSbZ//05+fSuZS51lSrv0/yFJb+XTqqSbub9+df3W8TV7phc5/Kn3yZbkesuz/Mldtzd0vbyW++n5g4X6K9zno1w+dPw/" + "yC5VjFZ8pPVJC9qt4BlplpyNdFyu9Tv+5oRjHOyWs+KHSkRLjp2w0FdC1qxAlf/fFTODrSJTJWEjmUMm5WB2/" + "KDmXrOPjSL4zK3naw5q6djuFrwsfq5718Zp7dTam/1h0bp6KlP+m9DbmVwIDTgroWpQl5RqQuOuhL1eH6u9DnV2aXMVdLODHskFx+tS3cy9dOpxr/" + "dJxaP9Zv6b6fyH+8fCeNGuUNV1TJzEHEGE1HAiDQibzY5C3U/j/WCaD4+j+e+ACuNNNjGe5iUZ2vA1AVLvzNQln4gHC2hpHfFwrVJO/Ys32d0j/" + "Wbvi3nGvjJHzO0q41j903AgV0HWoUYpG6QAJ1+JIPCYGsD3QOcALiQnG5bKznZ3W7D9W3W1+fH126PE4R42tgK5bfYAIeqEJsJ0qMbqHyqeAlVzP+" + "ck71nFqCziq/" + "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" + "0LWy+Febfmg024qa7pu/" + "WRTygSrM4DLgSPoGCDcxFMI3CM75edKBK6xnKPfnVMbDVo2OIWRswYAVxw6YZ2HpRlLrN8Ij1RWtKVBQB+" + "6YMSom3x3jsKYiqWLNZJ3PnSxCwEEF9jY7a45hNTmoNaUrscabtC7c7UGfKZ8ViKllYx5mvj/" + "1D1iebg+4mV9nsl2jkjtAF42ArjYrVMB3dZVvNkLCBiERrA4BGwJ3Kb+BajY+VJxr/nOTVvPbNOAmyNsMWXYpq1Pg/" + "gFdIPUlYWwret4erCJgPDkgyqgm1zl4y7oLZvF5T6Oa22e2iVkMo/ex17Vudib6FoZeAHd2Omfpz4vgJqbnacHI676P4/" + "hHqFfapDiAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle u_{L} = \\frac{p_{L} - p_{R}}{M \\rho_{R} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}$"], + "text/plain" : [ + " p_L - p_R \n", "u_L = ─────────────────\n", " _______\n", + " ╱ γ⋅p_R \n", " M⋅ρ_R⋅ ╱ ───── \n", " ╲╱ ρ_R " + ] + }, + "execution_count" : 12, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# write u_L in terms of U_R and p_L\n", "u_L_sol_new1 = solveset(Eq(rho_L_sol1, rho_L_sol2), u_L).args[0].args[0]\n", + "Eq(u_L, u_L_sol_new1)" + ] + }, + { + "cell_type" : "code", + "execution_count" : 13, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAU8AAAAzCAYAAAAXWor8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAALBElEQVR4Ae2d65HUOBSFm6kJgEcGbAbARrBDBl" + "BEMJDBbvEL/lGQwS4RwG4GsBHwyGAJgSID9nxuXY/ttmdst91jt46q3JKvpSvpXPn0leR23/j58+fGYRgCL1++vKkSz1Opuyk+l/" + "zHME3OvRQEbNOlWGI97ThdT1MX1dLXutmeRYuU/" + "lPpLzp+" + "CZnj1SFgm67OZNfb4JPrrX61tT8VYZ5VWv9a6buS3avInFwXArbpuux17a01eY4zAV7n53FFXWqhCNimCzXMUpt1I5c1T3mFT2WExzrCY3ws2T+" + "XGUbXf9d1vErWMj/qeNdWRjLyPFLsabuAOEQQ1rPZk/bbpoew4rrryGbNUzfDXzLVX4r/VvxIR2z0tFpQ+ZiC/" + "5ouQrSQ505I+dB3f+" + "eiBbMhINxnsScNtk1nM9tRKc5q2q6bAsL8oANP8iov8UFYWuW6iBN9eJ33lcc77QHYgeKp7Umzk07bdKANhduZDmYD2YRsPM9kUabsEOE3HSU5pmtl" + "lAbBewm4iS4jzj+U9yEFFUOkxOh2OAwCk9mT5iYb2qbjbHdTxTiyCSfZ9HTbUTxEyI3NnoLsmv1PNxB5butgMOCp1kLKw+" + "NJfyp9j0PpP3R8r2X0ydwITGJPGmmbzm2q49Ofm+cZFvxPia5vSTZ+3uiIKUib58kznZQnLoPKlM9+hlAy1kPxYCFrdLF++kNxEZTGe/" + "qMTAckzDlrrec6KMP5nZSe9EH8VDebaLSHuvC61ug572tPdb2w5ZU2FT62J2hNGNY67rMhTxkIcgiyKwgCmY6SLJTmxmAjghDT8a/" + "b04tP5bt1cdadUj4IGOJkCQCCQv9bHRBWBDzXIOgnSkNgbGr9q+OV0m/IqBg9yIt2IdsnJH03FReErxiSBp9efdun7inKqr2T2ZP2SN+V/" + "VYe23MK4+3qWOW4z4Y8ZS/" + "IIUgqCBNPL4gUr4ObCJIjVPNvJQM+pYebGy+" + "zelNCjB90QJhfiZWnaFNKf0pVUPabZNVHqfCueHSqDLpOG1kuIIb0aTv9uK2D8lzbCZJD4s1Hq1jKgEzPdAROG84lh2ApQ3s+" + "SVYQutLXGar2sT2H2XPwmJnL0BpL3AOrHPenc4GyQL2sjxVepWKIiyZCUhGeShZeHnJIaGe9MzL3iCGbqocZRZDhweDRQlRBRJBdeLkMqFc6qoH2bJ" + "QHgoMkSX/UQV486NqSgc6/" + "6GBNtiannALeb5NYA4uiniKXPlQ+6qCtbf2JrLVYedGD91zTV8u0e8KXTWCwe7UusT0v8Bhjz6FjpqhN9mGtny+uZuALe6PrbeON+" + "61r7Kx23OdEnk1jQ0DF40oybHhVkScGR+mBxYW+sXQGKdaKSM7a5h0dkFV4TBvkZFTcVTfTdcoW+cibwq+K29r5XfIHkSnipB9Cex+" + "yFEe9beRF3W11NFRcnKZ2HvLZV9vzAn5Sl9lz0JipqpVd28hxIzn3EITcOu6rOqpp5V/" + "tuD+pduRY0zIQ3lmsd0Y3IS6MDZFsFJdEptMgqjYiIfsUgWlzdVoeOqmbb+NiUIVQMTdDk/" + "C4jLzmIassMojzXEcz4AHgCTT1P5Gceqs4RNmdOuLCdcRqo+15Afwk9rxizFzUNl9qdeP+dD4sFqWZm79JVJAE8qcaOM1vS+" + "SDPC3lHxrYQW8LO3WrfUzzIbvaVFtyvFfIny8B8pDGm2bKXl1rlagMbfohI44dT1F6kBPmxmNbS79P+mB7brEaas8xY6afVfbL1daPRY/70/" + "36u5rSz0QCTYJkkbo5Xd8ksoCEat7cDD1919SpuqkXsmLKXQTJGOyQ5m9K/" + "9hKy08GHN5i0bdUnh35Zr6iQLqOvtuFQB+VMmDU5mlTB8sFbR5pqDl0bHte2G6MPXuPmUMYNo3B1Y37oyZPGQUiwSh4Zkzb2UCJR5EgCna/" + "C1JQDEmwnkN+AteYSkz6bGWhWR6idHcRVdQdO+t4qA+jnal8RLSv9AiVB5JjQZ9+17zUVIA+Euhb6MdTvWyjplZHUVofKg/RP1Bc1h/" + "X5opVl+1ZB3dvewrTq8ZMvcZ5ztr6sfhxfzoPFsvQqoHBelBrSDd9eeM3z1sLTScsPb+GSoiK9UiItY1cG9mLZYfzhpDNgFbPU/" + "LQzxdG0xNvqClPGdhtmwTPJX9V5jpAwvbcAXmsPYeMmZ1KZxBEP1Y17k9mAMIqL0FABAAZdU2BuVYS+iVqNtLDdA3vr5kf+" + "XfKUlfKxymht34yq2x44bU6JI+d1S6SpngWQVisyZ5jxkxfOzIWxo6H3uNSeI/pQ2/" + "9dFZ19Br3p32Rcb7JEOBbdmc9VQaDCBkYn66qSXmZcqOH8Fzn/BIpBi7e4NuUZ6O4ID7FvfWjVPmpgx14AmuMxOhgF5/" + "BFfUrmXVYkz3DZr3GzBCranzUvmD7llW53uMyjclBfRiinzanOnqN+2xehtzXmHPnk3H4hVEMgKI6nePJMQ2GlJi6VNdmdbp/" + "UB18+0Lat5QOot1fceYahKXtOXIMrH3c2/" + "Mcafg9iu2sH2oQ8dhN89GbPapoLfpZUjaeTJyt8IwW2p4joVv7uC89T3UErwfvhA2Hcx1MITln14v0HLvOUutgBIyAEVgfAlXP84kIlEdYeBxk1jf6" + "BEyqq+t3spGlLb7sd7Jt+S0zAkbACEyOQEGeyeuMjQq8TB6irU4ju97ow5QlHjQf/" + "LYd1bEz5Zm8h1ZoBIyAEZgBgfA8Ict4rpDp+6tGXeyIbZSHh7uLNTPFo96209A726na93M25VZsBIxA9giE5xmEeJYQaT52wO4wv0RobjYgb+" + "ZdBKhq641FNMSNMAJG4CgRCM8zOgcZ4oU2SRJSjZ81Rl5i5KOn3qrHa55VNJ02AkZgNQg0yRMyrHmSIriuN5swvSfU8m9F/" + "T6lezTx9qvBuYyAETAC8yBQkqeI7KaqgBCLn/ZRnWRsHl32Rh+m8l0/NUSFgxEwAkbgKBEoyVO9w+skVN+40/vNJtui200lpQ/" + "6tp2o27ERMAJG4FAIVMmT9c6hb/Rpm3Yf/" + "G07hwLL9RgBI2AEAoGTSCjG8+y1fqmpeut6p+R+204FUCeNgBE4XgQKz1Okx3on65vxoHxnj5XXb9vpRMcXjIARyAWBGy9evJj9jT65gOl+" + "GgEjkA8C5YtB8umye2oEjIAR2B+B6obR/tqswQgsHAEtO7G2z9+z8EOQ4lE8yfy43cLttsTmmTyXaBW3aRYERJKvpZj3MxRPiSQi5Y8Bu/" + "6meZZ2WOlxIGDyPA47uhdXICCiZG3/kWL+LTQCL4iGTM90lE+acC45BDv6jWFRgePjRcDkeby2dc/qCLzVafPvmJm2E3japAwQqQ4ex4NUO/" + "+BtSzgRJYInGTZa3c6KwSSJwlBvm90HA+TEK9j3J5tPxf7xrBqI52+PgRMnteHvWs+HAJ4j/" + "x6jk2iauBfEnmLWNuGEcS68y+n1cJO542Ap+152z+X3kOE5ZomnRZhMi3nuM95NaRriGplqnmcNgL2PD0GjhoBESHT9bs6bkdHk4z/6uL/" + "6Num7JCt3xgWgDluRcCeZyssFh4RAhAhofq2MHbcH3cQJ3lb1zsT6fqNYSDksDF5ehAcOwLxtjDWNd/" + "07CyE6zeG9QQr12yetudq+Xz6DRH2XruUd8k6KKFWRnK/" + "MWyLiz8TAvY8PRSOFoE0zWa988q3hQGC8vuNYUc7GqbvmMlzekytcTkIPEhNqXmRXc0TeTKt7zu171JjeSYIeNqeiaEz7SY/" + "v3woUmw+35kpHO72lAj8D+yq72MYA3oTAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle p_{L} = \\frac{M^{2} \\gamma p_{R} \\rho_{L} - M^{2} \\gamma p_{R} \\rho_{R} + p_{R} " + "\\rho_{L}}{\\rho_{L}}$"], + "text/plain" : [ + " 2 2 \n", " M ⋅γ⋅p_R⋅ρ_L - M ⋅γ⋅p_R⋅ρ_R + p_R⋅ρ_L\n", + "p_L = ─────────────────────────────────────\n", " ρ_L " + ] + }, + "execution_count" : 13, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# write p_L in terms of U_R and rho_L\n", "p_L_sol_new1 = solveset(Eq(u_L_sol1, u_L_sol2), p_L).args[2].args[0]\n", + "Eq(p_L, p_L_sol_new1)\n" + ] + }, + { + "cell_type" : "code", + "execution_count" : 14, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAmoAAABBCAYAAABhJoijAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAZLUlEQVR4Ae2d67XcthWFR1q3APm6gtgdxFIFlj" + "uwowokdxAv/fM/LbsDWxVIcQdOKpDkDpwOcpMOlP3hAhQIgjPkDDkzJPdZi4P3a+MAODwAOA8+fvy4MxkBI2AEloTAjz/++IXq+0Os82OZd7jl/" + "0f0s2EEjIARWAUCDyyoraIf3QgjsBkEopD2i8xvUqNl/0n2v+v5RvZ/Jn+bRsAIGIGlI/Bw6Q1w/Y2AEdgcAghl3+etlnCGdu1/" + "ev6R+9tuBIyAEVg6AhbUlt6Drr8R2B4CT9XkPyWcPSqajibtkfzZFjUZASNgBFaBgAW1VXSjG2EENoUAAtm/" + "JZChQatRKcDV4tjPCBgBI7AIBHxGbRHd5EoaASNwCAEJbn8qzhcyH6S4sn8rO1ulaNkQ8L7LBTzZ0c69x0/PX2XH/UTPcz2kwf15tD/" + "P08rvZIrlf6eMEDopjwsR/z45Y2dgBIzAahCwRm01XemGGIHtIhCFrCDoJBTk90L213oQ0H7WQzjunP6qeEkz90x24kH/0oPQ97Mezr8hPE16/" + "k35IkAiOH4fy/hF7g96TEbACBiBBoGbxmaLETACRmC5CCBE/" + "SaBJwhaMhHKEII+y5qEtup3PQhnf2AqDCFuF+3vYlzSsrX6W3RjoK3jVmlDCkfbhhCH+aseBD62XW/1kD59PkTONikMTd+3Mr/" + "MQt7Lzhm7p3pCvQjDLeOockhvMgJGYNkIPFx29V17I2AEto6ABBk0UQhGbCEmQhDK3ckfPwQfCIEofXctF8wQ4N6EGJ9+EMB2ih/" + "MaEeY+l0PaYNWLJqhDNmpVx+h2UOjlhMCItSUgUP5nFIOWZiMgBFYMAI3C667q24EjMDGEZAQw/bmrczmm2pAInfawmwhJH/" + "Oon2uB6GoOQuGf0yXhLhGoxUzIH/ShnjRD+OJnjIu/nyAlw/" + "xdkh5UAbC2NsiMJWdhMc8eHQ5eWLbjYARWC4C1qgtt+9ccyOwaQQk8KA1+1ImGqxAsnOuLGmmknfNZNsx39pMcRDI0JCVAhlCVClYkQZ/" + "tGoNKS1+CGlcSKgR9WXrtSzjmfwpuxEgs8THlJMlt9UIGIGlInCz1Iq73kbACGwXAQkzbE8+kVmeA0N447zYIeImZ40QiFoaMpWB1g6hqlWW/" + "BEI0YwhHBIHO2fOPsidn42TV4tqZdAenq9aMeU4oZwyK7uNgBFYIAIW1BbYaa6yEdgyAlFw4fLAP2Uvz4E9lV9127PArDyDtlM6BC2EJbYtA8kPYQw" + "B7WvZEdZyQuBCAxbKi+mpVxmvSRPjkOdt8szScc6ttu05upyUt00jYASWj4AFteX3oVtgBLaGAFuNCDtosUqqCTplHG5W1uIhEEHcDk03PNG88f+" + "hte1Itkkb7ZvicIYNwRFhraV9kztRrQy0cNxQrdWJdMeUk8qzaQSMwMIRsKC28A509Y3A1hCQQJN/0uKY5jfarCIxAhFnxxCY+oSmPAlCV3kOjUP/" + "vRo1haUyEPyGaP4ULZyDG1sO6UxGwAisAIGHK2iDm2AEjIARGISAhDCEq5p2jPSENRoyPPpI+aDRY6u0jI//" + "HekoK8bDmWhwGSSI6Y8pJ5Vn0wgYgYUjYEFt4R3o6hsBIzAKATRarVuapJZAhDCEkJU+" + "eot3lRSXbdF0Nu5lTJvivpKFLVDi8GHdRiiM8QaVQWYxj9HlkNZkBIzAehDwf32upy/" + "dEiNgBA4gIOGHfyZAWGtIbm6KvtTDRQK2PH+" + "R35Cbo4o6nJQn2jSExM9k37c9OjxTxzQCRmD1CNysvoVuoBEwAkbgEwLff7Le2yQ08T212jfVyqinuvmLKC4mWEg7FUmnNwIbQqCqUYtvfnyUkQkFV" + "T23oBoV/obwcVONgBEwAkbACBgBI3AxBDoaNQlk/" + "P8c19fDm2cU2j7Ib98HHEc3QPly9oKtgDHEjazmK+RjEjquETACRsAIGAEjYASWhkBLoyYhiLMaP8lsrr/LziHb/+pBZV/" + "ecFpae11fI2AEjIARMAJGwAgsBoFSo/ZaNS8/" + "1MjWJ4TA1pCENrRhaN0Q7jjf8U5+" + "Q78LpOgmI2AEjIARMAJGwAgYgX0INIJaFLwQxt4WCdL2ZOsDkGjX9HBLim8FXdV2pOrzsWiDnUbACBgBI2AEjIARWBwCjaCmmiNscQaMCwQ5PZOD/" + "7OrXSbgmvtR26HKb7Yzasr7Qd4A242AETACRsAIGAEjsEQEckENzVlL6JLAg8aM56uexpGmc929J27LW3kfla6ViR1GwAgYASNgBIyAEVgxAg9pm4Q" + "mtjw5i3aLG4p+/Lnw97K3tj1jOAIc1BLu7r38awSMgBEwAkbACBgBI3AqAkmjhmYM4ntp/PUJxM3P72pCWgi9/7QGf5VS2xKNUWwYASOwJAQ0nq/" + "mfKfq4iMMS2KeCeuqvkdJwEW1qyDz4lV0w2YrkQQ1zppxPg2ha+jNzer5NOWBdu6xTGvaNstWbvgSEYhjl/" + "Oozed5ltgO13nZCEQ+5H9SLagvuytd+4kQCFufyguN2ljBijSdPzeWH/+Zx1+lmIyAEVgWAozpc/" + "yV0rJQcW3PjYD58NyIu7yrRuBhfHvhfNq7oTVVmur5NPmjqv5CZnlzdGjWjmcEjMDlEOCG95vLFe+SjUBAwHxoRjACGQI3sj+" + "O7kEaNQlhnGFjIEFcNMAM250yEeDYEjUZASOwPATYbupcHFpeM1zjhSNgPlx4B7r60yKAoMY2JX8PNUgLpnicYRt6jm3a2jo3I2AEZkFA45rtpkEva" + "7NUwJkaASFgPlw2G6j/UNpw/Alipw56Lv9B8sV99PX/jsXpJgLoCXoG3hjbGTNUwVkagaEI8F1DPkLdIvEwk236ODX/RtJozGV/" + "oedXEmCXwfcWP+CORNxXCrOWLiFi8xAC5sNDCF13OP8V3nwjVXbmDuYEX1Bq99sonNComeZDYFRnzFcN52wEDiLAdlPthY2Jlk8l/" + "KQHzfsvTMR6OOYQPs0jO2/REPG4YPSl/Lg9irYev9YkLX/y4gjFD3qgz/" + "WQB58H8ps3iGyXzIfL7nte3v6hJ80ljHX8vJ3d7tdROK1aUBNzoA1IiwFn8e5wy7/6hi9/" + "tAL8lRbbQBDfkdt7C07hLDgwIwsMzPkmSzOqM5R2kzQD7pvE8dhGC3/4vTMm5M/" + "lIISy9K1ENGrwOvRU9nQE4lbut3oYP79l8RkTaftD1oYQ5vL0O6VhHL3Wc7H/DVYdqGvSBiA44uZlKy06cn4i+U89X3zKfIM24Wk+XH6/" + "M354QTPtR2AUTqsV1OKky9t/" + "vlXDIvMBPz2dyVd+bOP8KhMtQLjBug9rxUOr8CTGQagr8xzVGfvKWnPYDLivGa452oZw9KbMWP1Se0nhRQQBpdF8yZ00a4y1/JM9jI8mXpY//" + "uVYKdNm0ee3qg0IZrzEJUFtJztzwO8yqy9s8p96vpi/" + "odddwub58Lq753Dt4pjIIzKe0K53XgTzSFuzj8VptYKaOh6hrJl0YQSBw0TMIoMg9hl+JSmct+jwxi+" + "ztWVTxpUbLV0gpSsXnp38wvmdFEemmTYDI7dOiXuer+2DEEC71Rore1IhlLG1URsbjIekwSYLboejaSuJl5s75YEghDaOvHipqgmGCjoLMS+" + "gAUcwS/VIY/qlwpJfqzKKO9l80cp4m45V8KF4As0gn6kq5/" + "9N9arazwsZY7zvv8JH4bFWXIfg9HAUUsuKzGD5UyDwppwTk+8j+TPB1oh0xGFBagSxMqLSM7GzCKX4ZZSWe0hntBJsz5FwnBT37cE4rsWRLwe/" + "7So+GrJOfPkznhhrhO+im4k6F9wIguhrXpoQfhhrTOadPOV3TqJ86h7qT8GqX2PH3UPm2x5gxngLa3hlMA/EvunEl/" + "818OEjtYVnsxT7AWXJV7GvpsBidbgOxWnNgloQtvYwSd9AgrEQFt7rqQpzEVzioA0gn3y7R842De2MdqrNuSbHfXMIHtdgtF6dbc++rCIv1/" + "gdgYWF81vFSRcFOpO0wsK4k/k/ypDJOOJhob4YqR6cv/sMM1VCdgRIiAsVfWS+7UNmnL/" + "5cBxeVxtb44Z1kxex8Nkv3NHvaut8iYqNwenmEhU8R5kCgfMONQoLgsI7b2NF5D/l7hPmWIx+1oNWDWom93vnp1/" + "FaZgW3+jGZHEKJDsLAm8fxCUvzsSEhUx24rIIvsdPD/XHzfbRcz2kwc3NOexL/2bNybgLo8F4Cq8WRazhHfBPfdf0VSvyAIfyg4fgE7b3OB/" + "Z2g6Rm234S/YZWL3SM5QCL1Yis72BsJMuGFSiBK9a+scK4dB+GG8yG97vy2Ruf9WBeobjE7K3+qyn7JP5Ns83lj8ZH5K38rxmXjQfRgZQPy12/" + "lLdmTN5sUFQSy9fHKuoadZji89vqG6M78nGl/IbNbbG4vTw/" + "BBdrsTIOGHxrdUigpe+AxUW5+jXRJebQZQm7nBRQX5VoS+mhWk5f8P1ZBgXhr3TE0h+" + "LOKv9SCgschRP9w5kTYtXs9kT4vhvxSJtxWERvKlziz8iyLVnTZPgrvyGotng5XSsjAjJHPTETzpu1SvJt5Iy0vlRX+hhSL/" + "huRPXRH6U982YeewqFxw56DvmPJ5S67xOxPfu331VjrGzks9t7KnSZwkb/Uwll6MrAtpJyXqpQeNIIsL7USzXiXFm4xv8wKU7xx8SBFXyYsRR/" + "OhOkhYLH3+Yr5kLsBMz8XHterS0Ezja+zYGoXTTVP7bVgQYvh8QBJ0ylbDYEk7lrQoLChJaENqZjClhS2PT1BJdAZpMBtS+" + "nBwWyYTPYJBfrGBNxEONLNg/" + "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" + "SjFl5UfiYDxOzTGsubf6i9Wm9nBaJ43I7x/" + "g6ZmwNwunmuDZffypNGExyB0nx2AKqksJYDJsFsXRXE03neduTFQs456lYkGuCXJkMBn1eeD6Ru9QQFFHmdV4A90N4IjyVGtU+" + "EEZhqraCdY3Pan6pTMqobU2+lP+rFCkzEcC5pYhwgQAYPu+ShefWZ3LU8sjjbM4uzFrjvQaA4vT2WZm+dNfyy/zSuJ6NDylLdZqbF82HWadOaF3U/" + "CU+SwJ7s35OiMUxWc0+vo4ZW0NxWq2gdkxPXksadR6LdE07RhUJO7StRbyd8mHRRgNTDhb87/" + "QQJ5Qls688oi2aUht7GjEYT9Irr9kxVRnVSU7+aMLQ/HaEbPml/kt9jTDWJ8jvE+Jo5iBSmfAWgiNaQoT/V/" + "LrK1PBpj0IXB0fUlf15yheVHzz4f1LcGeM7un7vUHCNMzRPZGukm9UV+qF0J74oaf6o7zB9FhcF43TzSiYHPlcCCD9d86/" + "ielZGBEU3h2qiOKypUY+EF9NZhFNTI42ha24sHUqMy3uIfIKf07GE0wiXrNiGstAyII4B4VJv3OmjUUzlS9rlxQ/3V5lYuqQwvGfqr/5lhnb/" + "pRJ3XC3LqjIn+1e+IxtAYhtetrDFl/iR/w3S8IBPAaNa0BS/" + "LOM7VjOUbyotJvlQ7V9qvGVxsRi5q9UYZnUuYODsAlz2TEYHZOG+sQyr258UTfRIJwsqN2DdW2/" + "aDzSwhbqJjfaFLQXEIIX34VLZ+nufbNfhbGNV93KUxhaD85IbYU6eMaGI/xAnQnl3rv9ew5M95XRrs1eF+3hKj/nWkphiK07zlmdRMoXYYH/" + "n00aNN6cKa8skxeOp/JveDGmfS3/3m1EhW2Jro4PAT/2WdNvR3SI+fAI0CpJFjN/" + "ZXXnhXDM0Y0s6eTWqxxfsZWDcLKgNjlPTJJhh8E1aQ65yTdJ4SvMpINnbON7mRwWL4WZpUPA5QQEeyaBcpscoakPjzHtJo88nzAZVrBE01YKwlUNwZ" + "jCVxbXfHh8h26BD/" + "NxliN1lXyjOWDUdnneoJnsi8fJgtpMnHFKtmL0Kff1T6nKKtL24RmFilKIWEObU5vYtmoEtTiBJg3Y0e1UPmmrjgkwEdqxpqzkKZOza3dKg+" + "B4q4dLPtysrsVV0PZIWPCikPpsTQCkNpkPT+hV8Ud1PbhGvlGd0LQftV1+" + "AkR7k64BJwtqe7vYgUZgeQgwMelBIEOjlhMTaO1TIHmcIfaQb5wAdzI5/4FfbTsd/" + "78QN8b7Qe78ExhymtaIQOxz8+EaO7enTerz3iM3PUk26T0Wp4ebRMmNNgLrRwCBjPNiaRuCFnNubQpNFluXfArk73r4TiFbM/" + "xBeWsLWW40b7vkLxPNAE9eJ6KY1ouA+" + "XC9feuWnQmBmzOV42KMgBE4LwL5thM38NB6VbdQjqgW59G4RXxI6EOb9r7In7R8560lxBVx7FwPAubD9fSlW3IhBKxRuxDwLtYIzImABCG2nNBwISx" + "BaL2m2nJEI5YWYPLukMrnTBq3lLmdnGvQ3soPjdwL+bc0cPIzrQwB8+HKOtTNuQgCDz5+/" + "HiRgl2oETAC8yKgRZLPcCAw8W0zvnFW+" + "y9YeQ8n5YlmjssACFsmI3AQAfPhQYgcwQjsRcCC2l54HGgElouAFkiENIQ1DvjyLSYLV8vtzsXW3Hy42K5zxa8EAW99XklHuBpGYAYE0vYkV+ZP/" + "sjtDPVzlttAwHy4jX52K2dCwILaTMA6WyNwaQSkyeAMWPpuGmfDTEbg7AiYD88OuQtcGQK+" + "9bmyDnVzjECBQPhuWlwsiyA7jcDZEDAfng1qF7Q2BCyora1H3R4j0EaA/4NNW0/tELuMwPkQMB+eD2uXtDIE/" + "g92fUQ5lvt0bgAAAABJRU5ErkJggg==", + "text/latex" : ["$\\displaystyle \\rho_{L} = \\frac{2 \\gamma p_{R} \\rho_{R}}{2 M^{2} \\gamma p_{R} - M \\gamma " + "\\rho_{R} u_{L} \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} - 3 M \\rho_{R} u_{L} \\sqrt{\\frac{\\gamma " + "p_{R}}{\\rho_{R}}} + \\gamma \\rho_{R} u_{L}^{2} + \\rho_{R} u_{L}^{2}}$"], + "text/plain" : [ + " 2⋅γ⋅p_R⋅ρ_R \n", + "ρ_L = ────────────────────────────────────────────────────────────────────────\n", + " _______ _______ \n", + " 2 ╱ γ⋅p_R ╱ γ⋅p_R \n", + " 2⋅M ⋅γ⋅p_R - M⋅γ⋅ρ_R⋅u_L⋅ ╱ ───── - 3⋅M⋅ρ_R⋅u_L⋅ ╱ ───── + γ⋅ρ_R⋅u\n", + " ╲╱ ρ_R ╲╱ ρ_R \n", "\n", " \n", + "──────────────\n", " \n", " 2 2\n", "_L + ρ_R⋅u_L \n", " " + ] + }, + "execution_count" : 14, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# write rho_L in terms of U_R and u_L\n", "rho_L_sol_new1 = solveset(Eq(p_L_sol1, p_L_sol2), rho_L).args[0]\n", + "Eq(rho_L, rho_L_sol_new1)" + ] + }, + {"cell_type" : "markdown", "metadata" : {}, "source" : ["We finally obtain:"]}, + { + "cell_type" : "code", + "execution_count" : 15, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAOQAAAA0CAYAAACaaZSiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAALGklEQVR4Ae2d7XEUORCGF5cDMCYDyABMBOfLAI" + "4IbDI4yv/45+IyACLgIwO4CPjIAEKgnAH3PrI0J2ml2Zndmd3Z2VbVWDNSqyW1+lW3pBnvnd+/fy8sjCuBly9fXqqGn4o/" + "j1tTN+5qx4korzz1fR9fKP2mGwejWkcCku9rXc/byh61ZVre5hLQADwRl0eKJwFG36NXas8Lfz1V2i9d33yeReNJALl/" + "amNvgGyTzoZ5Er6zRIpbZ8UNq1mn+KXadB4VfKX7+0p7GKXZ7cASkHx/iuUHxX/" + "XWBsga5IZJv2D2LwehtWgXJggvg7K0Zh1koDA+EaEzxUzWS+F46UUSxhEAhI4a7MzxX/" + "mDH3eC59+phiXERfye07Ls9JZg+JaBqv2VGkfyasF5TMLY/" + "lYF+" + "IuvwtlFKMUcQCgrHGL9ceEdt8uAckQL4OJmGVKbU3OJP1WF2OaBANkIo5BHwBcrvgLDRJAZXHfAFX3AOcbabqW1ppKg88bxQw0a1J4VIPoUIrHngDw" + "LvEMhT2tW+eGNIv7SUAyxNoBMCZWJtjW8VE+48l68kRXAtojZVgYRwJYtdICHvAla0oNCuBlYABcMYiGQYYfdA+KRP8nohQuqFwbGOFJe9pm81tGM/" + "8rOZ3rYsx6B5W70cXEx7i+W8UAetHgjfyV0xogc4kM8CyBh82R0joNt/" + "OHaE6yqgAOMyYgKQXKQcPGQAO4nFDlUar3ugJ9TuKefT24yVhlFIpNnVrdRR4zS2Q88jEZs4voxpLLaoAcR+" + "SAgTUZM2EeHKgqedDWlAIrBhgZyCJwPKCgOfV8ShZ64elYx+A6P+TSPVYal8vCdiTwQ9UsTazH26l7N7V4RQMcrKcudKHIPN/" + "z92MdhlNfCYwLtWlpVhQtwVlV5a/aWGEga6B9ovL/6AquV81d5cwRHsnZo8rlrvQT0eDSIjd44ZY1/" + "dI9svwap+l51KC6JtemNTvMOOMRcTUynTUg1eFn6ixuGWuzf3Vd6/" + "4fxQvFKBrpzeYK6QMFlL2ztVFbACNKH3Zek2Yon7wAHiwg7cfFdPf+" + "GUUNm0iuT8ovglvpdynTFkQDqJER7i8KA382LuIJBetaA71Ihw1TbNMGPQz6wdg24zRbQGrwUPIvXmB0GhcyPirA0iQHtMpnxgcUxCg3igi4TnVRvg" + "gY5eXB0eeJLc9MDB/F300WBTraExQ/" + "gJD+BXDSxoXK015CTH+b0uOv+CAvrGEMXCa2T7oA4Xdi0YQ29eC+Hqnqm1yb1utJUyqMFbrShOPmbn438bkaynOddTEoceMyaNA/" + "e0XD+" + "uTuG8cSK99F9HXAO8yAWbXpIzyVQltjy5MS3e6COusnOsBAPgoawqXSguUnnfqL68dQYEWMNSy1hzQsJzM6u5K1CUTZboKgHXgmTtakdQhMBI3FiOi" + "HahPyZsLKgwOG6k7G3RMh85I8ch59nov6MVtASoA3SEdxEH4+m+PWsbvo6CJJPtZ9Tks2AjzjpkOAZzLzlcqobpT7VHFftxn+7uhDZVHU2PLX+" + "ltqQjFNPItAUzryuqcL0AdLXeRBIvSKHlUJemSI11BtKgGOtiJHJuJiPT2a2pU06EcCzKOupfeYDmXHAuXAQ3HfF/" + "pFemJdVJY0wHhRoF8rySvAA8XNzKv7paMHpWHdw/ox1AUYoD0hQXEMjjDRlKxMKL9pzOZRPAlsym+I8lNsU1u/" + "3NiJINHL47YSM8kDTInFkzJhmRBEsiZUenD3UHZoEBqWCHc1Xk8pqTUAkCDwJULxAmSPFSf1K41ZOmzMhHK0P1d++JN+" + "KR75jL7U38BowJhd6qmFKbapTUZFC3ncVmLf86SsgALlb9wCpQE6gPCH7gFlHFBmrKlTcl+eDZecLi5Tumcz6aqU4euHJ+" + "tV1jNxOA91R4m8iJyDDv65q7oQHX2lz4mFj3gNdbvybZShKurBZyptChMDgGvTG/" + "Rwack0a0CqwwCMwA5h2FFFYLydErt5joh0XY01FQ0CAzQAKLdmSqoG3MUTleXKBwWwMBhY4Dw0bqbKUScAw1rjsrKhFKwndPTJ9UEx/" + "WRtBD2BPPoyxjkrfWra6Wrb/Z+dt0kyYbwIQef4zIrxYWc6jJsj8H8eKW50LWTMHZAoJTtkKFAXJUKYF0E4PmaTJwdVRpI+qj6sH2VYdyZCV/" + "qq91AdM9E1a8uUu1szwrPhS33xc04/8DMz/9TCztvUNl4VYaEbuYe0OKoQzyUZgDWK29YpCRSrdVKgJ/" + "0XZUWDS8lzl8CGERPCbAL9V2dKnsXO+" + "jhgm5hAe02863ZabUbP8GbQkSQcJU8zevCdBjyst1qDaHFnw2x15cuGMte6ufE0HIp3VUj4ldzSwHcfYyaYsdenfeUySJs0rng1Jdeyb3u60POVBy+" + "CLE0Ad+b4T67UUTY8rnQxC+GqxusvPW4nqB2sK5oPg7dT63i1qD+shyZl9afYplUjoDbzllhxH2OWa0h1mGOC/" + "KhglZzGyL8QU95UmUJbhuhf8VB9CMYb8Jhim6rdkW7iNWEgip7WLC1kVRo7yJDgsdalM8cdtMaq3KUEpAssoQBj1ctoLKSIcO9YtLOryMxOYZ45JuB" + "+jC10sZ13kFxZK/B6HBtCnTaY5i2Rg+4dR2fV3XMk01hIKQv/44PzK9Y9AJBPlZyrRZ6e2dCoIlv5vYP4sfEB6PuEMV707VO/" + "0ZoERpOAs5ACBtYx7EYCRt5Widc9tU+V8N9xyaD9ojL5GyVKrgfR75X/" + "X++J5ZgEhpGAA6RYAcBwcA44rzP2nJssRNO8eaL78KkSrlirGc54beVRbbLfSNiKpK2SISUQLKQ7D5ESB/" + "cxX+vgqnIWl5+bkJ7TDtm+tXmprXfWLmwFTQI7kkCwkKF6AFb7VKl0aAqA13Y7BRpbQwbJW2wSkARyQAKwxOIJNJybYBmTl6uVjmtLSOhvk7r9FY+" + "1wdytBqMyCeyXBBpAChysEwGZe2+TbiiNDZ62T5VwY4sHnJS3YBIwCfSTQANIFcM6Etb6VOm26O3Gj+" + "75TYu1LWfgZbFJ4NAkEAOS9WPfT5VKLifvkOa7tIcmV+vvCglowsYb48z74H/" + "GIBZVDEgsZHz2GNMl916YpCVWUOmcSfJBbb4bm5S3h8OUgPSCZdFbXSyLznSxJLIQScAB0gsK4YSXAyKS9Fa0fKr0zKfy7yW4RdAImFkPS2thphLQe" + "DNxM+mWdt1be60yTNTuzFr36FHYGGwtd0iZxxIMVg03k8C3gLx3WRW28ngbp9cbOY6z/" + "ZmLBJh8uSyMIAEAiZvayVUdoX5jaRIwCUQScC5r9Gy3M5KAJlu8Hz4MYDnCep//" + "Co7b6ILucT+3+mM5vmqLKhI4qqRb8p5LQGDjhQ42UAAiSwxAyXMc+IKnAWicYfe7kYBZyN3IfdRaBTLAhzWM/" + "7kz58s7+7GcUTs8I+" + "YGyBkNZtQVXNXSFzikYTn5sudcAK1uzimv9p7xqcoulF86g7ZvVRHOBqH5QHkDHlZ0jyQgILGmBGy4q70381QGsHPsUQVzF3GoPMcetOWu7s1t9kKz" + "NWQX7Zkfzb79MM38RqDSIwNkRTAzTw6/" + "PzHzbu5f9wyQ+zdmQ7T43RBMNuQRJgW3Jt2Q12yK26bObIayc0f4Nyzh37V0LjQUoermhXICZ6CEVT9Kc0t1IH8NkAcy0FE3d2qRBMjS7m/" + "UvMO+NZf1gMZfYMAqbfpBOTuitis6kt6YhRxJsBNly5c4G/1YjkCdfHI30X7ubbPMQu7t0K3VcM4eDVBriW47hQyQ25HzVGopvV0zlbZZOySB/" + "wBdub5MFoJHTQAAAABJRU5ErkJggg==", + "text/latex" : ["$\\displaystyle p_{L} = \\frac{p_{R} \\left(2 M^{2} \\gamma - \\gamma + 1\\right)}{\\gamma + 1}$"], + "text/plain" : [ + " ⎛ 2 ⎞\n", " p_R⋅⎝2⋅M ⋅γ - γ + 1⎠\n", "p_L = ────────────────────\n", + " γ + 1 " + ] + }, + "execution_count" : 15, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# substitute everything\n", + "p_L_sol_final = simplify(solveset(Eq(p_L, p_L_sol_new1.subs(rho_L, rho_L_sol_new1).subs(u_L, u_L_sol_new1)), p_L).args[0])\n", + "p_L_lambda = lambdify([M, p_R, gamma], p_L_sol_final)\n", "Eq(p_L, p_L_sol_final)" + ] + }, + { + "cell_type" : "code", + "execution_count" : 16, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAANIAAABBCAYAAACka/" + "qvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAO9UlEQVR4Ae2d7XXcthKG1zoqQFE6UDpw7AqidODYFdjuwPf4l/" + "3PJ+kgSQWy3UGSCuykA6eDq+sOfN8HwsAgCGJJLrnL5WLOgQDiYzAYzGAGALm69+XLl02F6Tjw+vXrdwo/" + "KSyGsaLl3nQjrJhyHDjPZda8cRyQwF6o5X1aV+Edx8NjbXV2rIQvlO5r0fV+obRVsmbkQFWkaZn7ROhupkVZsR0DB6oiTTtL9+XS/" + "TMtyv1hE+3PFLCqFRIOiC+/JlmNx7pHarBj/IMXwD/HYzhsS9H/SBR8r/i3uSlRH+wlX/p+rnz8VPmf5+57B/w/i74/" + "FH7M4aiKlOPKuLznapZdtcR8hIUyVvs/48lQGivghJe0yr9X+FvBgIl7o7LZLJ1wO8FWTN/7AIQSfjlQGt4w5u/" + "ucpb3VzT+q8CJ7AuFX1IKq2uXcmT8M25dl0VCUN4poBT/" + "qJ5TOMWc8P2rsFEaYQaoRzkKh4K98XmKvoLKEMYvCkwsgedfFQzP18rbU9bn9prT1EhdyJ+F9kq0uxPPabqYHovoYz6e53i8eoukQWMN/" + "uPZ+kDxLc/" + "Kn2yFFy4sTRafynCZYL5TGKVREAQHuFbaVrdLPb9VwCq9j+rj7jCGFP5QRtx+ozYvlPe7wk9p5a5ntQH3A8VZl4V2KoMmcDJOgHuy4umkyqGFcUI/" + "C8xN1AZr9FFhUSD6UGQWFVxc6M4Bi1yLx6tWJDEDIWGVDkKiNJP7N3kKXRYkx8BSHkJ2k6ugPnICh1AhnGGy9GyWCVpREgMmN9SzTMXkp/" + "SnbaPqnUkWmeK+SLRR/ptihIyFIafYyr4D1YO2h/4RpWvQ6fH5YhehWLhO2cUorjh1Wn1eCCeKwQLLQlscm8rhBdb/" + "QiHMy6oViQErBF9c6Y0GjzVCiBGKb8ibALAMjX624ERp8LdzewIm0ywoaDhSx1KlgKDeCgeCfakALhaNnOKqqBPgRVhoumoJLwKGgmOVcnTHTRmDA7" + "VrKJHlW6xylI4x7Gt/" + "Zl27WP2jDCyEG6WxotDTCdRXQOEfK4QF6KyzxToKmPRPGjirTgxMLivKttUnbpNNCweMH7SSqg2T12rj6YFWyjf+" + "GfyxYlEEMDYWBRSH8SCMLZzK6wS1NaHp42bRH/" + "2wCARFSZELJ4qJ4lv9tEp49uNjsSu5UqH+" + "ghLwyymf0bR2RXITrwlzgmmDjmKEdlfAYmTdui7EXoBi982qInwowyPVYXVEgVpCpjJHt41LMcJNMMVQshfQHy5VF39iJNBBHwhRdgFSOfnUuVSAxt" + "wYlR0WCRYCXGxWeQ4bsnhdg2X9+SRyGovJ+bLom5YaTUxj1YiwO4FT+aAVPGofJ7EEb+" + "KMHmkEOGcFcG84jLADiC5UufZMrPPdaSQcfZQD97BPPVAaIEQoSQ5YAH5RwCoBLGQtUDkKw6YdRTLlxzXOWd5W+" + "wVkIDd4NATHv7MFELVXEvzEMZE7T5pwgafvih6Pk1U4p8QoyIe4YppWOxT3pcKlH4tVwZ1ir/" + "NM+X2VA4W4NQRdsfAxTrvbwuJsfF5oomfosj2D23MpLzdG2oCLsRJbGEK3mh0UjGfwxcG5JU4o5pCB4+" + "Vtq34fliA84BsKThjjRqKHvQIT404T9ZxVBuW/Vx1CA5Q/" + "5LDD2uKCtWixwihG6M26WH0siSkVCrmJaI7rU9QA1ZvqkKeBd48PNjfwz8FJKZImEHcCC9Ll8nm29I7YH/" + "1Qqq2+st8lKZ89UA5wi1idc2W989S+zzdIvSySOmV/" + "5KyNYi6UoSOsxkpDr1uYFJMP3s79kcpGgXCD9y8F4r7A8XuXZeyLI61nFinkn4wiiZkIKO7Q1qPewJ1Cwk/" + "qRvHnQjXK+" + "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" + "hHcpiPK54PxWAaU1CxmIixOqk1OUjfJRUo6/" + "93UlUlowYpL3lj7bW0+1IwQO18n2R8YRhBchdCus4liY2R8h6H32R+DD5Rm7UnO4UXzDgg4WAoyRsS4GqiLtdypy+" + "x0Uh0MCXLpUkHP1SxQ7pSxVKJTxXwCPBbBI8YJzcLqrIu13Cp4nFofe+" + "b0MVtiGEqke1ov8vvsjVXX7nIckRsDNiDZTNzFlRlFKwOtPfa10Cc9kZXWPNBkruxFJKXivDsXAhcO1m+s/" + "hKMM9DUU+OzlYILp+QPNWGBg238Vp152v+ZaH+IP/9W8hvXw4NWrV58U7g+ZU9V/N6R+WlftHym8SPPneFY/" + "Vwqf5sC9C87q2h1i9Zq3z0EvdMoasLrvut/" + "4LByEfQAfoDLGRUFVpEVNx+7ESDG4o8KFvOqJjZPBIfuwFlr1xc+y2ZsYrfKpMvyYGNvsfQ2luSrSUI4dR30uWft+" + "SsFbDcfwNgOcZ0zL2htBlaAq0h0fVvVXioGbxQkh3/dsg0UKZkq0H0vu1DOtepDn/wMnPF5nxu4fbQAAAABJRU5ErkJggg==", + "text/latex" : ["$\\displaystyle u_{L} = \\frac{2 \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}} \\left(M^{2} - 1\\right)}{M " + "\\left(\\gamma + 1\\right)}$"], + "text/plain" : [ + " _______ \n", " ╱ γ⋅p_R ⎛ 2 ⎞\n", " 2⋅ ╱ ───── ⋅⎝M - 1⎠\n", + " ╲╱ ρ_R \n", "u_L = ──────────────────────\n", " M⋅(γ + 1) " + ] + }, + "execution_count" : 16, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# back substitute\n", "u_L_sol_final = simplify(u_L_sol_new1.subs(p_L, p_L_sol_final))\n", + "u_L_lambda = lambdify([M, rho_R, p_R, gamma], u_L_sol_final)\n", "Eq(u_L, u_L_sol_final)" + ] + }, + { + "cell_type" : "code", + "execution_count" : 17, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAL4AAAAzCAYAAAApWrKbAAAACXBIWXMAAA7EAAAOxAGVKw4bAAALVUlEQVR4Ae2c65HUOBDHh60JANgMIAPYzWDJAL" + "gIWDI4im98oyADuAgWyAAuAh4ZQAjcZMD9fxq1Srbl53g8Go+7SiO51Xq1ulstWeNbf/78WS0wDgdevXp1WzW99LXd8/" + "Ez4TfjtLDUMhYH1mNVtNTjOPBGQv7ceKH0O6W/" + "K9w33BLnwYGzPLoxm15cS9ivotG8UfqecA8i3MGT6o+tRgfvy64dGDqWRfB35XyxPNb+WxGV15ME5W/" + "1KCtF3JFDGBbG1AtunbqPL6Zdi2NPFMxSPxHuUxMXPaOx5vjuXxRuUmWEg+ax4ixcHfXjsfpzqfiF4qMB9RdF/" + "ajwUOnKfkk4BH+j+H3XQZ28j++Z9V4xjEUwGt0A0TEJl57BKAmCXwFPR30PK5kHQKg/buOtOIv+tLHA9/" + "cf0f1WuFConRfRvlX4rvBBoaIYqbZOXvBhipgFUz8rYPXbrDOT4EDl6oSe+rD2SQu1LT35L/1hsz0ZiD/" + "wE1eksyW2zqkMAsxKvFK6i3vG2BhjOFygbB2c1WWcGJ4JQoh/KQTBLvNAE4Bb9EHB6MskTBJC/" + "0LxIwWWXyYe3KHhqfrRWwB37DSrDGHv4MfGGDu1twj+dkqwzAg9G9OkkCofPDR3FWAuK0QBPA2W553SDwhK40+zXB8M1A9cLvo+" + "d2CMT7sMct2F6IRofmqsdRaDTSq+JFYfSLk5nNlTnjiAyjQuv8pnBWFZ3yigYKwYYwrqI9WZ6q/" + "QzpVAMXATaBs69i70xYHv37cYZ3mZxfSdsbaubCcv+JpMJtsE1QkbOIUgeEojGMZMGLsS7gdxDMLdiZ+7pFUGgbut2CmHYpSA/vSuq6E93Lekf6/" + "2UGT6gAuHsDNWNpXOv1YMsHrVKs6WJItfDBf8a4WTF3xxCEbZpJqw46KYEmDBV5p4s4AxPVmDQXUiZOXjTtwtFOFKwfq14ll43CZilJD+0Ddcr1/" + "KbzqihK7ibqkMSo91j5WM1eazAsL+g1g0oR9K5wyMkTG1wrqVYv4E+" + "PfOmvuJZsQx866FfwtSMXiEqOLfkz8AsKxlgbW2aSeA2v6igBCyGhVcJz1zlMe+" + "ooAPhbfKsYmeLYnixZbd8OBYCVjVUEA3fsssx7QNXRmvZ5RyVdMvlCrVdqKaziiMVYFvdSUXwa9yBgFxR5qaGAQjfpllk7uzBVTd1MUk4WLEYG1UXC" + "kRXSqk2sbSXcSVdEmrD0mBFp7TqHMFlNBWwdoqRZdUOOHhH4qabKe2wuEZKFpKwSs1nlUwJ4TQhGBBzb+3kTPRTJazHIrjice/" + "RyhSQmnlu8ZYO6xeeaL+Eh7XJW7X6kQpCquN6MAh9M+" + "MKBGjGG48ibwmFG5YrPhNtDnkMUbG2grrVop5EyA05YlF4MBfa9LLlgp8yuIK3Rsqdak9FJFQebuqPKwvE4tS4oaQZmXCzYl9dKEq4JS5gm1HnLeTZ" + "EWBxU8ZjEonT9riixvPJTRlRn0VHqEqKIToEEjwBYur596gupwAqyAT5cDjuDZBn1IrCorCSsCRKnsSAsrQ9qZZJM5Xx03qCzd9C+" + "yJ3hQw8KumHQxGincV8nUFcwIICQ4ChiBjPXF12Bi6Da7SMC6cowuPwOHDQg+4t7KKd/" + "mDCXUC1GU3CxFgTljqJg43K6w2osPlYlPJWMobZKEKgABD1wc4WarrS596BtOqfeuz8eujcBgqTp1svuL6ba5iXDK9TmJnjhTTak8TlIdwxQJWeB6J" + "NQgx/j2TWHan6ppgUst+PFZ8U1fA8GqHtlYK7ojS8C1xm3VtKb57tvpbO0/l2kXL6scYw9yVaeLnU3d1Yl5MmUaIO00QnfKTintULsNk//" + "Y0V56OxxTwkip5+lImVj30r+wClsm6PKOUrYrZpaIONKx6jLETLILfiU3jEUmoEGAE9muXWkWPK2RvXV/" + "68lb0tRK4PO72ouJaYVWe2xMopu02YEUaYy/" + "Du4eUS9LWfq98Pybc1s5trXu1sBCPwQE7by9b72TdmkxcoaQ7pDx88MoJULKiLRLXAb8ZwW4CXKK2fUNT+anzMAydVjPr2GLxjRPTxd/" + "UlLuyPF2T25YkzLgdnBrZhrquC72EqK6SKfB+LKnTucbmk389VGX4eFgHGMXSGE45lF5g4cDRc6Di6kjo2SBwlOW03ivB2LcFV6q37n5HE1P3cb+" + "jqb0lb6YcKFh8CSN3K/" + "g2THgpojSbsf8UWJ6DX6o0qwLKQRle9nwVLumLKm+BhQNZcaBs8YfcFuQYrfN56xSjV3+Wz8NNwegjbiMIvrfgWPcPpfFg2YHUWzxOB8Iq4Kgy+" + "NFYbmXQjaULGXMgCL76iNUecltw0AmAhHPx8TMWjLl3LRZ8LHvBeks4uZ9CqJwV+zz4UygDoguo/" + "CCF6VL3QrNwoI0DTvAlhLg4HFuG+xkex8uOptuCvDWsfVvY1vix5nvevPT9tzehu1xaO1ZWhH4fG0/" + "M4mPtgcG3BbfF3b0SlOhCjBi0Elg9mcfLV5GrE3RUPDHBZ5M65LZgyl3BEr6u8uVwGCkhf9xgD2MKzvXfwn37cu+Uz9tN3mlsFFDi+" + "PuY18rniqwpN3Tg+tx+VJHDgfo6W55obO6lq+cuV0S4yIdRDwc0JvgIRKMg+EpcxAT7Z5t4w3Omz2UhhCUbUH+4vDTm9zFReK4eHC3MlScaF0LP/" + "yvCfSSlMUz8Uy28i1rrwfz7PrcF+" + "V8ogP9P7NwbxShEaJCMXED9hCHcOETJwwu6mv5hJRyoXEG5QQpXvgWIIvDvqGBRXOHMf9TfbHmivjFPvW5cenYj5AVPRHVh7Vnh2LO6v2mulbBJrky" + "w8iqgCmpvC1aI80LASMbIZtzGXOmhZxDvMmBgK09Ej7Kz0lVOvoTLHXLmCcaU0BcY00/" + "Nyx2FTVSYueTP8yjTrzM9sGQf5LZg1KkpkqN8HzPuKEzUMwpC3TGTY7Kc03PkiTNuDfPhlAlXhwlrtWw5z17Pvu36fUzXnBd6llDn2vnnleJwvKs0K" + "wGKgYLA41y/STkZT8SDvYJ4Xnd9xu1Lle/cUSz+7EGDRfDs+zlOMD0ujF3PCKn57ibMSZ/dl+XNM5soTnJgKn/c+K3gQDh8Su4+IfC4h/" + "SB5xgoe5CVQu1OzpN44FOm/" + "fww3vDnGnz8UwDzZRmrWWSE1ZTALX+" + "REMb0Kf6gRJQxZXI0Ku82VV6ocv8mZTzGvfMkxcQJcWxqP2leMEAOTkXw8WWdNVfsvjig0WMBDDiDd0xRDB6h5gQoCaJp+" + "4ATq0dqyQXHSsBKcmVtKp0E5dOPfxWcYiaJqsimT5TE1FPzJG47pDXGujtbdyFSfuGExhfs/" + "L8MXz8nboX5OBXBD4z2iY1id6QphiCk8TsMLCEweN+jOoNl2Va1/" + "RWeKx7nCiiXWdmYpJCGXoipTov2ypPCwKIHjTEl2CvhmRdOYJK8jKqoTaosRuau4soR+1ltqZlkaNC4NAWXRM8IHUx1llRxLIQwCQFN+vfKGwMO+" + "k3KTHkyBl9DHRojinNfcbD0SjPnGJ3V7AVfY4x9WcYMIOgXCrg4sbUnL0UPfkw4H7OyAXWlxnhongwYRrqI5hRjd6k4bGY9JcrgDiDW6aKzwvJ2ubx" + "c8pYaJhSE3jOMVaDWvx+JMzcj1TO0mhx5MnQshXKaQyw6m1m+6cP+IYawr5qt4GvQDB7NZ3nD1Zn6+5gxw+M0f+" + "TfpxsVt1VIZ8yTQj93fMBoIfz492UIfC/" + "82bxMtTyPzwGETyH4neO3MI8axSNW5J02t02cOAUfv2n8k+ZpMvGt4430pO0fWWOcMhH2ArN1dfbCrd0r5cRo3/" + "uH3XuZQQ0yEoOPk7t0f7H4Xbg0Hg1XFPY6oeN1dd41LYI/7fwmX9ZM24WlNTjwP/dHioHb9TmwAAAAAElFTkSuQmCC", + "text/latex" : + ["$\\displaystyle \\rho_{L} = \\frac{M^{2} \\rho_{R} \\left(\\gamma + 1\\right)}{M^{2} \\gamma - M^{2} + 2}$"], + "text/plain" : [ + " 2 \n", " M ⋅ρ_R⋅(γ + 1)\n", "ρ_L = ──────────────\n", " 2 2 \n", + " M ⋅γ - M + 2 " + ] + }, + "execution_count" : 17, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# back substitute\n", "rho_L_sol_final = simplify(rho_L_sol_new1.subs(u_L, u_L_sol_final))\n", + "rho_L_lambda = lambdify([M, rho_R, gamma], rho_L_sol_final)\n", "Eq(rho_L, rho_L_sol_final)" + ] + }, + { + "cell_type" : "code", + "execution_count" : 65, + "metadata" : {}, + "outputs" : [ { + "name" : "stdout", + "output_type" : "stream", + "text" : [ + "const Real x0 = std::pow(M, 2);\n", "const Real x1 = gamma + 1;\n", "const Real x2 = gamma*x0;\n", + "const Real x3 = 1.0/x1;\n", "const Real x4 = std::sqrt(gamma*p_R/rho_R);\n", + "const Real rho_L = rho_R*x0*x1/(-x0 + x2 + 2);\n", "const Real u_L = 2*x3*x4*(x0 - 1)/M;\n", + "const Real P_L = p_R*x3*(-gamma + 2*x2 + 1);\n", "const Real v_shock = M*x4;\n" + ] + } ], + "source" : [ + "## cxxcode\n", "vars = ['rho_L', 'u_L', 'P_L', 'v_shock']\n", "exprs = [rho_L_sol_final, u_L_sol_final, p_L_sol_final, u_s]\n", + "\n", "optim_exprs = cse(exprs)\n", "expr1 = optim_exprs[0]\n", "expr2 = optim_exprs[1]\n", "for var, expr in expr1:\n", + " print(\"const Real \" + cxxcode(expr, assign_to=var))\n", "for var, expr in zip(vars, expr2):\n", + " print(\"const Real \" + cxxcode(expr, assign_to=var))" + ] + }, + { + "cell_type" : "markdown", + "metadata" : {}, + "source" : [ + "### Converting between parameterizations\n", "\n", + "We want convert between (pre-shock, right-side) background density $\\rho_R$, background pressure $p_R$ and wind velocity " + "$v_{\\text{wind}}$ and Mach number $\\mathcal{M}$.\n", + "\n", "That is:\n", "\n", "$\\rho_{bg} = \\rho_{R}$,\n", "\n", "$p_{bg} = p_R$,\n", "\n", "and\n", "\n", + "$v_{\\text{wind}} = u_L$." + ] + }, + { + "cell_type" : "code", + "execution_count" : 18, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAsYAAABoCAYAAADy4TYCAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4Ae2dS7LdxLKGtx17AMYM4MSFGYA9Ak" + "z/NgCPADMDHO6dnsPMABiBOW7c3m3AGYENMzhE3AFg9gz2/T/tqmVJq/RcepSkPyO0JNUz669UrlQqVbp3e3t7ZTICayPwz3/+81/i4au1+XD/" + "RuBSBCTL9y5tw/WNQB8ErDf7oOQyW0AgJ715vQXAzOO+EdAF8UAj/CynC2PfiHt0RsAIbB0B682tz6D5zxWB+0MZ42LUZs/" + "eUOBcvg2BJ8p801bAeUbACBgBI1BBwHqzAodP9oaAbM1PtCHni9Igw1gMPhN3f2v7blEu3dneEXiqAb7e+" + "yA9PiNgBIzAhAhYb04IppvKEoFPxNWvsj3ZeLK8CN3rG2Mspn4URxjGb3T89SLcuZNDICB5+o+2Tw8xWA9y0whITlHOL8IgUNrQt0q/" + "uTv0rxFYBgHrzWVwdi+XI3CJ3lRdPMa/avtT25c6Zz8rXfdpXYx8r3IYxb/p2EZxH9BcphcCQeh/SxVWHkbIN9q+0/" + "HnDWVeKf2vkHejcj+lyjnNCEyEwCvJ2OmJmY5xGPyuzTd2EwHsZroRkNxhLCT1JrWVb93ZDaNLLIfAaL0pWcbu/" + "FKsYhyzza5rO0MpxBAXIMYHZKP4Dgf/" + "TocARgYrUlRIcveZErgZQ8GznZHKYJC81v4H7fmTwEgxGYE5EXgWdGLsA91IHBzyajICSyGQ1Jt0HmTRunOpmXA/fRC4SG9Kpvl/x+mFrj2zF/" + "owMKRMH49xNDZ+EEM3Qxp3WSPQAwFWozjzfCjtD9X9Q/" + "vki55KxyB5F8pdsdfGXaWpBQFhxE2GQwFaMOrIwiB511HG2UZgbgSSepNO0YXaWXdOPAPWnRcBOoXefC4OuOH7SnOB/" + "CPns1CrYayO8RbHOLqXs3DgRg+LQJCvscLNBfK12kA+" + "8dbxuOVkYId0buqQ4fgoRofFHwd3r0XIhfa0Q5gG3udIGNgvlTeWt9hOjvvRj7SaBgPW2maP+2rqf8r0rrEovx6qg8L/" + "U+l7lJUpoXVbEyEgWUOnXSJv1p3j5sK6swG3JfSm+iBUkv945B/" + "nzmwRDF2hFCh9iLtPe4vvsPDvdAgg2K+HNidZxOvJhgHLnosFpYXCj4RRzCMXyiC/nF9pjxFdGHE6pi5EOfIxoDF8uAk8e1yjPPq41fZ92Dj/" + "UVtsR9WyJ24KUCyRLgoFAAc1tKcwAox8xtRJKse4eaKRjH/vbMAFjMA4BEbpTbqSzKKr2Kw7AWQYWXc247WU3oz/y3iNZ/vfvW4eZ5ET//" + "D86LADKGePQuCJhDvefA1p4GEozGoWhedEex6z/K09RjJyywt70YuJwYsBCNEnMckQ7fyiDYOa1VZi+RudxyclOjwRgf/" + "l+leqgxH1s7bZ7l5PvU9zAN6TXM8aO0bhx9pHPKfhcOZWxC/ygYL9XMfM9Yl0jqzwmI4/" + "wbp3uFwO+UCmzto4FfKBEZgHgbF6E26sO8fPyaF1J3pR0K2tN+N/" + "NLOIDr7kyQltJKnLMI7GwX+" + "StZ1oBEYiEC6yUUKtujy6pueTgadzHrOQxp9GyqB5rXQM4JMhpPPoOcZ7gtEbCQVwKhcTtSf9FK4R0ut1S8XzO0xgg7IfHAqgdh6o3gvtN+" + "EtDfxyA/Ne2yNtUbfpsEoqy/sUv2v7RduZHCiNus+1Z+6vwjn7stKuNuozIzABApIxdNAovUn3yKg2Dq07QWEACbf6/" + "8rudafGjJ7PSW+e5FZ8oYdHXwttU99lGLfVdZ4RuASBSxenxwh5mGCgyTgh/V+60FNLvWAo4XGOBG94kuv0WAnv1QaeUvqmLUIp3mh/" + "EamNJ2qAx1F15XtRu22V1Rd/" + "soxljHGLt7QIT2nrY8q8SzBSXQzcwquv4z7hH4yNMfLndyLVRRmTh2EMfhBlyvJTJPrHCMyAwKV6E5Z2ozt1DS6uNwEwXPub0J2XYKS6WelN+" + "NHGFECp//+7nAt/7/" + "esf+Y16VnPxYxAEwIolbr3talsKh2j5RS+" + "oIsFIwVvSLJNLijln91dKh1D54G2QsbDOW2lDB2UMAYRhjD9MIazNpU2huCBbREK47wkFOAbtbGYER9AWQyjMDbGWJ8TXtJEDtjHjbCLm8Cjd0ZgTg" + "Qu1ZvwtifduZhOiJOqa53/jC3pzsUw2ovevI6T7b0RWAqBoFgwYhuNiVAGTxxGCJ5UFNFf2hfxrNr/pI2X4Ip05eG9bfR8qhzKrBwuodOCaB/" + "jlmB+Eop2dFzhTecol6uYrj3843kpDHLytkLiGyxGhwKoPn/OTZ75rcDQh0/" + "G+I220w2Axv5Rn4ouYwSmRiBct616kz5DOevOqSfgA7bWne3Ybl5v7tYwRjlo2/" + "yf917GUbuOMKzi26W1rLvTMHcpr+" + "2pvMoMeekLA7gcnxTbwZjmhauutlL1H6kuK1NUjObY8BL70Dex0xj0xMWejDj61zk4nz5ZrHOM4ktDAYitTXrmlU6fzC83LPRFOZbVO91o6LjAspym" + "MjkSvDPWCqY5MjoVT5qTXehN8NjTWML8durNMG7+96w7A2hNO8kHetu6swmg8emb15v3x48935oS+" + "D4xhPkOoMoZf1SMZ09EnFwqhnfOMfKN9VTYA0ba27aOVY8/pBfaHuoYD3EkxoDhtOajdF6Aw6jHG44xeiKlo/" + "TxhJ+MUp1PEQrADUHyhdzQJy9roBzhC+OY8zKx6kOZp3JeTseMEf4PQZqTPelN5mxvunMNvQmO1p2gYN15h0L37+" + "b15nX3GLdVQsodI2ZTS0iJZ4yti5ZB2cosaazcpV9pv7RhdPb0QDxEryaKH69xkielE1N89oKd0isvZi09B+ofuYlGPQb6+" + "xoPpFVuBlRnilAA5rDe15XaxojEO1zug8eOv2orvlTEXmUwmrdAjPEQhrHmZXN6EwEK8rR73alxrqU3gdm6807WynoNXMbQEXTn5vXmrgzjoDw2sYR" + "U4BVPGkKEB67xD1hlW5ePGnN1rliHmM3XS/cvDM8eLYa0s/" + "Q5eVOfhDHgpa7TQxKUnzK2+UDJ6UXDUkXiDf8I5+D6spTHIf3U02pFRp3Ca+omAuMqxSdpeK/" + "h9Yl4xpPcSMqfEqPGfnpkYBAUBkmPspstIrwZ4yb0JiAHfo+" + "mO1fRmwHvMx2pOSDtLJ3yc5D6m1on7E53zoDR2KncvN7clWGsWcQDyAW0CEkQMTx4XDc4BlF1MCwKI0LHfR5hMi7GlzKclLwuaQzw9lb7M89qjTPG3" + "DoGtXFbq7OZU/" + "F+" + "r41Z5SfHrnSMSmSp1Wgst62yhXGqPXKIcXOSQ6Vxo0XaYt7ZJt7hUxtPceDpzPuktAqp3GQYVRoeftJ0AzC8pbxrLKo3gUJzbN15h8NkejPgukvdOb" + "VOUHu7051TY4Q8jaTN682+hvE/" + "RgK0dDWWV0r+qc7ECIYH2+ykcbEKA19249F0cVHP3mnPDsQPRh3GfTLkoNYMxl+rcaT8VuOy1p5P726w6m+" + "rMydXwjJ6lCs4KR3DhGuFcswbNzV9jXKecoyRe+Kd+/" + "ahLlYnxshY905L603wBNsxMjR4LiRzWepO8TWp3gQYtWndOUxCcNRYdw7DrKv0UnpzNrv0ftcIt5IflEyrwbWVsbTwyfh4pJYNCffPAjPFY/" + "I2xsIcdXmU25pwXhoBPLF1A5j44sJbLNyfaasYITonj/" + "hkvLnEBQ8xWJFD+hxKHw+tsHJ5PB+71imad4yzXY8xyFBWulO4W2+ufHGH7q07p5+HzevNvh7j/xuCnS56/oR7L4MypO2WsidDIFUm/" + "AHw2IoLAaNgi0tIwTfjPD0y1/HahGH1Rhu4snRZ8ZJVA1NPlf6yIc/J4xHgTx9lVBBzoINH2qKcfKq0m7vcym/" + "rNVMpWT3BCH9cTep19rpXqfkLRQMdzFK4RA5Yyq9+wxHzJt9rjqw3J0f11GBuutN68zQ1qx5Yd/aHPze9Ocgu7T/" + "Mq6v7QwoPKDt0CakBTTcWxRDY+xJS2S2Doj/" + "z6G3ijwfC+G2iNqO5qY7TuxEoXoLRXHBjQkgLNykYdXG5qiaDlHCKX7UNJdrD+B5CD8TbYkZmijH1zyfBWcGAm3aoOFdaPL9L/" + "fA7Fp8PLQw7st4chteQ0lnpTsmc9eaQ2ZuvrHVnB7Yb0JsdIxie3ddj3Ltlgcgf5qAlpGLjqssf0di4R7wt72Nbca82MRL2soQU42M82ZFwZuUEvG/" + "M4RmFuY3G81m+E8YjEHAvXuSstZJKK4qoTjRsB8+J6jLXV7TBca3PplO8s6uSeG3Eo86YyhbXmfaD8am31edc/Vhv9gFqfJksdafm3Xpz/" + "JxeXFP485+V0guptKK/cK1yPFg3hPm+og2Oiwa7f1bVneKzEYs66yq7qN6s9z/" + "V+eSGsRgbvQyKQGUtWf4gngyZjAAGwoOQ14kYutTEktZrCSnxMvVSMXUe+57jZeAGIFdCUfCCFd7B+lyAN9662Yn+" + "1ckLbX9pe6ztpdL6KiEVX4XAq47ZnIxwA8Pj3Oi5GtoXYUncxLK1kvqgr7H9lNteEiM8SYxxKdqd3gQ4zb11Z7cEZaE3w3xtTXcuqRPiTG5Ndy6J0d" + "J6M87JpPvJDWMpQiYBhYjwcJHFOEfSuJsgre1Oa2zco5o9J/WZfKlI6RgFvZaQUrnkn7/SMboHLbF1zuGglCbjf1AjMxbmETuYMPf1l+y42UniOAM/" + "/1abfAYZbww3WpxXFmdXOkYPYQfFozTtiZ9CNldZ9UP8tF0TYmtySl5n4gMMHnXxo3ze9OfDHZ2rjKg9+" + "hoTslEZdBdPlcIXnDAmVWdcS8nrlfq6gWXtd6M3w3iSGGqc1p0AdEe56E242ZTulBwtrTfBaFO6cymM1M/iepPJmIPuz9FoaBMP4aBlUEI9/hjG/" + "InyqIw/9aGEh7NuxA1tY6nyjI9x5kpRST0tMyh8MU4X8diqL4zdd9rH/govu87rsoGMYTjz8RQ2DGTiEH/WdgRqus7wtL/" + "rCQDXOB7BLuKxYZSNrrI55DOmpEG3AHPWm/" + "OAnLPujNfGanoTyHWNWnf2kz3rzjROa+rNNEcjU+c0jLl7iMZJZO90p6WL8Jm2irGicwwoKCqKu7N+vxhA9DmU4puWQ+" + "utUR6P8RSPpGfhXfN3o4aZcxRHmVD4eEWWIAyacsjGIzoNvJX7R9bqcoZ8xvj4ctldHTddZ0qPXjzmsZMCpt9pzx9qG61lZLbxlMwLY2FMa11n1pvJ" + "mbk4MVvdGa6jtfUmAFt3doiZ5ippoyj90LpT4+c/YE292TFzw7KvhxUfVJo/" + "FpRRQUGgMFJiaEVqCSkMqrFxjygW4kmH0lIGWxtf0TgHrzajhJUG6jcbbe2ukQee9WXb8MrjkZ2V1Ac3WhgWZY8nHrjUEwFk5b3qoNDA/" + "VNtP+o8VVZZ+yCNDwUWPVMoMgYGblybKH1uDnqT6nOdJ8OVYiOhTDzNei9eW8eyAPPWm8NA3ovuXE1vArfk3rqzQ+" + "6EkXVnA0Yr6U1kdjCJ184XHxsN43ChxE7fx4MBewyhn9XOK+15CQqFj2EXl5RKGaQnj7LKnSjw0hX3SHtlT+" + "GpfssBL4mtZmiq78gvNwQQy0eBE7Gb8QaiyAg/lMvd+xa9sBhfhCpgqDKmJajAUX3e0FnomzTkrk6k/xdlQznktU9YQL2dTZ1rrBh+axt/" + "m8JsYWatN3sALjnem+5cU2+CuHVnh9xZd3YAtHx2vCke2jM2aKt3+7qlxXJYwmDDRh1jnOCtq1MqLZbh4kwZfi+U/jIWSu3VH0bYlbbOu4FS/" + "ZNHu5S22KF4bcOiwofKFvOhfVSglfxcTsQf88DcF4pWe+ZzKYOTGys+" + "NsKdPTzgBf488KPDO9L5A45iuvbEwiPjeEwHyzptmYzAFAgEmUzphVRa7PJQepNBC6c2PCIuxV5ls9ed4nFNvQlO1p0VqfFJxgjwH801XbZRh7AbY6" + "FxQiTpOpl6l8ij1YK4aOPxXHv1gVECVQw/" + "pfOomzfEMXS6CO80hljKuK7UVXv8mVxqBMFTH74qfY88YRIZ3xaIOSR8AgMUnFtvaiYcEDL7Uv12hUPAUzncAhaoy50kPF9pv9S80p3JCIxCQHK6Rb" + "3JWLm+lrrGtqI719KbzId1JyiYtoAA1wlL7Y4yjKUzcZ5hSzUaxvdbUIixhl1GRksT/" + "bLEJB6+uBoALm4MFOI9f1c6j8x6eRxVnvADjOg+gDG+MatfqNodqR/" + "WXU6FPMQik+zDeBjX7H1NwvCHF+3w9L8X30v9AWIkVG6s6uMRL9xowddDHUejgmK/aEMmni3IL/" + "2ajMAoBCSnm9SbDFa8b1J3iu8n2pq+lDhqHkuVCAeEltab9GndCQqmLSAQ7UGiAx6MZBj9g4MsSdep1NAZBgQUmbg7m+FX/" + "U0Z98gjNozpaNg3cQyojXcMTZVWSmcOOr3gK/GW6jYap/" + "xxL8K35pKbIYS91QhXPjd6Zzd7Sl+EzxRYTjMCYxCQzFpvdgM3te7kj3jsn3EXt4vrTRiSHFl3ds2M87NBQPJK2FEMp+Amdcw7M+iFF9riNVcZ3/" + "3K2YcTKkC4nJMV77Lz+xW/GEZ4nTHK2mgThlAYR2ugeNsg18gLcxDDb/" + "DEzk7qkzjhrpuh2flwB0ZgiwiEa3Y3epM50JiKG3PtLw2ZW2RKwxwsqjcDTtadi8ywO5kQgWi/" + "xf2gpnWtcZ1xQ5ike7e3t5UMVaAwHzrAwCze2q8U8IkR6IGA5Ig/" + "pafap1aE6NGCixgBI2AE8kJA+ownqYS1jfFSdQ7GerMTIhcwAgUCulaIE8bOiB/oGoRMuNa4KTx7glzxGKsAj4iIu8UoPnubf1CvLnx0BIiH/" + "vboIHj8RsAIGIEBCFhvDgDLRY+LgOxVQmExar/" + "XcWO8cAtC1E16nE8e42AU87Ibj52+1jnGsckIGAEjYASMgBEQAvpfnNVjbJCNgBEYhoCuSbzGeI+xW8+8v22tqTyO4DN7t/" + "zy3TcqQBjFWaG2hp2XNwKaeJ4C/Fsb+76EDMRYt751XM4IGAEjsAsEpP94OSflhXrIAJWf8jTxUlDv9ZV3AZQHYQRWRkDXHKEUvF/" + "Eu3GDDGOVZ6GGsxf4Th5jZV6p8RizwUsYo5YGU71q0DINm2ZDQHjfm63xloY9zy3gOOvQCIy5Jn09LSsyY+YIDlXvIo+" + "x53nZeXZv20FgzDWpOjhz47K7o8J/1cbv2irvQlUMYyBUAe6UsaBHG8e0YzICRsAIGAEjsCcE9P94kWG8Jyw8FiOwJgK6FjGKCf+FRi8UoXbwGr/U/" + "vSUvPLyHa0rk0dExBnzgY3UoySKmYyAETACRqAHAtKjQ8KYerToIkbACBiBwyOApxjdemn4L87gSmjUmWEcoI6FsKRNRsAIGAEjMAKBYBT/" + "rX30bIxoxVWMgBEwAkYgIiB9StgvHmPi+i/" + "61kaoX3ECn4VSlDr+" + "W8dY47sNqRAgGP48GsuCxM8q8cJZDN5MDELAsjsIrlULa65YFx4aFQN3VzWf3yPLnsbuUIp8RHEUJ0eW31GAZVZJ84ddin0KfanziwxjGlEbGNpvtS" + "9e3iuvSkF+mfhiWRFrrP2oF/HKjeV2LAAAl89C2xjNbXLMTysClt1WeLLL1Hx9qi2bG/" + "BLALLsXYKe666NgOV37RmYpH9WUINuNJ8XG8V3TV0RTsFWGMZNoRSUjWEUGI8YkXsjXOdDl/bYGwYezzYRsOxub94eS4/ebI/" + "tM46PLnvM4R7m8WxiD5JwdPndwzTHJRHfTTUY6Wbeq3sYbd3rlobfl/Ie6Xgqy7zU7KqHT9X7y1U5cOdGYBwClt1xuK1SKyjbv1bpfPpODy17msu9/" + "Q9OLyF5t3ho+c17anpzhz0KnVaRuDu9+" + "DeuyPZDm8cYCzoSQc57IzzhUwO7N4w8njwRsOzmOS9NXD2TrvmhKXNj6Za9jU2Y2a0gYPmtwLHJkxjBMLWzgfBhbpyuGg1jKfLdPi7S2Hic4jt/" + "JMC0KQQsu5uaroLZvRjFlr3tyZ45/" + "oCA5fcDFjs5mtRGlXzQ3jvtH7SFUuwEu+QwWI4Ot3mFBAiecdILw1nnfGawIB3j9SleQuRYiXwppbwEE2Uri0QXFf1jBKZFICm7dCG57JRfy+" + "60k3Gw1ix7B5vwnQ03Kb999CY4WHfuTBoSw9EcIyNXRzWMeZyS8hhjFPPSIUt3sAwIHzlhubrPdF6Elug4uvEpxwLTvHH+pzYCwUn7VNuJlB4/s/" + "08JH6sPW08V96kdzynTn2wZwSaZJcxt8qv5M2yu2fJmH9slr35MXYP8yHQJL+tehN2rDvnm5QcW87aMJYwYpBimBZW/" + "BQAqi28wWexxUpnOSX6irHVv+kYoxZ6ouMYI/" + "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" + "EZ0cBHIzPQpBLDGIoc1d5KTERTML32sAAD/" + "Tnod9T2zovQjliuvbgxoaBbjICZwgEWbHsniHjhLkRWED2GIJ159wTedD2F5Bfy25msqU5x8bC2QhFp+3d2cS/" + "1z3awxDkpbIXYuynIJA9qi1aBAO4vmzbV+I1rg5xCTOPVJml2brCITDM39U6oi58VYzmWhmfHhsBy+6x53/N0c8pe4zLunPN2d1/33PKr2U3P/" + "mJixjgqIxPDGbhstVjTI+BAT6sgXEXGSMrJ4ogFeEU4n89N2QAAAWaSURBVJlwh+jpvpRPPL6x/WRb6u8rZbDG8UMdlz3EvyiNO89nSr/" + "R3mQE6ghE2bLs1pHx+dwIzCl78G7dOfcMHrv9OeXXspuRbMl+wvGInfWnjnnHa1a6d3t726sDMcOqDDCG1/" + "iiF9p6dTiwkHj6W1UAjTCHVzrmS3ldXt7WXlQfA5uX5zBuTUZgFgQkX5bdWZB1o10IzCF79Kl2rTu7wHf+xQjMIb+" + "W3YunZdIGNB8YxUQt4FzEvpvK6dnIZ2/" + "DmBbEEGtSYnTiyp7daqfPviR+ouHORzdYlPsLpdlL2xdAl1sNAcvuatAfvmPL3uFFYNMAWH43PX2dzGt+" + "o1HM04Gvdb6ITdcZSlHmXEwRUsESZMT25EaRJ0IaWDJtEQBzA8H8bBIBy+" + "4mp20XTFv2djGNhx2E5XffU493GIP4yyVtuuuhmIo5GJ3dlT2UL5WP8UZ4tbML9RgxHlc5DgKW3ePMdW4jtezlNiPmZwgClt8haG2s7Fr25iCPcc6Y" + "hruJuGYwL72ZjMAmELDsbmKadsmkZW+X03qYQVl+DzPViw50sMd4Ue6Gd1Y8VgkXy/DarmEE1kPAsrse9kfv2bJ3dAnY9vgtv9uev+y435th/" + "JMQjo9WsgPbDBmBFgQsuy3gOGtWBCx7s8LrxmdGwPI7M8BHa37QqhRHA8fjNQJGwAgYASNgBIyAETgOAkmPsUIRHggCvvxypeNBHliVZ/" + "1KFsf+Q8c5vqTHsExGwAgYASNgBIyAETACRqCCwNnLdzJmWdWBdYCh+ieO71JbfoMxjEHMp5B/" + "1YaRbTICRsAIGAEjYASMgBEwAlkjUAmlkBHLl+34UMZHOk6uA6z0V2FEf2nPmsYYwEnPsNKLr5Von9XHQAL/3hkBI2AEjIARMAJGwAgYgRMCdY/" + "xY+XwWeUmo/" + "h35fOp5efa+NjHc214hQmfSBHLpxFWYTICRsAIGAEjYASMgBEwAlkjUDeMG5mV8ftMmQ+" + "0fxML6RgDmvMfY5r3RsAIGAEjYASMgBEwAkZgiwj0Now1OMIh4gc0ymN9q5MnMpIdS1xGxcdGwAgYASNgBIyAETACm0JgiGH8RCN7nxhdjC8m32QEj" + "IARMAJGwAgYASNgBDaJQC/DuKc3+OEmETDTRsAIGAEjYASMgBEwAkZACNQNY8IhUi/" + "eRaM3lReBTIVSsHJFrBvLeW8EjIARMAJGwAgYASNgBLJD4GQYyyv8ibj7RtvYF+k+ToyOF/" + "N4YY9l4ExGwAgYASNgBIyAETACRiBbBO5jEGtj7WK2r3XMd8frlIotjmWiRxjvcIXUFvHHH2l7quPftdlAriDkEyNgBIyAETACRsAIGIFcEMAwxnh9" + "qY2v3LE+8VlIhNJiCMVZnurEtPgSnpIq9EJneKNp+7TUW6WET4yAETACRsAIGAEjYASMwMoIFKEUMlj/" + "0PZd4OXnBp5+UzoGbp2ix5j8CqlNPMR8YvoLHZ/lVwr7xAgYASNgBIyAETACRsAIrIhAYRiX+m/7Uh2hFo9KZePh5zrAsI5e5ZjOni/" + "p3TTklcv52AgYASNgBIyAETACRsAIrIpA3TBuZEbGLbHH77U/" + "xQnrmDAKXtj7trFieu3jluLOMgJGwAgYASNgBIyAETACyyNwPbBLvMOvZBDjCeZlO/" + "aESaS+iKcskxEwAkbACBgBI2AEjIAR2AYCgwxjGcCES8RY5G2M0FwaASNgBIyAETACRsAIGIEeCPQOpejRlosYASNgBIyAETACRsAIGIHNIlA3jKf+" + "Uh0xyKmX8jYLmBk3AkbACBgBI2AEjIAR2CcCdcN4si/VlV7MG/slvX0i7lEZASNgBIyAETACRsAIZInAvdvb2wpjMmg/UcJzbaxP/" + "Frngz7KEeoTh0w7g+urjskIGAEjYASMgBEwAkbACCyOwP8Dl+k3qlycesYAAAAASUVORK5CYII=", + "text/latex" : + ["$\\displaystyle \\left\\{\\frac{u_{L} \\left(\\gamma + 1\\right)}{4 \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}} - " + "\\frac{\\sqrt{\\frac{16 \\gamma p_{R}}{\\rho_{R}} + u_{L}^{2} \\left(\\gamma + 1\\right)^{2}}}{4 " + "\\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}, \\frac{u_{L} \\left(\\gamma + 1\\right)}{4 \\sqrt{\\frac{\\gamma " + "p_{R}}{\\rho_{R}}}} + \\frac{\\sqrt{\\frac{16 \\gamma p_{R}}{\\rho_{R}} + u_{L}^{2} \\left(\\gamma + " + "1\\right)^{2}}}{4 \\sqrt{\\frac{\\gamma p_{R}}{\\rho_{R}}}}\\right\\} \\setminus \\left\\{0\\right\\}$"], + "text/plain" : [ + "⎧ __________________________ _________\n", + "⎪ ╱ 16⋅γ⋅p_R 2 2 ╱ 16⋅γ⋅p_R\n", + "⎪ ╱ ──────── + u_L ⋅(γ + 1) ╱ ────────\n", + "⎪ u_L⋅(γ + 1) ╲╱ ρ_R u_L⋅(γ + 1) ╲╱ ρ_R \n", + "⎨───────────── - ──────────────────────────────, ───────────── + ─────────────\n", + "⎪ _______ _______ _______ \n", + "⎪ ╱ γ⋅p_R ╱ γ⋅p_R ╱ γ⋅p_R \n", + "⎪4⋅ ╱ ───── 4⋅ ╱ ───── 4⋅ ╱ ───── 4⋅ ╱\n", + "⎩ ╲╱ ρ_R ╲╱ ρ_R ╲╱ ρ_R ╲╱ \n", "\n", + "_________________⎫ \n", " 2 2 ⎪ \n", " + u_L ⋅(γ + 1) ⎪ \n", + " ⎪ \n", "─────────────────⎬ \\ {0}\n", " _______ ⎪ \n", + "╱ γ⋅p_R ⎪ \n", " ───── ⎪ \n", " ρ_R ⎭ " + ] + }, + "execution_count" : 18, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "v_wind = Symbol(r'v_{\\text{wind}}')\n", "rho_bg = Symbol(r'\\rho_{bg}')\n", "p_bg = Symbol(r'p_{bg}')\n", + "Mach_solve = solveset(Eq(u_L, u_L_sol_final), M)\n", "Mach_solve" + ] + }, + { + "cell_type" : "code", + "execution_count" : 19, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAAaQAAABSCAYAAAAb8KCFAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAZGElEQVR4Ae2d67EcNROGl1MO4GBnABlgOwJMBl" + "wiwGQA5X/8O+UvA3AENmQARGBDBpABxhn4ex9ZrdJcdy7aWe1sq2p2NLq0ultSt7ql2fno/fv3Bw/OAefAaTjw448//iLIX54GukN1DuyLA/" + "f2RY5T4xyohwNSRrfC5jPdP6oHK8fEOVAvB27qRc0xcw5cPAeeiIJfL54KJ8A5sBEH3ELaiNHezFVy4BtRfXeVlO+" + "Q6GjxPoukfRLv3yr93TnJjXh9LRy+U/xhHy5Kf670f2PeOz3/3Ffu3GmukM7dA97+njmAu+6vPRN4ZbQ9V39+ZzQr/" + "pPif+r61NK2vguHz9QmljgBF3EnqAw4ojj/iuV5rlIhucuu032e4BxYzwFNfITE7+shOYSKOPA09quhhNXxSRTylrbpXW2jZP6nRv/" + "pa1h54PiGcuTH+xd9ZWtIcwuphl5wHPbIAVbSrKA97IcD9OmbCyPnqfD9SooIFyPW1O+" + "Kp4VSTGechgWUnpOyUhwFHCwp4iqDOxDrygJl75RXzAvgCslY63fnQFkO4K5LE38OaNXD9VLdXsUcGvZYVv3SdnOhoP4pKZBL8i2OI8YSiuOlLsYjb" + "sc/M1pQRryagCX1hdJ/0sVeFMorWF2KmyuQcr/" + "p+lRp0I1yJi24LPWMUgMeCnCRknKFJO55cA6U5ECcmIsmZMSjur2KIf6IVlxWve6ioTq1ps+hRWUR2Lxf1nuIoBIa70c8/ha+5rL7QWn/" + "6RnlBA0oH+s/rCcUE+GJ4rgCCcB5pQsr6des/Ds92+GOg9Kpf1/" + "X4rHve0jiqAfnQGEOfCV4rEiXhur2KvoIkeD5XukItb0ElCs0jQaVQQgjuB8qjlCuMgg3UzTJzZjhi8LJlYvR8FLpKJ5EF3BiPSyt11ZQd/" + "o+LwdfrM2s2PSoW0jTeeUlnQNTOcBkT6explbKylW/" + "VyH6sA4e6G6r6Az9eqPCFyGKm6mjTJTHCh9Xa9o7aVOiPITuD7qHvZb4fNB9lSBut1PwGbywcNphCF/SfxE9fScHHykPC8sCrzVgOVkIixPVRak/" + "0IVyS9aS4vCOsf23LuC/VlrjPT1XSOKKB+dAKQ5ogjEp0yRcAlcwqt6rEH63ouuZ7jW7qxLrI74vlPBWF0IVwdgbVPZ/" + "uthjeaUrrf4prGfqsUeCQgrCV3EEbC6k9VhVwJLDYg/7mRFvLJ7e/U2l845SZ/" + "wqDdrp98CT+AwP8jGAkmYP6ueYD6+C4tad8JvSbb+JvE5whdRhiSc4B1ZxgFXjGnddo3FNYCZ9bXsVCLlegdJAvuCD+" + "PBE4HCptZX10VZUByGKUD4oPsXNCG3Q2LZyOWGGUM5PmgGzXU5FjgfVW0yTQRcMszoMFnj/q/" + "RgueqOcvheV0hXHgohVyIGKtxVDngcXGgH4KOovlQZ8gIcxYOCIkEht6CAk4LKMYZzRUd+/" + "hzK3ks1POIccA6U4AAT764EoCgcECQd91IJ+CtgfC3cFgnhFW2iCLhOHkQbQpyNfyyhJHAV/" + "7hw46tpEk642EYtNJWZ41ZF8aQ9p4xelBguzVFYyjd+MT4Yu3kIbkKVge7ewzCukHJ2edw5sIIDmmis+mwDeAWk5B6qbq9CNKJwh/YfVtFcWWVo/" + "FrXbIusMjrmosPR7z6aUVSjio981bVDIewfJbeg4hygADbjBzdexzpS2sEVEly4oKAO7V1ZXBAJAdW90NHiO5ONDfNOEL2sCjm99EAXx3DTpFecTV4" + "mc9jg1R3FhtuItNr2KhAmSdAo3gjCFx6wMoYGyvFOiq2aD4qHFXiepjI1BnCH1tRPNSJ5Apw6iw31lfUnCgUrKfVn3j55eu4dG8rjsEiwqnVnbDTcn" + "gbHFZJx4gLu6khWHwyYzqC5APTbKKJY8UePugDalSp/Zv/" + "o8wEcOQSAgkFgs8GeC7r7eqaunTgqulchuCXDIwHr3T8SbShchNcrXQgtozXs3+iZsPiF4Q/VN/" + "tlkYDyvKrAGG0THNM66e1yR55fCI65sgdPZ7pCOsLFWrLVmUzuwY6sBc8cD+HM6n7xEdscVu1x0YoFdNC9s3qMfLD3N1h1txcU3yrtMfUJKl96r+" + "ID4DK/0Pm2DUo4s+rFGspxRwFzsgolZH/s2buCbsOr4BkaoclDAQ6o//ODFLbw6kB2hdRhSX0J6kyEwEUcs424rj5iW18vHMWI/" + "YaXA6XYVzKfOeVspWjF2wrK0mu8Y811lK7SWDDllpDhThqWE/Q/ER9GLWLlY331WSa0e1B+cPsQzwLKrq/" + "trMjsKH3CvFsdTkWT4O7ic9+iI33A0hXS6uG2CQDcIL1uklO1rkGCUJh9zFb1EFZBOCiOixEraSxAF/" + "T1CZqxepvkiQZw67zA19M4NPfSEHly0B2hjZDL3XWAOiqoKVRzEG29igbadWHZY20cVbwqN8RDeMd47G3nBLwZUryzmzoVTYKbBPlspCqtcFMpXo5W" + "kwMcs20LsWaJ8k8IziIrxDHUIl3Qd/" + "K2xvDoyxNOCEGUKvs7x8KUwybBXSe471rAOOiwKAjWU13sd6wKgsG7Khx1huaxgCtrSV+" + "xXzjoqhlr8Ex50AitHjbkgCukDZm9pKkoII6uLJfArqgO9OHKqiaI72bZBVfTGGKxj6YIW6wE4KUQ666xft8I2Jr6ARfhgeUxZZxRBjrmhsVKd25Dh" + "cpjIU3hR6HmHAwc2K3LThOMFc6kY7aVDwVW1YMbwVGg4VZCSFDuEo/Zgjd0bm0FqsnBgKuJdyfgK/" + "++HTbmB0pjQd0N5OXJDeUWYWNZTVFmOZwUV11gNpRcypwfeTuhCm09nlCuXeRlO+" + "FMz6YYj7nk2IQvxdczkXp5ze5WIakr5hyzrbnnHgm53hWwhNFejtlWd8RWvLXVsS0GUDpDAmpMWaWxJZicOuO/" + "vjh5GP6eRfG0J6I47jIWFwT2pBCa9D0uPhYaHI6wI+HkgyOw2IMK+" + "wm6sxAjDUVKGe5cj5XHcwp6xh1JAD71aO9YQLEAf064VVtDvJsDZ3FZtW84szdK4A9E4R+nAPsWQpTr3c+" + "isofTcGCXCkkD7DOx63VkWfDbt9j3rZ4ft9ImPQo2SgDBEv4kcFKlnkKqjzB4putbxcdWyAiKt20QqhMEju57OGYLfdBTXRB/" + "OcGFwDZB1sBReaSb0mrk9T2o/KCQUx4WGdWwyIIA1x2FxAuJpiB5fpPlAy/tISkdy87SkvWlNP4wNO3jKB4Une7p/" + "RLFGY+jQWXgx0HXJCUcgU1RdKPtrs0Uvg1lPAZPZcNY1H1yv47BqzVP9CFb6PN/" + "dSEPi379VfBmh3uza1xGhVMesy3ms9eAmLJZzmRGILYDq+m+SUbapR2zRdgyOWoNCCaEOSv9dl/" + "Ab1t9r8Zf8FFKrN7tkAQupkd6trb5Wme+ou8sVjIkcoGalD6wVYYxki9mqGZKj/hYwIpD6Q0qV6ustlDYU+Fatb47fG/" + "zvq9ciTSUtFmqJeANwdiSpj4c/lAiC2J7R4znMCZiv7FowTIPi6M+AKXTdqmQxMAwcHVHaN/" + "qyicwPFx8zDZ2TqkOGhMm4DkYhEdy9eSFoF3XpR2zHVK6OWnnjOOmYiwhXNvWLGPpqGCeiTxt8CVPBALWzytdnETknqwhxUeDyucCPI+" + "bBZCnjcLKMwWXPx/F1WVKM89ux/" + "FQ9P17dLvc6LPaypXraNk1mdCk+tBVuk87aG1FU6dhJahtPDTJ0lY8LAqVHhY+4Kbrvq5Ssq4PjU7aLhVSRmVw14mp7YkXNjaVfgk+" + "e5TWbUbT1Cgr+l6lNRXAhuWgb7Fy3gBPE4ZYtEkhib+4hk8xYVFEWF24UlhMISxYscOn9uJKSbNDsFiEv1ldswGoglmGzLGxgGsvuQXHClaSB+" + "9ProwqoBUaczofgZP6KshK3VHMJSxbwE4ON5NLXmZBmNoQGGI0SohBB/MRLmGyKI7ZiuAh763i1hk8B7NVaXRW3omHLM1WVrhcUASssmgrBMWBE/" + "76R3FWmKFMzB67gQew5wY7TTS33jnKYyEZv8/R/" + "mib6iv6nXGEhZQHFBTWU9Gg9kwBchABi5dnxgDuuiAwFjR4a3UEA14z9tNRe6WF8Wtljt0jHlhxdjBiqEpjvgwVqiE90gJN1Y7FEnwSfYwF+" + "vtNBo8FRlpsKc5i6wBPdIVTpjxbUBryjfSn8Z5knZVZcr9ZUumC6iBEYHwIMFGRhptBaXQCaVYu+ew/" + "1ApCIFdqb2N6380ECXmUCzAjbHz2d2RkYcrAp+3HWZ2p0eKCcmrDWTlTiiicsfBQmTmPx8qeKw9+" + "YlGEiRqRSIcEToAUllBYOEXYjJ2G60u4IFj4m6aD4qFsTMOaytMYe6yAv1F+UKq6I4BQcAgc8hEojFlOp+Y0Kqk/" + "qBx7taNWOGX6a9eXCi2XhO8KDtoYCIsb0YycIo3DXhawfDkRSv8ytsKYskzdcdlyuItxmhY7Wf6i6L1FtS6kUmTY4DHbjAyUUq0+" + "ewTh3E1zBOfZBLzaNnzDwAd/pSGYLvmIrS02sIqwppnEJxO2gt9wc+m5I/" + "iVhkBBsaQwkIbQ6Lj62m2oTKeNBNgje+IAygZPDtYtY+gkX39dwrCOQhKSrJYY5CZMcFflplynnUgYGhTimLgvj9XpADlRgvCY4jJgBVClz174I/" + "wOui7mmK1wbQjJsa5VWbMiTeCPFT9bnvCkHxjfNi8YV7kFczbcvGHnwEwOYC3faTwfk+uMdwJjvW0hhcWYYNwqr+" + "F1osLScNOuqAbY3wgaNOYFgdEuZ88qi3n/OD6jvI4qMKtby104mzCs1WfPYJiiWA+iBYFZYuXOYLQBecquwhJoD/" + "ZTtrcGNuOEhQGTED7buFkD0+s6B7bmADL72NjFHYc7FysKAyOVVxxFhhcGNy9zt5g3pqOQBPyghlBC+" + "KsRSMdeAEXbhqB6CWlLu6B7tT578RXc8n2uMbaymGjsNYwVHsqjL2O7Q0VWpws+4wy6Ou6kpcAF64kurPxThJcR6DPdOfiyhcI+" + "BR0O80o5oDHLnBv86quxReUow54aV8OS0jOLMrY4SOc1hNXyxtq9Z5HW3VZ/" + "rLSTwmmVOQghJv4rXWjJS1ZG0FK7zx43GG5FFM5YuKRjtri8Jll+YwS38rBeuE4RbIyzaiyN9ynwdZjOgQYHJOeQ6cdkSKNOz8MLwbmL6UU/" + "GnrT0xhJDyPibxRHo3aC8kmHuPu6EADFtKRgeWhxQPxmNc6qZBfHbCMd0FPCvdji1mkeYx+Ye4KFmAfnwNVxQPMA/" + "cChCK7GQn4tM4YsJIOLOTa02gwvXgohc4/Y6tHq+r0wB8RrhPfoSahYpnDL5cEJz1E6yrdYDGJw2wl/FggenAPOgYIc6CgkTTQsH/" + "5RmBBWr6TpSitZxdnMMr9/" + "MP+UZivHUHHsR2Vx1eAWnBM45TT59NYcwF7WOTCDA4x7X3zNYJgXdQ5M5UBHIakiisImnCkhTmWYcgoWk5SDrRDz8pPaVV33v0/" + "ilBeqjQNx3E9efNWGv+PjHKiZA30KCf9gsH50D+/" + "AiIB8H+mp0oO7RXfSUVC+f1RzL+8QN429ISubPc2D8vsWPW5l73AsOEn74UCfQmpThyUUjn5rkuOqy48AYh0RzKL68HTmX+H5/" + "swoePMFOKB+DB+d6wM1oHAOSmeM4mJetEelej52+hjuac6BDTjQUEiajLjmbP/ImsdVxwQ3V5258chn/4g/" + "f5zlwlD5odUtMIfC5NWt4A8KsiHgnu4cgAM+dnwcOAfOx4GGQhIaWDy5BQRmKCDSk6uOxBhIn20dadL3uVMMpt+dA84B54Bz4Ao5cNOiue+" + "9kNcqg3XUUFRSKlhTvn/UYqA/OgecA84B58AyDgQLScqFfwBAweCaw2XHP2TbsW7ccfyvkZ2ywyrCwqE8gTxcd3wKl/" + "0mDwU5IJ7yT9n8P2C1exvCzV2kBfvcQU3jAHNDJdkzrDL4vJjfLR+9f1+tnJtPzc5qaEBjgf6p+7H/" + "E9wZ5cvJEa9WHWpY3rLX3JIDPje25PZ2bbVddtu17C1N4QDWaMNVOqXSlZfBSndLff+" + "DwOfGDvs4uOx2SNdeSPpGhNzthZgt6NDKefYhmy3w8jaKc8DnRnGWnh+gW0jn74MxDOZ8lG8Mjuc5B/" + "bGAZ8be+tR0eMWUqWdqpU+Lone1b7y+IcMe5eL75akv5NXnOP59k8b/PHtQ135u2WUvVOZWe+OqY4H50AVHNDYXTU3mCMixOdFFb3ZRMItpCY/" + "anriJCOniPoCyog8lAsvDPN80J2Tj3YakgMRBMqRbx/cwwWY4KrOE11/x7rK8uAcqJ4Di+eGxrnPi4q71xVSvZ2DS6JjISmNU2S8L8an5lEyfI/" + "ENvFRLlbnvtJf6UJJ8d0S+4cNymJhhRDL39fdLSZjit9r58CaueHzouLedZfdys6RIEfgoyBYtRUJgoVLoldBKK/v1B3fvMcNYYrpoGezlLCi8j+/" + "Bd+8HMrJlJWiHpwDZTigMVjd3PB5UaZvTwXFFdJ6zuL+6lUeK0Dz3afwIbiJMFAovEDb977SI+XlX3XkdBKWkwWExkF1+" + "RLtA10ot0SP4igslC0fawT+a6X1KUVleXAONDhQ89zwedHoqjoe3GW3oh+iEF8BYbAqrrfJQl9lsXiSEjGoSkeZ3OoKFlF8RgHlCgoLin/" + "m4N+x2Wt6risPvymPf+PgoASwPDgHjnJA44UFzinC6rkh3HxenKJnCsB0C2khEzWozfUVhP1CMJ1qEW5HuXQKZglxguVuOcs11x+" + "fmycNC4fvXeU45ytFJmoKKsd+VY4L+" + "flzKusR54BxQOOm9rnh88I6q7K7K6TlHfKNJh6WQ7G9o4gKLrU57jqqMcHeEGkFjrZy8GH020DKNwUFLW0LyfaisI4an7JvteWPzgHjQO1zw+" + "eF9VRl95vK8LkIdCTAcUeEo9YnQBirxE7KTQX/" + "hXDqs1xQVK+PAEGpfh9pYv8ota04bsNb3cEJRdXXxhHwnn1NHIjjqPa54fOi0kHpFtLMjtGEw23FRwmLn0yLsP/" + "R3SyWqdh1cBEMFAi4oqywknphkqcySQnlDSqP47XBAtQdWPkLtnlRjzsHDnGMVD03hKPPi4rHqiuk+Z3DEe/" + "8UMB8CMM1sETSS6vDxZo5ffjEtLV4vhCcu9jaA8VHXX9NrPzpCjlQ/dzweVH3qHSFNKN/NJh51+dU7ggwYf/ocyJDQThs/b2QpCDVdjo5pbh/" + "A2mok64w/" + "QrnRu+8oOt9biyfAK6QJvJOgwyXFfspHffYRBCjxQSXQwMH3Xtda1ZZ+a4IjBl+r4IDGpM+N6roictHwhXS9D5k0j3W5Esro1iVI66cPiOd/" + "Z+lbrKvVf9lhOk358AlccDnxiX1VsW4ukKa2DlSNL2b/0r/TyA4NMC/" + "K3SC0tlEnfLvBtQvfYS8g48nOAdKc8DnRmmOXi+8m+slvRjluNqCu60NUROVQwrsu7A3dCz4Oz7HOOT5l8YBnxuX1mNnxtctpIUdIGXD4QZcFQT+" + "zgSXHZZQOImmO648Au/uPAmxgR+VRXFN/qugATCe7ByoggMazz43quiJy0PCFdLCPtOkO+Ze430MPvuA0nquO+/" + "0DL1YigVlx6sXYvShmtpgVfpM17+6Huu6G2lX2R6cA2U5oPHmc6MsS68GmrvsTtTVmpR2Gs9eOh1z240pq7kY/qEK/" + "OMClhpKjmcPzoFqOOBzo5quqA4RV0gn7hJNPqyid7p63XbKJ92U1ipsBIv9qjexTWChFDmqHva4aEuXfx0Wzng4OwfiOPW5cfaeqAcBV0jb9AUKBys" + "oKIZWk5yuax8lbxWZ/IirJIf1iJpql0nPHTzu6z7kOqSYB+fAlhzwubEltytvyxXSNh1k7xf1WUlYLastJMFA2X2iK//" + "Xb5RdOiyhMuSbK1FRD86Bs3PA58bZu6AeBPxQwzZ9YQqHfaRcQXASr5S1EpSdlI5ZQygf0virfQvh5J/K4Nrzr8MaV/" + "x+Tg743Dgn9ytr2y2kDTokKgkUT9tCQkHZCnEtJnz5lVN9fEqC/9zDfdf+GJ9/HXYtl71+UQ743CjKzosH5hbSdl2I4mkf/" + "+ZLrj8UQoH9Io54JwusBy5lrD0sqBRUj3ehcmuN/" + "Pw5lfWIc6AwB3xuFGbopYJzC2m7nstdEwcpAAR+yf0c3HHWxiBVaje49FQAC+p5q2DAR2XCfpTuJfFrNeWPzoHEARu3eAwOGnc+NxJrriviCmmj/" + "tYkw9pAGZjbDoVQ5FMWcQIPfoQvI9G/Dpsxw6N1cMDnRh39UAMWH71/v/XndWog+zw4aOJxJBvX2Me6eGH1c6WZxaLH8wXhkV7OVZxDD/zTxM/" + "nw8hbviYOaKz53LimDh+g1feQBhhzomR85Sgk/" + "trnrSZhFcoo0upfh42M8NtZOOBz4yxsr6tRV0jb9of5yrFAcNlVE6Qc8+PhYwcjqsHZEdkVB3xu7Ko7lxHje0jL+" + "LaoVrSI7OTaq0VAvJJzYIcc8Lmxw05dQJJbSAuYtrIKrolDnIArQXl158CuOOBzY1fdOZ8YV0jzeba2BgcFzD2xFpbXdw7siQM+N/" + "bUmwto+T8MAKEGb/7W7gAAAABJRU5ErkJggg==", + "text/latex" : ["$\\displaystyle M = \\frac{v_{\\text{wind}} \\left(\\gamma + 1\\right)}{4 \\sqrt{\\frac{\\gamma " + "p_{bg}}{\\rho_{bg}}}} + \\frac{\\sqrt{v_{\\text{wind}}^{2} \\left(\\gamma + 1\\right)^{2} + \\frac{16 " + "\\gamma p_{bg}}{\\rho_{bg}}}}{4 \\sqrt{\\frac{\\gamma p_{bg}}{\\rho_{bg}}}}$"], + "text/plain" : [ + " _________________________________________\n", + " ╱ 2 2 16⋅γ⋅p_{bg} \n", + " ╱ v_{\\text{wind}} ⋅(γ + 1) + ─────────── \n", + " v_{\\text{wind}}⋅(γ + 1) ╲╱ \\rho_{bg} \n", + "M = ─────────────────────── + ─────────────────────────────────────────────\n", + " ___________ ___________ \n", + " ╱ γ⋅p_{bg} ╱ γ⋅p_{bg} \n", + " 4⋅ ╱ ───────── 4⋅ ╱ ───────── \n", + " ╲╱ \\rho_{bg} ╲╱ \\rho_{bg} " + ] + }, + "execution_count" : 19, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# use positive root (only physical solution)\n", + "Mach_sol = Mach_solve.args[0].args[1].subs(u_L, v_wind).subs(rho_R, rho_bg).subs(p_R, p_bg)\n", + "compute_mach_number = lambdify([v_wind, rho_bg, p_bg, gamma], Mach_sol)\n", "Eq(M, Mach_sol)" + ] + }, + { + "cell_type" : "code", + "execution_count" : 28, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAANIAAAAPCAYAAACROZGzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHnklEQVRoBe2a73EVNxDAH4wLcJwKCB2AqSBOBx" + "AqMHRAhm/+xkAHQAUBOgAqINABpIIAHTi/n96totPTvdMz5zh4sjN6klYr7R/trnSyr5yenq7+h+/LAicnJzcoH0qp6e/" + "TP6D+JJ76J6ojygvaX8UtAaw1y3sJPvUa56VPzees/b16IgLfA3eH4iYId8C9Wjfbv4w/YOQxxQ17Q/l9bg405wrwvwGDl5SbtM/" + "sSMM696nvlwLT11F/G3CH1J/tg68dfFG6gd9b+Bg4wcu2cHNdpV/1f2qBNiGqn6/gfwgcbWkDDmgcg2vZrYd3rLNije59gFYfKkE/" + "Ch279WGO9nhYLGT/JXh9cwPAd+m+ja4VSM/" + "g9IxJOuFtio4wCdCp4K2BwKBrCju5wIID8NZgzyk6tc69VXbGe0A7xGYmevi4rg76SyxAWyd4L46SbEC9KF3wolY/" + "Qdt7ApnoHsGvdHz3RDnSCUVdgkkyJQHmaLP3FPV5IhG16/5JbRKq58/yZs5O+wC9dtLOJqKwnX3LdYrQpc+adPWYderEZyDtU/KhYB/" + "6Wd176DYCSUGYqGKvKRo8FKHZBB02AfMuLIgUAP46kqepbU9JHeLMMKzRmm/Q1BulE3iau/" + "mR6ZemC1k+wCvpGYhWDU0O9BgH596uqMOhTDxeCVMQDWOu/wdtM3W9xixv5u66D9rM06f0H518FMSM17KswI30oe8eGBw1HIN4Swm9He/" + "VfZbuqqs1wACKbJYDpaYbhH4BPuhrku+" + "2j24GoQ5hqUF9P0LjZpegzcx6aXNpL01X8pprv5sgqLO1t46Rww7zPIWPGjpOLHs2NOvLX1t7E8oA3pO9DJxefUz85by8ZqPRq/" + "ss3VQgxZFuVgqnGMmBkuLdgAOKDuUJdpngLjqONrdQLiUZxltBJlkE2NJ0hQjbm8hWZt5EDM4T8lHMpB9yxnUthqz/" + "GjqHJfIc2p7sfq9N2TKx7NFnkM2Auw3960I/" + "h9Q9fwsVY1t176Xbk8MW+MhYGLsmU9gnFI9SQae5FIBOXguz0WulGJ+" + "6VqWrJONm89XSdKUcrK3d3ZsfKSY1v5ESX9obwJg0vrjFA8mKtg4srcmwBtcVNhIpc3bivV5m8tdA/" + "cSa2u4uxQD2VJl8HGBsBf2GPgP+FWMmEU+RL7TV1/UMrJxcaHfpDt0bCtO322gjkJikgHHHTEe+OEo+/" + "mkrZGTrdIyCm9xEpSgBWp30qMR1tGfv5h1rzJIgm/pr5Kzv7CQIoNcRnJsdtTVvIToDKD9rs6Z8vWrmh44GbzOypQadq7UXKSkwVifSs/" + "CueZb9WP8Q+bPtaBsEvhxm5y8n0Z7SZ8UcH730MQNeOvfyW3SftdFGIMFQo8bpEs6kUVMbAZPi1F/BCSX9GjPzy9zRh/" + "oM+b897FN33tAdmPvBbDbMH+0Tc7+ZDh6jbwD6ZnT3TOfZeBxizEDze6d1kh4z5gud42nfqd3v2N/" + "wAVApYezEO02a+IFPBJEnZSTmoPbb+7kyUUKWNEZ/mz4rxk30ztEWkbRNNPWfcnp1n6W7miQb/8T3kQLFKaPgAffApyxBLV5jXIrvI/" + "Qxg2n4nYB5ztGZW46a11qaLi+8bujw3hzKvQoSE9coIGIAeh3uGkUne0Axc7tGfNw35zFewjbeJd1Uu8XDW5G+" + "5dWvhm36uIeezL6iuicGfuyLgemaCWh36d5D1zqRgk/UMktZjgWN9PKo9TQS4gRb977DX3RLSYG6tamTGkHvxvl8PMrU9YSl6FjHpCW/" + "8o+vJbvsKAXSfZvUi7Xc49EtAVxchfK8M/IuxBg35UsRKf8paCWGbfoot4khAzy8KejDfvPrs9mHlYF+j+5b6UaBxKIe6fF9RDOBhjTT7dujzoalq/" + "NojDi5JJkF6OO4naUtCM77G8kNu4VsXr1K0CbqL94Ml699tN3Q69SR8Va008ZTZzvRXpLuEJ6fKTUciIDXaC/ou2/" + "KNMJLOwPqXV+rduI9s34Mm4RbwRLj2Y4itukzjO1T6/QjAOfeGUDJTqPBzU5L902q9bN9stEokKAcReswU0XEe6Wr7//" + "idz6NWGeUAQY+F1ohk3ps6AL+i3jqHCwKSl9jG3g5sMQDBk2+7y9N59oNnvKd2gudX2gF34q1lNc/" + "OF6jnRyQ2uBzvfrU25U3S8yCSbVOXk6St0m63pNJfZR/KKPHMRcbQL3yetB26d5DtxcchtoP7TpYvCvLMB+H0kKnIynYf/" + "X7KJ5vzUDJQagTILtyGyCecrWzrIn++ZXWkoE5ZlA33wCrv6mOwCUbLk03COC/" + "8lhyMqLtc70wCvY1Kss+ssEwZqUudZCpm75Qn2K78nb9yX1wEB5eu7SjfyhOSYlae/9K8SO/htiLKX20gU/" + "nP1MyDW2v4D6Blydcr+" + "6zdFf8728W13AGhhM0ngZLWZXazOSrSjiHfTcx6BXMOT5VZsHpXwggg7oIyqnRlU0ZNWJ5UnhfdgOzQ9LPAN4A0R6uI5hI3oH3b2fOdawFOTiXpgtm" + "rCvvOAlNFJ/tg9+w/0DrdX3yKRma+B7SXsLk33B6eUPXtQ9rdimglCH4q1Pz72Kd+uibDynaJaCpU6/uc3R/A7pKZo4YflDJAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle M = 1.42225795167899$"], + "text/plain" : ["M = 1.42225795167899"] + }, + "execution_count" : 28, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# numerical example\n", "\n", "import numpy as np\n", "mH = 1.673533e-24 # H mass (g)\n", + "kB = 1.380649e-16 # Boltzmann constant (cgs)\n", "gamma_bg = 5./3. # assume gamma is constant\n", "\n", + "v_wind_kms = 200. # km/s\n", "nH_bg = 1.0e-3 # cm^-3\n", "rho_bg = nH_bg * mH # mu = 1 for OOM estimate\n", + "P_bg = 1.0e4 # K cm^-3\n", "\n", "# compute Mach number of shock\n", + "Mach_shock = compute_mach_number(v_wind_kms * 1.0e5, nH_bg * mH, P_bg * kB, 5./3.)\n", "Eq(M, Mach_shock)" + ] + }, + { + "cell_type" : "code", + "execution_count" : 24, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : "iVBORw0KGgoAAAANSUhEUgAAAGIAAAARCAYAAAAmE3lhAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADZUlEQVRYCe2Y61EUQRCAD4oAKMgA" + "MlCIQMgANQIkAy3/8Y/CDJAIVDKQDBAykAykyOD8vmV7q3duuZs7C7Wu6Kq5fmz3TE8/" + "ZvZ2ZTwej5YRjo+Pt9jXh3ZvO+A7eeQ3raxDyE5b5hd4m3GK7LZTaIlavdIu+Gn2K8uYCDZsEs7A+" + "0UQ3sPvI79M8mvoE2QXysDrIGXqdcmArtJzjiGYZb86ZLQEMiv8KO+DQNgd94xvIUf2Dnod3CRBObQ68mfyArIqvQftyd8a+2VNxB7h+" + "EkArO4MdoKBt2OE14yJowrZFWMv2dfqYTYIM+2XNREG/JZAWt1DEAkyYd4dJcSR5HOhVu9Be/J3pv2aNm3mbT8vqmv4z8oD4G3nQ/" + "BjGwvV/wLjpxU4BC8U8vyGEckY0gvZRq1eGJS41r5JBMYfMfCN4gD6nNElApkJOgA/" + "tjkeLwbM6TlstcwDBnFuX7AxCR5J8Sa10S46rbhMVq1eO90EqrJfax30TBR8yyhbVdnQOTrC1iB6KZpAL7grZJ/" + "AVYBu70KtMlpcya6+mMc/9Dcrl6vVe2y6TTvCszQC/Qb+pNA22KWsUcHukmGlebHNXaXFOk/" + "G4pud5z6zj2XB5fWjiv1fUauX7TNdZb+Kc01rgg24rZiPJVtZWffeDV2CHTPtean/V3n25dHqWd/" + "9p9AB+GbfkO6vhJDlCz9kWTdkcbnnZw1du44dEWC15IWVe+" + "TodHSMbAkmcKEjhnmf9I5gfv3fBnedAG1xjcAGzwJqeGUJoiOiwGr10hQ9cqZ9ToQOlQHvqh3Hrayv4PtYAtpjSQiHH7jKX+" + "wXSmDN9K1vu+C4nMPM5ETXe2/E5414Ln7J8KUg9lqrl+fI9Ez71aTda692Izs61OpYWeFYmNkN98h7tvHwX2H8sajcvH/e/" + "NTRDWRH8M0+wCbkDtx0PvQIeh3kXXkoLyCr1XO9McPPIR3U2OeOsHLOMbJCvKQMrpXhBzC/0XxhlNB1TH6AvpvZAS/" + "UKXmuBenv2JkMu7iEKKyQxx53Ebhv8St8n1sPmyjKHzF5wlPX+" + "aOPfizsp1srLFq9WRfeZPohreyg5NczmSOQj6Ysn0kT5MH7AbltvvWchJkh7Cnko6n3YBpDkD2q3rY6doRkcxyBTVDvVdGHzzA9Ar8BR" + "WCJ/3OY4W0AAAAASUVORK5CYII=", + "text/latex" : ["$\\displaystyle u_{L} = 200.0$"], + "text/plain" : ["u_L = 200.0"] + }, + "execution_count" : 24, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : + [ "# compute post-shock fluid velocity in km/s\n", "Eq(u_L, u_L_lambda(Mach_shock, nH_bg * mH, P_bg * kB, 5./3.) / 1.0e5)" ] + }, + { + "cell_type" : "code", + "execution_count" : 26, + "metadata" : {}, + "outputs" : [ { + "data" : { + "image/png" : + "iVBORw0KGgoAAAANSUhEUgAAANAAAAASCAYAAAAqhFDLAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIQElEQVRoBe2a63EUORCAFxcBGC4DyABwBr4M4I" + "gAyACKf/yjuAwOIuCRARABBxlABhhn4Ps+rVrWvDVbBwe+7aqxpFaru9UvacZ76ezsbHMR4MmTJzd4PtV7YXzI+Crtlxq/1If+GjTHPK/ony7R7+d/" + "Dgt8D7/BczauLv8cW/9XtHjPZk2YSCL7ws1ts/2bjfwo427RnvA8Ah/rnLrB85cPeJoBnIK/" + "MsD2EFnWg4xWHxPzGfh3NSlj5x5XOMev+3TVfOoyr54PaENG4JUTuEm5iTj/gcezekz/JbjaJpuK5ivz13ncy2RxYk79XvPcpH9KOwuZfmo/" + "Sz6Td7PfkNVq89m4ukgJZCIIGlGnvuF5WjuOvoFlUvxOm4C+gfNRHE8E9hE4+2PB4ckUzqQ7DvDSQSZmBPKG/" + "m1wb2nv8KhfgIFY6EQyNoEOeWq6oI/W4OwH+Rq5ytEm8lHXtH9axz4mSQJwH+loz6QPrXLCbsVOGf+COf1hgZJ/" + "K4ztp9Vnyljjt1abz8bVRUqgTzjvzoKnTJZ+" + "oBo498HrvHKqgCtJFjzBpWCgnQvqIJfnfWhNmKCPBPW0iUCUzuDswz0Q73libWceng87iPNBk9xz8rRvT5vQzSmTo04KeXaSGXpPYXXzpC62Es84+" + "YG+OlrQFiHTjtE1+8zF8Cm6BDNwHb8xXmPz2bg6CCH/k9bT4zMGNEBqMHgMkGRo+h/qyao/qFrVXL/ryWAw+SSAf+kHjtYqP3B6NT/" + "owseg7PCuiFrlbuDjiSiv59V68Z7GtU4mhHz7oJ2OoT3sT6wZs35uP60+U2Sr31bbfGo/" + "F+" + "kEmtpjjTdRfCkcC2TpUiAwP6j64KyETyVqAeiVVU4014AzYAWrdoBOf8jcW1qvdqGb8mq6oLe9C13nehiT4FvlusTT2JMkZAabfmsQd5IsE8Qp5fzA" + "Zn0mM+PJ/bCmyWfyZh8DHcCN+W0Xm4+qnxIIIQaOx5qZ6b22YyzGr8Hfo10yNGT/" + "HaBfumqgwW88nibe2UvlpD91xUvXjJq23gV4eZl4i+8+9bq6z1qDLF1H6Bf70n/jw5zJ9Y2+MvRDffVjuAXmvRZNJVaQlRb6UbmZwHeUL9C4/" + "7s88XGgfMBgzthYgqtLBFPzS/" + "thfiefKY+1o34Dv9bmk3GVEghZj2FqRdOJvgDWDnbxbeamNsJ0O8BH5+vUNTB7D82MdHT57Iwcjed1rf44MJDJvMEj7VxyGPg+" + "qyHzd79HPCbz330m0HjyaBdtrRwr+0AeNOrpiRGVn+E4QOO+ZuUyH8lxC/qyf/omsgXTxI7kmCuewWdcmQks/" + "Jv3U7NgXYvPXDLpN3g02Rwes3F1OSsTd0fvvSdKrkBcqeIVfqcu8jov8TsxGVkE3/" + "rOvmFsZfX4NzCt6FPg6WpF+nOMALxOPqbdqYCwTtsl+9G3QHnCd77CZbwBqp5RYEz+" + "Dh1zfuItgc54EqCblct8BL0naymYmeEr2hfgtV8LeOLvAs376TGf9Zm06D7rN+b1xaLNoZuNqwOYGGhxd/" + "yDsQ6swSr2skb8Qn0r9bVszIHa4N2r+59LDhN+seIPmI8gsp11WvpELQk4Tx1PSW8A6qLDQh+" + "DOAU6rXR934BaBtbq347catXY3vwqqFyveCcVbb8bp5NXv1Ww635Y1+IzdZn0W5a9aPOZDZW4OoCZht3QmigarVQjcGaxuNZKBOmPB/" + "T0fWHsU3Ao4x46AL0BeZW2U2E6RNuBlWouiEaWJHta2b1q9CGucNpb8JrROVVYZ8B7Gqn3MePkB9qxYIfkHJTpc44pvY5caE7zTLSFsOpYfGJeXfoQ" + "uEW96oXwbN5Pb12rz1w257dFm8sAPRfj6rKEGax6VsAwmGiVkFG6gtivAbyKfM64E8Y6fhagsYJE8MzSVpNL70BTlTJVyL7+" + "jN3Xddqo9Bv6OtW2BAN9A0T86P6ln4GU0PC4wlPbtCzJ/" + "P18PpgHFzcD96AOR+C8utRgohjk4qU3ERflVgwsjGnfFa7uhi2m6JJ9WbC2wK7ZT9KHvTX5TGJoJ/2W51psLqvFuKoTaCxQrM7JOAg2++uXdBPB/" + "+ob3DryMU9LAn2Pd6Dn6NCp4ugimKgd52ZdDcY+vQ4qp6+LAQ0orD6BWGNSvENOPzmCZ5pznsckiGBVXoCBIJ1znX1IAP5bni+" + "FgPGiXNdm0If9pHTKnz+pV8iUxmLZB+n0f3+PfbrOOPMN3mVuYj8b8MZXq8/" + "kFzYe+A1e7mvR5lmpxbg6yIQ2HQdmpVUkqq8VuzaUCecd3cSy+tVOBPVDwUQ2GAowjv/UF73AqbPBcCh9/YDzhbben7wO/QP08Vssf1kjrzOe/" + "hXSBPV/OwWguc1AnrUs9SvvREEMrXb1CtHxS8znVl6hY0y1yt3A24JngpbkoC8/34XvBUNwFhZvGOqfYIwu5qo2Pi7ESVVNjXYH+0HOWp/" + "JOGxyOipl+47ZYvPFuLoUv8bOBvETtg77mluTR+N+4NHQkUwb+lYFf2qisirqDwbnnA3J9wNka+g4VXSY1ccX82JE+" + "l43pRsDK6kVtUDmaWLEJ90yV3cyX+3TOV0ZewKWBKavbH/N0Km+jLWlJ7g6B5T/xQQiWugtFvKKq7CJ8AF8+pJI2yS34qeP9aOg7Z7Co/" + "haJGPnpdOexscRz4AOnLRxqqmH6+RlbFgQ+qe89JP7YW6Vz5AhP20z6zdommyeeU3GVUkgBbdCZmpFSkch66y0Zuvop+BWvnu6vQV+" + "NQsc7KiwCZPumSSNlSVdBXbktV+2t8Ava4FdTyDv5143PO4FT6PFDwhb0v3fvQUujgX+AezqiHJAZpORAAAAAElFTkSuQmCC", + "text/latex" : ["$\\displaystyle u_{s} = 527.384360142785$"], + "text/plain" : ["uₛ = 527.384360142785"] + }, + "execution_count" : 26, + "metadata" : {}, + "output_type" : "execute_result" + } ], + "source" : [ + "# compute shock velocity in km/s\n", "u_s_lambda = lambdify([M, rho_R, p_R, gamma], u_s)\n", + "Eq(Symbol('u_s'), u_s_lambda(Mach_shock, nH_bg * mH, P_bg * kB, 5./3.) / 1.0e5)" + ] + } + ], + "metadata" : { + "kernelspec" : {"display_name" : "Python 3", "language" : "python", "name" : "python3"}, + "language_info" : { + "codemirror_mode" : {"name" : "ipython", "version" : 3}, + "file_extension" : ".py", + "mimetype" : "text/x-python", + "name" : "python", + "nbconvert_exporter" : "python", + "pygments_lexer" : "ipython3", + "version" : "3.11.5" + }, + "orig_nbformat" : 4 + }, + "nbformat" : 4, + "nbformat_minor" : 2 } diff --git a/src/radiation/radiation_system.hpp b/src/radiation/radiation_system.hpp index 5e9bf9dea..ba439257e 100644 --- a/src/radiation/radiation_system.hpp +++ b/src/radiation/radiation_system.hpp @@ -262,15 +262,15 @@ template class RadSystem : public HyperbolicSystem Real; // For multi-group RHD, use DefineOpacityExponentsAndLowerValues to define the opacities. - AMREX_GPU_HOST_DEVICE static auto DefineOpacityExponentsAndLowerValues(amrex::GpuArray rad_boundaries, double rho, - double Tgas) -> amrex::GpuArray, 2>; + AMREX_GPU_HOST_DEVICE static auto DefineOpacityExponentsAndLowerValues(amrex::GpuArray rad_boundaries, double rho, double Tgas) + -> amrex::GpuArray, 2>; AMREX_GPU_HOST_DEVICE static auto ComputeGroupMeanOpacity(amrex::GpuArray, 2> const &kappa_expo_and_lower_value, amrex::GpuArray const &radBoundaryRatios, amrex::GpuArray const &alpha_quant) -> quokka::valarray; - AMREX_GPU_HOST_DEVICE static auto - ComputeBinCenterOpacity(amrex::GpuArray rad_boundaries, - amrex::GpuArray, 2> kappa_expo_and_lower_value) -> quokka::valarray; + AMREX_GPU_HOST_DEVICE static auto ComputeBinCenterOpacity(amrex::GpuArray rad_boundaries, + amrex::GpuArray, 2> kappa_expo_and_lower_value) + -> quokka::valarray; // AMREX_GPU_HOST_DEVICE static auto // ComputeGroupMeanOpacityWithMinusOneSlope(amrex::GpuArray, 2> kappa_expo_and_lower_value, // amrex::GpuArray radBoundaryRatios) -> quokka::valarray; @@ -280,22 +280,22 @@ template class RadSystem : public HyperbolicSystem kappaPVec, quokka::valarray kappaEVec, quokka::valarray fourPiBoverC, amrex::GpuArray delta_nu_kappa_B_at_edge, - amrex::GpuArray delta_nu_B_at_edge, - amrex::GpuArray kappa_slope) -> quokka::valarray; - AMREX_GPU_HOST_DEVICE static auto ComputeFluxInDiffusionLimit(amrex::GpuArray rad_boundaries, double T, - double vel) -> amrex::GpuArray; + amrex::GpuArray delta_nu_B_at_edge, amrex::GpuArray kappa_slope) + -> quokka::valarray; + AMREX_GPU_HOST_DEVICE static auto ComputeFluxInDiffusionLimit(amrex::GpuArray rad_boundaries, double T, double vel) + -> amrex::GpuArray; template - AMREX_GPU_HOST_DEVICE static auto - ComputeRadQuantityExponents(ArrayType const &quant, amrex::GpuArray const &boundaries) -> amrex::GpuArray; + AMREX_GPU_HOST_DEVICE static auto ComputeRadQuantityExponents(ArrayType const &quant, amrex::GpuArray const &boundaries) + -> amrex::GpuArray; AMREX_GPU_HOST_DEVICE static void SolveLinearEqs(JacobianResult const &jacobian, double &x0, quokka::valarray &xi); AMREX_GPU_HOST_DEVICE static auto Solve3x3matrix(double C00, double C01, double C02, double C10, double C11, double C12, double C20, double C21, double C22, double Y0, double Y1, double Y2) -> std::tuple; - AMREX_GPU_HOST_DEVICE static auto ComputePlanckEnergyFractions(amrex::GpuArray const &boundaries, - amrex::Real temperature) -> quokka::valarray; + AMREX_GPU_HOST_DEVICE static auto ComputePlanckEnergyFractions(amrex::GpuArray const &boundaries, amrex::Real temperature) + -> quokka::valarray; AMREX_GPU_HOST_DEVICE static auto ComputeThermalRadiationSingleGroup(amrex::Real temperature) -> double; @@ -304,9 +304,9 @@ template class RadSystem : public HyperbolicSystem Real; - AMREX_GPU_HOST_DEVICE static auto - ComputeThermalRadiationTempDerivativeMultiGroup(amrex::Real temperature, - amrex::GpuArray const &boundaries) -> quokka::valarray; + AMREX_GPU_HOST_DEVICE static auto ComputeThermalRadiationTempDerivativeMultiGroup(amrex::Real temperature, + amrex::GpuArray const &boundaries) + -> quokka::valarray; AMREX_GPU_DEVICE static auto ComputeDustTemperatureBateKeto(double T_gas, double T_d_init, double rho, quokka::valarray const &Erad, double N_d, double dt, @@ -347,17 +347,18 @@ template class RadSystem : public HyperbolicSystem NewtonIterationResult; template - AMREX_GPU_DEVICE static auto - ComputeCellOpticalDepth(const quokka::Array4View &consVar, amrex::GpuArray dx, int i, int j, int k, - const amrex::GpuArray &group_boundaries) -> quokka::valarray; + AMREX_GPU_DEVICE static auto ComputeCellOpticalDepth(const quokka::Array4View &consVar, + amrex::GpuArray dx, int i, int j, int k, + const amrex::GpuArray &group_boundaries) + -> quokka::valarray; AMREX_GPU_DEVICE static auto isStateValid(std::array &cons) -> bool; AMREX_GPU_DEVICE static void amendRadState(std::array &cons); template - AMREX_GPU_DEVICE static auto ComputeRadPressure(double erad_L, double Fx_L, double Fy_L, double Fz_L, double fx_L, double fy_L, - double fz_L) -> RadPressureResult; + AMREX_GPU_DEVICE static auto ComputeRadPressure(double erad_L, double Fx_L, double Fy_L, double Fz_L, double fx_L, double fy_L, double fz_L) + -> RadPressureResult; AMREX_GPU_DEVICE static auto ComputeEddingtonTensor(double fx_L, double fy_L, double fz_L) -> std::array, 3>; }; @@ -365,8 +366,8 @@ template class RadSystem : public HyperbolicSystem -AMREX_GPU_HOST_DEVICE auto RadSystem::ComputePlanckEnergyFractions(amrex::GpuArray const &boundaries, - amrex::Real temperature) -> quokka::valarray +AMREX_GPU_HOST_DEVICE auto RadSystem::ComputePlanckEnergyFractions(amrex::GpuArray const &boundaries, amrex::Real temperature) + -> quokka::valarray { quokka::valarray radEnergyFractions{}; if constexpr (nGroups_ == 1) { @@ -408,9 +409,9 @@ template AMREX_GPU_HOST_DEVICE auto RadSystem::C // define ComputeThermalRadiationMultiGroup, returns the thermal radiation power for each photon group. = a_r * T^4 * radEnergyFractions template -AMREX_GPU_HOST_DEVICE auto -RadSystem::ComputeThermalRadiationMultiGroup(amrex::Real temperature, - amrex::GpuArray const &boundaries) -> quokka::valarray +AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeThermalRadiationMultiGroup(amrex::Real temperature, + amrex::GpuArray const &boundaries) + -> quokka::valarray { const double power = radiation_constant_ * std::pow(temperature, 4); const auto radEnergyFractions = ComputePlanckEnergyFractions(boundaries, temperature); @@ -431,8 +432,9 @@ template AMREX_GPU_HOST_DEVICE auto RadSystem::C } template -AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeThermalRadiationTempDerivativeMultiGroup( - amrex::Real temperature, amrex::GpuArray const &boundaries) -> quokka::valarray +AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeThermalRadiationTempDerivativeMultiGroup(amrex::Real temperature, + amrex::GpuArray const &boundaries) + -> quokka::valarray { // by default, d emission/dT = 4 emission / T auto radEnergyFractions = ComputePlanckEnergyFractions(boundaries, temperature); @@ -698,9 +700,10 @@ AMREX_GPU_DEVICE auto RadSystem::ComputeMassScalars(ArrayType const & template template -AMREX_GPU_DEVICE auto -RadSystem::ComputeCellOpticalDepth(const quokka::Array4View &consVar, amrex::GpuArray dx, int i, - int j, int k, const amrex::GpuArray &group_boundaries) -> quokka::valarray +AMREX_GPU_DEVICE auto RadSystem::ComputeCellOpticalDepth(const quokka::Array4View &consVar, + amrex::GpuArray dx, int i, int j, int k, + const amrex::GpuArray &group_boundaries) + -> quokka::valarray { // compute interface-averaged cell optical depth @@ -1049,9 +1052,9 @@ template AMREX_GPU_HOST_DEVICE auto RadSystem::C } template -AMREX_GPU_HOST_DEVICE auto -RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray /*rad_boundaries*/, const double /*rho*/, - const double /*Tgas*/) -> amrex::GpuArray, 2> +AMREX_GPU_HOST_DEVICE auto RadSystem::DefineOpacityExponentsAndLowerValues(amrex::GpuArray /*rad_boundaries*/, + const double /*rho*/, const double /*Tgas*/) + -> amrex::GpuArray, 2> { amrex::GpuArray, 2> exponents_and_values{}; for (int g = 0; g < nGroups_ + 1; ++g) { @@ -1145,8 +1148,8 @@ AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeRadQuantityExponents(Arr template AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeGroupMeanOpacity(amrex::GpuArray, 2> const &kappa_expo_and_lower_value, - amrex::GpuArray const &radBoundaryRatios, - amrex::GpuArray const &alpha_quant) -> quokka::valarray + amrex::GpuArray const &radBoundaryRatios, amrex::GpuArray const &alpha_quant) + -> quokka::valarray { amrex::GpuArray const &alpha_kappa = kappa_expo_and_lower_value[0]; amrex::GpuArray const &kappa_lower = kappa_expo_and_lower_value[1]; @@ -1221,10 +1224,13 @@ template AMREX_GPU_HOST_DEVICE auto RadSystem::P } template -AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeDiffusionFluxMeanOpacity( - const quokka::valarray kappaPVec, const quokka::valarray kappaEVec, - const quokka::valarray fourPiBoverC, const amrex::GpuArray delta_nu_kappa_B_at_edge, - const amrex::GpuArray delta_nu_B_at_edge, const amrex::GpuArray kappa_slope) -> quokka::valarray +AMREX_GPU_HOST_DEVICE auto RadSystem::ComputeDiffusionFluxMeanOpacity(const quokka::valarray kappaPVec, + const quokka::valarray kappaEVec, + const quokka::valarray fourPiBoverC, + const amrex::GpuArray delta_nu_kappa_B_at_edge, + const amrex::GpuArray delta_nu_B_at_edge, + const amrex::GpuArray kappa_slope) + -> quokka::valarray { quokka::valarray kappaF{}; for (int g = 0; g < nGroups_; ++g) { diff --git a/src/radiation/source_terms_multi_group.hpp b/src/radiation/source_terms_multi_group.hpp index d7c5dc2e0..d07865fed 100644 --- a/src/radiation/source_terms_multi_group.hpp +++ b/src/radiation/source_terms_multi_group.hpp @@ -166,8 +166,8 @@ AMREX_GPU_DEVICE auto RadSystem::SolveMatterRadiationEnergyExchange( double const Egas0, quokka::valarray const &Erad0Vec, double const rho, double const T_d0, int const dust_model, double const coeff_n, double const lambda_gd_times_dt, double const dt, amrex::GpuArray const &massScalars, int const n_outer_iter, quokka::valarray const &work, quokka::valarray const &vel_times_F, quokka::valarray const &Src, - amrex::GpuArray const &rad_boundaries, JacobianFunc ComputeJacobian, int *p_iteration_counter, - int *p_iteration_failure_counter) -> NewtonIterationResult + amrex::GpuArray const &rad_boundaries, JacobianFunc ComputeJacobian, int *p_iteration_counter, int *p_iteration_failure_counter) + -> NewtonIterationResult { // 1. Compute energy exchange diff --git a/src/util/CheckNaN.hpp b/src/util/CheckNaN.hpp index b81122043..107f73693 100644 --- a/src/util/CheckNaN.hpp +++ b/src/util/CheckNaN.hpp @@ -23,8 +23,8 @@ AMREX_GPU_HOST_DEVICE auto CheckSymmetryArray(amrex::Array4 c template AMREX_GPU_HOST_DEVICE auto CheckSymmetryFluxes(amrex::Array4 const & /*arr1*/, amrex::Array4 const & /*arr2*/, - amrex::Box const & /*indexRange*/, const int /*ncomp*/, - amrex::GpuArray /*dx*/) -> bool + amrex::Box const & /*indexRange*/, const int /*ncomp*/, amrex::GpuArray /*dx*/) + -> bool { return true; // problem-specific implementation for test problems } diff --git a/src/util/fextract.cpp b/src/util/fextract.cpp index 5ed4729c9..a36c805fb 100644 --- a/src/util/fextract.cpp +++ b/src/util/fextract.cpp @@ -12,8 +12,8 @@ using namespace amrex; // NOLINT -auto fextract(MultiFab &mf, Geometry &geom, const int idir, const Real slice_coord, - const bool center = false) -> std::tuple, Vector>> +auto fextract(MultiFab &mf, Geometry &geom, const int idir, const Real slice_coord, const bool center = false) + -> std::tuple, Vector>> { AMREX_D_TERM(Real xcoord = slice_coord;, Real ycoord = slice_coord;, Real zcoord = slice_coord;) diff --git a/src/util/fextract.hpp b/src/util/fextract.hpp index 2267133f9..2343732a8 100644 --- a/src/util/fextract.hpp +++ b/src/util/fextract.hpp @@ -9,7 +9,7 @@ #include #include -auto fextract(amrex::MultiFab &mf, amrex::Geometry &geom, int idir, amrex::Real slice_coord, - bool center = false) -> std::tuple, amrex::Vector>>; +auto fextract(amrex::MultiFab &mf, amrex::Geometry &geom, int idir, amrex::Real slice_coord, bool center = false) + -> std::tuple, amrex::Vector>>; #endif // FEXTRACT_HPP_ \ No newline at end of file