From 8d8bb2515d79c342a43bdc0028d624a4bce59a1b Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Tue, 16 Apr 2024 11:33:03 +0200 Subject: [PATCH] add tutorial file --- tutorials/README.md | 13 + tutorials/numpy_only_basic_mpdata.ipynb | 336 ++++++++++++++++++++++++ 2 files changed, 349 insertions(+) create mode 100644 tutorials/README.md create mode 100644 tutorials/numpy_only_basic_mpdata.ipynb diff --git a/tutorials/README.md b/tutorials/README.md new file mode 100644 index 00000000..b4709a9a --- /dev/null +++ b/tutorials/README.md @@ -0,0 +1,13 @@ +# PyMPDATA tutorials + +PyMPDATA tutorial notebooks are designed to introduce users to the basics of MPDATA and related concepts. +Each tutorial includes introductory information and a simple code example where the user can explore how simulation +results depend on various parameter values. +These notebooks are designed for an introductory numerical modelling course for advanced undergraduate and graduate students. + +### Minimal MPDATA implementation using NumPy (no dependence on PyMPDATA) +A simple example depicting how basic MPDATA (1D) can be implemented using NumPy +- [![View notebook](https://img.shields.io/static/v1?label=render%20on&logo=github&color=87ce3e&message=GitHub)](https://github.com/open-atmos/PyMPDATA/tree/tutorial/tutorials/numpy_only_basic_mpdata.ipynb) + [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PyMPDATA.git/tutorial?urlpath=lab/tree/tutorials/numpy_only_basic_mpdata.ipynb) + [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PyMPDATA/blob/tutorial/tutorials/numpy_only_basic_mpdata.ipynb) + diff --git a/tutorials/numpy_only_basic_mpdata.ipynb b/tutorials/numpy_only_basic_mpdata.ipynb new file mode 100644 index 00000000..2c75bfdb --- /dev/null +++ b/tutorials/numpy_only_basic_mpdata.ipynb @@ -0,0 +1,336 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "80339956-b3c6-4129-a02d-64de0a53f1be", + "metadata": {}, + "source": [ + "**Modelling of Physical Systems lab: on numerical solutions of transport PDEs** \n", + "AGH, April 16, Sylwester Arabas (sylwester.arabas@agh.edu.pl)\n", + "\n", + "\n", + "**Plan for today**: \n", + "1. advection PDE \n", + "2. overview of applications \n", + "3. simple numerical solution using the \"upwind\" scheme (\"toy\" implementation in Python) \n", + "4. robust numerical solution using the \"MPDATA\" scheme (\"toy\" implementation in Python) \n", + "5. **homework**: convergence analysis for upwind vs. MPDATA (e.g., plot log(error) vs. log(dx)) \n", + "6. PyMPDATA: open Pythonic & high-performance implementation of MPDATA developed @AGH\n", + "\n", + "(**Eng./MSc. topics available!**) " + ] + }, + { + "cell_type": "markdown", + "id": "c73824e6-6946-4d30-824e-0e1467f4e06f", + "metadata": {}, + "source": [ + "**1. advection PDE**\n", + "\n", + "Let's introduce a few symbols: \n", + "* ${\\color{red}t}$: time \n", + "* ${\\color{blue}x}$: physical coordinate (e.g., distance or altitude) \n", + "* ${\\color{green}\\psi}({\\color{blue}x})$: scalar field (e.g., pollutant concentration) \n", + "* ${\\color{brown}u}$: carrier velocity field (e.g., wind) \n", + "\n", + "Transport of $\\color{green}\\psi$ due to advection by $\\color{brown}u$ can be modelled with the advection equation:\n", + "$$ \\partial_{\\color{red} t} {\\color{green}\\psi} + \\partial_{\\color{blue}x} \\left({\\color{brown}u} {\\color{green}\\psi}\\right) = 0 $$\n", + "\n", + "For the special case of $\\partial_{\\color{blue}x} {\\color{brown}u}=0$, an analytical solution describing translation of the signal is readily available:\n", + "$$ {\\color{green}\\psi}({\\color{blue}x}, {\\color{red}t})=\\psi_0({\\color{blue}x} - {\\color{brown}u}{\\color{red}t})$$\n", + "where $\\psi_0({\\color{blue}x})={\\color{green}\\psi}({\\color{blue}x}, 0)$. \n", + "\n", + "Let's depict the problem using NumPy and matplotlib:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b34d89ff-4b2c-49b0-a0ea-3969f9157d42", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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uxYejye4zapVqzB06FBNd7kA8h/R+PHjm70nfr8fH3/8cdzfk1ipr6/H/v37UVhYiPHjx8NoNDar7+7du1FaWpqw9S0pKUFBQUGzOtntdmzcuDFYp8mTJ6OmpgabN28ObvPJJ5/A7/cH//knmqNHj6K6ujoYuLReRyEEbrvtNqxcuRKffPJJq67acH43w/kfq6bO6tiWrVu3AkCz91HLdWyL3++Hy+XSxnvY7SGrGnT48GGxZcsWsXjxYpGWlia2bNkitmzZIurq6oQQTVOIZs2aJbZu3So++OADkZub2+ZU27vuukt899134umnn9b0VNt169aJxx9/XGzdulXs379f/POf/xS5ubnipz/9aXCbmpoakZ+fL6655hqxY8cOsWLFCmG1WhNqqq3ZbBbLli0TO3fuFDfddJPIzMxsNho7kdxxxx1i9erV4uDBg+KLL74QM2bMEDk5OaKiokIIIU+F69u3r/jkk0/EV199JSZPniwmT56scqk7VldXF/x7AyAee+wxsWXLFnH48GEhhDzVNjMzU7z11lti+/bt4uKLL25zqu3pp58uNm7cKD7//HMxePBgzUxDFaLjOtbV1Yk777xTrF+/Xhw8eFD873//E+PGjRODBw8WTqczuA8t1/Hmm28WGRkZYvXq1c2mmTocjuA2nf1uhvM/Vk2d1XHfvn3igQceEF999ZU4ePCgeOutt8SAAQPE1KlTg/vQeh0XLFgg1qxZIw4ePCi2b98uFixYICRJEh999JEQQv33MCnDx9y5cwWAVpdPP/00uM2hQ4fE+eefL1JSUkROTo644447hMfjabafTz/9VIwdO1aYTCYxYMAAsXTp0vhWJAKbN28WkyZNEhkZGcJisYjTTjtNPPzww83+4QkhxLZt28T3vvc9YTabRe/evcUjjzyiUom75qmnnhJ9+/YVJpNJTJw4UWzYsEHtInXZ5ZdfLgoLC4XJZBK9e/cWl19+udi3b1/w+cbGRnHLLbeIrKwsYbVaxaWXXipOnDihYok79+mnn7b5tzd37lwhhDzd9r777hP5+fnCbDaL6dOni927dzfbR3V1tbjyyitFWlqasNls4rrrrgt+cdCCjurocDjErFmzRG5urjAajaJfv37ixhtvbBWQtVzHtuoGoNn/v3B+N8P5H6uWzupYWloqpk6dKnr16iXMZrMYNGiQuOuuu5qt8yGEtut4/fXXi379+gmTySRyc3PF9OnTg8FDCPXfQ0kIIbrffkJEREQUnoQZ80FERETJgeGDiIiI4orhg4iIiOKK4YOIiIjiiuGDiIiI4orhg4iIiOKK4YOIiIjiiuGDiIiI4orhg4iIiOKK4YOIiIjiiuGDiIiI4orhg4iIiOLq/wNg4gOnknMslAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "from matplotlib import pyplot\n", + "\n", + "def psi_0(x):\n", + " \"\"\" https://en.wikipedia.org/wiki/Witch_of_Agnesi \"\"\"\n", + " a = 5\n", + " return 8*a**3 / (x**2 + 4*a**2)\n", + "\n", + "nx = 100\n", + "x, dx = np.linspace(-100, 300, nx, endpoint=False, retstep=True)\n", + "u = 2\n", + "t_max = 50\n", + "\n", + "pyplot.plot(x, psi_0(x), label='initial')\n", + "pyplot.plot(x, psi_0(x - u * t_max), label=f'analytical at {t_max=}')\n", + "pyplot.legend()\n", + "pyplot.grid()" + ] + }, + { + "cell_type": "markdown", + "id": "990932c6-6bc2-4b69-9b12-64bd89418a14", + "metadata": {}, + "source": [ + "**2. overview of applications**\n", + "\n", + "* **computational fluid dynamics**: Navier-Stokes momentum equation ($\\psi$: fluid velocity)\n", + "* **fluid thermodynamics**: energy conservation ($\\psi$: thermal energy)\n", + "* **atmospheric modelling incl. weather prediction**: mass conservation ($\\psi$: humidity, rain, pollutants, ...)\n", + "* **derivative pricing in financial mathematics**: Black-Scholes equation ($\\psi$: discounted value of a derivative instrument)\n", + "* ..." + ] + }, + { + "cell_type": "markdown", + "id": "85cef3cf-c950-4ca3-a998-0016e55aa6e5", + "metadata": {}, + "source": [ + "**3. simple numerical solution using the \"upwind\" scheme coded in Python**\n", + "\n", + "For cases where the velocity varies in space (and for many other more complex cases), numerical integration is the only way of solving the advection PDE. Among numerous numerical schemes for solving it, let's look at the basic **upwind** solver: \n", + "\n", + "Let's consider the following discretisation of the problem: \n", + "* ${\\color{red}n} = \\frac{\\color{red}t}{\\Delta t} \\in 0, 1, \\ldots$ \n", + "* ${\\color{blue}i} = \\frac{\\color{blue}x}{\\Delta x} \\in 0, 1, \\ldots$ \n", + "* ${\\color{brown}C} = {\\color{brown}u}\\frac{\\Delta t}{\\Delta x}$ (so called Courant number) \n", + "* ${\\color{green}\\psi}_{\\color{blue}i}^{\\color{red}n}$: scalar field at \"grid cell\" $\\color{blue}i$ in space at time \"level\" ${\\color{red}n}$ \n", + "\n", + "The explicit (forward-in-time) upwind scheme is defined as:\n", + "$$\n", + " {\\color{green}\\psi}^{{\\color{red}n}+1}_{\\color{blue}i} = {\\color{green}\\psi}^{\\color{red}n}_{\\color{blue}i} - \\left[\\frac{{\\color{brown}C} + |{\\color{brown}C}|}{2}\\left({\\color{green}\\psi}^{\\color{red}n}_{\\color{blue}i} - {\\color{green}\\psi}^{\\color{red}n}_{{\\color{blue}i}-1}\\right)+\\frac{{\\color{brown}C}-|{\\color{brown}C}|}{2}\\left({\\color{green}\\psi}^{\\color{red}n}_{{\\color{blue}i}+1}-{\\color{green}\\psi}^{\\color{red}n}_{\\color{blue}i}\\right)\\right]\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "21817562-a7e9-4710-a408-ff91726d88f0", + "metadata": {}, + "outputs": [], + "source": [ + "# algorithm coded in Python/NumPy:\n", + "\n", + "def flux(psi_l, psi_r, C):\n", + " return .5 * (C + abs(C)) * psi_l + \\\n", + " .5 * (C - abs(C)) * psi_r\n", + "\n", + "class shift:\n", + " def __radd__(self, i): \n", + " return slice(i.start+1, i.stop+1)\n", + " def __rsub__(self, i): \n", + " return slice(i.start-1, i.stop-1)\n", + "\n", + "def upwind(psi, i, C):\n", + " return psi[i] - flux(psi[i ], psi[i+one], C[i]) + \\\n", + " flux(psi[i-one], psi[i ], C[i-one]) " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0dec7cf7-8afe-455b-9f4b-66e896eda91b", + "metadata": {}, + "outputs": [], + "source": [ + "# counterparts of mathematical symbols:\n", + "\n", + "i = slice(1,nx-2)\n", + "one = shift()\n", + "\n", + "nt = 50\n", + "dt = t_max / nt\n", + "\n", + "C = u * dt / dx\n", + "C_phys = np.full(nx-1, C)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4916e1a9-666d-46c4-952d-a3b26a8dd843", + "metadata": {}, + "outputs": [], + "source": [ + "# numerical integration using \"upwind\":\n", + "psi_upwind = psi_0(x)\n", + "for _ in range(nt):\n", + " psi_upwind[i] = upwind(psi_upwind, i, C_phys)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7088e23f-8ccf-43b7-b50a-0f51f40e536c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ihUryl/+48ePR2BgIBo1aoTw8HC757rk5uZixIgRaNiwIbp164Z69erh448/dngfCxYsQIcOHdCrVy907twZjzzyiM35Kb///jv279+PQYMGOfiqu54khBMXoCsgMzMTISEhyMjIgF6vd+m2TSYTNm7ciB49ehR5QpSv88c6ZhnNaDRtMwDgl5mJUEkC6/63ERN/CJKX6dT+dfqSPx5HGO/dv9T1zSswSWps/t869Dw+TF7mynMysrOzcf78edSsWdPmBEWl5F8podfr7f769DZCCNStWxevvfaaQy0unqrfhg0bMGHCBJw4ccLt+/W1Y+iISZMm4datW1i+fDkA5+pY3N+VM9/f/vWJTUREpfLHH39gzZo1uHbtmkd/ETviiSeewNmzZ/H7778jOjra08XxOREREaXqznMlhg8iIkJERATCwsKwfPlyhIaGero4JSrrpHgPspIGYFMCwwcREcHLeuDJz/lHBxYRERH5DIYPIiIiUhTDBxERESmK4YOIiIgUxfBBREREimL4ICIiIkUxfBARUZnMmDEDLVq0cNn2Vq5ciYoVK7pse+R9GD6IiKhMxo0b5/QssO7mqgATGBiI0NBQBAYGQpIkSJKENWvWWK2TnJyMli1bQqPRoE6dOsVOapdPCIHly5cjLi4OFSpUQMWKFdG6dWssXrwYWVlZpSprdnY2RowYgcqVK6NChQp45plnSpxQcODAgTZ17NatW6n27wyGDyIiKhUhBMxmMypUqIDKlSt7ujhu89FHH+H333/H1atXcfXqVatJ+s6fP48nnngCjz32GFJTUzFmzBgMHToUmzdvLnabL730EsaMGYPevXtj586dSE1Nxdtvv43169djy5YtpSrnG2+8gf/973/4+uuvsWvXLly5cgVPP/10ic9LTEzEqVOn5Dp+9dVXpdq/Mxg+iOiBIIRAlilL8X8Gs8Gp0UMTEhIwevRoTJw4EZUqVUJUVBSmT58uP37hwgVIkoTU1FR52e3btyFJEpKTkwHk/RKXJAmbN29GbGwstFotHn/8caSnp2PTpk1o2LAh9Ho9+vXrZ/Ur22KxICkpCTVr1oRWq0Xz5s3x73//W348f7ubNm1Cq1atoNVqceDAAbvdLp999hkaN24MjUaDKlWqYOTIkfJjCxcuRNOmTVG+fHlER0fjtddew927dx1+jfJfg2+++QaPPfYY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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot(psi, title):\n", + " pyplot.step(x, psi_0(x), label='initial (discretised)', where='mid')\n", + " pyplot.step(x, psi_0(x-u*t_max), label='analytical (discretised)', where='mid')\n", + " pyplot.step(x, psi, label=f'numerical {nt=} {C=}', where='mid')\n", + " pyplot.legend()\n", + " pyplot.title(title)\n", + " pyplot.grid()\n", + "plot(psi_upwind, \"upwind\")" + ] + }, + { + "cell_type": "markdown", + "id": "16852463-bf2f-4d30-bffc-ff48019bec6f", + "metadata": {}, + "source": [ + "**4. robust numerical solution using the \"MPDATA\" scheme (coded in Python)**\n", + "\n", + "A robust iterative algorithm proposed in [Smolarkiewicz 1983 (Mon. Wea. Rev. 111)](https://doi.org/10.1175/1520-0493(1983)111%3C0479:ASPDAS%3E2.0.CO;2) to alleviate the \"numerical diffusion\" maintaining simplicity, conservativeness and stability characteristics of upwind:\n", + "\n", + "- **first iteration**: ordinary upwind\n", + "- **next iterations**: upwind with physical Courant field $\\color{brown}C$ replaced with an \"antidiffusive\" corrective ${\\color{magenta}C'}$ \n", + "\n", + "$$ {\\color{magenta}C'}_{j+\\frac{1}{2}} = (|{\\color{brown}C}_{j+\\frac{1}{2}}| - {\\color{brown}C}_{j+\\frac{1}{2}}^2) \\frac{{\\color{green}\\psi}_{j+1} - {\\color{green}\\psi}_{j}}{{\\color{green}\\psi}_{j+1} + {\\color{green}\\psi}_j}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2a8ff43f-6654-458e-98a9-2b21b832fff8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGzCAYAAACPa3XZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAABd/klEQVR4nO3deXhTVfoH8O9tmoSENmVpSykUWnZkLVupuFQplHUQUVkcARUUZRHZUWRRZBEFFBVHR4GfbAMzIqOAshYEAQEpiEClDJuyI3QhaZs05/dH7aXpmrTJzdLv53n6kNzcnHPe3JC8OefccyUhhAARERGRQvzc3QAiIiKqWJh8EBERkaKYfBAREZGimHwQERGRoph8EBERkaKYfBAREZGimHwQERGRoph8EBERkaKYfBAREZGimHwQERGRoph8EFUwy5cvhyRJkCQJe/fuLfS4EAIRERGQJAm9evWSt+c9R5Ik+Pn5ITw8HF27dkViYqLN8yMjI232q1KlClq0aIEXXngBBw8eLLFtmzdvhiRJCA8Ph9VqlbfHxcXZ1F/c38yZM+XnnDp1CpIkoVKlSrhz506ZXisicg1/dzeAiNyjUqVKWL16NR544AGb7bt378bvv/8OrVZb6DldunTB4MGDIYTAuXPn8PHHH+PRRx/Fpk2b0L17d3m/1q1bY/z48QCA9PR0nDp1CuvXr8dnn32GV199FQsXLiyyTatWrUJkZCTOnz+PnTt3Ij4+HgDw+uuvY9iwYfJ+hw4dwgcffIDXXnsNTZs2lbe3bNlSvr1y5UqEhYXh9u3b+Pe//23zfCJyM0FEFcqyZcsEAPH444+L4OBgYTabbR4fPny4aNu2rahbt67o2bOnvB2AGDlypM2+x48fFwBE165d5W0Fn5fHaDSKxx57TAAQH3/8caHHMzIyROXKlcUHH3wgoqOjxdChQ4uNYf369QKA2LVrV5GPW61WERkZKcaNGyf69u0r4uLiii2LiJTHYReiCmrgwIG4desWtm3bJm/Lzs7Gv//9bwwaNMiuMlq0aIHg4GCcO3eu1H11Oh2+/PJLVKtWDW+//TZEgQtqb9iwASaTCU8++SQGDBiAr776CpmZmY4F9Zd9+/bh/PnzGDBgAAYMGIA9e/bg999/L1NZROR8TD6IKqjIyEjExsZizZo18rYtW7YgNTUVAwYMsKuM27dv4/bt26hevbpd+wcEBKBv3774448/cPLkSZvHVq1ahUceeQRhYWEYMGAA0tPT8c0339gfUIGy6tevj/bt26N3797Q6/U2cRKRezH5IKrABg0ahK+//homkwlA7pf2ww8/jPDw8CL3z8zMxM2bN3Hjxg389NNPePLJJ5GTk4Mnn3zS7jqbN28OADh79qy87fr169i+fbuc9NSpUwexsbFYtWqVwzGZzWasX79eLkun0+Fvf/tbmcoiItdg8kFUgT311FMwmUz49ttvkZ6ejm+//bbEIZfPP/8cISEhCA0NRUxMDPbt24dx48Zh7NixdtcZEBAAIHciap61a9fCz88P/fr1k7cNHDgQW7Zswe3btx2KacuWLbh16xYGDhxoU9axY8fw66+/OlQWEbkGz3YhqsBCQkIQHx+P1atXw2g0IicnB0888USx+/fp0wejRo2CJEkIDAxEs2bNULlyZYfqzMjIAAAEBgbK21auXIkOHTrg1q1buHXrFgAgOjoa2dnZWL9+PV544QW7y1+5ciWioqKg1WqRkpICAKhfvz70ej1WrVqFOXPmONReInI+Jh9EFdygQYMwfPhwXL16Fd27d0eVKlWK3bd27dry6a9ldeLECQBAgwYNAABnzpzBoUOHAAANGzYstP+qVavsTj7S0tLwzTffIDMzs8iyVq9ejbfffhuSJJW1+UTkBEw+iCq4vn374sUXX8SBAwfwr3/9y6V1ZWRkYMOGDYiIiJDX51i1ahXUajW+/PJLqFQqm/337t2LDz74ABcvXkSdOnVKLT/vDJmlS5ciODjY5rHk5GRMmzYN+/btK7S2CREpi8kHUQUXEBCApUuX4vz58+jdu7fL6jGZTHjmmWfw559/Ys6cOXLvw6pVq/Dggw+if//+hZ4TGxuLDz74AGvWrMHkyZNLrWPlypWoV68eRowYUeixrKwszJs3D6tWrWLyQeRmTD6ICEOGDHFqeX/88QdWrlwJILe34+TJk1i/fj2uXr2K8ePH48UXXwQAHDx4ECkpKRg1alSR5dSqVQtt2rTBqlWrSk0+Ll++jF27dmHMmDFFPq7VapGQkID169fjgw8+gFqtLkeERFQePNuFiJwuKSkJzzzzDAYPHozJkydj586d6N27Nw4ePIh3331X3i/v9NeSelx69+6NX375BcePHy+xzrVr18JqtZZa1q1bt7BlyxYHIyIi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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def C_corr(C, nx, psi):\n", + " j = slice(0, nx-1)\n", + " return (abs(C[j]) - C[j]**2) * (psi[j+one] - psi[j]) / (psi[j+one] + psi[j])\n", + "\n", + "psi_mpdata = psi_0(x)\n", + "for _ in range(nt):\n", + " psi_mpdata[i] = upwind(psi_mpdata, i, C_phys)\n", + " psi_mpdata[i] = upwind(psi_mpdata, i, C_corr(C_phys, nx, psi_mpdata))\n", + " \n", + "plot(psi_mpdata, \"MPDATA\")" + ] + }, + { + "cell_type": "markdown", + "id": "75deb3ac-eca1-4343-b0bf-4dcda047f959", + "metadata": {}, + "source": [ + "**5. homework: convergence analysis for upwind vs. MPDATA (e.g., plot log(error) vs. log(dx))** " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "62950f65-c14d-435d-a7db-14d888470daa", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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bGyMGzduiHNw7OzUP+VB27HIUaeanYCaHTOvokp4njkHp2KTYhvBISIi7VenTh24ubmhdOnSH/2DkLJjkaNucj3AubnUURARkZZITEzEunXr8PXXX0Mul0NfXx///vsvypQpUyLuN1WUWOQQERFpiIyMDDRs2BDXr1+HsbExhgwZAiDzNjiUf5ytREREpCH09PQwaNAgVKxYscTeiqEoscghIiKSiCAI2Lx5s7i4KgCMHj0aERER8PX1lTAy3cAih4iISCLbtm3DwIEDMWzYMPF2DHp6ejAzM5M4Mt3AIoeIiEgirVu3RtmyZeHr68t7TqkBJx4TEREVkytXriA8PBz+/v4AMte6uXPnDkqXLi1xZLqJRQ4REVExuHLlCurWrQs9PT00atQIlStXBgCemlIjFjlERETFwMPDA23atIG5uTksLS2lDqdE4JwcIiIiNXj79i2mTZuGtLQ0AIBMJsOePXuwc+dO8dYMpF4sckjrREdHw9vbG66urvDw8MDOnTulDomISIUgCGjZsiVmzZqF+fPni+0mJiYSRlXysMghraOvr4/FixcjMjISwcHBGDNmDBITE6UOi4hIJJPJEBgYiBo1asDb21vqcEosFjmkEby9vTFmzJg89XVwcICXlxcAwN7eHtbW1njz5o36giMi+gSlUolly5bhzJkzYlufPn1w5coVNGvWTMLISjYWOaTVLl68iIyMDDg5OUkdChGVYEFBQRg1ahQGDx6M1NRUAJmjOYaGhhJHVrJpbZETFBSE+vXrw9zcHLa2tujSpQtu3boldVhaKWtSXF7bNcWbN28wYMAArFy5UupQiKiE++qrr1ClShWMHDkSBgYGUodD/0dri5zQ0FCMHDkSZ86cweHDh6FQKODr68u5GcgcNg0KCoKzszNMTEzg6emJXbt2iY97e3tj1KhRGDNmDKytreHn5/fR9qKWmJiIAQMGwMzMDA4ODli0aJHK4y9fvoS9vT1+/PFHse3UqVMwNDTEkSNHAACpqano0qULAgMD0aRJE7XESUSUm7CwMJUJxWXLlsXNmzfx9ddfQy7X2l+tOkdr18k5dOiQyvb69etha2uLixcvokWLFmp73awiytTUFDKZDEDmiIdCoYC+vj6MjIxU+srlcpiYmIjf9AqFAmlpadDT04OxsXG2/X7YtyB/EQQFBeGPP/7AihUrUK1aNRw/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "psi_analytic = psi_0(x - u * t_max)\n", + "\n", + "def rmse(expected, actual):\n", + " return np.sqrt(np.mean(np.square(expected - actual)))\n", + "\n", + "pyplot.scatter([np.log2(dx)], [np.log2(rmse(psi_analytic, psi_upwind))], label='upwind')\n", + "pyplot.scatter([np.log2(dx)], [np.log2(rmse(psi_analytic, psi_mpdata))], label='MPDATA')\n", + "\n", + "ln2dxs = np.asarray([1,2,3]) # TODO!\n", + "for k in (2, 3):\n", + " pyplot.plot(ln2dxs, k * ln2dxs - 6, label=f'err ~ dx$^{k}$', color='black', linestyle=':')\n", + "\n", + "pyplot.legend()\n", + "pyplot.xlabel('$log_2(dx)$')\n", + "pyplot.ylabel('$log_2(err)$')\n", + "pyplot.annotate(\"?\", (2.6, .2), size=24) # TODO!\n", + "pyplot.grid()" + ] + }, + { + "cell_type": "markdown", + "id": "defc722c-31a5-48f7-b16e-b71a9a0bf9cd", + "metadata": {}, + "source": [ + "**6. PyMPDATA: open Pythonic & high-performance implementation of MPDATA developed @AGH** \n", + "* https://github.com/open-atmos/PyMPDATA \n", + "* https://github.com/open-atmos/PyMPDATA-MPI " + ] + }, + { + "cell_type": "markdown", + "id": "45f32b14-055a-46b9-8742-4b83f04c739a", + "metadata": {}, + "source": [ + "Eng. and MSc. projects available! \n", + "* https://apd.usos.agh.edu.pl/my-apd/topics/show/12756 \n", + "* https://apd.usos.agh.edu.pl/my-apd/topics/show/12755 \n", + "* https://apd.usos.agh.edu.pl/my-apd/topics/show/12754 \n", + "* https://apd.usos.agh.edu.pl/my-apd/topics/show/10982 " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}