{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from pystencils.session import *\n", "import pystencils as ps\n", "sp.init_printing()\n", "frac = sp.Rational" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Tutorial 06: Phase-field simulation of dentritic solidification\n", "\n", "This is the second tutorial on phase field methods with pystencils. Make sure to read the previous tutorial first. \n", "\n", "In this tutorial we again implement a model described in **Programming Phase-Field Modelling** by S. Bulent Biner.\n", "This time we implement the model from chapter 4.7 that describes dentritic growth. So get ready for some beautiful snowflake pictures.\n", "\n", "We start again by adding all required arrays fields. This time we explicitly store the change of the phase variable φ in time, since the dynamics is calculated using an Allen-Cahn formulation where a term $\\partial_t \\phi$ occurs." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "dh = ps.create_data_handling(domain_size=(300, 300), periodicity=True, \n", " default_target=ps.Target.CPU)\n", "φ_field = dh.add_array('phi', latex_name='φ')\n", "φ_field_tmp = dh.add_array('phi_temp', latex_name='φ_temp')\n", "φ_delta_field = dh.add_array('phidelta', latex_name='φ_D')\n", "t_field = dh.add_array('T')\n", "t_field_tmp = dh.add_array('T_tmp')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This model has a lot of parameters that are created here in a symbolic fashion. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{{φ}_{(0,0)}^{4}}{4} - {φ}_{(0,0)}^{3} \\left(\\frac{1}{2} - \\frac{m}{3}\\right) + {φ}_{(0,0)}^{2} \\left(\\frac{1}{4} - \\frac{m}{2}\\right) + \\frac{ε^{2} \\left({\\partial_{0} {φ}_{(0,0)}}^{2} + {\\partial_{1} {φ}_{(0,0)}}^{2}\\right)}{2}$" ], "text/plain": [ " 4 2 ⎛ 2 2⎞\n", "φ_C 3 ⎛1 m⎞ 2 ⎛1 m⎞ ε ⋅⎝D(φ[0,0]) + D(φ[0,0]) ⎠\n", "──── - φ_C ⋅⎜─ - ─⎟ + φ_C ⋅⎜─ - ─⎟ + ────────────────────────────\n", " 4 ⎝2 3⎠ ⎝4 2⎠ 2 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ε, m, δ, j, θzero, α, γ, Teq, κ, τ = sp.symbols(\"ε m δ j θ_0 α γ T_eq κ τ\")\n", "εb = sp.Symbol(\"\\\\bar{\\\\epsilon}\")\n", "\n", "φ = φ_field.center\n", "φ_tmp = φ_field_tmp.center\n", "T = t_field.center\n", "\n", "def f(φ, m):\n", " return φ**4 / 4 - (frac(1, 2) - m/3) * φ**3 + (frac(1,4)-m/2)*φ**2\n", "\n", "free_energy_density = ε**2 / 2 * (ps.fd.Diff(φ,0)**2 + ps.fd.Diff(φ,1)**2 ) + f(φ, m)\n", "free_energy_density" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The free energy is again composed of a bulk and interface part." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(7,4))\n", "plt.sympy_function(f(φ, m=1), x_values=(-1.05, 1.5) )\n", "plt.xlabel(\"φ\")\n", "plt.title(\"Bulk free energy\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compared to last tutorial, this bulk free energy has also two minima, but at different values. \n", "\n", "Another complexity of the model is its anisotropy. The gradient parameter $\\epsilon$ depends on the interface normal." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\bar{\\epsilon} \\left(δ \\cos{\\left(j \\left(- θ_{0} + \\operatorname{atan_{2}}{\\left({\\partial_{1} {φ}_{(0,0)}},{\\partial_{0} {φ}_{(0,0)}} \\right)}\\right) \\right)} + 1\\right)$" ], "text/plain": [ "\\bar{\\epsilon}⋅(δ⋅cos(j⋅(-θ₀ + atan2(D(φ[0,0]), D(φ[0,0])))) + 1)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def σ(θ):\n", " return 1 + δ * sp.cos(j * (θ - θzero))\n", "\n", "θ = sp.atan2(ps.fd.Diff(φ, 1), ps.fd.Diff(φ, 0))\n", "\n", "ε_val = εb * σ(θ)\n", "ε_val" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def m_func(T):\n", " return (α / sp.pi) * sp.atan(γ * (Teq - T))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, we just insert these parameters into the free energy formulation before doing the functional derivative, to make the dependence of $\\epsilon$ on $\\nabla \\phi$ explicit." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle {φ}_{(0,0)}^{3} - \\frac{{φ}_{(0,0)}^{2} α \\operatorname{atan}{\\left({T}_{(0,0)} γ - T_{eq} γ \\right)}}{\\pi} - \\frac{3 {φ}_{(0,0)}^{2}}{2} + \\frac{{φ}_{(0,0)} α \\operatorname{atan}{\\left({T}_{(0,0)} γ - T_{eq} γ \\right)}}{\\pi} + \\frac{{φ}_{(0,0)}}{2} - \\bar{\\epsilon}^{2} δ^{2} \\cos^{2}{\\left(j θ_{0} - j \\operatorname{atan_{2}}{\\left({\\partial_{1} {φ}_{(0,0)}},{\\partial_{0} {φ}_{(0,0)}} \\right)} \\right)} {\\partial_{0} {\\partial_{0} {φ}_{(0,0)}}} - \\bar{\\epsilon}^{2} δ^{2} \\cos^{2}{\\left(j θ_{0} - j \\operatorname{atan_{2}}{\\left({\\partial_{1} {φ}_{(0,0)}},{\\partial_{0} {φ}_{(0,0)}} \\right)} \\right)} {\\partial_{1} {\\partial_{1} {φ}_{(0,0)}}} - 2 \\bar{\\epsilon}^{2} δ \\cos{\\left(j θ_{0} - j \\operatorname{atan_{2}}{\\left({\\partial_{1} {φ}_{(0,0)}},{\\partial_{0} {φ}_{(0,0)}} \\right)} \\right)} {\\partial_{0} {\\partial_{0} {φ}_{(0,0)}}} - 2 \\bar{\\epsilon}^{2} δ \\cos{\\left(j θ_{0} - j \\operatorname{atan_{2}}{\\left({\\partial_{1} {φ}_{(0,0)}},{\\partial_{0} {φ}_{(0,0)}} \\right)} \\right)} {\\partial_{1} {\\partial_{1} {φ}_{(0,0)}}} - \\bar{\\epsilon}^{2} {\\partial_{0} {\\partial_{0} {φ}_{(0,0)}}} - \\bar{\\epsilon}^{2} {\\partial_{1} {\\partial_{1} {φ}_{(0,0)}}}$" ], "text/plain": [ " 2 2 \n", " 3 φ_C ⋅α⋅atan(T_C⋅γ - T_eq⋅γ) 3⋅φ_C φ_C⋅α⋅atan(T_C⋅γ - T_eq⋅γ) φ_C 2 2 2 \n", "φ_C - ─────────────────────────── - ────── + ────────────────────────── + ─── - \\bar{\\epsilon} ⋅δ ⋅cos (j⋅θ₀ - j⋅atan2(\n", " π 2 π 2 \n", "\n", " \n", " 2 2 2 \n", "D(φ[0,0]), D(φ[0,0])))⋅D(D(φ[0,0])) - \\bar{\\epsilon} ⋅δ ⋅cos (j⋅θ₀ - j⋅atan2(D(φ[0,0]), D(φ[0,0])))⋅D(D(φ[0,0])) - 2⋅\\ba\n", " \n", "\n", " \n", " 2 2 \n", "r{\\epsilon} ⋅δ⋅cos(j⋅θ₀ - j⋅atan2(D(φ[0,0]), D(φ[0,0])))⋅D(D(φ[0,0])) - 2⋅\\bar{\\epsilon} ⋅δ⋅cos(j⋅θ₀ - j⋅atan2(D(φ[0,0])\n", " \n", "\n", " \n", " 2 2 \n", ", D(φ[0,0])))⋅D(D(φ[0,0])) - \\bar{\\epsilon} ⋅D(D(φ[0,0])) - \\bar{\\epsilon} ⋅D(D(φ[0,0]))\n", " " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fe = free_energy_density.subs({\n", " m: m_func(T),\n", " ε: εb * σ(θ),\n", "})\n", "\n", "dF_dφ = ps.fd.functional_derivative(fe, φ)\n", "dF_dφ = ps.fd.expand_diff_full(dF_dφ, functions=[φ])\n", "dF_dφ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we insert all the numeric parameters and discretize:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/latex": [ "$\\displaystyle \\left\\{ \\pi : 3.14159265358979, \\ T_{eq} : 1.0, \\ \\bar{\\epsilon} : 0.01, \\ j : 6, \\ α : 0.9, \\ γ : 10, \\ δ : 0.02, \\ θ_{0} : 0.2, \\ κ : 1.8, \\ τ : 0.0003\\right\\}$" ], "text/plain": [ "{π: 3.14159265358979, T_eq: 1.0, \\bar{\\epsilon}: 0.01, j: 6, α: 0.9, γ: 10, δ: 0.02, θ₀: 0.2, κ: 1.8, τ: 0.0003}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "discretize = ps.fd.Discretization2ndOrder(dx=0.03, dt=1e-5)\n", "parameters = {\n", " τ: 0.0003,\n", " κ: 1.8,\n", " εb: 0.01,\n", " δ: 0.02,\n", " γ: 10,\n", " j: 6,\n", " α: 0.9,\n", " Teq: 1.0,\n", " θzero: 0.2,\n", " sp.pi: sp.pi.evalf()\n", "}\n", "parameters" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "dφ_dt = - dF_dφ / τ\n", "φ_eqs = ps.simp.sympy_cse_on_assignment_list([ps.Assignment(φ_delta_field.center, \n", " discretize(dφ_dt.subs(parameters)))])\n", "φ_eqs.append(ps.Assignment(φ_tmp, discretize(ps.fd.transient(φ) - φ_delta_field.center)))\n", "\n", "temperature_evolution = -ps.fd.transient(T) + ps.fd.diffusion(T, 1) + κ * φ_delta_field.center\n", "temperature_eqs = [\n", " ps.Assignment(t_field_tmp.center, discretize(temperature_evolution.subs(parameters)))\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When creating the kernels we pass as target (which may be 'Target.CPU' or 'Target.GPU') the default target of the target handling. This enables to switch to a GPU simulation just by changing the parameter of the data handling.\n", "\n", "The rest is similar to the previous tutorial." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "φ_kernel = ps.create_kernel(φ_eqs, cpu_openmp=True, target=dh.default_target).compile()\n", "temperature_kernel = ps.create_kernel(temperature_eqs, target=dh.default_target).compile()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def timeloop(steps=200):\n", " φ_sync = dh.synchronization_function(['phi'])\n", " temperature_sync = dh.synchronization_function(['T'])\n", " dh.all_to_gpu() # this does nothing when running on CPU\n", " for t in range(steps):\n", " φ_sync()\n", " dh.run_kernel(φ_kernel)\n", " dh.swap(φ_field.name, φ_field_tmp.name)\n", " temperature_sync()\n", " dh.run_kernel(temperature_kernel)\n", " dh.swap(t_field.name, t_field_tmp.name)\n", " dh.all_to_cpu()\n", " return dh.gather_array('phi')\n", " \n", "def init(nucleus_size=np.sqrt(5)):\n", " for b in dh.iterate():\n", " x, y = b.cell_index_arrays\n", " x, y = x-b.shape[0]//2, y-b.shape[0]//2\n", " bArr = (x**2 + y**2) < nucleus_size**2\n", " b['phi'].fill(0)\n", " b['phi'][(x**2 + y**2) < nucleus_size**2] = 1.0\n", " b['T'].fill(0.0)\n", " \n", "def plot():\n", " plt.subplot(1,3,1)\n", " plt.scalar_field(dh.gather_array('phi'))\n", " plt.title(\"φ\")\n", " plt.colorbar()\n", " plt.subplot(1,3,2)\n", " plt.title(\"T\")\n", " plt.scalar_field(dh.gather_array('T'))\n", " plt.colorbar()\n", " plt.subplot(1,3,3)\n", " plt.title(\"∂φ\")\n", " plt.scalar_field(dh.gather_array('phidelta'))\n", " plt.colorbar()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
FUNC_PREFIX void kernel(double * RESTRICT const _data_T, double * RESTRICT const _data_phi, double * RESTRICT  _data_phi_temp, double * RESTRICT  _data_phidelta)\n",
       "{\n",
       "   #pragma omp parallel\n",
       "   {\n",
       "      #pragma omp for schedule(static)\n",
       "      for (int64_t ctr_1 = 1; ctr_1 < 301; ctr_1 += 1)\n",
       "      {\n",
       "         for (int64_t ctr_0 = 1; ctr_0 < 301; ctr_0 += 1)\n",
       "         {\n",
       "            const double xi_0 = _data_phi[ctr_0 + 302*ctr_1]*_data_phi[ctr_0 + 302*ctr_1];\n",
       "            const double xi_1 = 954.92965855137209*atan(-10.0 + 10.0*_data_T[ctr_0 + 302*ctr_1]);\n",
       "            const double xi_2 = -2222.2222222222222*_data_phi[ctr_0 + 302*ctr_1];\n",
       "            const double xi_3 = xi_2 + 1111.1111111111111*_data_phi[ctr_0 + 302*ctr_1 + 302] + 1111.1111111111111*_data_phi[ctr_0 + 302*ctr_1 - 302];\n",
       "            const double xi_4 = cos(-1.2000000000000002 + 6.0*atan2(-16.666666666666668*_data_phi[ctr_0 + 302*ctr_1 - 302] + 16.666666666666668*_data_phi[ctr_0 + 302*ctr_1 + 302], -16.666666666666668*_data_phi[ctr_0 + 302*ctr_1 - 1] + 16.666666666666668*_data_phi[ctr_0 + 302*ctr_1 + 1]));\n",
       "            const double xi_5 = xi_4*0.013333333333333336;\n",
       "            const double xi_6 = xi_2 + 1111.1111111111111*_data_phi[ctr_0 + 302*ctr_1 + 1] + 1111.1111111111111*_data_phi[ctr_0 + 302*ctr_1 - 1];\n",
       "            const double xi_7 = 0.00013333333333333334*(xi_4*xi_4);\n",
       "            _data_phidelta[ctr_0 + 302*ctr_1] = xi_0*xi_1 + xi_0*5000.0 - xi_1*_data_phi[ctr_0 + 302*ctr_1] + xi_3*xi_5 + xi_3*xi_7 + xi_5*xi_6 + xi_6*xi_7 - 3148.1481481481483*_data_phi[ctr_0 + 302*ctr_1] - 3333.3333333333335*(_data_phi[ctr_0 + 302*ctr_1]*_data_phi[ctr_0 + 302*ctr_1]*_data_phi[ctr_0 + 302*ctr_1]) + 370.37037037037038*_data_phi[ctr_0 + 302*ctr_1 + 1] + 370.37037037037038*_data_phi[ctr_0 + 302*ctr_1 + 302] + 370.37037037037038*_data_phi[ctr_0 + 302*ctr_1 - 1] + 370.37037037037038*_data_phi[ctr_0 + 302*ctr_1 - 302];\n",
       "            _data_phi_temp[ctr_0 + 302*ctr_1] = 1.0000000000000001e-5*_data_phidelta[ctr_0 + 302*ctr_1] + _data_phi[ctr_0 + 302*ctr_1];\n",
       "         }\n",
       "      }\n",
       "   }\n",
       "}\n",
       "
\n" ], "text/plain": [ "FUNC_PREFIX void kernel(double * RESTRICT const _data_T, double * RESTRICT const _data_phi, double * RESTRICT _data_phi_temp, double * RESTRICT _data_phidelta)\n", "{\n", " #pragma omp parallel\n", " {\n", " #pragma omp for schedule(static)\n", " for (int64_t ctr_1 = 1; ctr_1 < 301; ctr_1 += 1)\n", " {\n", " for (int64_t ctr_0 = 1; ctr_0 < 301; ctr_0 += 1)\n", " {\n", " const double xi_0 = _data_phi[ctr_0 + 302*ctr_1]*_data_phi[ctr_0 + 302*ctr_1];\n", " const double xi_1 = 954.92965855137209*atan(-10.0 + 10.0*_data_T[ctr_0 + 302*ctr_1]);\n", " const double xi_2 = -2222.2222222222222*_data_phi[ctr_0 + 302*ctr_1];\n", " const double xi_3 = xi_2 + 1111.1111111111111*_data_phi[ctr_0 + 302*ctr_1 + 302] + 1111.1111111111111*_data_phi[ctr_0 + 302*ctr_1 - 302];\n", " const double xi_4 = cos(-1.2000000000000002 + 6.0*atan2(-16.666666666666668*_data_phi[ctr_0 + 302*ctr_1 - 302] + 16.666666666666668*_data_phi[ctr_0 + 302*ctr_1 + 302], -16.666666666666668*_data_phi[ctr_0 + 302*ctr_1 - 1] + 16.666666666666668*_data_phi[ctr_0 + 302*ctr_1 + 1]));\n", " const double xi_5 = xi_4*0.013333333333333336;\n", " const double xi_6 = xi_2 + 1111.1111111111111*_data_phi[ctr_0 + 302*ctr_1 + 1] + 1111.1111111111111*_data_phi[ctr_0 + 302*ctr_1 - 1];\n", " const double xi_7 = 0.00013333333333333334*(xi_4*xi_4);\n", " _data_phidelta[ctr_0 + 302*ctr_1] = xi_0*xi_1 + xi_0*5000.0 - xi_1*_data_phi[ctr_0 + 302*ctr_1] + xi_3*xi_5 + xi_3*xi_7 + xi_5*xi_6 + xi_6*xi_7 - 3148.1481481481483*_data_phi[ctr_0 + 302*ctr_1] - 3333.3333333333335*(_data_phi[ctr_0 + 302*ctr_1]*_data_phi[ctr_0 + 302*ctr_1]*_data_phi[ctr_0 + 302*ctr_1]) + 370.37037037037038*_data_phi[ctr_0 + 302*ctr_1 + 1] + 370.37037037037038*_data_phi[ctr_0 + 302*ctr_1 + 302] + 370.37037037037038*_data_phi[ctr_0 + 302*ctr_1 - 1] + 370.37037037037038*_data_phi[ctr_0 + 302*ctr_1 - 302];\n", " _data_phi_temp[ctr_0 + 302*ctr_1] = 1.0000000000000001e-5*_data_phidelta[ctr_0 + 302*ctr_1] + _data_phi[ctr_0 + 302*ctr_1];\n", " }\n", " }\n", " }\n", "}" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ps.show_code(φ_kernel)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Name| Inner (min/max)| WithGl (min/max)\n", "----------------------------------------------------\n", " T| ( 0, 0)| ( 0, 0)\n", " T_tmp| ( 0, 0)| ( 0, 0)\n", " phi| ( 0, 1)| ( 0, 1)\n", "phi_temp| ( 0, 0)| ( 0, 0)\n", "phidelta| ( 0, 0)| ( 0, 0)\n", "\n" ] }, { "data": { "image/png": "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3yCvAQAqCXmttHjREgBShA92BgBUEvIaAKCSkNdKi7eHAwAAAAAAAEgV7rQEgBQpzgc783YDAEDfIK8BACoJea20uNMSAAAAAAAAQKpwpyUApMj+D3ZO9jNNku4PAIC4yGsAgEpCXist7rQEAAAAAAAAkCrcaQkAKdKlfupMeD2pS3xGCgCgb5DXAACVhLxWWtxpCQAAAAAAACBVuNMSAFKEv0YHAKgk5DUAQCUhr5UWd1oCQIp0qV9RHgAA9IU05bXbbrtNY8eO1eDBg9XY2KjHH388sv3q1avV2NiowYMH6z3veY/uuOOOnP2nnnqqMplM3uPjH/94d5v58+fn7W9oaOjR/AEAfS8tea1achq/yQIAAACoaMuXL9fs2bM1b948bdiwQVOmTNHUqVPV0tJibb9582Z97GMf05QpU7RhwwZ95Stf0RVXXKEHHnigu80vfvELtba2dj+ef/559e/fX3/3d3+X09f73//+nHbPPfdcUZ8rAKCyVVNO4+3hAJAinUFGnUEm8T4BAOgLaclrixYt0owZM3TxxRdLkhYvXqyHHnpIt99+uxYuXJjX/o477tBhhx2mxYsXS5LGjRunZ555RrfccovOPfdcSdKwYcNyjrn//vt14IEH5v2CN2DAAO6uBIAKkYa8Vk05jTstAQAAAJSdjo6OnMfu3but7fbs2aP169erqakpZ3tTU5PWrFljPWbt2rV57c844ww988wz2rt3r/WYpUuX6vzzz9eQIUNytr/88ssaNWqUxo4dq/PPP19//OMf4z5FAEAViZPXqi2n8aIlAKRIp/oV5QEAQF8oZl4bPXq06urquh+2u0skadu2bers7FR9fX3O9vr6erW1tVmPaWtrs7bft2+ftm3bltf+qaee0vPPP99910vWxIkTdffdd+uhhx7SnXfeqba2Nk2ePFnbt2+PHUMAQHr0dV6rtpzG28MBAAAAlJ0tW7aotra2+/uamprI9plM7tvvgiDI2+Zrb9su7b8jZfz48TrxxBNztk+dOrX762OOOUaTJk3Se9/7Xv34xz/WnDlzIucLAKguheS1aslpvGgJACnSFfRTV5DsnZFd/5uQAAAotWLmtdra2pxf7lxGjBih/v37592BsnXr1rw7T7IaGhqs7QcMGKDhw4fnbH/zzTd1//33a8GCBd65DBkyRMccc4xefvllb1sAQPr0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uWbPnq158+Zpw4YNmjJliqZOnaqWlpa+nprT+9//frW2tnY/nnvuue59N998sxYtWqQlS5bo6aefVkNDg04//XTt3LmzT+b6xhtv6Nhjj9WSJUus++PMd/bs2VqxYoXuv/9+PfHEE9q1a5fOOussdXZ2puI5SNKZZ56Z8zNZuXJlzv6+fA6rV6/Wl770Ja1bt07Nzc3at2+fmpqa9MYbb3S3SfvPIc5zkNL9cwBKpdzyWjnlNIm8lpX2nJDmnwM5DSgMea24yj2vkdPK4zlI6f45oIoEZebEE08MZs6cmbPtqKOOCq699to+mlG06667Ljj22GOt+7q6uoKGhobgxhtv7N729ttvB3V1dcEdd9xRohm6SQpWrFjR/X2c+b7++uvBwIEDg/vvv7+7zWuvvRb069cvWLVqVcnmnmU+hyAIgosuuij45Cc/6Twmbc9h69atgaRg9erVQRCU58/BfA5BUH4/B6BYyimvlXNOCwLyWlqeQ7nnNXIaEI28VjrlntfIael8DkFQfj8HVK6yutNyz549Wr9+vZqamnK2NzU1ac2aNX00K7+XX35Zo0aN0tixY3X++efrj3/8oyRp8+bNamtry3k+NTU1OuWUU1L5fOLMd/369dq7d29Om1GjRmn8+PGpek6PPvqoDj30UL3vfe/TJZdcoq1bt3bvS9tzaG9vlyQNGzZMUnn+HMznkFVOPwegGMoxr1VKTpPK83rqUk7X03LPa+Q0wI281rfK7XrqUk7X03LPaRJ5DelWVi9abtu2TZ2dnaqvr8/ZXl9fr7a2tj6aVbSJEyfq7rvv1kMPPaQ777xTbW1tmjx5srZv394953J5PnHm29bWpkGDBunggw92tulrU6dO1T333KPf/OY3+va3v62nn35aH/nIR7R7925J6XoOQRBozpw5+tu//VuNHz++e37Z+bjml/bnIJXXzwEolnLLa5WU06Tyu566lNP1tNzzGjkNiEZe61vldD11KafrabnnNIm8hvQb0NcT6IlMJpPzfRAEedvSYurUqd1fH3PMMZo0aZLe+9736sc//nH3B9mW0/ORejbfND2nadOmdX89fvx4TZgwQWPGjNG///u/65xzznEe1xfP4bLLLtOzzz6rJ554Im9fufwcXM+hnH4OQLGVSx6oxJwmlc/11KWcrqflntfIaUA85ZILyGuFtSmFcrqelntOk8hrSL+yutNyxIgR6t+/f94r91u3bs1byUirIUOG6JhjjtHLL7/c/ZfpyuX5xJlvQ0OD9uzZox07djjbpM3IkSM1ZswYvfzyy5LS8xwuv/xyPfjgg/rtb3+rd7/73d3by+nn4HoONmn9OQDFVO55rZxzmlRe19NCpPV6Wu55jZwG+JHX+la5XE8LkdbrabnnNIm8hvJQVi9aDho0SI2NjWpubs7Z3tzcrMmTJ/fRrAqze/dubdq0SSNHjtTYsWPV0NCQ83z27Nmj1atXp/L5xJlvY2OjBg4cmNOmtbVVzz//fCqfkyRt375dW7Zs0ciRIyX1/XMIgkCXXXaZfvGLX+g3v/mNxo4dm7O/HH4Ovudgk7afA1AK5Z7XyjmnSeVxPe2JtF1Pyz2vkdOA+MhrfSvt19OeSNv1tNxzWpznYJO2nwOqSHH/zk/y7r///mDgwIHB0qVLgxdffDGYPXt2MGTIkOBPf/pTX0/N6qqrrgoeffTR4I9//GOwbt264KyzzgqGDh3aPd8bb7wxqKurC37xi18Ezz33XPDZz342GDlyZNDR0dEn8925c2ewYcOGYMOGDYGkYNGiRcGGDRuCV155JfZ8Z86cGbz73e8OHnnkkeB3v/td8JGPfCQ49thjg3379vX5c9i5c2dw1VVXBWvWrAk2b94c/Pa3vw0mTZoUvOtd70rNc/jHf/zHoK6uLnj00UeD1tbW7sebb77Z3SbtPwffcyiHnwNQKuWU18otpwUBeS0Nz6Hc8xo5DSgMea24yj2vkdPS/xzK4eeA6lF2L1oGQRDceuutwZgxY4JBgwYFJ5xwQrB69eq+npLTtGnTgpEjRwYDBw4MRo0aFZxzzjnBCy+80L2/q6sruO6664KGhoagpqYm+NCHPhQ899xzfTbf3/72t4GkvMdFF10Ue75vvfVWcNlllwXDhg0LDjjggOCss84KWlpaUvEc3nzzzaCpqSk45JBDgoEDBwaHHXZYcNFFF+XNry+fg23ukoIf/ehH3W3S/nPwPYdy+DkApVQuea3ccloQkNfS8BzKPa+R04DCkdeKp9zzGjkt/c+hHH4OqB6ZIAiCnt+nCQAAAAAAAADJKqvPtAQAAAAAAABQ+XjREgAAAAAAAECq8KIlAAAAAAAAgFThRUsAAAAAAAAAqcKLlgAAAAAAAABShRctAQAAAAAAAKQKL1oCAAAAAAAASBVetAQAAAAAAACQKrxoCQAAAAAAACBVeNESAAAAAAAAQKrwoiUAAAAAAACAVOFFSwAAAAAAAACp8v8DomO8uSH1pmMAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "timeloop(10)\n", "init()\n", "plot()\n", "print(dh)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "result = None\n", "if 'is_test_run' not in globals():\n", " ani = ps.plot.scalar_field_animation(timeloop, rescale=True, frames=600)\n", " result = ps.jupyter.display_as_html_video(ani)\n", "result" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "assert np.isfinite(dh.max('phi'))\n", "assert np.isfinite(dh.max('T'))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" } }, "nbformat": 4, "nbformat_minor": 2 }