From 0fc18c8f8c73f6cc5ea7479f8bdf695cbe65bebe Mon Sep 17 00:00:00 2001 From: pawel Date: Mon, 7 Oct 2024 01:19:43 +0200 Subject: [PATCH 1/8] added a brief introduction to the problem, ran the notebook --- .../advection-diffusion-2d.ipynb | 920 +++++++++++++++++- 1 file changed, 875 insertions(+), 45 deletions(-) diff --git a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb index fbc5cf35..775e14fd 100644 --- a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb +++ b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "e333839d", - "metadata": {}, + "metadata": { + "id": "e333839d" + }, "source": [ "[![View notebook](https://img.shields.io/static/v1?label=render%20on&logo=github&color=87ce3e&message=GitHub)](https://github.com/open-atmos/PyMPDATA/blob/main/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb)\n", "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PyMPDATA.git/main?urlpath=lab/tree/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb)\n", @@ -11,37 +13,65 @@ ] }, { - "cell_type": "code", - "id": "e333666d", - "execution_count": null, + "metadata": {}, + "cell_type": "markdown", + "source": [ + "This notebook is a short example of solving the advection-diffusion equation in 2D using PyMPDATA.\n", + "\n", + "The initial condition is given by the following formula:\n", + "$$\n", + "z(x, y, t) = \\sin(\\omega(x - u_x t + y - u_y t)) \\exp(-2 \\mu t \\omega^2) + 1\n", + "$$\n", + "After the simulation, the final condition is compared with the analytical solution at $t = nt*dt$.\n", + "At the end a gif animation is created showing the evolution of the solution." + ], + "id": "cbf5150bc68107de" + }, + { "metadata": { - "pycharm": { - "name": "#%%\n" + "ExecuteTime": { + "end_time": "2024-10-06T23:11:26.258690Z", + "start_time": "2024-10-06T23:11:26.253715Z" } }, - "outputs": [], + "cell_type": "code", "source": [ "import sys\n", "if 'google.colab' in sys.modules:\n", " !pip --quiet install open-atmos-jupyter-utils\n", " from open_atmos_jupyter_utils import pip_install_on_colab\n", " pip_install_on_colab('PyMPDATA-examples')" - ] + ], + "id": "e333666d", + "outputs": [], + "execution_count": 1 }, { "cell_type": "code", "id": "43d2893d-f472-43ac-ad5b-bf342a3783b9", - "metadata": {}, + "metadata": { + "id": "43d2893d-f472-43ac-ad5b-bf342a3783b9", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:26.863898Z", + "start_time": "2024-10-06T23:11:26.259697Z" + } + }, "source": [ "from open_atmos_jupyter_utils import show_plot" ], "outputs": [], - "execution_count": null + "execution_count": 2 }, { "cell_type": "code", "id": "9aaadc4a5234804a", - "metadata": {}, + "metadata": { + "id": "9aaadc4a5234804a", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:27.160564Z", + "start_time": "2024-10-06T23:11:26.864904Z" + } + }, "source": [ "import os\n", "import numpy as np\n", @@ -53,12 +83,18 @@ "from PyMPDATA.boundary_conditions import Periodic" ], "outputs": [], - "execution_count": null + "execution_count": 3 }, { "cell_type": "code", "id": "a563a769a256feba", - "metadata": {}, + "metadata": { + "id": "a563a769a256feba", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:27.164785Z", + "start_time": "2024-10-06T23:11:27.160564Z" + } + }, "source": [ "mu = 0.0005 # diffusion coefficient\n", "dt = 0.025\n", @@ -80,34 +116,52 @@ "Cy = uy * dt / dy" ], "outputs": [], - "execution_count": null + "execution_count": 4 }, { "cell_type": "code", "id": "9a0f60b51e32ce3e", - "metadata": {}, + "metadata": { + "id": "9a0f60b51e32ce3e", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:27.175714Z", + "start_time": "2024-10-06T23:11:27.166800Z" + } + }, "source": [ "opt = Options(n_iters=3, non_zero_mu_coeff=True)\n", "boundary_conditions = (Periodic(), Periodic())" ], "outputs": [], - "execution_count": null + "execution_count": 5 }, { "cell_type": "code", "id": "cab790be5c425ea5", - "metadata": {}, + "metadata": { + "id": "cab790be5c425ea5", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:27.183911Z", + "start_time": "2024-10-06T23:11:27.176708Z" + } + }, "source": [ "def analytic_solution(x, y, t):\n", " return np.sin(omega*(x-ux*t+y-uy*t))*np.exp(-2*mu*t*omega**2) + 1" ], "outputs": [], - "execution_count": null + "execution_count": 6 }, { "cell_type": "code", "id": "b454a74473b8f900", - "metadata": {}, + "metadata": { + "id": "b454a74473b8f900", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:27.196754Z", + "start_time": "2024-10-06T23:11:27.184906Z" + } + }, "source": [ "def z(t):\n", " return np.array(\n", @@ -121,12 +175,18 @@ "advectee = ScalarField(data=z(t=0), halo=opt.n_halo, boundary_conditions=boundary_conditions)" ], "outputs": [], - "execution_count": null + "execution_count": 7 }, { "cell_type": "code", "id": "fb28f958a4920cd", - "metadata": {}, + "metadata": { + "id": "fb28f958a4920cd", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:27.205460Z", + "start_time": "2024-10-06T23:11:27.197758Z" + } + }, "source": [ "field_x = np.full((nx+1, ny), Cx, dtype=opt.dtype)\n", "field_y = np.full((nx, ny+1), Cy, dtype=opt.dtype)\n", @@ -138,34 +198,67 @@ ")" ], "outputs": [], - "execution_count": null + "execution_count": 8 }, { "cell_type": "code", "id": "45c8ea60d8490cd4", - "metadata": {}, + "metadata": { + "id": "45c8ea60d8490cd4", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:27.793980Z", + "start_time": "2024-10-06T23:11:27.206463Z" + } + }, "source": [ "stepper = Stepper(options=opt, n_dims=2)\n", "solver = Solver(stepper=stepper, advector=advector, advectee=advectee)" ], "outputs": [], - "execution_count": null + "execution_count": 9 }, { "cell_type": "code", "id": "bd4722c47297508c", - "metadata": {}, + "metadata": { + "id": "bd4722c47297508c", + "ExecuteTime": { + "end_time": "2024-10-06T23:11:27.798983Z", + "start_time": "2024-10-06T23:11:27.793980Z" + } + }, "source": [ "vmin = np.min(solver.advectee.get())\n", "vmax = np.max(solver.advectee.get())" ], "outputs": [], - "execution_count": null + "execution_count": 10 }, { "cell_type": "code", "id": "d7a5cd43651621e6", - "metadata": {}, + "metadata": { + "id": "d7a5cd43651621e6", + "outputId": "dcf9d10e-7f93-4491-8c26-a24e322eb4ee", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 536, + "referenced_widgets": [ + "b9d1816d5a654d6ebe8ae2e16d208a19", + "e663abfe8286438eb9167e754bd34acf", + "d8192599570541fdb63ee75a58ed85bd", + "836e153bf47940cdaeec16935e1446c7", + "3728933c94ef4d52a7550178efb974c0", + "af3810389cc94bf7a6acd1959ebd9589", + "6c73b2ac6e234f9fb3417c68fa6ddf27", + "7beb942afc804d6fb76cf4857c273eed" + ] + }, + "ExecuteTime": { + "end_time": "2024-10-06T23:11:28.131045Z", + "start_time": "2024-10-06T23:11:27.799983Z" + } + }, "source": [ "plt.figure(figsize=(6, 6))\n", "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", @@ -175,13 +268,54 @@ "plt.title('Initial condition')\n", "show_plot(\"fig_1\")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ], + "image/svg+xml": "\n\n\n \n \n \n \n 2024-10-07T01:11:28.082121\n image/svg+xml\n \n \n Matplotlib v3.9.1, https://matplotlib.org/\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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "HTML(value=\".\\\\fig_1
\")" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "31882c4c3d1645349d21566edefb13b4" + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 11 }, { "cell_type": "code", "id": "2b279996b00be430", - "metadata": {}, + "metadata": { + "id": "2b279996b00be430", + "outputId": "9b04d6f4-e170-42bc-f79b-18114f7c4164", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 69, + "referenced_widgets": [ + "fe1fa30d40ef469a8260c49eeec4f550", + "96e4e27500f74f5486ba2a6b5a9922fd", + "7a868cee328b47b9813059a82ecd8eba" + ] + }, + "ExecuteTime": { + "end_time": "2024-10-06T23:12:06.444773Z", + "start_time": "2024-10-06T23:11:28.132050Z" + } + }, "source": [ "progbar = FloatProgress(value=0, min=0, max=1)\n", "display(progbar)\n", @@ -192,13 +326,49 @@ " states_history.append(solver.advectee.get().copy())\n", " progbar.value = (i + 1.) / (nt//10)" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "FloatProgress(value=0.0, max=1.0)" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "67310f218f274c52825c4d22d0285f25" + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 12 }, { "cell_type": "code", "id": "2576fcdbfa20c032", - "metadata": {}, + "metadata": { + "id": "2576fcdbfa20c032", + "outputId": "d47a4681-9734-4553-d424-3830b5549d6d", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 536, + "referenced_widgets": [ + "cb7153eb86dc4f4baf5cfe40af365cda", + "fe07e1102b83432b8238b6a1505f1138", + "ec52cd6ae6ad473e954a73b9666dbc38", + "4a39ac354eec4bd6a627387e20ac0941", + "7854a682f7dd419fab0ed63b87a86267", + "cd26d032280247b68c6c54026a15d9e1", + "91c4794be5304716a57802b89fe0ae77", + "62f53d9eb0e04b358ea043a7969e23dc" + ] + }, + "ExecuteTime": { + "end_time": "2024-10-06T23:12:06.734529Z", + "start_time": "2024-10-06T23:12:06.445769Z" + } + }, "source": [ "plt.figure(figsize=(6, 6))\n", "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", @@ -208,23 +378,60 @@ "plt.title('Final condition')\n", "show_plot(\"fig_2\")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ], + "image/svg+xml": "\n\n\n \n \n \n \n 2024-10-07T01:12:06.687839\n image/svg+xml\n \n \n Matplotlib v3.9.1, https://matplotlib.org/\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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "HTML(value=\".\\\\fig_2
\")" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "8e4bc8f3e67e48798fae7b6880d6f4cf" + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": 13 }, { "cell_type": "code", "id": "556684f5a2e2483d", - "metadata": {}, + "metadata": { + "id": "556684f5a2e2483d", + "ExecuteTime": { + "end_time": "2024-10-06T23:12:06.742991Z", + "start_time": "2024-10-06T23:12:06.735522Z" + } + }, "source": [ "assert np.allclose(solver.advectee.get(), z(t=nt*dt), atol=0.25)" ], "outputs": [], - "execution_count": null + "execution_count": 14 }, { "cell_type": "code", "id": "cc07e0075e5b9857", - "metadata": {}, + "metadata": { + "id": "cc07e0075e5b9857", + "ExecuteTime": { + "end_time": "2024-10-06T23:12:08.808974Z", + "start_time": "2024-10-06T23:12:06.743987Z" + } + }, "source": [ "os.makedirs(\"animation\", exist_ok=True)\n", "for i, state in enumerate(states_history):\n", @@ -237,12 +444,18 @@ " plt.close()" ], "outputs": [], - "execution_count": null + "execution_count": 15 }, { "cell_type": "code", "id": "1888a38e39bf2395", - "metadata": {}, + "metadata": { + "id": "1888a38e39bf2395", + "ExecuteTime": { + "end_time": "2024-10-06T23:12:08.813996Z", + "start_time": "2024-10-06T23:12:08.809978Z" + } + }, "source": [ "def merge_images_into_gif(image_folder, gif_name, duration=0.01):\n", " with imageio.get_writer(gif_name, mode='I', duration=duration) as writer:\n", @@ -251,25 +464,37 @@ " writer.append_data(image)" ], "outputs": [], - "execution_count": null + "execution_count": 16 }, { "cell_type": "code", "id": "52bc22d60805baa6", - "metadata": {}, + "metadata": { + "id": "52bc22d60805baa6", + "ExecuteTime": { + "end_time": "2024-10-06T23:12:09.469939Z", + "start_time": "2024-10-06T23:12:08.815506Z" + } + }, "source": [ "merge_images_into_gif(\"animation\", \"advection_diffusion.gif\", duration=0.01)" ], "outputs": [], - "execution_count": null + "execution_count": 17 }, { "cell_type": "code", "id": "5403105d000206da", - "metadata": {}, + "metadata": { + "id": "5403105d000206da", + "ExecuteTime": { + "end_time": "2024-10-06T23:12:09.473264Z", + "start_time": "2024-10-06T23:12:09.470928Z" + } + }, "source": [], "outputs": [], - "execution_count": null + "execution_count": 17 } ], "metadata": { @@ -289,6 +514,611 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" + }, + "colab": { + "provenance": [] + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "b9d1816d5a654d6ebe8ae2e16d208a19": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e663abfe8286438eb9167e754bd34acf", + "IPY_MODEL_d8192599570541fdb63ee75a58ed85bd" + ], + "layout": "IPY_MODEL_836e153bf47940cdaeec16935e1446c7" + } + }, + "e663abfe8286438eb9167e754bd34acf": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "fig_1.pdf", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_3728933c94ef4d52a7550178efb974c0", + "style": "IPY_MODEL_af3810389cc94bf7a6acd1959ebd9589", + "tooltip": "" + } + }, + "d8192599570541fdb63ee75a58ed85bd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "fig_1.svg", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_6c73b2ac6e234f9fb3417c68fa6ddf27", + "style": "IPY_MODEL_7beb942afc804d6fb76cf4857c273eed", + "tooltip": "" + } + }, + "836e153bf47940cdaeec16935e1446c7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3728933c94ef4d52a7550178efb974c0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "af3810389cc94bf7a6acd1959ebd9589": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "6c73b2ac6e234f9fb3417c68fa6ddf27": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7beb942afc804d6fb76cf4857c273eed": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "fe1fa30d40ef469a8260c49eeec4f550": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_96e4e27500f74f5486ba2a6b5a9922fd", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7a868cee328b47b9813059a82ecd8eba", + "value": 1 + } + }, + "96e4e27500f74f5486ba2a6b5a9922fd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7a868cee328b47b9813059a82ecd8eba": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "cb7153eb86dc4f4baf5cfe40af365cda": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_fe07e1102b83432b8238b6a1505f1138", + "IPY_MODEL_ec52cd6ae6ad473e954a73b9666dbc38" + ], + "layout": "IPY_MODEL_4a39ac354eec4bd6a627387e20ac0941" + } + }, + "fe07e1102b83432b8238b6a1505f1138": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "fig_2.pdf", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_7854a682f7dd419fab0ed63b87a86267", + "style": "IPY_MODEL_cd26d032280247b68c6c54026a15d9e1", + "tooltip": "" + } + }, + "ec52cd6ae6ad473e954a73b9666dbc38": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "fig_2.svg", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_91c4794be5304716a57802b89fe0ae77", + "style": "IPY_MODEL_62f53d9eb0e04b358ea043a7969e23dc", + "tooltip": "" + } + }, + "4a39ac354eec4bd6a627387e20ac0941": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7854a682f7dd419fab0ed63b87a86267": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cd26d032280247b68c6c54026a15d9e1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "91c4794be5304716a57802b89fe0ae77": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "62f53d9eb0e04b358ea043a7969e23dc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ButtonStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + } + } } }, "nbformat": 4, From 8c3510b6cdc725f6b81a67ec435451ff2e18e6bd Mon Sep 17 00:00:00 2001 From: pawel Date: Thu, 10 Oct 2024 20:31:18 +0200 Subject: [PATCH 2/8] add a link to analytical solution derivation --- .../advection-diffusion-2d.ipynb | 85 ++++++++++--------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb index 775e14fd..d2b9798d 100644 --- a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb +++ b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb @@ -18,10 +18,11 @@ "source": [ "This notebook is a short example of solving the advection-diffusion equation in 2D using PyMPDATA.\n", "\n", - "The initial condition is given by the following formula:\n", + "The initial condition is given by the following analytical formula at $t = 0$:\n", "$$\n", "z(x, y, t) = \\sin(\\omega(x - u_x t + y - u_y t)) \\exp(-2 \\mu t \\omega^2) + 1\n", "$$\n", + "The analytical solution can be derived from [here](https://rsmith.math.ncsu.edu/MA573_F17/Anal_Tech_Adv_Diff.pdf).\n", "After the simulation, the final condition is compared with the analytical solution at $t = nt*dt$.\n", "At the end a gif animation is created showing the evolution of the solution." ], @@ -30,8 +31,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2024-10-06T23:11:26.258690Z", - "start_time": "2024-10-06T23:11:26.253715Z" + "end_time": "2024-10-10T18:30:07.160534Z", + "start_time": "2024-10-10T18:30:07.154497Z" } }, "cell_type": "code", @@ -52,8 +53,8 @@ "metadata": { "id": "43d2893d-f472-43ac-ad5b-bf342a3783b9", "ExecuteTime": { - "end_time": "2024-10-06T23:11:26.863898Z", - "start_time": "2024-10-06T23:11:26.259697Z" + "end_time": "2024-10-10T18:30:08.508979Z", + "start_time": "2024-10-10T18:30:07.162539Z" } }, "source": [ @@ -68,8 +69,8 @@ "metadata": { "id": "9aaadc4a5234804a", "ExecuteTime": { - "end_time": "2024-10-06T23:11:27.160564Z", - "start_time": "2024-10-06T23:11:26.864904Z" + "end_time": "2024-10-10T18:30:09.426364Z", + "start_time": "2024-10-10T18:30:08.508979Z" } }, "source": [ @@ -91,8 +92,8 @@ "metadata": { "id": "a563a769a256feba", "ExecuteTime": { - "end_time": "2024-10-06T23:11:27.164785Z", - "start_time": "2024-10-06T23:11:27.160564Z" + "end_time": "2024-10-10T18:30:09.432980Z", + "start_time": "2024-10-10T18:30:09.427370Z" } }, "source": [ @@ -124,8 +125,8 @@ "metadata": { "id": "9a0f60b51e32ce3e", "ExecuteTime": { - "end_time": "2024-10-06T23:11:27.175714Z", - "start_time": "2024-10-06T23:11:27.166800Z" + "end_time": "2024-10-10T18:30:09.442790Z", + "start_time": "2024-10-10T18:30:09.433984Z" } }, "source": [ @@ -141,8 +142,8 @@ "metadata": { "id": "cab790be5c425ea5", "ExecuteTime": { - "end_time": "2024-10-06T23:11:27.183911Z", - "start_time": "2024-10-06T23:11:27.176708Z" + "end_time": "2024-10-10T18:30:09.451908Z", + "start_time": "2024-10-10T18:30:09.443796Z" } }, "source": [ @@ -158,8 +159,8 @@ "metadata": { "id": "b454a74473b8f900", "ExecuteTime": { - "end_time": "2024-10-06T23:11:27.196754Z", - "start_time": "2024-10-06T23:11:27.184906Z" + "end_time": "2024-10-10T18:30:09.464508Z", + "start_time": "2024-10-10T18:30:09.452917Z" } }, "source": [ @@ -183,8 +184,8 @@ "metadata": { "id": "fb28f958a4920cd", "ExecuteTime": { - "end_time": "2024-10-06T23:11:27.205460Z", - "start_time": "2024-10-06T23:11:27.197758Z" + "end_time": "2024-10-10T18:30:09.474302Z", + "start_time": "2024-10-10T18:30:09.465513Z" } }, "source": [ @@ -206,8 +207,8 @@ "metadata": { "id": "45c8ea60d8490cd4", "ExecuteTime": { - "end_time": "2024-10-06T23:11:27.793980Z", - "start_time": "2024-10-06T23:11:27.206463Z" + "end_time": "2024-10-10T18:30:10.886354Z", + "start_time": "2024-10-10T18:30:09.476309Z" } }, "source": [ @@ -223,8 +224,8 @@ "metadata": { "id": "bd4722c47297508c", "ExecuteTime": { - "end_time": "2024-10-06T23:11:27.798983Z", - "start_time": "2024-10-06T23:11:27.793980Z" + "end_time": "2024-10-10T18:30:10.890517Z", + "start_time": "2024-10-10T18:30:10.886354Z" } }, "source": [ @@ -255,8 +256,8 @@ ] }, "ExecuteTime": { - "end_time": "2024-10-06T23:11:28.131045Z", - "start_time": "2024-10-06T23:11:27.799983Z" + "end_time": "2024-10-10T18:30:11.275924Z", + "start_time": "2024-10-10T18:30:10.891521Z" } }, "source": [ @@ -274,7 +275,7 @@ "text/plain": [ "
" ], - "image/svg+xml": "\n\n\n \n \n \n \n 2024-10-07T01:11:28.082121\n image/svg+xml\n \n \n Matplotlib v3.9.1, https://matplotlib.org/\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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + "image/svg+xml": "\n\n\n \n \n \n \n 2024-10-10T20:30:11.223039\n image/svg+xml\n \n \n Matplotlib v3.9.1, https://matplotlib.org/\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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" }, "metadata": {}, "output_type": "display_data" @@ -287,7 +288,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "31882c4c3d1645349d21566edefb13b4" + "model_id": "ad81afe36d184f1b91fe6131c2cee136" } }, "metadata": {}, @@ -312,8 +313,8 @@ ] }, "ExecuteTime": { - "end_time": "2024-10-06T23:12:06.444773Z", - "start_time": "2024-10-06T23:11:28.132050Z" + "end_time": "2024-10-10T18:30:49.915008Z", + "start_time": "2024-10-10T18:30:11.276920Z" } }, "source": [ @@ -335,7 +336,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "67310f218f274c52825c4d22d0285f25" + "model_id": "4886ddfc54094805b97a6993a7ffffb2" } }, "metadata": {}, @@ -365,8 +366,8 @@ ] }, "ExecuteTime": { - "end_time": "2024-10-06T23:12:06.734529Z", - "start_time": "2024-10-06T23:12:06.445769Z" + "end_time": "2024-10-10T18:30:50.206389Z", + "start_time": "2024-10-10T18:30:49.916003Z" } }, "source": [ @@ -384,7 +385,7 @@ "text/plain": [ "
" ], - "image/svg+xml": "\n\n\n \n \n \n \n 2024-10-07T01:12:06.687839\n image/svg+xml\n \n \n Matplotlib v3.9.1, https://matplotlib.org/\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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + "image/svg+xml": "\n\n\n \n \n \n \n 2024-10-10T20:30:50.159360\n image/svg+xml\n \n \n Matplotlib v3.9.1, https://matplotlib.org/\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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" }, "metadata": {}, "output_type": "display_data" @@ -397,7 +398,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "8e4bc8f3e67e48798fae7b6880d6f4cf" + "model_id": "16990cc42b1d4ea3ad7aad8ace4d765c" } }, "metadata": {}, @@ -412,8 +413,8 @@ "metadata": { "id": "556684f5a2e2483d", "ExecuteTime": { - "end_time": "2024-10-06T23:12:06.742991Z", - "start_time": "2024-10-06T23:12:06.735522Z" + "end_time": "2024-10-10T18:30:50.213674Z", + "start_time": "2024-10-10T18:30:50.207377Z" } }, "source": [ @@ -428,8 +429,8 @@ "metadata": { "id": "cc07e0075e5b9857", "ExecuteTime": { - "end_time": "2024-10-06T23:12:08.808974Z", - "start_time": "2024-10-06T23:12:06.743987Z" + "end_time": "2024-10-10T18:30:52.377040Z", + "start_time": "2024-10-10T18:30:50.214687Z" } }, "source": [ @@ -452,8 +453,8 @@ "metadata": { "id": "1888a38e39bf2395", "ExecuteTime": { - "end_time": "2024-10-06T23:12:08.813996Z", - "start_time": "2024-10-06T23:12:08.809978Z" + "end_time": "2024-10-10T18:30:52.381500Z", + "start_time": "2024-10-10T18:30:52.378029Z" } }, "source": [ @@ -472,8 +473,8 @@ "metadata": { "id": "52bc22d60805baa6", "ExecuteTime": { - "end_time": "2024-10-06T23:12:09.469939Z", - "start_time": "2024-10-06T23:12:08.815506Z" + "end_time": "2024-10-10T18:30:53.093920Z", + "start_time": "2024-10-10T18:30:52.382495Z" } }, "source": [ @@ -488,8 +489,8 @@ "metadata": { "id": "5403105d000206da", "ExecuteTime": { - "end_time": "2024-10-06T23:12:09.473264Z", - "start_time": "2024-10-06T23:12:09.470928Z" + "end_time": "2024-10-10T18:30:53.097687Z", + "start_time": "2024-10-10T18:30:53.094915Z" } }, "source": [], From 84839bc5ab4d738b83c8cfd76416949c9d401529 Mon Sep 17 00:00:00 2001 From: pawel Date: Tue, 15 Oct 2024 13:43:08 +0200 Subject: [PATCH 3/8] rerun notebook in web --- .../advection-diffusion-2d.ipynb | 2328 ++++++++++++++--- 1 file changed, 1976 insertions(+), 352 deletions(-) diff --git a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb index d2b9798d..9bd1cea3 100644 --- a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb +++ b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb @@ -13,8 +13,9 @@ ] }, { - "metadata": {}, "cell_type": "markdown", + "id": "cbf5150bc68107de", + "metadata": {}, "source": [ "This notebook is a short example of solving the advection-diffusion equation in 2D using PyMPDATA.\n", "\n", @@ -25,54 +26,55 @@ "The analytical solution can be derived from [here](https://rsmith.math.ncsu.edu/MA573_F17/Anal_Tech_Adv_Diff.pdf).\n", "After the simulation, the final condition is compared with the analytical solution at $t = nt*dt$.\n", "At the end a gif animation is created showing the evolution of the solution." - ], - "id": "cbf5150bc68107de" + ] }, { + "cell_type": "code", + "execution_count": 1, + "id": "e333666d", "metadata": { "ExecuteTime": { "end_time": "2024-10-10T18:30:07.160534Z", "start_time": "2024-10-10T18:30:07.154497Z" } }, - "cell_type": "code", + "outputs": [], "source": [ "import sys\n", "if 'google.colab' in sys.modules:\n", " !pip --quiet install open-atmos-jupyter-utils\n", " from open_atmos_jupyter_utils import pip_install_on_colab\n", " pip_install_on_colab('PyMPDATA-examples')" - ], - "id": "e333666d", - "outputs": [], - "execution_count": 1 + ] }, { "cell_type": "code", + "execution_count": 2, "id": "43d2893d-f472-43ac-ad5b-bf342a3783b9", "metadata": { - "id": "43d2893d-f472-43ac-ad5b-bf342a3783b9", "ExecuteTime": { "end_time": "2024-10-10T18:30:08.508979Z", "start_time": "2024-10-10T18:30:07.162539Z" - } + }, + "id": "43d2893d-f472-43ac-ad5b-bf342a3783b9" }, + "outputs": [], "source": [ "from open_atmos_jupyter_utils import show_plot" - ], - "outputs": [], - "execution_count": 2 + ] }, { "cell_type": "code", + "execution_count": 3, "id": "9aaadc4a5234804a", "metadata": { - "id": "9aaadc4a5234804a", "ExecuteTime": { "end_time": "2024-10-10T18:30:09.426364Z", "start_time": "2024-10-10T18:30:08.508979Z" - } + }, + "id": "9aaadc4a5234804a" }, + "outputs": [], "source": [ "import os\n", "import numpy as np\n", @@ -82,20 +84,20 @@ "import matplotlib.pyplot as plt\n", "from PyMPDATA import Solver, ScalarField, VectorField, Stepper, Options\n", "from PyMPDATA.boundary_conditions import Periodic" - ], - "outputs": [], - "execution_count": 3 + ] }, { "cell_type": "code", + "execution_count": 4, "id": "a563a769a256feba", "metadata": { - "id": "a563a769a256feba", "ExecuteTime": { "end_time": "2024-10-10T18:30:09.432980Z", "start_time": "2024-10-10T18:30:09.427370Z" - } + }, + "id": "a563a769a256feba" }, + "outputs": [], "source": [ "mu = 0.0005 # diffusion coefficient\n", "dt = 0.025\n", @@ -115,54 +117,54 @@ "dy = (max_y - min_y) / ny\n", "Cx = ux * dt / dx\n", "Cy = uy * dt / dy" - ], - "outputs": [], - "execution_count": 4 + ] }, { "cell_type": "code", + "execution_count": 5, "id": "9a0f60b51e32ce3e", "metadata": { - "id": "9a0f60b51e32ce3e", "ExecuteTime": { "end_time": "2024-10-10T18:30:09.442790Z", "start_time": "2024-10-10T18:30:09.433984Z" - } + }, + "id": "9a0f60b51e32ce3e" }, + "outputs": [], "source": [ "opt = Options(n_iters=3, non_zero_mu_coeff=True)\n", "boundary_conditions = (Periodic(), Periodic())" - ], - "outputs": [], - "execution_count": 5 + ] }, { "cell_type": "code", + "execution_count": 6, "id": "cab790be5c425ea5", "metadata": { - "id": "cab790be5c425ea5", "ExecuteTime": { "end_time": "2024-10-10T18:30:09.451908Z", "start_time": "2024-10-10T18:30:09.443796Z" - } + }, + "id": "cab790be5c425ea5" }, + "outputs": [], "source": [ "def analytic_solution(x, y, t):\n", " return np.sin(omega*(x-ux*t+y-uy*t))*np.exp(-2*mu*t*omega**2) + 1" - ], - "outputs": [], - "execution_count": 6 + ] }, { "cell_type": "code", + "execution_count": 7, "id": "b454a74473b8f900", "metadata": { - "id": "b454a74473b8f900", "ExecuteTime": { "end_time": "2024-10-10T18:30:09.464508Z", "start_time": "2024-10-10T18:30:09.452917Z" - } + }, + "id": "b454a74473b8f900" }, + "outputs": [], "source": [ "def z(t):\n", " return np.array(\n", @@ -174,20 +176,20 @@ ").reshape((nx, ny))\n", "\n", "advectee = ScalarField(data=z(t=0), halo=opt.n_halo, boundary_conditions=boundary_conditions)" - ], - "outputs": [], - "execution_count": 7 + ] }, { "cell_type": "code", + "execution_count": 8, "id": "fb28f958a4920cd", "metadata": { - "id": "fb28f958a4920cd", "ExecuteTime": { "end_time": "2024-10-10T18:30:09.474302Z", "start_time": "2024-10-10T18:30:09.465513Z" - } + }, + "id": "fb28f958a4920cd" }, + "outputs": [], "source": [ "field_x = np.full((nx+1, ny), Cx, dtype=opt.dtype)\n", "field_y = np.full((nx, ny+1), Cy, dtype=opt.dtype)\n", @@ -197,50 +199,51 @@ " halo=opt.n_halo,\n", " boundary_conditions=(boundary_conditions[0], Periodic())\n", ")" - ], - "outputs": [], - "execution_count": 8 + ] }, { "cell_type": "code", + "execution_count": 9, "id": "45c8ea60d8490cd4", "metadata": { - "id": "45c8ea60d8490cd4", "ExecuteTime": { "end_time": "2024-10-10T18:30:10.886354Z", "start_time": "2024-10-10T18:30:09.476309Z" - } + }, + "id": "45c8ea60d8490cd4" }, + "outputs": [], "source": [ "stepper = Stepper(options=opt, n_dims=2)\n", "solver = Solver(stepper=stepper, advector=advector, advectee=advectee)" - ], - "outputs": [], - "execution_count": 9 + ] }, { "cell_type": "code", + "execution_count": 10, "id": "bd4722c47297508c", "metadata": { - "id": "bd4722c47297508c", "ExecuteTime": { "end_time": "2024-10-10T18:30:10.890517Z", "start_time": "2024-10-10T18:30:10.886354Z" - } + }, + "id": "bd4722c47297508c" }, + "outputs": [], "source": [ "vmin = np.min(solver.advectee.get())\n", "vmax = np.max(solver.advectee.get())" - ], - "outputs": [], - "execution_count": 10 + ] }, { "cell_type": "code", + "execution_count": 11, "id": "d7a5cd43651621e6", "metadata": { - "id": "d7a5cd43651621e6", - "outputId": "dcf9d10e-7f93-4491-8c26-a24e322eb4ee", + "ExecuteTime": { + "end_time": "2024-10-10T18:30:11.275924Z", + "start_time": "2024-10-10T18:30:10.891521Z" + }, "colab": { "base_uri": "https://localhost:8080/", "height": 536, @@ -255,54 +258,864 @@ "7beb942afc804d6fb76cf4857c273eed" ] }, - "ExecuteTime": { - "end_time": "2024-10-10T18:30:11.275924Z", - "start_time": "2024-10-10T18:30:10.891521Z" - } + "id": "d7a5cd43651621e6", + "outputId": "dcf9d10e-7f93-4491-8c26-a24e322eb4ee" }, - "source": [ - "plt.figure(figsize=(6, 6))\n", - "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", - "plt.colorbar()\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Initial condition')\n", - "show_plot(\"fig_1\")" - ], "outputs": [ { "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2024-10-15T13:41:45.068964\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.9.1, https://matplotlib.org/\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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], "text/plain": [ "
" - ], - "image/svg+xml": "\n\n\n \n \n \n \n 2024-10-10T20:30:11.223039\n image/svg+xml\n \n \n Matplotlib v3.9.1, https://matplotlib.org/\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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + ] }, "metadata": {}, "output_type": "display_data" }, { "data": { - "text/plain": [ - "HTML(value=\".\\\\fig_1
\")" - ], "application/vnd.jupyter.widget-view+json": { + "model_id": "023296ab5b1c4a0dba53189daf469b23", "version_major": 2, - "version_minor": 0, - "model_id": "ad81afe36d184f1b91fe6131c2cee136" - } + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\".\\\\fig_1
\")" + ] }, "metadata": {}, "output_type": "display_data" } ], - "execution_count": 11 + "source": [ + "plt.figure(figsize=(6, 6))\n", + "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", + "plt.colorbar()\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Initial condition')\n", + "show_plot(\"fig_1\")" + ] }, { "cell_type": "code", + "execution_count": 12, "id": "2b279996b00be430", "metadata": { - "id": "2b279996b00be430", - "outputId": "9b04d6f4-e170-42bc-f79b-18114f7c4164", + "ExecuteTime": { + "end_time": "2024-10-10T18:30:49.915008Z", + "start_time": "2024-10-10T18:30:11.276920Z" + }, "colab": { "base_uri": "https://localhost:8080/", "height": 69, @@ -312,45 +1125,45 @@ "7a868cee328b47b9813059a82ecd8eba" ] }, - "ExecuteTime": { - "end_time": "2024-10-10T18:30:49.915008Z", - "start_time": "2024-10-10T18:30:11.276920Z" - } + "id": "2b279996b00be430", + "outputId": "9b04d6f4-e170-42bc-f79b-18114f7c4164" }, - "source": [ - "progbar = FloatProgress(value=0, min=0, max=1)\n", - "display(progbar)\n", - "\n", - "states_history = [solver.advectee.get().copy()]\n", - "for i in range(nt//10):\n", - " solver.advance(n_steps=10, mu_coeff=(mu, mu))\n", - " states_history.append(solver.advectee.get().copy())\n", - " progbar.value = (i + 1.) / (nt//10)" - ], "outputs": [ { "data": { - "text/plain": [ - "FloatProgress(value=0.0, max=1.0)" - ], "application/vnd.jupyter.widget-view+json": { + "model_id": "11d21896d523407f95c0abe272fabd2a", "version_major": 2, - "version_minor": 0, - "model_id": "4886ddfc54094805b97a6993a7ffffb2" - } + "version_minor": 0 + }, + "text/plain": [ + "FloatProgress(value=0.0, max=1.0)" + ] }, "metadata": {}, "output_type": "display_data" } ], - "execution_count": 12 + "source": [ + "progbar = FloatProgress(value=0, min=0, max=1)\n", + "display(progbar)\n", + "\n", + "states_history = [solver.advectee.get().copy()]\n", + "for i in range(nt//10):\n", + " solver.advance(n_steps=10, mu_coeff=(mu, mu))\n", + " states_history.append(solver.advectee.get().copy())\n", + " progbar.value = (i + 1.) / (nt//10)" + ] }, { "cell_type": "code", + "execution_count": 13, "id": "2576fcdbfa20c032", "metadata": { - "id": "2576fcdbfa20c032", - "outputId": "d47a4681-9734-4553-d424-3830b5549d6d", + "ExecuteTime": { + "end_time": "2024-10-10T18:30:50.206389Z", + "start_time": "2024-10-10T18:30:49.916003Z" + }, "colab": { "base_uri": "https://localhost:8080/", "height": 536, @@ -365,74 +1178,887 @@ "62f53d9eb0e04b358ea043a7969e23dc" ] }, - "ExecuteTime": { - "end_time": "2024-10-10T18:30:50.206389Z", - "start_time": "2024-10-10T18:30:49.916003Z" - } + "id": "2576fcdbfa20c032", + "outputId": "d47a4681-9734-4553-d424-3830b5549d6d" }, - "source": [ - "plt.figure(figsize=(6, 6))\n", - "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", - "plt.colorbar()\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Final condition')\n", - "show_plot(\"fig_2\")" - ], "outputs": [ { "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2024-10-15T13:42:28.148081\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.9.1, https://matplotlib.org/\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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], "text/plain": [ "
" - ], - "image/svg+xml": "\n\n\n \n \n \n \n 2024-10-10T20:30:50.159360\n image/svg+xml\n \n \n Matplotlib v3.9.1, https://matplotlib.org/\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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + ] }, "metadata": {}, "output_type": "display_data" }, { "data": { - "text/plain": [ - "HTML(value=\".\\\\fig_2
\")" - ], "application/vnd.jupyter.widget-view+json": { + "model_id": "144963a8dd064932917aaf15c791ca5d", "version_major": 2, - "version_minor": 0, - "model_id": "16990cc42b1d4ea3ad7aad8ace4d765c" - } + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\".\\\\fig_2
\")" + ] }, "metadata": {}, "output_type": "display_data" } ], - "execution_count": 13 + "source": [ + "plt.figure(figsize=(6, 6))\n", + "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", + "plt.colorbar()\n", + "plt.xlabel('x')\n", + "plt.ylabel('y')\n", + "plt.title('Final condition')\n", + "show_plot(\"fig_2\")" + ] }, { "cell_type": "code", + "execution_count": 14, "id": "556684f5a2e2483d", "metadata": { - "id": "556684f5a2e2483d", "ExecuteTime": { "end_time": "2024-10-10T18:30:50.213674Z", "start_time": "2024-10-10T18:30:50.207377Z" - } + }, + "id": "556684f5a2e2483d" }, + "outputs": [], "source": [ "assert np.allclose(solver.advectee.get(), z(t=nt*dt), atol=0.25)" - ], - "outputs": [], - "execution_count": 14 + ] }, { "cell_type": "code", + "execution_count": 15, "id": "cc07e0075e5b9857", "metadata": { - "id": "cc07e0075e5b9857", "ExecuteTime": { "end_time": "2024-10-10T18:30:52.377040Z", "start_time": "2024-10-10T18:30:50.214687Z" - } + }, + "id": "cc07e0075e5b9857" }, + "outputs": [], "source": [ "os.makedirs(\"animation\", exist_ok=True)\n", "for i, state in enumerate(states_history):\n", @@ -443,62 +2069,63 @@ " plt.colorbar()\n", " plt.savefig(f\"animation/frame_{i:03d}.png\")\n", " plt.close()" - ], - "outputs": [], - "execution_count": 15 + ] }, { "cell_type": "code", + "execution_count": 16, "id": "1888a38e39bf2395", "metadata": { - "id": "1888a38e39bf2395", "ExecuteTime": { "end_time": "2024-10-10T18:30:52.381500Z", "start_time": "2024-10-10T18:30:52.378029Z" - } + }, + "id": "1888a38e39bf2395" }, + "outputs": [], "source": [ "def merge_images_into_gif(image_folder, gif_name, duration=0.01):\n", " with imageio.get_writer(gif_name, mode='I', duration=duration) as writer:\n", " for filename in sorted(os.listdir(image_folder)):\n", " image = imageio.v3.imread(os.path.join(image_folder, filename))\n", " writer.append_data(image)" - ], - "outputs": [], - "execution_count": 16 + ] }, { "cell_type": "code", + "execution_count": 17, "id": "52bc22d60805baa6", "metadata": { - "id": "52bc22d60805baa6", "ExecuteTime": { "end_time": "2024-10-10T18:30:53.093920Z", "start_time": "2024-10-10T18:30:52.382495Z" - } + }, + "id": "52bc22d60805baa6" }, + "outputs": [], "source": [ "merge_images_into_gif(\"animation\", \"advection_diffusion.gif\", duration=0.01)" - ], - "outputs": [], - "execution_count": 17 + ] }, { "cell_type": "code", + "execution_count": null, "id": "5403105d000206da", "metadata": { - "id": "5403105d000206da", "ExecuteTime": { "end_time": "2024-10-10T18:30:53.097687Z", "start_time": "2024-10-10T18:30:53.094915Z" - } + }, + "id": "5403105d000206da" }, - "source": [], "outputs": [], - "execution_count": 17 + "source": [] } ], "metadata": { + "colab": { + "provenance": [] + }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", @@ -514,86 +2141,18 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" - }, - "colab": { - "provenance": [] + "version": "3.12.2" }, "widgets": { "application/vnd.jupyter.widget-state+json": { - "b9d1816d5a654d6ebe8ae2e16d208a19": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_e663abfe8286438eb9167e754bd34acf", - "IPY_MODEL_d8192599570541fdb63ee75a58ed85bd" - ], - "layout": "IPY_MODEL_836e153bf47940cdaeec16935e1446c7" - } - }, - "e663abfe8286438eb9167e754bd34acf": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonModel", - "model_module_version": "1.5.0", + "3728933c94ef4d52a7550178efb974c0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ButtonModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ButtonView", - "button_style": "", - "description": "fig_1.pdf", - "disabled": false, - "icon": "", - "layout": "IPY_MODEL_3728933c94ef4d52a7550178efb974c0", - "style": "IPY_MODEL_af3810389cc94bf7a6acd1959ebd9589", - "tooltip": "" - } - }, - "d8192599570541fdb63ee75a58ed85bd": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ButtonModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ButtonView", - "button_style": "", - "description": "fig_1.svg", - "disabled": false, - "icon": "", - "layout": "IPY_MODEL_6c73b2ac6e234f9fb3417c68fa6ddf27", - "style": "IPY_MODEL_7beb942afc804d6fb76cf4857c273eed", - "tooltip": "" - } - }, - "836e153bf47940cdaeec16935e1446c7": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", @@ -638,10 +2197,10 @@ "width": null } }, - "3728933c94ef4d52a7550178efb974c0": { + "4a39ac354eec4bd6a627387e20ac0941": { "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", "model_module_version": "1.2.0", + "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", @@ -690,10 +2249,10 @@ "width": null } }, - "af3810389cc94bf7a6acd1959ebd9589": { + "62f53d9eb0e04b358ea043a7969e23dc": { "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonStyleModel", "model_module_version": "1.5.0", + "model_name": "ButtonStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", @@ -708,8 +2267,8 @@ }, "6c73b2ac6e234f9fb3417c68fa6ddf27": { "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", "model_module_version": "1.2.0", + "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", @@ -758,50 +2317,10 @@ "width": null } }, - "7beb942afc804d6fb76cf4857c273eed": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ButtonStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "button_color": null, - "font_weight": "" - } - }, - "fe1fa30d40ef469a8260c49eeec4f550": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_96e4e27500f74f5486ba2a6b5a9922fd", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_7a868cee328b47b9813059a82ecd8eba", - "value": 1 - } - }, - "96e4e27500f74f5486ba2a6b5a9922fd": { + "7854a682f7dd419fab0ed63b87a86267": { "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", "model_module_version": "1.2.0", + "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", @@ -852,8 +2371,8 @@ }, "7a868cee328b47b9813059a82ecd8eba": { "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", @@ -866,75 +2385,26 @@ "description_width": "" } }, - "cb7153eb86dc4f4baf5cfe40af365cda": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_fe07e1102b83432b8238b6a1505f1138", - "IPY_MODEL_ec52cd6ae6ad473e954a73b9666dbc38" - ], - "layout": "IPY_MODEL_4a39ac354eec4bd6a627387e20ac0941" - } - }, - "fe07e1102b83432b8238b6a1505f1138": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ButtonModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ButtonView", - "button_style": "", - "description": "fig_2.pdf", - "disabled": false, - "icon": "", - "layout": "IPY_MODEL_7854a682f7dd419fab0ed63b87a86267", - "style": "IPY_MODEL_cd26d032280247b68c6c54026a15d9e1", - "tooltip": "" - } - }, - "ec52cd6ae6ad473e954a73b9666dbc38": { + "7beb942afc804d6fb76cf4857c273eed": { "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonModel", "model_module_version": "1.5.0", + "model_name": "ButtonStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "_model_name": "ButtonModel", + "_model_name": "ButtonStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ButtonView", - "button_style": "", - "description": "fig_2.svg", - "disabled": false, - "icon": "", - "layout": "IPY_MODEL_91c4794be5304716a57802b89fe0ae77", - "style": "IPY_MODEL_62f53d9eb0e04b358ea043a7969e23dc", - "tooltip": "" + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" } }, - "4a39ac354eec4bd6a627387e20ac0941": { + "836e153bf47940cdaeec16935e1446c7": { "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", "model_module_version": "1.2.0", + "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", @@ -983,10 +2453,10 @@ "width": null } }, - "7854a682f7dd419fab0ed63b87a86267": { + "91c4794be5304716a57802b89fe0ae77": { "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", "model_module_version": "1.2.0", + "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", @@ -1035,26 +2505,10 @@ "width": null } }, - "cd26d032280247b68c6c54026a15d9e1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ButtonStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ButtonStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "button_color": null, - "font_weight": "" - } - }, - "91c4794be5304716a57802b89fe0ae77": { + "96e4e27500f74f5486ba2a6b5a9922fd": { "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", "model_module_version": "1.2.0", + "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", @@ -1103,10 +2557,68 @@ "width": null } }, - "62f53d9eb0e04b358ea043a7969e23dc": { + "af3810389cc94bf7a6acd1959ebd9589": { "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "button_color": null, + "font_weight": "" + } + }, + "b9d1816d5a654d6ebe8ae2e16d208a19": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e663abfe8286438eb9167e754bd34acf", + "IPY_MODEL_d8192599570541fdb63ee75a58ed85bd" + ], + "layout": "IPY_MODEL_836e153bf47940cdaeec16935e1446c7" + } + }, + "cb7153eb86dc4f4baf5cfe40af365cda": { + "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_fe07e1102b83432b8238b6a1505f1138", + "IPY_MODEL_ec52cd6ae6ad473e954a73b9666dbc38" + ], + "layout": "IPY_MODEL_4a39ac354eec4bd6a627387e20ac0941" + } + }, + "cd26d032280247b68c6c54026a15d9e1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", @@ -1118,6 +2630,118 @@ "button_color": null, "font_weight": "" } + }, + "d8192599570541fdb63ee75a58ed85bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "fig_1.svg", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_6c73b2ac6e234f9fb3417c68fa6ddf27", + "style": "IPY_MODEL_7beb942afc804d6fb76cf4857c273eed", + "tooltip": "" + } + }, + "e663abfe8286438eb9167e754bd34acf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "fig_1.pdf", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_3728933c94ef4d52a7550178efb974c0", + "style": "IPY_MODEL_af3810389cc94bf7a6acd1959ebd9589", + "tooltip": "" + } + }, + "ec52cd6ae6ad473e954a73b9666dbc38": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "fig_2.svg", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_91c4794be5304716a57802b89fe0ae77", + "style": "IPY_MODEL_62f53d9eb0e04b358ea043a7969e23dc", + "tooltip": "" + } + }, + "fe07e1102b83432b8238b6a1505f1138": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ButtonModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ButtonModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ButtonView", + "button_style": "", + "description": "fig_2.pdf", + "disabled": false, + "icon": "", + "layout": "IPY_MODEL_7854a682f7dd419fab0ed63b87a86267", + "style": "IPY_MODEL_cd26d032280247b68c6c54026a15d9e1", + "tooltip": "" + } + }, + "fe1fa30d40ef469a8260c49eeec4f550": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_96e4e27500f74f5486ba2a6b5a9922fd", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7a868cee328b47b9813059a82ecd8eba", + "value": 1 + } } } } From 843d6d8daa4a8d5f3ee28dc7777cbe8f453f6261 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Wed, 16 Oct 2024 11:05:21 +0200 Subject: [PATCH 4/8] plots regenerated - one more try --- .../advection-diffusion-2d.ipynb | 132 +++++++++--------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb index 9bd1cea3..f6e25527 100644 --- a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb +++ b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb @@ -273,11 +273,11 @@ " \n", " \n", " \n", - " 2024-10-15T13:41:45.068964\n", + " 2024-10-16T11:03:13.680797\n", " image/svg+xml\n", " \n", " \n", - " Matplotlib v3.9.1, https://matplotlib.org/\n", + " Matplotlib v3.8.1, https://matplotlib.org/\n", " \n", " \n", " \n", @@ -304,20 +304,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image20606e19a4\" transform=\"scale(1 -1) translate(0 -268.56)\" x=\"40.603125\" y=\"-38.88\" width=\"268.56\" height=\"268.56\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -353,7 +353,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -393,7 +393,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -423,7 +423,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -437,7 +437,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -477,7 +477,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -491,7 +491,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -564,12 +564,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -582,7 +582,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -595,7 +595,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -609,7 +609,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -623,7 +623,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -637,7 +637,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -651,7 +651,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -912,18 +912,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABcAAAHOCAYAAABzbJLzAAACU0lEQVR4nO2d223kQBADR4/QLoTLPxTbAWz5kwYKqAqg0SDZPRqtDV3/rv/fZ8S9KnzOOe+5dvW3nV/3tSueLERRRN4j1nw4RNetNXQoyzqKaf6Jd/zfq60IFEXE3PlwcZllqXOgxYWYNR8ecxmK1Dli7nz7SsQqy7e282X5hgjZvhLxytIQEd4oejsviojX0BYX8p5d42pDGyJgPUS74l7NpxPaVkTEZ6hY8+VJ1G4h2ueIeOVO385lKNEQIS0uLl4UiaKIqDXfFffe/c2yaDtv/Anv+CcLUhSRNOfiZlms+9ys+a64V/MMRbyGpjnS4xwijqK389KCxWf/G37MstQ50hBx8WQh6hwpLX9fPEORNEfSHOkMRbyGeouXlr8vnqFImiNezd9z7V6KZCgiHiJv5/1MTKg7b3F9In7K9UZRa6h4iLxp6U5EFEWkxYVM0yI2dPhHf2JDG39kfBKdDP1kPf5p/kmaI9vx7yQiiiIiTstS87YiMu58WDzNke0QeXfLnaFAnSPTnBdFZDz+2ht0KxeLi6Oo7TzNCe/iylCkzpE6/6W49tEiQ4k6RxoiRG3o16x4miPbxzmxLNooPl7NxSvXmpbpGfpkKOA1tMWFvPfZpcVs6FCWhgh5H+/iWj6IimXRdt7pT3g1V8ti7Vx8Emk1Xx4W4kuu+AwVR1Gblu2dSGtoUQQaf2R7Enmj2BlKeG8W3vHPUKQ7ESJeuaUFi3tl8XY+/MBvmjPvsvr7iA21fodrWX39CO3VfPhpcnMUrZ2bo7ir703L+1xeWaSd/wB+8I6eHECmoAAAAABJRU5ErkJggg==\" id=\"imagef8639409b1\" transform=\"scale(1 -1) translate(0 -332.64)\" x=\"325.44\" y=\"-7.2\" width=\"16.56\" height=\"332.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -948,7 +948,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -964,7 +964,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -992,7 +992,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1008,7 +1008,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1024,7 +1024,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1040,7 +1040,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1069,7 +1069,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1085,12 +1085,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "023296ab5b1c4a0dba53189daf469b23", + "model_id": "8a289dda4e35482284f89336fb3f1829", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HTML(value=\".\\\\fig_1
\")" + "HBox(children=(HTML(value=\"./fig_1.pdf
\"), HTML(value=\".\\\\fig_2
\")" + "HBox(children=(HTML(value=\"./fig_2.pdf
\"), HTML(value=\"\n", " \n", " \n", - " 2024-10-16T11:04:34.389423\n", + " 2024-10-16T11:24:10.397147\n", " image/svg+xml\n", " \n", " \n", @@ -1224,20 +1224,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", "
\n", - " \n", + " \n", " \n", + "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\" id=\"imageee078bb053\" transform=\"scale(1 -1) translate(0 -268.56)\" x=\"40.603125\" y=\"-38.88\" width=\"268.56\" height=\"268.56\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1273,7 +1273,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1313,7 +1313,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1343,7 +1343,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1357,7 +1357,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1397,7 +1397,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1411,7 +1411,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1484,12 +1484,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1502,7 +1502,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1515,7 +1515,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1529,7 +1529,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1543,7 +1543,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1557,7 +1557,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1571,7 +1571,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1836,18 +1836,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABcAAAHOCAYAAABzbJLzAAACU0lEQVR4nO2d223kQBADR4/QLoTLPxTbAWz5kwYKqAqg0SDZPRqtDV3/rv/fZ8S9KnzOOe+5dvW3nV/3tSueLERRRN4j1nw4RNetNXQoyzqKaf6Jd/zfq60IFEXE3PlwcZllqXOgxYWYNR8ecxmK1Dli7nz7SsQqy7e282X5hgjZvhLxytIQEd4oejsviojX0BYX8p5d42pDGyJgPUS74l7NpxPaVkTEZ6hY8+VJ1G4h2ueIeOVO385lKNEQIS0uLl4UiaKIqDXfFffe/c2yaDtv/Anv+CcLUhSRNOfiZlms+9ys+a64V/MMRbyGpjnS4xwijqK389KCxWf/G37MstQ50hBx8WQh6hwpLX9fPEORNEfSHOkMRbyGeouXlr8vnqFImiNezd9z7V6KZCgiHiJv5/1MTKg7b3F9In7K9UZRa6h4iLxp6U5EFEWkxYVM0yI2dPhHf2JDG39kfBKdDP1kPf5p/kmaI9vx7yQiiiIiTstS87YiMu58WDzNke0QeXfLnaFAnSPTnBdFZDz+2ht0KxeLi6Oo7TzNCe/iylCkzpE6/6W49tEiQ4k6RxoiRG3o16x4miPbxzmxLNooPl7NxSvXmpbpGfpkKOA1tMWFvPfZpcVs6FCWhgh5H+/iWj6IimXRdt7pT3g1V8ti7Vx8Emk1Xx4W4kuu+AwVR1Gblu2dSGtoUQQaf2R7Enmj2BlKeG8W3vHPUKQ7ESJeuaUFi3tl8XY+/MBvmjPvsvr7iA21fodrWX39CO3VfPhpcnMUrZ2bo7ir703L+1xeWaSd/wB+8I6eHECmoAAAAABJRU5ErkJggg==\" id=\"imagef199ad5da6\" transform=\"scale(1 -1) translate(0 -332.64)\" x=\"325.44\" y=\"-7.2\" width=\"16.56\" height=\"332.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1872,7 +1872,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1888,7 +1888,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1916,7 +1916,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1932,7 +1932,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1948,7 +1948,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1964,7 +1964,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1993,7 +1993,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2009,7 +2009,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "306fde993f01419bba450010e89e7fa8", + "model_id": "01991a73168b44c2b7dafae92cca585d", "version_major": 2, "version_minor": 0 }, @@ -2022,7 +2022,7 @@ } ], "source": [ - "plt.figure(figsize=(6, 6))\n", + "plt.subplots(1, 1, figsize=(6, 6))\n", "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", "plt.colorbar()\n", "plt.xlabel('x')\n", @@ -2049,7 +2049,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "id": "cc07e0075e5b9857", "metadata": { "ExecuteTime": { @@ -2073,7 +2073,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 19, "id": "1888a38e39bf2395", "metadata": { "ExecuteTime": { @@ -2093,7 +2093,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 20, "id": "52bc22d60805baa6", "metadata": { "ExecuteTime": { From b16c3817b776ef053383aacb4855bae38d86d110 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Wed, 16 Oct 2024 11:35:53 +0200 Subject: [PATCH 6/8] one more try... --- .../advection-diffusion-2d.ipynb | 190 ++++++++++-------- 1 file changed, 101 insertions(+), 89 deletions(-) diff --git a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb index cda3b63f..033907d2 100644 --- a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb +++ b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb @@ -238,6 +238,22 @@ { "cell_type": "code", "execution_count": 11, + "id": "0e66ee78-f623-4e5f-99ef-0e43a2c81da1", + "metadata": {}, + "outputs": [], + "source": [ + "def plot(*, data, title):\n", + " fig, axs = plt.subplots(1, 1, figsize=(6, 6))\n", + " ims = axs.imshow(data, cmap='viridis', vmin=vmin, vmax=vmax)\n", + " fig.colorbar(ims, ax=axs)\n", + " axs.set_xlabel('x')\n", + " axs.set_ylabel('y')\n", + " axs.set_title(title)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, "id": "d7a5cd43651621e6", "metadata": { "ExecuteTime": { @@ -273,7 +289,7 @@ " \n", " \n", " \n", - " 2024-10-16T11:22:42.240114\n", + " 2024-10-16T11:32:56.741366\n", " image/svg+xml\n", " \n", " \n", @@ -304,20 +320,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image046ac76f81\" transform=\"scale(1 -1) translate(0 -268.56)\" x=\"40.603125\" y=\"-38.88\" width=\"268.56\" height=\"268.56\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -353,7 +369,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -393,7 +409,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -423,7 +439,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -437,7 +453,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -477,7 +493,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -491,7 +507,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -564,12 +580,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -582,7 +598,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -595,7 +611,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -609,7 +625,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -623,7 +639,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -637,7 +653,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -651,7 +667,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -912,18 +928,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABcAAAHOCAYAAABzbJLzAAACU0lEQVR4nO2d223kQBADR4/QLoTLPxTbAWz5kwYKqAqg0SDZPRqtDV3/rv/fZ8S9KnzOOe+5dvW3nV/3tSueLERRRN4j1nw4RNetNXQoyzqKaf6Jd/zfq60IFEXE3PlwcZllqXOgxYWYNR8ecxmK1Dli7nz7SsQqy7e282X5hgjZvhLxytIQEd4oejsviojX0BYX8p5d42pDGyJgPUS74l7NpxPaVkTEZ6hY8+VJ1G4h2ueIeOVO385lKNEQIS0uLl4UiaKIqDXfFffe/c2yaDtv/Anv+CcLUhSRNOfiZlms+9ys+a64V/MMRbyGpjnS4xwijqK389KCxWf/G37MstQ50hBx8WQh6hwpLX9fPEORNEfSHOkMRbyGeouXlr8vnqFImiNezd9z7V6KZCgiHiJv5/1MTKg7b3F9In7K9UZRa6h4iLxp6U5EFEWkxYVM0yI2dPhHf2JDG39kfBKdDP1kPf5p/kmaI9vx7yQiiiIiTstS87YiMu58WDzNke0QeXfLnaFAnSPTnBdFZDz+2ht0KxeLi6Oo7TzNCe/iylCkzpE6/6W49tEiQ4k6RxoiRG3o16x4miPbxzmxLNooPl7NxSvXmpbpGfpkKOA1tMWFvPfZpcVs6FCWhgh5H+/iWj6IimXRdt7pT3g1V8ti7Vx8Emk1Xx4W4kuu+AwVR1Gblu2dSGtoUQQaf2R7Enmj2BlKeG8W3vHPUKQ7ESJeuaUFi3tl8XY+/MBvmjPvsvr7iA21fodrWX39CO3VfPhpcnMUrZ2bo7ir703L+1xeWaSd/wB+8I6eHECmoAAAAABJRU5ErkJggg==\" id=\"image8cde90d23d\" transform=\"scale(1 -1) translate(0 -332.64)\" x=\"325.44\" y=\"-7.2\" width=\"16.56\" height=\"332.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -948,7 +964,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -964,7 +980,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -992,7 +1008,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1008,7 +1024,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1024,7 +1040,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1040,7 +1056,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1069,7 +1085,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1085,7 +1101,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b0b2fbc7324c4110bb0fbb175fa91881", + "model_id": "33c882d19b9e4e9d930d0d2d64266b36", "version_major": 2, "version_minor": 0 }, @@ -1098,18 +1114,16 @@ } ], "source": [ - "plt.subplots(1, 1, figsize=(6, 6))\n", - "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", - "plt.colorbar()\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Initial condition')\n", + "plot(\n", + " data=solver.advectee.get().copy(),\n", + " title='Initial condition'\n", + ")\n", "show_plot(\"fig_1\")" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "id": "2b279996b00be430", "metadata": { "ExecuteTime": { @@ -1132,7 +1146,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f2ebe9ffdfa8495785dce87994b92d0f", + "model_id": "14190c74f33548d2a6e9d08140886875", "version_major": 2, "version_minor": 0 }, @@ -1157,7 +1171,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "id": "2576fcdbfa20c032", "metadata": { "ExecuteTime": { @@ -1193,7 +1207,7 @@ " \n", " \n", " \n", - " 2024-10-16T11:24:10.397147\n", + " 2024-10-16T11:34:13.615100\n", " image/svg+xml\n", " \n", " \n", @@ -1224,20 +1238,20 @@ "z\n", "\" style=\"fill: #ffffff\"/>\n", " \n", - " \n", + " \n", " \n", + "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\" id=\"imagebfd353356c\" transform=\"scale(1 -1) translate(0 -268.56)\" x=\"40.603125\" y=\"-38.88\" width=\"268.56\" height=\"268.56\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1273,7 +1287,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1313,7 +1327,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1343,7 +1357,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1357,7 +1371,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1397,7 +1411,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1411,7 +1425,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1484,12 +1498,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1502,7 +1516,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1515,7 +1529,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1529,7 +1543,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1543,7 +1557,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1557,7 +1571,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1571,7 +1585,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1836,18 +1850,18 @@ "\" style=\"fill: #ffffff\"/>\n", " \n", " \n", + "iVBORw0KGgoAAAANSUhEUgAAABcAAAHOCAYAAABzbJLzAAACU0lEQVR4nO2d223kQBADR4/QLoTLPxTbAWz5kwYKqAqg0SDZPRqtDV3/rv/fZ8S9KnzOOe+5dvW3nV/3tSueLERRRN4j1nw4RNetNXQoyzqKaf6Jd/zfq60IFEXE3PlwcZllqXOgxYWYNR8ecxmK1Dli7nz7SsQqy7e282X5hgjZvhLxytIQEd4oejsviojX0BYX8p5d42pDGyJgPUS74l7NpxPaVkTEZ6hY8+VJ1G4h2ueIeOVO385lKNEQIS0uLl4UiaKIqDXfFffe/c2yaDtv/Anv+CcLUhSRNOfiZlms+9ys+a64V/MMRbyGpjnS4xwijqK389KCxWf/G37MstQ50hBx8WQh6hwpLX9fPEORNEfSHOkMRbyGeouXlr8vnqFImiNezd9z7V6KZCgiHiJv5/1MTKg7b3F9In7K9UZRa6h4iLxp6U5EFEWkxYVM0yI2dPhHf2JDG39kfBKdDP1kPf5p/kmaI9vx7yQiiiIiTstS87YiMu58WDzNke0QeXfLnaFAnSPTnBdFZDz+2ht0KxeLi6Oo7TzNCe/iylCkzpE6/6W49tEiQ4k6RxoiRG3o16x4miPbxzmxLNooPl7NxSvXmpbpGfpkKOA1tMWFvPfZpcVs6FCWhgh5H+/iWj6IimXRdt7pT3g1V8ti7Vx8Emk1Xx4W4kuu+AwVR1Gblu2dSGtoUQQaf2R7Enmj2BlKeG8W3vHPUKQ7ESJeuaUFi3tl8XY+/MBvmjPvsvr7iA21fodrWX39CO3VfPhpcnMUrZ2bo7ir703L+1xeWaSd/wB+8I6eHECmoAAAAABJRU5ErkJggg==\" id=\"imageda51977ae8\" transform=\"scale(1 -1) translate(0 -332.64)\" x=\"325.44\" y=\"-7.2\" width=\"16.56\" height=\"332.64\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1872,7 +1886,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1888,7 +1902,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1916,7 +1930,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1932,7 +1946,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1948,7 +1962,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1964,7 +1978,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1993,7 +2007,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2009,7 +2023,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "01991a73168b44c2b7dafae92cca585d", + "model_id": "17d72aaf51f24bf18ac76c1017ecc076", "version_major": 2, "version_minor": 0 }, @@ -2022,18 +2036,16 @@ } ], "source": [ - "plt.subplots(1, 1, figsize=(6, 6))\n", - "plt.imshow(solver.advectee.get().copy(), cmap='viridis', vmin=vmin, vmax=vmax)\n", - "plt.colorbar()\n", - "plt.xlabel('x')\n", - "plt.ylabel('y')\n", - "plt.title('Final condition')\n", + "plot(\n", + " data=solver.advectee.get().copy(),\n", + " title='Final condition'\n", + ")\n", "show_plot(\"fig_2\")" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "id": "556684f5a2e2483d", "metadata": { "ExecuteTime": { @@ -2049,7 +2061,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 16, "id": "cc07e0075e5b9857", "metadata": { "ExecuteTime": { @@ -2060,20 +2072,20 @@ }, "outputs": [], "source": [ - "os.makedirs(\"animation\", exist_ok=True)\n", - "for i, state in enumerate(states_history):\n", - " state = np.flipud(state)\n", - " plt.imshow(state, cmap='viridis')\n", - " plt.axis('off')\n", - " plt.tight_layout()\n", - " plt.colorbar()\n", - " plt.savefig(f\"animation/frame_{i:03d}.png\")\n", - " plt.close()" + "# os.makedirs(\"animation\", exist_ok=True)\n", + "# for i, state in enumerate(states_history):\n", + "# state = np.flipud(state)\n", + "# plt.imshow(state, cmap='viridis')\n", + "# plt.axis('off')\n", + "# plt.tight_layout()\n", + "# plt.colorbar()\n", + "# plt.savefig(f\"animation/frame_{i:03d}.png\")\n", + "# plt.close()" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 17, "id": "1888a38e39bf2395", "metadata": { "ExecuteTime": { @@ -2093,7 +2105,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 18, "id": "52bc22d60805baa6", "metadata": { "ExecuteTime": { @@ -2104,7 +2116,7 @@ }, "outputs": [], "source": [ - "merge_images_into_gif(\"animation\", \"advection_diffusion.gif\", duration=0.01)" + "# merge_images_into_gif(\"animation\", \"advection_diffusion.gif\", duration=0.01)" ] }, { From 48664d47efb838e20ea620eb2f9d27f0ada828f4 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Wed, 16 Oct 2024 11:38:36 +0200 Subject: [PATCH 7/8] inline_format=png ? --- .../advection-diffusion-2d.ipynb | 840 +----------------- 1 file changed, 15 insertions(+), 825 deletions(-) diff --git a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb index 033907d2..51cb173e 100644 --- a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb +++ b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb @@ -253,7 +253,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 20, "id": "d7a5cd43651621e6", "metadata": { "ExecuteTime": { @@ -280,817 +280,7 @@ "outputs": [ { "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2024-10-16T11:32:56.741366\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.8.1, https://matplotlib.org/\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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg0AAAHiCAYAAABr4v9eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAABTDklEQVR4nO3deXiU1dk/8O8zk8xMQjZCdgkhLIY1iY0So2hBIiH68kqhFqnVEBF/WtIWU4rGWsJiG4tWUJtCFyCgIogKrgURDdRXlhKKiBUKMUggC0kg+z7z/P5gMmUgTM6JM8xk5vu5rue6yMydM2eWkJP7Oc99K6qqqiAiIiLqgcbZEyAiIqK+gYsGIiIiEsJFAxEREQnhooGIiIiEcNFAREREQrhoICIiIiFcNBAREZEQLhqIiIhIiJezJ0BEROQKWltb0d7e7pCxdTodDAaDQ8a+lrhoICIij9fa2orYGD9UnDM6ZPyIiAiUlJT0+YUDFw1EROTx2tvbUXHOiG+LBiPA375n7usbTIhJOoX29nYuGoiIiNyFn78CP3/FrmOaYN/xnIkbIYmIiEgIMw1ERERmRtUEo517PxtVk30HdCIuGoiIiMxMUGGCfVcN9h7PmXh6goiIiIQw00BERGRmggn2Pplg/xGdh5kGIiIiEsJMAxERkZlRVWFU7bsHwd7jORMzDURERCSEmQYiIiIzXj1hGzMNREREJISZBiIiIjMTVBiZabgqLhqIiIjMeHrCNp6eICIiIiHMNBAREZnxkkvbmGkgIiIiIcw0EBERmZnMh73HdBfMNBAREZEQZhqIiIjMjA645NLe4zkTMw1EREQkhJkGIiIiM6N68bD3mO6CmQaiSyiKgsWLFwvFDh48GLNnz5Z+jFOnTkFRFBQUFEh/rzPNnj0bgwcPtrrtWrxeRNeSyUGHu+CigdxKQUEBFEXBwYMH7TLe559/jsWLF6O2ttYu47k7vl5E7o2nJ4gu0dLSAi+v//5YfP7551iyZAlmz56NoKAgq9jjx49Do/HsdTdfL3I3JigwQrH7mO6CiwaiSxgMBuFYvV7vwJn0DXy9iDwLl/3k9mbPng0/Pz+cPXsW06ZNg5+fH0JDQ7FgwQIYjUar2EvP0S9evBi/+tWvAACxsbFQFAWKouDUqVMArjxHf/78eSxYsABjx46Fn58fAgICkJ6eji+++KLXc6+trcXjjz+OwYMHQ6/XY+DAgXjwwQdRXV1tiTl37hzmzJmD8PBwGAwGJCQkYP369VbjdO2jeP755/GXv/wFQ4cOhV6vx0033YR//vOfVzzutm3bMGbMGBgMBowZMwZbt27tdn7f5fUCgG+++Qb33nsvgoOD4evri5tvvhkffPCBVUxhYSEURcEbb7yB3/72txg4cCAMBgMmTZqEkydPyrycRD0yqY453AUzDeQRjEYj0tLSkJycjOeffx4ff/wx/vCHP2Do0KF47LHHuv2e6dOn4z//+Q9ef/11rFixAiEhIQCA0NDQbuO/+eYbbNu2Dffeey9iY2NRWVmJP//5z/j+97+Pf//734iKipKac2NjI2677TZ8/fXXeOihh/C9730P1dXVePfdd3HmzBmEhISgpaUFEyZMwMmTJ5GVlYXY2Fhs2bIFs2fPRm1tLX7xi19Yjblx40Y0NDTg//2//wdFUbB8+XJMnz4d33zzDby9vQEAH330EWbMmIFRo0YhLy8PNTU1yMzMxMCBA23OV/b1qqysxC233ILm5mb8/Oc/x4ABA7B+/Xr87//+L95880384Ac/sIp/9tlnodFosGDBAtTV1WH58uW4//77sX//fqnXlYi+A5XIjaxbt04FoP7zn/+03JaRkaECUJcuXWoVe8MNN6hJSUlWtwFQc3NzLV8/99xzKgC1pKTkiseKiYlRMzIyLF+3traqRqPRKqakpETV6/VWj11SUqICUNetW2fzuSxatEgFoL799ttX3GcymVRVVdWVK1eqANRXX33Vcl97e7uakpKi+vn5qfX19VaPOWDAAPX8+fOW2HfeeUcFoL733nuW2xITE9XIyEi1trbWcttHH32kAlBjYmKs5vFdXq/58+erANR//OMfltsaGhrU2NhYdfDgwZbX8tNPP1UBqCNHjlTb2tossS+++KIKQP3yyy+7e/mIpNTV1akA1P1fRahfnY6y67H/qwgVgFpXV+fsp/md8fQEeYxHH33U6uvbbrsN33zzjd3G1+v1lo1+RqMRNTU18PPzQ1xcHA4dOiQ93ltvvYWEhIQr/uIGLp4WAIAPP/wQERERmDVrluU+b29v/PznP0djYyN2795t9X0zZ85E//79LV/fdtttAGB5HcrLy3H48GFkZGQgMDDQEnfnnXdi1KhR0s/Blg8//BDjxo3D+PHjLbf5+fnhkUce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", "text/plain": [ "
" ] @@ -1101,7 +291,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "33c882d19b9e4e9d930d0d2d64266b36", + "model_id": "2579e2d8028849898f51ed5ea0d86a2a", "version_major": 2, "version_minor": 0 }, @@ -1118,7 +308,7 @@ " data=solver.advectee.get().copy(),\n", " title='Initial condition'\n", ")\n", - "show_plot(\"fig_1\")" + "show_plot(\"fig_1\", inline_format='png')" ] }, { @@ -2040,7 +1230,7 @@ " data=solver.advectee.get().copy(),\n", " title='Final condition'\n", ")\n", - "show_plot(\"fig_2\")" + "show_plot(\"fig_2\", inline_format='png')" ] }, { @@ -2072,15 +1262,15 @@ }, "outputs": [], "source": [ - "# os.makedirs(\"animation\", exist_ok=True)\n", - "# for i, state in enumerate(states_history):\n", - "# state = np.flipud(state)\n", - "# plt.imshow(state, cmap='viridis')\n", - "# plt.axis('off')\n", - "# plt.tight_layout()\n", - "# plt.colorbar()\n", - "# plt.savefig(f\"animation/frame_{i:03d}.png\")\n", - "# plt.close()" + "os.makedirs(\"animation\", exist_ok=True)\n", + "for i, state in enumerate(states_history):\n", + " state = np.flipud(state)\n", + " plt.imshow(state, cmap='viridis')\n", + " plt.axis('off')\n", + " plt.tight_layout()\n", + " plt.colorbar()\n", + " plt.savefig(f\"animation/frame_{i:03d}.png\")\n", + " plt.close()" ] }, { @@ -2116,7 +1306,7 @@ }, "outputs": [], "source": [ - "# merge_images_into_gif(\"animation\", \"advection_diffusion.gif\", duration=0.01)" + "merge_images_into_gif(\"animation\", \"advection_diffusion.gif\", duration=0.01)" ] }, { From 58ac2a65a2124ee3bd19953eeddb46326e84dc83 Mon Sep 17 00:00:00 2001 From: Sylwester Arabas Date: Wed, 16 Oct 2024 11:44:41 +0200 Subject: [PATCH 8/8] inline_format=png for all plots --- .../advection-diffusion-2d.ipynb | 826 +----------------- 1 file changed, 6 insertions(+), 820 deletions(-) diff --git a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb index 51cb173e..69a83788 100644 --- a/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb +++ b/examples/PyMPDATA_examples/advection_diffusion_2d/advection-diffusion-2d.ipynb @@ -253,7 +253,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 12, "id": "d7a5cd43651621e6", "metadata": { "ExecuteTime": { @@ -280,7 +280,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg0AAAHiCAYAAABr4v9eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAABTDklEQVR4nO3deXiU1dk/8O8zk8xMQjZCdgkhLIY1iY0So2hBIiH68kqhFqnVEBF/WtIWU4rGWsJiG4tWUJtCFyCgIogKrgURDdRXlhKKiBUKMUggC0kg+z7z/P5gMmUgTM6JM8xk5vu5rue6yMydM2eWkJP7Oc99K6qqqiAiIiLqgcbZEyAiIqK+gYsGIiIiEsJFAxEREQnhooGIiIiEcNFAREREQrhoICIiIiFcNBAREZEQLhqIiIhIiJezJ0BEROQKWltb0d7e7pCxdTodDAaDQ8a+lrhoICIij9fa2orYGD9UnDM6ZPyIiAiUlJT0+YUDFw1EROTx2tvbUXHOiG+LBiPA375n7usbTIhJOoX29nYuGoiIiNyFn78CP3/FrmOaYN/xnIkbIYmIiEgIMw1ERERmRtUEo517PxtVk30HdCIuGoiIiMxMUGGCfVcN9h7PmXh6goiIiIQw00BERGRmggn2Pplg/xGdh5kGIiIiEsJMAxERkZlRVWFU7bsHwd7jORMzDURERCSEmQYiIiIzXj1hGzMNREREJISZBiIiIjMTVBiZabgqLhqIiIjMeHrCNp6eICIiIiHMNBAREZnxkkvbmGkgIiIiIcw0EBERmZnMh73HdBfMNBAREZEQZhqIiIjMjA645NLe4zkTMw1EREQkhJkGIiIiM6N68bD3mO6CmQaiSyiKgsWLFwvFDh48GLNnz5Z+jFOnTkFRFBQUFEh/rzPNnj0bgwcPtrrtWrxeRNeSyUGHu+CigdxKQUEBFEXBwYMH7TLe559/jsWLF6O2ttYu47k7vl5E7o2nJ4gu0dLSAi+v//5YfP7551iyZAlmz56NoKAgq9jjx49Do/HsdTdfL3I3JigwQrH7mO6CiwaiSxgMBuFYvV7vwJn0DXy9iDwLl/3k9mbPng0/Pz+cPXsW06ZNg5+fH0JDQ7FgwQIYjUar2EvP0S9evBi/+tWvAACxsbFQFAWKouDUqVMArjxHf/78eSxYsABjx46Fn58fAgICkJ6eji+++KLXc6+trcXjjz+OwYMHQ6/XY+DAgXjwwQdRXV1tiTl37hzmzJmD8PBwGAwGJCQkYP369VbjdO2jeP755/GXv/wFQ4cOhV6vx0033YR//vOfVzzutm3bMGbMGBgMBowZMwZbt27tdn7f5fUCgG+++Qb33nsvgoOD4evri5tvvhkffPCBVUxhYSEURcEbb7yB3/72txg4cCAMBgMmTZqEkydPyrycRD0yqY453AUzDeQRjEYj0tLSkJycjOeffx4ff/wx/vCHP2Do0KF47LHHuv2e6dOn4z//+Q9ef/11rFixAiEhIQCA0NDQbuO/+eYbbNu2Dffeey9iY2NRWVmJP//5z/j+97+Pf//734iKipKac2NjI2677TZ8/fXXeOihh/C9730P1dXVePfdd3HmzBmEhISgpaUFEyZMwMmTJ5GVlYXY2Fhs2bIFs2fPRm1tLX7xi19Yjblx40Y0NDTg//2//wdFUbB8+XJMnz4d33zzDby9vQEAH330EWbMmIFRo0YhLy8PNTU1yMzMxMCBA23OV/b1qqysxC233ILm5mb8/Oc/x4ABA7B+/Xr87//+L95880384Ac/sIp/9tlnodFosGDBAtTV1WH58uW4//77sX//fqnXlYi+A5XIjaxbt04FoP7zn/+03JaRkaECUJcuXWoVe8MNN6hJSUlWtwFQc3NzLV8/99xzKgC1pKTkiseKiYlRMzIyLF+3traqRqPRKqakpETV6/VWj11SUqICUNetW2fzuSxatEgFoL799ttX3GcymVRVVdWVK1eqANRXX33Vcl97e7uakpKi+vn5qfX19VaPOWDAAPX8+fOW2HfeeUcFoL733nuW2xITE9XIyEi1trbWcttHH32kAlBjYmKs5vFdXq/58+erANR//OMfltsaGhrU2NhYdfDgwZbX8tNPP1UBqCNHjlTb2tossS+++KIKQP3yyy+7e/mIpNTV1akA1P1fRahfnY6y67H/qwgVgFpXV+fsp/md8fQEeYxHH33U6uvbbrsN33zzjd3G1+v1lo1+RqMRNTU18PPzQ1xcHA4dOiQ93ltvvYWEhIQr/uIGLp4WAIAPP/wQERERmDVrluU+b29v/PznP0djYyN2795t9X0zZ85E//79LV/fdtttAGB5HcrLy3H48GFkZGQgMDDQEnfnnXdi1KhR0s/Blg8//BDjxo3D+PHjLbf5+fnhkUce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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg0AAAHiCAYAAABr4v9eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAABMTElEQVR4nO3de3yU5Z338e8kkAQICQTIqUCIaIMcEixKjFUXNBKiD4+s1EVqa4gUty5pF1NLTdcSULdxqSvYLoUegGAVQVSwVgsiGqgrhyUsRdrKAylIkCQcNAmJJoHMPH8wGR0Ik/vCuZlk5vN+ve7Xi8zcueeaDIeL331dv6/D5XK5BAAA0IGwQA8AAAB0DUwaAACAJUwaAACAJUwaAACAJUwaAACAJUwaAACAJUwaAACAJUwaAACAJd0CPQAAADqDpqYmtbS02HLtiIgIRUVF2XLty4lJAwAg5DU1NSk1JVrVx1ttuX5iYqIOHTrU5ScOTBoAACGvpaVF1cdb9WH5EMX09u+d+/rTTqWMOayWlhYmDQAABIvo3g5F93b49ZpO+fd6gcRCSAAAYAmVBgAA3FpdTrX6Ofu51eX07wUDiEkDAABuTrnklH9nDf6+XiBxewIAAFhCpQEAADennPL3zQT/XzFwqDQAAABLqDQAAODW6nKp1eXfNQj+vl4gUWkAAACWUGkAAMCN3RO+UWkAAACWUGkAAMDNKZdaqTRcFJMGAADcuD3hG7cnAACAJVQaAABwY8ulb1QaAACAJVQaAABwc7oPf18zWFBpAAAAllBpAADArdWGLZf+vl4gUWkAAACWUGkAAMCt1XXu8Pc1gwWVBuALHA6H5s2bZ+ncIUOGaPr06cavcfjwYTkcDpWWlhp/byBNnz5dQ4YM8Xrscvy8gMvJadMRLJg0IKiUlpbK4XBo165dfrnee++9p3nz5qm2ttYv1wt2/LyA4MbtCeALPvvsM3Xr9vkfi/fee0/z58/X9OnT1adPH69z9+/fr7Cw0J538/NCsHHKoVY5/H7NYMGkAfiCqKgoy+dGRkbaOJKugZ8XEFqY9iPoTZ8+XdHR0froo480efJkRUdHa8CAAXr44YfV2trqde4X79HPmzdPP/zhDyVJqampcjgccjgcOnz4sKQL79F//PHHevjhhzVq1ChFR0crJiZGubm5+vOf/3zJY6+trdVDDz2kIUOGKDIyUgMHDtR9992nkydPes45fvy4ZsyYoYSEBEVFRSkjI0MrV670uk7bOoqnnnpKv/71rzV06FBFRkbquuuu0//8z/9c8Lrr16/XyJEjFRUVpZEjR2rdunXtju/L/Lwk6e9//7vuvvtuxcXFqWfPnrr++uv1+uuve51TVlYmh8OhF198Uf/+7/+ugQMHKioqSrfeeqsOHjxo8uMEOuR02XMECyoNCAmtra3KyclRZmamnnrqKb311lv6z//8Tw0dOlQPPvhgu99z11136f/9v/+nF154QQsXLlT//v0lSQMGDGj3/L///e9av3697r77bqWmpqqmpka/+tWv9A//8A/661//quTkZKMxNzQ06KabbtLf/vY33X///fra176mkydP6ve//72OHj2q/v3767PPPtO4ceN08OBBFRQUKDU1VWvXrtX06dNVW1urf/3Xf/W65qpVq3T69Gn98z//sxwOhxYsWKC77rpLf//739W9e3dJ0ptvvqkpU6Zo+PDhKikp0alTp5Sfn6+BAwf6HK/pz6umpkY33HCDPv30U33/+99Xv379tHLlSv3f//t/9dJLL+kf//Efvc5/8sknFRYWpocfflh1dXVasGCB7r33Xu3YscPo5wrgS3ABQWTFihUuSa7/+Z//8TyWl5fnkuR67LHHvM695pprXGPGjPF6TJKruLjY8/XPfvYzlyTXoUOHLnitlJQUV15enufrpqYmV2trq9c5hw4dckVGRnq99qFDh1ySXCtWrPD5XubOneuS5HrllVcueM7pdLpcLpdr0aJFLkmu5557zvNcS0uLKysryxUdHe2qr6/3es1+/fq5Pv74Y8+5r776qkuS67XXXvM8Nnr0aFdSUpKrtrbW89ibb77pkuRKSUnxGseX+XnNnj3bJcn1pz/9yfPY6dOnXampqa4hQ4Z4fpbvvPOOS5Lr6quvdjU3N3vOfeaZZ1ySXO+//357Pz7ASF1dnUuSa8dfEl1/OZLs12PHXxJdklx1dXWBfptfGrcnEDK++93ven1900036e9//7vfrh8ZGelZ6Nfa2qpTp04pOjpaaWlp2r17t/H1Xn75ZWVkZFzwP27p3G0BSXrjjTeUmJioadOmeZ7r3r27vv/976uhoUFbtmzx+r6pU6eqb9++nq9vuukmSfL8HKqqqrRnzx7l5eUpNjbWc95tt92m4cOHG78HX9544w2NHTtWN954o+ex6OhoPfDAAzp8+LD++te/ep2fn5+viIiIi44dgP2YNCAkREVFXVAm79u3rz755BO/vYbT6dTChQt11VVXKTIyUv3799eAAQO0d+9e1dXVGV+voqJCI0eO9HnOhx9+qKuuuuqCXQlXX3215/kvGjx4sNfXbROItp9D2/lXXXXVBa+VlpZmMPqOffjhh+1e81LHDvhDq3v3hL+PYMGkASEhPDzc9tf46U9/qsLCQt1888167rnntHHjRm3atEkjRoyQ09k52rtc7OfgcnX+lVpdeezoOpwuhy1HsGAhJOBD220AK1566SWNHz9ey5Yt83q8trbWsyjQxNChQ7Vv3z6f56SkpGjv3r1yOp1e1YYPPvjA87yJtvMPHDhwwXP79+/v8PtNfl4pKSntXvNSxw7AflQaAB969eolSZY6HIaHh1/wv961a9fqo48+uqTXnjJliv785z+3u92x7XVuv/12VVdXa82aNZ7nzp49q1/84heKjo7WP/zDPxi9ZlJSkkaPHq2VK1d63VLZtGnTBWsM2mPy87r99tu1c+dObdu2zfNYY2Ojfv3rX2vIkCF+X0MBWMHtCd+oNAA+jBkzRpL0b//2b7rnnnvUvXt3TZo0yfOP4xf9n//zf/TYY48pPz9fN9xwg95//309//zzuuKKKy7ptX/4wx/qpZde0t133637779fY8aM0ccff6zf//73Wrp0qTIyMvTAAw/oV7/6laZPn67y8nINGTJEL730kv77v/9bixYtUu/evY1ft6SkRHfccYduvPFG3X///fr444/1i1/8QiNGjFBDQ4PP7zX5eT3yyCN64YUXlJubq+9///uKi4vTypUrdejQIb388st0jwQ6ISYNgA/XXXedHn/8cS1dulQbNmyQ0+nUoUOH2v1H8Mc//rEaGxu1atUqrVmzRl/72tf0+uuv65FHHrmk146Ojtaf/vQnFRcXa926dVq5cqXi4+N16623enom9OjRQ2VlZXrkkUe0cuVK1dfXKy0tTStWrLjkcKiJEydq7dq1evTRR1VUVKShQ4dqxYoVevXVV1VWVubze01+XgkJCXrvvff0ox/9SL/4xS/U1NSk9PR0vfbaa7rjjjsuaezAl9WqMLX6uQjf2vEpXYbDxSoiAECIq6+vV2xsrN7eN0jRvf07aWg47dQtIytVV1enmJgY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", "text/plain": [ "
" ] @@ -291,7 +291,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "2579e2d8028849898f51ed5ea0d86a2a", + "model_id": "d6fdbacca62746459f4ff36aaae89d34", "version_major": 2, "version_minor": 0 }, @@ -336,7 +336,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "14190c74f33548d2a6e9d08140886875", + "model_id": "c079f50692b9449cb47711c096647208", "version_major": 2, "version_minor": 0 }, @@ -388,821 +388,7 @@ "outputs": [ { "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " 2024-10-16T11:34:13.615100\n", - " image/svg+xml\n", - " \n", - " \n", - " Matplotlib v3.8.1, https://matplotlib.org/\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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n" - ], + "image/png": "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", "text/plain": [ "
" ] @@ -1213,7 +399,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "17d72aaf51f24bf18ac76c1017ecc076", + "model_id": "7b34d1077e5a4b72ad14f6112fd85986", "version_major": 2, "version_minor": 0 },