Files
Python-DT_Slot_3/functions/volume_change_nb.ipynb

238 lines
31 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# # only need to import the function you want to use\n",
"# # secondary functions, that are called within the imported one, don't need to be importex explicitly\n",
"# from volume_change import V_von_h\n",
"\n",
"# V_von_h(10)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# create in and outflux vectors\n",
"import pandas as pd\n",
"import numpy as np\n",
"from numpy import cos,sin\n",
"from volume_change import V_h_test_1,h_V_test_1,V_h_test_2,h_V_test_2\n",
"from flow_patterns import return_flux_profiles,make_flux_df\n",
"\n",
"\n",
"t_max = 100\n",
"timestep = 1\n",
"time = np.arange(0,t_max,timestep)\n",
"#input identifiers\n",
"i_i = 'st_0010_0010'\n",
"#output identifiers\n",
"o_i = 'st_0010_0010'\n",
"# influx and outflux offset\n",
"i_o = 7.5\n",
"o_o = 8.\n",
"#outflux delay\n",
"o_d = 5\n",
"\n",
"influx, outflux = return_flux_profiles(len(time),i_i,o_i,i_o,o_o,o_d)\n",
"\n",
"\n",
"h_0 = 0.\n",
"\n",
"V_t = np.empty_like(time,dtype=float)\n",
"h_t = np.empty_like(time,dtype=float)\n",
"delta_Q = np.empty_like(time,dtype=float)\n",
"delta_V = np.empty_like(time,dtype=float)\n",
"\n",
"for i in range(len(time)):\n",
" delta_Q[i] = influx[i]-outflux[i]\n",
" delta_V[i] = delta_Q[i]*timestep\n",
" if i == 0:\n",
" V_t[0] = V_h_test_2(h_0)\n",
" else:\n",
" V_t[i] = V_t[i-1]+delta_V[i]\n",
" \n",
" h_t[i] = h_V_test_2(V_t[i])\n",
"\n",
"df = pd.DataFrame(np.transpose([time,influx,outflux,h_t,V_t]),columns=['time','influx','outflux','h_t','V_t'])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "561bc9e68f9a4b0a8f5c8fd67bd781d1",
"version_major": 2,
"version_minor": 0
},
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAh+0lEQVR4nO3df4yV1Z348c/IwIy0cKVOmRFFGF0DEjTRIeKwmWITO4D115ZNUetst3FdSWMRSKOo3UA0AbTGGgPIlmK3TbrqtojLHywB10pcGVQIIAvUpF0UVrgiFOfO1i4/n/3DL/frOMOAyszc8bxeyf1jnjnncs7JxHn3uXNvy7IsywIAgGSc1dMLAACgewlAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDElPf0Anqz48ePx549e2LAgAFRVlbW08sBAE5DlmXR2toaQ4YMibPOSvNemAD8HPbs2RNDhw7t6WUAAJ/B7t2744ILLujpZfQIAfg5DBgwICI++gEaOHBgD68GADgdhUIhhg4dWvw9niIB+DmceNl34MCBAhAAepmU/3wrzRe+AQASJgABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQAS02sCcNGiRVFbWxuVlZVRV1cXr7zySqfj165dG3V1dVFZWRkXXXRRLF68+KRjn3322SgrK4ubb775DK8aAKD09IoAfO6552L69Onx4IMPxqZNm6KhoSEmTZoUu3bt6nD8zp0747rrrouGhobYtGlTPPDAAzFt2rRYtmxZu7HvvPNO/PCHP4yGhoau3gYAQEkoy7Is6+lFnMrYsWPjyiuvjKeeeqp47dJLL42bb7455s2b1278fffdFytWrIgdO3YUr02dOjW2bNkSzc3NxWvHjh2L8ePHx/e+97145ZVX4oMPPogXXnjhtNdVKBQil8tFS0tLDBw48LNtDgDoVn5/94I7gIcPH46NGzdGY2Njm+uNjY2xbt26Duc0Nze3Gz9hwoTYsGFDHDlypHjtoYceiq9+9atxxx13nNZaDh06FIVCoc0DAKC3KfkA3L9/fxw7diyqq6vbXK+uro58Pt/hnHw+3+H4o0ePxv79+yMi4tVXX42lS5fGkiVLTnst8+bNi1wuV3wMHTr0U+4GAKDnlXwAnlBWVtbm6yzL2l071fgT11tbW+P222+PJUuWRFVV1Wmv4f7774+WlpbiY/fu3Z9iBwAApaG8pxdwKlVVVdGnT592d/v27dvX7i7fCTU1NR2OLy8vj3PPPTe2bdsWb7/9dtxwww3F7x8/fjwiIsrLy+Ott96Kiy++uN3zVlRUREVFxefdEgBAjyr5O4D9+vWLurq6WLNmTZvra9asiXHjxnU4p76+vt341atXx5gxY6Jv374xcuTI2Lp1a2zevLn4uPHGG+PrX/96bN682Uu7AMAXWsnfAYyImDlzZjQ1NcWYMWOivr4+fvrTn8auXbti6tSpEfHRS7Pvvvtu/PKXv4yIj97xu2DBgpg5c2bceeed0dzcHEuXLo1nnnkmIiIqKytj9OjRbf6Nc845JyKi3XUAgC+aXhGAU6ZMiQMHDsRDDz0Ue/fujdGjR8fKlStj2LBhERGxd+/eNp8JWFtbGytXrowZM2bEwoULY8iQIfHkk0/G5MmTe2oLAAAlo1d8DmCp8jlCAND7+P3dC/4GEACAM0sAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkptcE4KJFi6K2tjYqKyujrq4uXnnllU7Hr127Nurq6qKysjIuuuiiWLx4cZvvL1myJBoaGmLQoEExaNCguPbaa+P111/vyi0AAJSEXhGAzz33XEyfPj0efPDB2LRpUzQ0NMSkSZNi165dHY7fuXNnXHfdddHQ0BCbNm2KBx54IKZNmxbLli0rjnn55Zfj1ltvjd/+9rfR3NwcF154YTQ2Nsa7777bXdsCAOgRZVmWZT29iFMZO3ZsXHnllfHUU08Vr1166aVx8803x7x589qNv++++2LFihWxY8eO4rWpU6fGli1borm5ucN/49ixYzFo0KBYsGBB/M3f/M1pratQKEQul4uWlpYYOHDgp9wVANAT/P7uBXcADx8+HBs3bozGxsY21xsbG2PdunUdzmlubm43fsKECbFhw4Y4cuRIh3M+/PDDOHLkSHzlK1856VoOHToUhUKhzQMAoLcp+QDcv39/HDt2LKqrq9tcr66ujnw+3+GcfD7f4fijR4/G/v37O5wza9asOP/88+Paa6896VrmzZsXuVyu+Bg6dOin3A0AQM8r+QA8oaysrM3XWZa1u3aq8R1dj4h49NFH45lnnonnn38+KisrT/qc999/f7S0tBQfu3fv/jRbAAAoCeU9vYBTqaqqij59+rS727dv3752d/lOqKmp6XB8eXl5nHvuuW2uP/bYYzF37tx48cUX4/LLL+90LRUVFVFRUfEZdgEAUDpK/g5gv379oq6uLtasWdPm+po1a2LcuHEdzqmvr283fvXq1TFmzJjo27dv8dqPf/zjePjhh2PVqlUxZsyYM794AIASVPIBGBExc+bM+NnPfhZPP/107NixI2bMmBG7du2KqVOnRsRHL81+/J27U6dOjXfeeSdmzpwZO3bsiKeffjqWLl0aP/zhD4tjHn300fjRj34UTz/9dAwfPjzy+Xzk8/n4n//5n27fHwBAdyr5l4AjIqZMmRIHDhyIhx56KPbu3RujR4+OlStXxrBhwyIiYu/evW0+E7C2tjZWrlwZM2bMiIULF8aQIUPiySefjMmTJxfHLFq0KA4fPhx//dd/3ebfmj17dsyZM6db9gUA0BN6xecAliqfIwQAvY/f373kJWAAAM4cAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkJheE4CLFi2K2traqKysjLq6unjllVc6Hb927dqoq6uLysrKuOiii2Lx4sXtxixbtixGjRoVFRUVMWrUqFi+fHlXLR8AoGT0igB87rnnYvr06fHggw/Gpk2boqGhISZNmhS7du3qcPzOnTvjuuuui4aGhti0aVM88MADMW3atFi2bFlxTHNzc0yZMiWamppiy5Yt0dTUFN/+9rfjtdde665tAQD0iLIsy7KeXsSpjB07Nq688sp46qmnitcuvfTSuPnmm2PevHntxt93332xYsWK2LFjR/Ha1KlTY8uWLdHc3BwREVOmTIlCoRD/9m//VhwzceLEGDRoUDzzzDOnta5CoRC5XC5aWlpi4MCBn3V7AEA38vu7F9wBPHz4cGzcuDEaGxvbXG9sbIx169Z1OKe5ubnd+AkTJsSGDRviyJEjnY452XNGRBw6dCgKhUKbBwBAb1PyAbh///44duxYVFdXt7leXV0d+Xy+wzn5fL7D8UePHo39+/d3OuZkzxkRMW/evMjlcsXH0KFDP8uWAAB6VMkH4AllZWVtvs6yrN21U43/5PVP+5z3339/tLS0FB+7d+8+7fUDAJSK8p5ewKlUVVVFnz592t2Z27dvX7s7eCfU1NR0OL68vDzOPffcTsec7DkjIioqKqKiouKzbAMAoGSU/B3Afv36RV1dXaxZs6bN9TVr1sS4ceM6nFNfX99u/OrVq2PMmDHRt2/fTsec7DkBAL4oSv4OYETEzJkzo6mpKcaMGRP19fXx05/+NHbt2hVTp06NiI9emn333Xfjl7/8ZUR89I7fBQsWxMyZM+POO++M5ubmWLp0aZt3995zzz3xta99LR555JG46aab4l//9V/jxRdfjP/4j//okT0CAHSXXhGAU6ZMiQMHDsRDDz0Ue/fujdGjR8fKlStj2LBhERGxd+/eNp8JWFtbGytXrowZM2bEwoULY8iQIfHkk0/G5MmTi2PGjRsXzz77bPzoRz+Kf/iHf4iLL744nnvuuRg7dmy37w8AoDv1is8BLFU+RwgAeh+/v3vB3wACAHBmCUAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMSUfAAePHgwmpqaIpfLRS6Xi6ampvjggw86nZNlWcyZMyeGDBkSZ599dlxzzTWxbdu24vf/+Mc/xg9+8IMYMWJE9O/fPy688MKYNm1atLS0dPFuAAB6XskH4G233RabN2+OVatWxapVq2Lz5s3R1NTU6ZxHH300Hn/88ViwYEG88cYbUVNTE9/4xjeitbU1IiL27NkTe/bsicceeyy2bt0a//RP/xSrVq2KO+64ozu2BADQo8qyLMt6ehEns2PHjhg1alSsX78+xo4dGxER69evj/r6+vjd734XI0aMaDcny7IYMmRITJ8+Pe67776IiDh06FBUV1fHI488EnfddVeH/9avf/3ruP322+NPf/pTlJeXn9b6CoVC5HK5aGlpiYEDB37GXQIA3cnv7xK/A9jc3By5XK4YfxERV199deRyuVi3bl2Hc3bu3Bn5fD4aGxuL1yoqKmL8+PEnnRMRxR+C040/AIDeqqRrJ5/Px+DBg9tdHzx4cOTz+ZPOiYiorq5uc726ujreeeedDuccOHAgHn744ZPeHTzh0KFDcejQoeLXhUKh0/EAAKWoR+4AzpkzJ8rKyjp9bNiwISIiysrK2s3PsqzD6x/3ye+fbE6hUIhvfvObMWrUqJg9e3anzzlv3rzim1FyuVwMHTr0VFsFACg5PXIH8O67745bbrml0zHDhw+PN998M957771233v//ffb3eE7oaamJiI+uhN43nnnFa/v27ev3ZzW1taYOHFifPnLX47ly5dH3759O13T/fffHzNnzix+XSgURCAA0Ov0SABWVVVFVVXVKcfV19dHS0tLvP7663HVVVdFRMRrr70WLS0tMW7cuA7n1NbWRk1NTaxZsyauuOKKiIg4fPhwrF27Nh555JHiuEKhEBMmTIiKiopYsWJFVFZWnnI9FRUVUVFRcTpbBAAoWSX9JpBLL700Jk6cGHfeeWesX78+1q9fH3feeWdcf/31bd4BPHLkyFi+fHlEfPTS7/Tp02Pu3LmxfPny+M///M/427/92+jfv3/cdtttEfHRnb/Gxsb405/+FEuXLo1CoRD5fD7y+XwcO3asR/YKANBdSvpNIBERv/rVr2LatGnFd/XeeOONsWDBgjZj3nrrrTYf4nzvvffGn//85/j+978fBw8ejLFjx8bq1atjwIABERGxcePGeO211yIi4i/+4i/aPNfOnTtj+PDhXbgjAICeVdKfA1jqfI4QAPQ+fn+X+EvAAACceQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxJR+ABw8ejKampsjlcpHL5aKpqSk++OCDTudkWRZz5syJIUOGxNlnnx3XXHNNbNu2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U5PNnz+/eO1///d/s1wuly1evLjN2M2bN2cXXHBBtnfv3qQDsKvP+eP+5V/+JevXr1925MiRM7eBEnXVVVdlU6dObXNt5MiR2axZszocf++992YjR45sc+2uu+7Krr766uLX3/72t7OJEye2GTNhwoTslltuOUOr7p264qw/6ejRo9mAAQOyX/ziF59/wb1UV53z0aNHs7/8y7/Mfvazn2Xf/e53BeAXmJeAOS3Nzc2Ry+Vi7NixxWtXX3115HK5WLduXYdzdu7cGfl8PhobG4vXKioqYvz48W3mfPjhh3HrrbfGggULoqampus20Qt05Tl/UktLSwwcODDKy7/Y/5fghw8fjo0bN7Y5n4iIxsbGk55Pc3Nzu/ETJkyIDRs2xJEjRzod09mZf9F11Vl/0ocffhhHjhyJr3zlK2dm4b1MV57zQw89FF/96lfjjjvuOPMLp6QIQE5LPp+PwYMHt7s+ePDgyOfzJ50TEVFdXd3menV1dZs5M2bMiHHjxsVNN910BlfcO3XlOX/cgQMH4uGHH4677rrrc6649O3fvz+OHTv2qc4nn893OP7o0aOxf//+Tsec7DlT0FVn/UmzZs2K888/P6699tozs/BepqvO+dVXX42lS5fGkiVLumbhlBQBmLg5c+ZEWVlZp48NGzZERERZWVm7+VmWdXj94z75/Y/PWbFiRbz00kvxxBNPnJkNlaiePuePKxQK8c1vfjNGjRoVs2fP/hy76l1O93w6G//J65/2OVPRFWd9wqOPPhrPPPNMPP/881FZWXkGVtt7nclzbm1tjdtvvz2WLFkSVVVVZ36xlJwv9ms/nNLdd98dt9xyS6djhg8fHm+++Wa899577b73/vvvt/tflSeceDk3n8/HeeedV7y+b9++4pyXXnop/vCHP8Q555zTZu7kyZOjoaEhXn755U+xm9LV0+d8Qmtra0ycODG+/OUvx/Lly6Nv376fdiu9TlVVVfTp06fdnZGOzueEmpqaDseXl5fHueee2+mYkz1nCrrqrE947LHHYu7cufHiiy/G5ZdffmYX34t0xTlv27Yt3n777bjhhhuK3z9+/HhERJSXl8dbb70VF1988RneCT3JHcDEVVVVxciRIzt9VFZWRn19fbS0tLT56IXXXnstWlpaYty4cR0+d21tbdTU1MSaNWuK1w4fPhxr164tzpk1a1a8+eabsXnz5uIjIuInP/lJ/PznP++6jXeznj7niI/u/DU2Nka/fv1ixYoVydw96devX9TV1bU5n4iINWvWnPRM6+vr241fvXp1jBkzphjNJxtzsudMQVeddUTEj3/843j44Ydj1apVMWbMmDO/+F6kK8555MiRsXXr1jb/Lb7xxhvj61//emzevDmGDh3aZfuhh/TQm0/ohSZOnJhdfvnlWXNzc9bc3Jxddtll7T6eZMSIEdnzzz9f/Hr+/PlZLpfLnn/++Wzr1q3ZrbfeetKPgTkhEn4XcJZ1zTkXCoVs7Nix2WWXXZb9/ve/z/bu3Vt8HD16tFv31xNOfGTG0qVLs+3bt2fTp0/PvvSlL2Vvv/12lmVZNmvWrKypqak4/sRHZsyYMSPbvn17tnTp0nYfmfHqq69mffr0yebPn5/t2LEjmz9/vo+BybrmrB955JGsX79+2W9+85s2P7utra3dvr9S0RXn/EneBfzFJgA5bQcOHMi+853vZAMGDMgGDBiQfec738kOHjzYZkxEZD//+c+LXx8/fjybPXt2VlNTk1VUVGRf+9rXsq1bt3b676QegF1xzr/97W+ziOjwsXPnzu7ZWA9buHBhNmzYsKxfv37ZlVdema1du7b4ve9+97vZ+PHj24x/+eWXsyuuuCLr169fNnz48Oypp55q95y//vWvsxEjRmR9+/bNRo4cmS1btqyrt9ErnOmzHjZsWIc/u7Nnz+6G3ZSurviZ/jgB+MVWlmX/769AAQBIgr8BBABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIzP8Bo6Ul2HAvKmQAAAAASUVORK5CYII=",
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAh+0lEQVR4nO3df4yV1Z348c/IwIy0cKVOmRFFGF0DEjTRIeKwmWITO4D115ZNUetst3FdSWMRSKOo3UA0AbTGGgPIlmK3TbrqtojLHywB10pcGVQIIAvUpF0UVrgiFOfO1i4/n/3DL/frOMOAyszc8bxeyf1jnjnncs7JxHn3uXNvy7IsywIAgGSc1dMLAACgewlAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDElPf0Anqz48ePx549e2LAgAFRVlbW08sBAE5DlmXR2toaQ4YMibPOSvNemAD8HPbs2RNDhw7t6WUAAJ/B7t2744ILLujpZfQIAfg5DBgwICI++gEaOHBgD68GADgdhUIhhg4dWvw9niIB+DmceNl34MCBAhAAepmU/3wrzRe+AQASJgABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQAS02sCcNGiRVFbWxuVlZVRV1cXr7zySqfj165dG3V1dVFZWRkXXXRRLF68+KRjn3322SgrK4ubb775DK8aAKD09IoAfO6552L69Onx4IMPxqZNm6KhoSEmTZoUu3bt6nD8zp0747rrrouGhobYtGlTPPDAAzFt2rRYtmxZu7HvvPNO/PCHP4yGhoau3gYAQEkoy7Is6+lFnMrYsWPjyiuvjKeeeqp47dJLL42bb7455s2b1278fffdFytWrIgdO3YUr02dOjW2bNkSzc3NxWvHjh2L8ePHx/e+97145ZVX4oMPPogXXnjhtNdVKBQil8tFS0tLDBw48LNtDgDoVn5/94I7gIcPH46NGzdGY2Njm+uNjY2xbt26Duc0Nze3Gz9hwoTYsGFDHDlypHjtoYceiq9+9atxxx13nNZaDh06FIVCoc0DAKC3KfkA3L9/fxw7diyqq6vbXK+uro58Pt/hnHw+3+H4o0ePxv79+yMi4tVXX42lS5fGkiVLTnst8+bNi1wuV3wMHTr0U+4GAKDnlXwAnlBWVtbm6yzL2l071fgT11tbW+P222+PJUuWRFVV1Wmv4f7774+WlpbiY/fu3Z9iBwAApaG8pxdwKlVVVdGnT592d/v27dvX7i7fCTU1NR2OLy8vj3PPPTe2bdsWb7/9dtxwww3F7x8/fjwiIsrLy+Ott96Kiy++uN3zVlRUREVFxefdEgBAjyr5O4D9+vWLurq6WLNmTZvra9asiXHjxnU4p76+vt341atXx5gxY6Jv374xcuTI2Lp1a2zevLn4uPHGG+PrX/96bN682Uu7AMAXWsnfAYyImDlzZjQ1NcWYMWOivr4+fvrTn8auXbti6tSpEfHRS7Pvvvtu/PKXv4yIj97xu2DBgpg5c2bceeed0dzcHEuXLo1nnnkmIiIqKytj9OjRbf6Nc845JyKi3XUAgC+aXhGAU6ZMiQMHDsRDDz0Ue/fujdGjR8fKlStj2LBhERGxd+/eNp8JWFtbGytXrowZM2bEwoULY8iQIfHkk0/G5MmTe2oLAAAlo1d8DmCp8jlCAND7+P3dC/4GEACAM0sAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkRgACACRGAAIAJEYAAgAkptcE4KJFi6K2tjYqKyujrq4uXnnllU7Hr127Nurq6qKysjIuuuiiWLx4cZvvL1myJBoaGmLQoEExaNCguPbaa+P111/vyi0AAJSEXhGAzz33XEyfPj0efPDB2LRpUzQ0NMSkSZNi165dHY7fuXNnXHfdddHQ0BCbNm2KBx54IKZNmxbLli0rjnn55Zfj1ltvjd/+9rfR3NwcF154YTQ2Nsa7777bXdsCAOgRZVmWZT29iFMZO3ZsXHnllfHUU08Vr1166aVx8803x7x589qNv++++2LFihWxY8eO4rWpU6fGli1borm5ucN/49ixYzFo0KBYsGBB/M3f/M1pratQKEQul4uWlpYYOHDgp9wVANAT/P7uBXcADx8+HBs3bozGxsY21xsbG2PdunUdzmlubm43fsKECbFhw4Y4cuRIh3M+/PDDOHLkSHzlK1856VoOHToUhUKhzQMAoLcp+QDcv39/HDt2LKqrq9tcr66ujnw+3+GcfD7f4fijR4/G/v37O5wza9asOP/88+Paa6896VrmzZsXuVyu+Bg6dOin3A0AQM8r+QA8oaysrM3XWZa1u3aq8R1dj4h49NFH45lnnonnn38+KisrT/qc999/f7S0tBQfu3fv/jRbAAAoCeU9vYBTqaqqij59+rS727dv3752d/lOqKmp6XB8eXl5nHvuuW2uP/bYYzF37tx48cUX4/LLL+90LRUVFVFRUfEZdgEAUDpK/g5gv379oq6uLtasWdPm+po1a2LcuHEdzqmvr283fvXq1TFmzJjo27dv8dqPf/zjePjhh2PVqlUxZsyYM794AIASVPIBGBExc+bM+NnPfhZPP/107NixI2bMmBG7du2KqVOnRsRHL81+/J27U6dOjXfeeSdmzpwZO3bsiKeffjqWLl0aP/zhD4tjHn300fjRj34UTz/9dAwfPjzy+Xzk8/n4n//5n27fHwBAdyr5l4AjIqZMmRIHDhyIhx56KPbu3RujR4+OlStXxrBhwyIiYu/evW0+E7C2tjZWrlwZM2bMiIULF8aQIUPiySefjMmTJxfHLFq0KA4fPhx//dd/3ebfmj17dsyZM6db9gUA0BN6xecAliqfIwQAvY/f373kJWAAAM4cAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkBgBCACQGAEIAJAYAQgAkJheE4CLFi2K2traqKysjLq6unjllVc6Hb927dqoq6uLysrKuOiii2Lx4sXtxixbtixGjRoVFRUVMWrUqFi+fHlXLR8AoGT0igB87rnnYvr06fHggw/Gpk2boqGhISZNmhS7du3qcPzOnTvjuuuui4aGhti0aVM88MADMW3atFi2bFlxTHNzc0yZMiWamppiy5Yt0dTUFN/+9rfjtdde665tAQD0iLIsy7KeXsSpjB07Nq688sp46qmnitcuvfTSuPnmm2PevHntxt93332xYsWK2LFjR/Ha1KlTY8uWLdHc3BwREVOmTIlCoRD/9m//VhwzceLEGDRoUDzzzDOnta5CoRC5XC5aWlpi4MCBn3V7AEA38vu7F9wBPHz4cGzcuDEaGxvbXG9sbIx169Z1OKe5ubnd+AkTJsSGDRviyJEjnY452XNGRBw6dCgKhUKbBwBAb1PyAbh///44duxYVFdXt7leXV0d+Xy+wzn5fL7D8UePHo39+/d3OuZkzxkRMW/evMjlcsXH0KFDP8uWAAB6VMkH4AllZWVtvs6yrN21U43/5PVP+5z3339/tLS0FB+7d+8+7fUDAJSK8p5ewKlUVVVFnz592t2Z27dvX7s7eCfU1NR0OL68vDzOPffcTsec7DkjIioqKqKiouKzbAMAoGSU/B3Afv36RV1dXaxZs6bN9TVr1sS4ceM6nFNfX99u/OrVq2PMmDHRt2/fTsec7DkBAL4oSv4OYETEzJkzo6mpKcaMGRP19fXx05/+NHbt2hVTp06NiI9emn333Xfjl7/8ZUR89I7fBQsWxMyZM+POO++M5ubmWLp0aZt3995zzz3xta99LR555JG46aab4l//9V/jxRdfjP/4j//okT0CAHSXXhGAU6ZMiQMHDsRDDz0Ue/fujdGjR8fKlStj2LBhERGxd+/eNp8JWFtbGytXrowZM2bEwoULY8iQIfHkk0/G5MmTi2PGjRsXzz77bPzoRz+Kf/iHf4iLL744nnvuuRg7dmy37w8AoDv1is8BLFU+RwgAeh+/v3vB3wACAHBmCUAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMSUfAAePHgwmpqaIpfLRS6Xi6ampvjggw86nZNlWcyZMyeGDBkSZ599dlxzzTWxbdu24vf/+Mc/xg9+8IMYMWJE9O/fPy688MKYNm1atLS0dPFuAAB6XskH4G233RabN2+OVatWxapVq2Lz5s3R1NTU6ZxHH300Hn/88ViwYEG88cYbUVNTE9/4xjeitbU1IiL27NkTe/bsicceeyy2bt0a//RP/xSrVq2KO+64ozu2BADQo8qyLMt6ehEns2PHjhg1alSsX78+xo4dGxER69evj/r6+vjd734XI0aMaDcny7IYMmRITJ8+Pe67776IiDh06FBUV1fHI488EnfddVeH/9avf/3ruP322+NPf/pTlJeXn9b6CoVC5HK5aGlpiYEDB37GXQIA3cnv7xK/A9jc3By5XK4YfxERV199deRyuVi3bl2Hc3bu3Bn5fD4aGxuL1yoqKmL8+PEnnRMRxR+C040/AIDeqqRrJ5/Px+DBg9tdHzx4cOTz+ZPOiYiorq5uc726ujreeeedDuccOHAgHn744ZPeHTzh0KFDcejQoeLXhUKh0/EAAKWoR+4AzpkzJ8rKyjp9bNiwISIiysrK2s3PsqzD6x/3ye+fbE6hUIhvfvObMWrUqJg9e3anzzlv3rzim1FyuVwMHTr0VFsFACg5PXIH8O67745bbrml0zHDhw+PN998M957771233v//ffb3eE7oaamJiI+uhN43nnnFa/v27ev3ZzW1taYOHFifPnLX47ly5dH3759O13T/fffHzNnzix+XSgURCAA0Ov0SABWVVVFVVXVKcfV19dHS0tLvP7663HVVVdFRMRrr70WLS0tMW7cuA7n1NbWRk1NTaxZsyauuOKKiIg4fPhwrF27Nh555JHiuEKhEBMmTIiKiopYsWJFVFZWnnI9FRUVUVFRcTpbBAAoWSX9JpBLL700Jk6cGHfeeWesX78+1q9fH3feeWdcf/31bd4BPHLkyFi+fHlEfPTS7/Tp02Pu3LmxfPny+M///M/427/92+jfv3/cdtttEfHRnb/Gxsb405/+FEuXLo1CoRD5fD7y+XwcO3asR/YKANBdSvpNIBERv/rVr2LatGnFd/XeeOONsWDBgjZj3nrrrTYf4nzvvffGn//85/j+978fBw8ejLFjx8bq1atjwIABERGxcePGeO211yIi4i/+4i/aPNfOnTtj+PDhXbgjAICeVdKfA1jqfI4QAPQ+fn+X+EvAAACceQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxAhAAIDECEAAgMQIQACAxJR+ABw8ejKampsjlcpHL5aKpqSk++OCDTudkWRZz5syJIUOGxNlnnx3XXHNNbNu2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U5PNnz+/eO1///d/s1wuly1evLjN2M2bN2cXXHBBtnfv3qQDsKvP+eP+5V/+JevXr1925MiRM7eBEnXVVVdlU6dObXNt5MiR2axZszocf++992YjR45sc+2uu+7Krr766uLX3/72t7OJEye2GTNhwoTslltuOUOr7p264qw/6ejRo9mAAQOyX/ziF59/wb1UV53z0aNHs7/8y7/Mfvazn2Xf/e53BeAXmJeAOS3Nzc2Ry+Vi7NixxWtXX3115HK5WLduXYdzdu7cGfl8PhobG4vXKioqYvz48W3mfPjhh3HrrbfGggULoqampus20Qt05Tl/UktLSwwcODDKy7/Y/5fghw8fjo0bN7Y5n4iIxsbGk55Pc3Nzu/ETJkyIDRs2xJEjRzod09mZf9F11Vl/0ocffhhHjhyJr3zlK2dm4b1MV57zQw89FF/96lfjjjvuOPMLp6QIQE5LPp+PwYMHt7s+ePDgyOfzJ50TEVFdXd3menV1dZs5M2bMiHHjxsVNN910BlfcO3XlOX/cgQMH4uGHH4677rrrc6649O3fvz+OHTv2qc4nn893OP7o0aOxf//+Tsec7DlT0FVn/UmzZs2K888/P6699tozs/BepqvO+dVXX42lS5fGkiVLumbhlBQBmLg5c+ZEWVlZp48NGzZERERZWVm7+VmWdXj94z75/Y/PWbFiRbz00kvxxBNPnJkNlaiePuePKxQK8c1vfjNGjRoVs2fP/hy76l1O93w6G//J65/2OVPRFWd9wqOPPhrPPPNMPP/881FZWXkGVtt7nclzbm1tjdtvvz2WLFkSVVVVZ36xlJwv9ms/nNLdd98dt9xyS6djhg8fHm+++Wa899577b73/vvvt/tflSeceDk3n8/HeeedV7y+b9++4pyXXnop/vCHP8Q555zTZu7kyZOjoaEhXn755U+xm9LV0+d8Qmtra0ycODG+/OUvx/Lly6Nv376fdiu9TlVVVfTp06fdnZGOzueEmpqaDseXl5fHueee2+mYkz1nCrrqrE947LHHYu7cufHiiy/G5ZdffmYX34t0xTlv27Yt3n777bjhhhuK3z9+/HhERJSXl8dbb70VF1988RneCT3JHcDEVVVVxciRIzt9VFZWRn19fbS0tLT56IXXXnstWlpaYty4cR0+d21tbdTU1MSaNWuK1w4fPhxr164tzpk1a1a8+eabsXnz5uIjIuInP/lJ/PznP++6jXeznj7niI/u/DU2Nka/fv1ixYoVydw96devX9TV1bU5n4iINWvWnPRM6+vr241fvXp1jBkzphjNJxtzsudMQVeddUTEj3/843j44Ydj1apVMWbMmDO/+F6kK8555MiRsXXr1jb/Lb7xxhvj61//emzevDmGDh3aZfuhh/TQm0/ohSZOnJhdfvnlWXNzc9bc3Jxddtll7T6eZMSIEdnzzz9f/Hr+/PlZLpfLnn/++Wzr1q3ZrbfeetKPgTkhEn4XcJZ1zTkXCoVs7Nix2WWXXZb9/ve/z/bu3Vt8HD16tFv31xNOfGTG0qVLs+3bt2fTp0/PvvSlL2Vvv/12lmVZNmvWrKypqak4/sRHZsyYMSPbvn17tnTp0nYfmfHqq69mffr0yebPn5/t2LEjmz9/vo+BybrmrB955JGsX79+2W9+85s2P7utra3dvr9S0RXn/EneBfzFJgA5bQcOHMi+853vZAMGDMgGDBiQfec738kOHjzYZkxEZD//+c+LXx8/fjybPXt2VlNTk1VUVGRf+9rXsq1bt3b676QegF1xzr/97W+ziOjwsXPnzu7ZWA9buHBhNmzYsKxfv37ZlVdema1du7b4ve9+97vZ+PHj24x/+eWXsyuuuCLr169fNnz48Oypp55q95y//vWvsxEjRmR9+/bNRo4cmS1btqyrt9ErnOmzHjZsWIc/u7Nnz+6G3ZSurviZ/jgB+MVWlmX/769AAQBIgr8BBABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIjAAEAEiMAAQASIwABABIzP8Bo6Ul2HAvKmQAAAAASUVORK5CYII=' width=640.0/>\n",
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# try to draw h_t in an animated way\n",
"%matplotlib widget\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.animation import FuncAnimation\n",
"\n",
"fig, ax = plt.subplots()\n",
"xdata, ydata = [], []\n",
"ln, = plt.plot([], [], 'ro')\n",
"\n",
"def init():\n",
" ax.set_xlim(0, time[-1])\n",
" ax.set_ylim(np.min(h_t)-1,np.max(h_t)+1)\n",
" return ln,\n",
"\n",
"def update(frame):\n",
" xdata.append(time[frame])\n",
" ydata.append(h_t[frame])\n",
" ln.set_data(xdata, ydata)\n",
" return ln,\n",
"\n",
"ani = FuncAnimation(fig, update, frames=np.arange(np.size(time)),\n",
" init_func=init, blit=True)\n",
"plt.show()\n",
"\n",
"frames=np.arange(np.size(time))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# # plot np.arrays\n",
"# %matplotlib widget\n",
"# from matplotlib import pyplot as plt\n",
"\n",
"# #define color for plot\n",
"# iter_colors = iter(['blue','green','red','yellow'])\n",
"\n",
"# #create figure with 3 stacked subplots\n",
"# fig_data,axs_data = plt.subplots(3,1,figsize=(7,10))\n",
"\n",
"# #preparation for figure legend\n",
"\n",
"\n",
"# #fill subplots with data and assign handles to the line_objects (, is necessary, because )\n",
"# handle0, = axs_data[0].plot(time,h_t,marker='.',color=next(iter_colors))\n",
"# handle1, = axs_data[1].plot(time,V_t,marker='.',color=next(iter_colors))\n",
"# handle2, = axs_data[2].plot(time,influx,marker='.',color=next(iter_colors))\n",
"# handle3, = axs_data[2].plot(time,outflux,marker='.',color=next(iter_colors))\n",
"\n",
"\n",
"# #set subplot axis labels\n",
"# axs_data[0].set_ylabel(r'$h(t) \\, / \\, \\mathrm{m}$')\n",
"# axs_data[0].set_xlabel(r'$t \\, / \\, \\mathrm{s}$')\n",
"# axs_data[1].set_ylabel(r'$V(t) \\, / \\, \\mathrm{m}$')\n",
"# axs_data[1].set_xlabel(r'$t \\, / \\, \\mathrm{s}$')\n",
"# axs_data[2].set_ylabel(r'$Q(t)\\, / \\, \\mathrm{m^3s^{-1}}$')\n",
"# axs_data[2].set_xlabel(r'$t \\, / \\, \\mathrm{s}$')\n",
"\n",
"# #give the axis labels enough space to be shown\n",
"# plt.tight_layout()\n",
"\n",
"# # resize subplot widths, so that the legend can be shown besides them\n",
"# plt.subplots_adjust(right=0.8)\n",
"\n",
"# # add legend\n",
"# handles = [handle0,handle1,handle2,handle3]\n",
"# legend_names = [r'$h(t)$',r'$V(t)$',r'$Q_{in}(t)$',r'$Q_{out}(t)$']\n",
"# fig_data.legend(handles,legend_names,loc = 'upper right')\n",
"\n",
"# plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# #plot with plolty\n",
"# import plotly.express as px\n",
"# from plotly.subplots import make_subplots\n",
"# import plotly.graph_objects as go\n",
"# import plotly.io as pio\n",
"# pio.renderers.default = \"vscode\"\n",
"\n",
"\n",
"# fig1 = make_subplots(3,1,subplot_titles=('Height','Volume','Fluxes'))\n",
"\n",
"# fig1.add_trace(go.Scatter(x=df['time'],y=df['h_t'],name='height',mode='lines+markers',marker=dict(size=5)),row=1,col=1)\n",
"# fig1.add_trace(go.Scatter(x=df['time'],y=df['V_t'],name='volume',mode='lines+markers',marker=dict(size=5)),row=2,col=1)\n",
"# fig1.add_trace(go.Scatter(x=df['time'],y=df['influx'],name='influx',mode='lines+markers',marker=dict(size=5)),row=3,col=1)\n",
"# fig1.add_trace(go.Scatter(x=df['time'],y=df['outflux'],name='outlfux',mode='lines+markers',marker=dict(size=5)),row=3,col=1)\n",
"\n",
"# fig1.update_xaxes(title_text = 'time',row=1,col=1)\n",
"# fig1.update_xaxes(title_text = 'time',row=2,col=1)\n",
"# fig1.update_xaxes(title_text = 'time',row=3,col=1)\n",
"# fig1.update_yaxes(title_text = 'h(t)',row=1,col=1)\n",
"# fig1.update_yaxes(title_text = 'V(t)',row=2,col=1)\n",
"# fig1.update_yaxes(title_text = 'Q(t)',row=3,col=1)\n",
"\n",
"# fig1.update_layout(height=700)\n",
"\n",
"# fig2 = px.scatter(df,x='time',y='h_t',animation_frame='time')\n",
"# fig2.update_xaxes(range=[0,100])\n",
"# fig2.update_yaxes(range=[0,5])\n",
"# fig1.show()\n",
"# fig2.show('notebook')"
]
}
],
"metadata": {
"interpreter": {
"hash": "84fb123bdc47ab647d3782661abcbe80fbb79236dd2f8adf4cef30e8755eb2cd"
},
"kernelspec": {
"display_name": "Python 3.8.13 ('Georg_DT_Slot3')",
"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.8.13"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}