{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simple Example of a Simulation in jf1uids" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import jax.numpy as jnp\n", "\n", "from jf1uids import SimulationConfig\n", "from jf1uids import SimulationParams\n", "from jf1uids import get_helper_data\n", "from jf1uids.fluid_equations.fluid import construct_primitive_state\n", "from jf1uids import time_integration\n", "from jf1uids.option_classes.simulation_config import finalize_config\n", "\n", "from jf1uids.option_classes.simulation_config import OSHER, MINMOD\n", "from jf1uids.option_classes.simulation_config import SPHERICAL\n", "\n", "from jf1uids import get_registered_variables\n", "\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulation Setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us set up a very simple simulation, mostly with default parameters.\n", "\n", "First we get the configuration of the simulation, which contains parameters that typically do not change between simulations, changing which requires (just-in-time)-recompilation." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from jf1uids.option_classes.simulation_config import CARTESIAN, HLL, HLLC\n", "\n", "config = SimulationConfig(\n", " geometry = CARTESIAN,\n", " limiter = OSHER,\n", " num_cells = 1001,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we setup the simulation parameters, things we might vary" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "params = SimulationParams(\n", " t_end = 0.2 # the typical value for a shock test\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With this we generate some helper data, like the cell centers etc." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "helper_data = get_helper_data(config)\n", "registered_variables = get_registered_variables(config)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next we setup the shock initial conditions, namely\n", "\\begin{equation}\n", "\\left(\\begin{array}{l}\n", "\\rho \\\\\n", "u \\\\\n", "p\n", "\\end{array}\\right)_L=\\left(\\begin{array}{l}\n", "1 \\\\\n", "0 \\\\\n", "1\n", "\\end{array}\\right), \\quad\\left(\\begin{array}{l}\n", "\\rho \\\\\n", "u \\\\\n", "p\n", "\\end{array}\\right)_R=\\left(\\begin{array}{c}\n", "0.125 \\\\\n", "0 \\\\\n", "0.1\n", "\\end{array}\\right)\n", "\\end{equation}\n", "with seperation at $x=0.5$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# setup the shock initial fluid state in terms of rho, u, p\n", "shock_pos = 0.5\n", "r = helper_data.geometric_centers\n", "rho = jnp.where(r < shock_pos, 1.0, 0.125)\n", "u = jnp.zeros_like(r)\n", "p = jnp.where(r < shock_pos, 1.0, 0.1)\n", "\n", "# get initial state\n", "initial_state = construct_primitive_state(\n", " config = config,\n", " registered_variables = registered_variables,\n", " density = rho,\n", " velocity_x = u,\n", " gas_pressure = p\n", ")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Automatically setting open boundaries for Cartesian geometry.\n" ] } ], "source": [ "config = finalize_config(config, initial_state.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running the simulation" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "final_state = time_integration(initial_state, config, params, helper_data, registered_variables)\n", "rho_final, u_final, p_final = final_state" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualization" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABL4AAAHDCAYAAAAqZtO0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACAQUlEQVR4nO3deXxU5dn/8e/MZIckLIEkhEDYF1miIBSU4hJNXVC6PFKlgFjRqrTW/NoqLqClFbVKsS2VSkV8WihUqtZWiiJK64IPFYwr+yJrApElECDr+f1xMgMhC1lm5p4583m/XvM6J5NzZq4ThrnPuc59X7fLsixLAAAAAAAAgMO4TQcAAAAAAAAABAKJLwAAAAAAADgSiS8AAAAAAAA4EokvAAAAAAAAOBKJLwAAAAAAADgSiS8AAAAAAAA4EokvAAAAAAAAOBKJLwAAAAAAADgSiS8AAAAAAAA4EokvwDCXy6WHH37YdBgAAEMC2Q7s3LlTLpdLCxcuDMjrAwAAhDoSX3CshQsXyuVy+R5xcXHq1KmTcnNz9Zvf/EbHjh0zHWKd3n//fT388MM6cuSI6VAAAGe57rrrlJCQ0GAbMn78eMXExOirr74KYmSNt3z5cm64AEAIquv6pXfv3po6daoKCwtNhweELRJfcLyf//zn+tOf/qRnnnlGP/zhDyVJP/7xjzVw4EB98sknhqOTTp48qQcffND38/vvv69HHnmExBcAhKDx48fr5MmTevnll+v8/YkTJ/T3v/9d3/jGN9S+ffsgR1db165ddfLkSU2YMMH33PLly/XII48YjAoA0BDv9cvvfvc7jRw5Us8884xGjBihEydOmA4NCEtRpgMAAu2qq67S0KFDfT9PmzZNb731lq699lpdd9112rBhg+Lj443FFxcXZ+y9AQBNc9111ykxMVGLFy/WxIkTa/3+73//u0pKSjR+/HgD0dXm7TEAAAgfZ16/3HrrrWrfvr1mz56tv//977rxxhtrbV9SUqJWrVoFO8xmsyxLp06dMnoNhshCjy9EpMsuu0wPPfSQvvzyS/35z3/2Pb9x40Z95zvfUbt27RQXF6ehQ4fq1VdfrbGvtwvye++9p7y8PHXo0EGtWrXSN7/5TR08eLDGth9++KFyc3OVkpKi+Ph4devWTbfcckuNbc6s7fLwww/rpz/9qSSpW7duvm7OO3fu1OjRozV48OA6j6dPnz7Kzc1t6Z8FAHAO8fHx+ta3vqVVq1bpwIEDtX6/ePFiJSYm6rrrrtORI0f04x//WJmZmYqNjVXPnj31+OOPq6qq6pzv89FHH+mqq65SUlKSWrdurcsvv1wffPBBre2OHDmie+65R1lZWYqNjVXnzp01ceJEFRUVSapd4+vmm2/W3LlzJanGcBrLspSVlaXrr7++1nucOnVKycnJuv3225vypwIA+Mlll10mSdqxY4duvvlmtW7dWtu2bdPVV1+txMRE382WqqoqzZkzR+edd57i4uKUmpqq22+/XYcPH67xeo25RlmyZImGDBmixMREJSUlaeDAgXr66ad9v3/44Yflcrlqxeq9Vtq5c6fvuaysLF177bV6/fXXNXToUMXHx+sPf/iDJLWorQQaix5fiFgTJkzQ/fffrzfeeENTpkzR559/rosuukgZGRm677771KpVK/31r3/V2LFj9be//U3f/OY3a+z/wx/+UG3bttWMGTO0c+dOzZkzR1OnTtXSpUslSQcOHNCVV16pDh066L777lObNm20c+dOvfTSS/XG9K1vfUubN2/WX/7yF/36179WSkqKJKlDhw6aMGGCpkyZos8++0wDBgzw7fPf//5XmzdvrjFcEgAQOOPHj9cLL7ygv/71r5o6darv+UOHDun111/XjTfeKMuyNHr0aO3du1e33367unTpovfff1/Tpk3T/v37NWfOnHpf//PPP9eoUaOUlJSkn/3sZ4qOjtYf/vAHXXLJJfr3v/+t4cOHS5KOHz+uUaNGacOGDbrlllt0wQUXqKioSK+++qr27Nnja0POdPvtt2vfvn1auXKl/vSnP/med7lc+t73vqcnnnhChw4dUrt27Xy/+8c//qHi4mJ973vf88NfDwDQVNu2bZMk3xD6iooK5ebm6uKLL9aTTz6phIQESfZ3/MKFCzV58mT96Ec/0o4dO/S73/1OH330kd577z1FR0c36hpl5cqVuvHGG3X55Zfr8ccflyRt2LBB7733nu6+++5mHcOmTZt044036vbbb9eUKVPUp08fnThxotltJdAkFuBQzz//vCXJ+u9//1vvNsnJydb5559vWZZlXX755dbAgQOtU6dO+X5fVVVljRw50urVq1et183JybGqqqp8z99zzz2Wx+Oxjhw5YlmWZb388svnfH/LsixJ1owZM3w//+pXv7IkWTt27Kix3ZEjR6y4uDjr3nvvrfH8j370I6tVq1bW8ePHG3wfAIB/VFRUWOnp6daIESNqPD9v3jxLkvX6669bM2fOtFq1amVt3ry5xjb33Xef5fF4rF27dvmeO7sdGDt2rBUTE2Nt27bN99y+ffusxMRE6+tf/7rvuenTp1uSrJdeeqlWjN72aceOHZYk6/nnn/f97q677rLqOgXctGmTJcl65plnajx/3XXXWVlZWTXaPACA/3mvM958803r4MGD1u7du60lS5ZY7du3t+Lj4609e/ZYkyZNsiRZ9913X41933nnHUuStWjRohrPr1ixosbzjblGufvuu62kpCSroqKi3m1mzJhRZ1viPYYzr2W6du1qSbJWrFhRY9umtJVASzDUERGtdevWOnbsmA4dOqS33npLN9xwg44dO6aioiIVFRXpq6++Um5urrZs2aK9e/fW2Pe2226r0b131KhRqqys1JdffilJatOmjSTpn//8p8rLy1sca3Jysq6//nr95S9/kWVZkqTKykotXbpUY8eODatx/QAQzjwej7773e9qzZo1NYZyLF68WKmpqbr88sv14osvatSoUWrbtq2vTSkqKlJOTo4qKyv1n//8p87Xrqys1BtvvKGxY8eqe/fuvufT09N100036d1331VxcbEk6W9/+5sGDx5cq0eypDqHn5xL7969NXz4cC1atMj33KFDh/Svf/1L48ePb9ZrAgCaLicnRx06dFBmZqa++93vqnXr1nr55ZeVkZHh2+aOO+6osc+LL76o5ORkXXHFFTXanSFDhqh169Z6++23JTXuGqVNmzYqKSnRypUr/XZM3bp1q1WapbltJdBUJL4Q0Y4fP67ExERt3bpVlmXpoYceUocOHWo8ZsyYIUm1arl06dKlxs9t27aVJN8Y+tGjR+vb3/62HnnkEaWkpOj666/X888/r9LS0mbHO3HiRO3atUvvvPOOJOnNN99UYWFhjdm6AACB562nsnjxYknSnj179M477+i73/2uPB6PtmzZohUrVtRqU3JyciTVblO8Dh48qBMnTqhPnz61ftevXz9VVVVp9+7dkuyhL2cOffeHiRMn6r333vPdxHnxxRdVXl5OOwMAQTR37lytXLlSb7/9tr744gtt3769RtIoKipKnTt3rrHPli1bdPToUXXs2LFW23P8+HFfu9OYa5Q777xTvXv31lVXXaXOnTvrlltu0YoVK1p0TN26dav1XHPbSqCpqPGFiLVnzx4dPXpUPXv29BVP/MlPflJvkfiePXvW+Nnj8dS5nbc3lsvl0rJly/TBBx/oH//4h15//XXdcssteuqpp/TBBx+odevWTY45NzdXqamp+vOf/6yvf/3r+vOf/6y0tDRf4wAACI4hQ4aob9+++stf/qL777/f1xv3zALDV1xxhX72s5/VuX/v3r2DGW6jffe739U999yjRYsW6f7779ef//xnDR06tM5EHAAgMIYNG1ZjVvqzxcbGyu2u2YelqqpKHTt2rNFr90wdOnSQ1LhrlI4dOyo/P1+vv/66/vWvf+lf//qXnn/+eU2cOFEvvPCC73XqUllZWefzdc3gGK5tJcIPiS9ELG9R39zcXN9wkujoaL8nkb72ta/pa1/7mn75y19q8eLFGj9+vJYsWaJbb721zu0bGkri8Xh00003aeHChXr88cf1yiuvaMqUKfUm4QAAgTN+/Hg99NBD+uSTT7R48WL16tVLF154oSSpR48eOn78eJPblA4dOighIUGbNm2q9buNGzfK7XYrMzPT9x6fffZZk+NuqJ1p166drrnmGi1atEjjx4/Xe++9R3FhAAgDPXr00JtvvqmLLrqoziTT2c51jRITE6MxY8ZozJgxqqqq0p133qk//OEPeuihh9SzZ0/faJcjR474hk9K8vUYbmzMzWkrgaZiqCMi0ltvvaWZM2eqW7duGj9+vDp27KhLLrlEf/jDH7R///5a2x88eLDJ73H48GFf7y+v7OxsSWpwuKO3VteRI0fq/P2ECRN0+PBh3X777Tp+/DizbAGAId7eXdOnT1d+fr7vZ0m64YYbtGbNGr3++uu19jty5IgqKirqfE2Px6Mrr7xSf//732vUDyssLNTixYt18cUXKykpSZL07W9/Wx9//LFefvnlWq9zdvtzpsa0M1988YV++tOf+uqZAQBC2w033KDKykrNnDmz1u8qKip83/mNuUb56quvavze7XZr0KBBNbbp0aOHJNWow1VSUuLrEdbYmJvTVgJNRY8vON6//vUvbdy4URUVFSosLNRbb72llStXqmvXrnr11VcVFxcnyR5Lf/HFF2vgwIGaMmWKunfvrsLCQq1Zs0Z79uzRxx9/3KT3feGFF/T73/9e3/zmN9WjRw8dO3ZM8+fPV1JSkq6++up69xsyZIgk6YEHHtB3v/tdRUdHa8yYMb4LlfPPP18DBgzQiy++qH79+umCCy5o5l8GANAS3bp108iRI/X3v/9dkmokvn7605/q1Vdf1bXXXqubb75ZQ4YMUUlJiT799FMtW7ZMO3fuVEpKSp2v+4tf/EIrV67UxRdfrDvvvFNRUVH6wx/+oNLSUj3xxBM13mPZsmX6n//5H91yyy0aMmSIDh06pFdffVXz5s3T4MGD63x9bzvzox/9SLm5ubWSW9dcc43at2+vF198UVdddZU6duzY4r8VACCwRo8erdtvv12zZs1Sfn6+rrzySkVHR2vLli168cUX9fTTT+s73/lOo65Rbr31Vh06dEiXXXaZOnfurC+//FK//e1vlZ2drX79+kmSrrzySnXp0kXf//73fTdKFixYoA4dOmjXrl2NirklbSXQJAZnlAQCyjuVrvcRExNjpaWlWVdccYX19NNPW8XFxbX22bZtmzVx4kQrLS3Nio6OtjIyMqxrr73WWrZsWa3XPXsK4LffftuSZL399tuWZVnW+vXrrRtvvNHq0qWLFRsba3Xs2NG69tprrQ8//LDGfjprGnvLsqf2zcjIsNxud63pgC3Lsp544glLkvXoo482/w8EAGixuXPnWpKsYcOG1frdsWPHrGnTplk9e/a0YmJirJSUFGvkyJHWk08+aZWVlfm2q6sdWL9+vZWbm2u1bt3aSkhIsC699FLr/fffr/UeX331lTV16lQrIyPDiomJsTp37mxNmjTJKioqsizLsnbs2GFJsp5//nnfPhUVFdYPf/hDq0OHDpbL5apzOvo777zTkmQtXry4mX8ZAEBT1XedcaZJkyZZrVq1qvf3zz77rDVkyBArPj7eSkxMtAYOHGj97Gc/s/bt22dZVuOuUZYtW2ZdeeWVVseOHa2YmBirS5cu1u23327t37+/xnutW7fOGj58uG+b2bNn+47hzOuXrl27Wtdcc02d8Ta2rQRawmVZDfSFBxCSnn76ad1zzz3auXNnrdklAQBoqXvuuUfPPfecCgoKlJCQYDocAACAZiPxBYQZy7I0ePBgtW/fXm+//bbpcAAADnPq1CllZmbq2muv1fPPP286HAAAgBahxhcQJkpKSvTqq6/q7bff1qeffuqrKQMAgD8cOHBAb775ppYtW6avvvpKd999t+mQAAAAWozE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AAAAAADAkRyf+IqNjdWMGTMUGxtrOpSgitTjliL32DlujhvmROq/B8fNcUcCjjuyjjtUReq/B8fNcUeKSD32YB13WBS3BwAAAAAAAJrK8T2+AAAAAAAAEJlIfAEAAAAAAMCRSHwBAAAAAADAkUh8AQAAAAAAwJEckfiaO3eusrKyFBcXp+HDh2vt2rUNbv/iiy+qb9++iouL08CBA7V8+fIgRepfTTnu+fPna9SoUWrbtq3atm2rnJycc/6dQllT/829lixZIpfLpbFjxwY2wABp6nEfOXJEd911l9LT0xUbG6vevXuH5ee9qcc9Z84c9enTR/Hx8crMzNQ999yjU6dOBSla//jPf/6jMWPGqFOnTnK5XHrllVfOuc/q1at1wQUXKDY2Vj179tTChQsDHmekiNR2RorctoZ2hnamIbQztDOBEKltDe0M7UxDaGdoZ/zCCnNLliyxYmJirAULFliff/65NWXKFKtNmzZWYWFhndu/9957lsfjsZ544gnriy++sB588EErOjra+vTTT4Mcecs09bhvuukma+7cudZHH31kbdiwwbr55put5ORka8+ePUGOvOWaeuxeO3bssDIyMqxRo0ZZ119/fXCC9aOmHndpaak1dOhQ6+qrr7beffdda8eOHdbq1aut/Pz8IEfeMk097kWLFlmxsbHWokWLrB07dlivv/66lZ6ebt1zzz1Bjrxlli9fbj3wwAPWSy+9ZEmyXn755Qa33759u5WQkGDl5eVZX3zxhfXb3/7W8ng81ooVK4ITsINFajtjWZHb1tDO0M7QztRGOxNYkdrW0M7QztDO1EY74/92JuwTX8OGDbPuuusu38+VlZVWp06drFmzZtW5/Q033GBdc801NZ4bPny4dfvttwc0Tn9r6nGfraKiwkpMTLReeOGFQIUYMM059oqKCmvkyJHWH//4R2vSpElh2VA09bifeeYZq3v37lZZWVmwQgyIph73XXfdZV122WU1nsvLy7MuuuiigMYZSI1pKH72s59Z5513Xo3nxo0bZ+Xm5gYwssgQqe2MZUVuW0M7Y6OdoZ05E+1MYEVqW0M7Y6OdoZ05E+3Maf5qZ8J6qGNZWZnWrVunnJwc33Nut1s5OTlas2ZNnfusWbOmxvaSlJubW+/2oag5x322EydOqLy8XO3atQtUmAHR3GP/+c9/ro4dO+r73/9+MML0u+Yc96uvvqoRI0borrvuUmpqqgYMGKBHH31UlZWVwQq7xZpz3CNHjtS6det83Ye3b9+u5cuX6+qrrw5KzKY44bstFEVqOyNFbltDO0M7QztTN6d8t4WiSG1raGdoZ2hnaGfOFMjvtagWv4JBRUVFqqysVGpqao3nU1NTtXHjxjr3KSgoqHP7goKCgMXpb8057rPde++96tSpU60PVqhrzrG/++67eu6555Sfnx+ECAOjOce9fft2vfXWWxo/fryWL1+urVu36s4771R5eblmzJgRjLBbrDnHfdNNN6moqEgXX3yxLMtSRUWFfvCDH+j+++8PRsjG1PfdVlxcrJMnTyo+Pt5QZOEtUtsZKXLbGtoZ2hmJdqYutDOBE6ltDe0M7YxEO1MX2pnT/NXOhHWPLzTPY489piVLlujll19WXFyc6XAC6tixY5owYYLmz5+vlJQU0+EEVVVVlTp27Khnn31WQ4YM0bhx4/TAAw9o3rx5pkMLqNWrV+vRRx/V73//e61fv14vvfSSXnvtNc2cOdN0aEBEiZS2hnaGdoZ2BjCDdsb5aGdoZ/wlrHt8paSkyOPxqLCwsMbzhYWFSktLq3OftLS0Jm0fippz3F5PPvmkHnvsMb355psaNGhQIMMMiKYe+7Zt27Rz506NGTPG91xVVZUkKSoqSps2bVKPHj0CG7QfNOffPD09XdHR0fJ4PL7n+vXrp4KCApWVlSkmJiagMftDc477oYce0oQJE3TrrbdKkgYOHKiSkhLddttteuCBB+R2OzPfX993W1JSEnfhWyBS2xkpctsa2hnaGYl2pi60M4ETqW0N7QztjEQ7UxfamdP81c6E9V8sJiZGQ4YM0apVq3zPVVVVadWqVRoxYkSd+4wYMaLG9pK0cuXKercPRc05bkl64oknNHPmTK1YsUJDhw4NRqh+19Rj79u3rz799FPl5+f7Htddd50uvfRS5efnKzMzM5jhN1tz/s0vuugibd261dcwStLmzZuVnp4eFo2E1LzjPnHiRK3GwNtY2nUVnckJ322hKFLbGSly2xraGdoZ2pm6OeW7LRRFaltDO0M7QztDO3OmgH6vtbg8vmFLliyxYmNjrYULF1pffPGFddttt1lt2rSxCgoKLMuyrAkTJlj33Xefb/v33nvPioqKsp588klrw4YN1owZM8J26t+mHPdjjz1mxcTEWMuWLbP279/vexw7dszUITRbU4/9bOE6C0pTj3vXrl1WYmKiNXXqVGvTpk3WP//5T6tjx47WL37xC1OH0CxNPe4ZM2ZYiYmJ1l/+8hdr+/bt1htvvGH16NHDuuGGG0wdQrMcO3bM+uijj6yPPvrIkmTNnj3b+uijj6wvv/zSsizLuu+++6wJEyb4tvdO//vTn/7U2rBhgzV37lymmfeTSG1nLCty2xraGdoZ2hnamWCL1LaGdoZ2hnaGdsYrkO1M2Ce+LMuyfvvb31pdunSxYmJirGHDhlkffPCB73ejR4+2Jk2aVGP7v/71r1bv3r2tmJgY67zzzrNee+21IEfsH0057q5du1qSaj1mzJgR/MD9oKn/5mcK14bCspp+3O+//741fPhwKzY21urevbv1y1/+0qqoqAhy1C3XlOMuLy+3Hn74YatHjx5WXFyclZmZad15553W4cOHgx94C7z99tt1/p/1HuukSZOs0aNH19onOzvbiomJsbp37249//zzQY/bqSK1nbGsyG1raGdoZ7xoZ2ruQzsTOJHa1tDO0M540c7YaGf83864LMvBfeUAAAAAAAAQscK6xhcAAAAAAABQHxJfAAAAAAAAcCQSXwAAAAAAAHAkEl8AAAAAAABwJBJfAAAAAAAAcCQSXwAAAAAAAHAkEl8AAAAAAABwJBJfAAAAAAAAcCQSXwAAAAAAAHAkEl8AAAAAAABwJBJfAAAAAAAAcCQSXwAAAAAAAHCk/w+HRw4msyRH0wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(1, 3, figsize=(15, 5))\n", "\n", "axs[0].plot(r, rho, label='initial')\n", "axs[0].plot(r, rho_final, label='final')\n", "axs[0].set_title('Density')\n", "axs[0].legend()\n", "\n", "axs[1].plot(r, u, label='initial')\n", "axs[1].plot(r, u_final, label='final')\n", "axs[1].set_title('Velocity')\n", "axs[1].legend()\n", "\n", "axs[2].plot(r, p, label='initial')\n", "axs[2].plot(r, p_final, label='final')\n", "axs[2].set_title('Pressure')\n", "axs[2].legend()" ] } ], "metadata": { "kernelspec": { "display_name": "f1uids", "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.10.15" } }, "nbformat": 4, "nbformat_minor": 2 }