diff --git a/examples/PyMPDATA_examples/Jaruga_et_al_2015/fig19.ipynb b/examples/PyMPDATA_examples/Jaruga_et_al_2015/fig19.ipynb index 53cf5365..dd92e1de 100644 --- a/examples/PyMPDATA_examples/Jaruga_et_al_2015/fig19.ipynb +++ b/examples/PyMPDATA_examples/Jaruga_et_al_2015/fig19.ipynb @@ -8,15 +8,17 @@ "## 2D Boussinesq (buoyancy-driven) flow example\n", "\n", "### equations solved:\n", - "\n", + "conservation of momentum (inviscid and incompressible form of Navier-Stokes equation)\n", "$$\n", - "\\partial_t \\theta + \n", + "\\partial_t v+\\mathrm{\\nabla}\\cdot\\left(v\\otimes v\\right)=-\\mathrm{\\nabla\\pi}-g\\frac{\\theta^\\prime}{\\theta_0}\n", "$$\n", + "conservation of energy\n", "$$\n", - "\\partial_t \\theta + \n", + "\\partial_t \\theta+ \\mathrm{\\nabla}-\\left(v\\theta\\right)=0\n", "$$\n", + "continuity equation(conservation of mass)\n", "$$\n", - "\\partial_t \\theta + \n", + "\\mathrm{\\nabla}\\cdot\\ v=0\n", "$$" ] }, @@ -133,7 +135,7 @@ "\n", "#@njit\n", "def pressure_solver_loop_init(err,p_err,lap_p_err,dxy,lap_tmp,tmp_uvw):\n", - " p_err[0].get()[:] = err.get()[:]\n", + " p_err[0].get()[:] = err.get()\n", " lap_p_err[0][:] = lap(p_err[0], dxy, False, lap_tmp,tmp_uvw)\n", "\n", "#@njit\n", @@ -166,7 +168,7 @@ " alpha[l] = - np.dot(lap_err.ravel(), lap_p_err[l].ravel()) / tmp_den[l]\n", " if v < k_iters - 1:\n", " p_err[v + 1].get()[:] = err.get()\n", - " lap_p_err[v + 1][:] = lap_err[:]\n", + " lap_p_err[v + 1][:] = lap_err\n", " for l in range(v):\n", " p_err[v + 1].get()[:] += alpha[l] * p_err[l].get()\n", " lap_p_err[v + 1][:] += alpha[l] * lap_p_err[l]\n", @@ -231,12 +233,12 @@ "\n", "outfreq = 1\n", "\n", - "N, M = 20, 20\n", + "N, M = 200, 200\n", "dxy = 2000/(N), 2000/(M)\n", "Tht_ref = 300.\n", "g = 9.81\n", "r0 = 250.\n", - "dt = 7.5\n", + "dt = 0.75\n", "nt = int(600//dt)\n", "beta = 0.25\n", "prs_tol = 1e-7\n", @@ -368,7 +370,8 @@ "id": "229c52f6-8072-45fb-a0dd-335c7045583c", "metadata": {}, "source": [ - "## Simulation loop" + "## Simulation loop\n", + "Progress bar stays at 0 until all functions compile" ] }, { @@ -380,12 +383,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a3a66e7d490249288d4b38f9cc3efa5c", + "model_id": "b5f7c922743c46b3999ff46815c44f84", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "FloatProgress(value=0.0, max=80.0)" + "FloatProgress(value=0.0, max=800.0)" ] }, "metadata": {}, @@ -395,8 +398,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: total: 1min 31s\n", - "Wall time: 1min 41s\n" + "CPU times: total: 38min 23s\n", + "Wall time: 9h 24min 18s\n" ] } ], @@ -406,7 +409,7 @@ "progress = ipywidgets.FloatProgress(max=nt)\n", "display(progress)\n", "\n", - "output = []\n", + "output = np.empty((nt//outfreq+1,N,M))\n", "with warnings.catch_warnings():\n", " warnings.simplefilter(action=\"ignore\",category= NumbaExperimentalFeatureWarning)\n", "\n", @@ -453,7 +456,7 @@ " data(vip_rhs[k])[:] /= 0.5 * dt\n", " \n", " if step % outfreq == 0:\n", - " output.append(solvers[_T].advectee.get().copy())\n", + " output[step] = solvers[_T].advectee.get().copy()\n", " progress.value = step\n", "with open(\"output.npy\", 'wb') as f:\n", " np.save(f, np.array(output))" @@ -469,19 +472,19 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 16, "id": "1ab53227-a29b-4df8-86d7-77c4fd1e5584", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "baa8f55f01f5441bb96110e9b0d523b6", + "model_id": "5d3ace495deb46188301ee278ac8d5b4", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "FloatProgress(value=0.0, max=81.0)" + "FloatProgress(value=0.0, max=80.1)" ] }, "metadata": {}, @@ -490,7 +493,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -502,12 +505,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "e1864a55f28a46f5850e0e2b10732fb9", + "model_id": "666a3e0358d048f89528e4c86fa367df", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HTML(value=\".\\\\tmp531j16v4.gif
\")" + "HTML(value=\".\\\\tmpps5dtbt0.gif
\")" ] }, "metadata": {}, @@ -515,7 +518,8 @@ } ], "source": [ - "progress = ipywidgets.FloatProgress(max=len(output))\n", + "freq: int = 10\n", + "progress = ipywidgets.FloatProgress(max=len(output)/freq)\n", "\n", "def plot(step):\n", " data = output[step]\n", @@ -524,33 +528,25 @@ " colorticks = np.linspace(299.95, 300.55, 7, endpoint=True)\n", " cmap = colors.ListedColormap([\"white\", \"purple\", \"blue\", \"green\",\"orange\",\"yellow\"])\n", "\n", - " fig = pyplot.figure(figsize=(4,4))\n", + " fig = pyplot.figure(figsize=(5,6))\n", " pyplot.title(\"t/dt=\"+str(step))\n", " pyplot.xlabel(\"x/dx\")\n", " pyplot.ylabel(\"y/dy\")\n", " pyplot.contour(x+1/2, y+1/2, data, levels=colorticks[1:], colors='k')\n", " pyplot.imshow(data.T, origin=\"lower\", extent=(0, grid[0], 0, grid[1]),\n", " cmap=cmap, vmin=colorticks[0], vmax=colorticks[-1])\n", - " pyplot.colorbar(ticks=colorticks)\n", + " pyplot.colorbar(ticks=colorticks,label = \"Temperature[K]\")\n", "\n", " progress.value += 1\n", " return fig\n", - "\n", + " \n", "display(progress)\n", - "show_anim(plot, frame_range=range(len(output)))" - ] - }, - { - "cell_type": "markdown", - "id": "58f716ed-b17f-49de-9bdf-c655942e63bd", - "metadata": {}, - "source": [ - "add showplot\n" + "show_anim(plot, frame_range=range(len(output))[::freq])" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "id": "e19fba6c-c5b1-43ba-8f99-a23222e0afd1", "metadata": {}, "outputs": [ @@ -560,12 +556,12 @@ "\n", "\n", - "\n", + "\n", " \n", " \n", " \n", " \n", - " 2025-01-06T12:03:08.272126\n", + " 2025-01-07T10:18:36.012688\n", " image/svg+xml\n", " \n", " \n", @@ -580,41 +576,41 @@ " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", + "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\" id=\"image631b150f6a\" transform=\"scale(1 -1) translate(0 -223.92)\" x=\"46.965625\" y=\"-64.999219\" width=\"223.92\" height=\"223.92\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", @@ -1397,12 +6086,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1467,12 +6156,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1485,12 +6174,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1503,12 +6192,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1557,33 +6246,254 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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": [ - "
" + "
" ] }, "metadata": {}, @@ -1592,12 +6502,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "99c7e07b37814f4fb932d00778163679", + "model_id": "a99bf51808254e0d8eea72c464ff9c4b", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "HBox(children=(HTML(value=\".\\\\tmp451ju2ic.pdf

\"), HTML(val…" + "HBox(children=(HTML(value=\".\\\\tmpzso2f9u6.pdf
\"), HTML(val…" ] }, "metadata": {},