Skip to content
Snippets Groups Projects
test_jupyter_extensions.ipynb 72.2 KiB
Newer Older
Markus Holzer's avatar
Markus Holzer committed
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pystencils.session import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "dh = ps.create_data_handling(domain_size=(256, 256), periodicity=True)\n",
    "c_field = dh.add_array('c')\n",
    "dh.fill(\"c\", 0.0, ghost_layers=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "for x in range(129):\n",
    "    for y in range(258):\n",
    "        dh.cpu_arrays['c'][x, y] = 1.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
Markus Holzer's avatar
Markus Holzer committed
       "<matplotlib.image.AxesImage at 0x117081c10>"
Markus Holzer's avatar
Markus Holzer committed
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
Markus Holzer's avatar
Markus Holzer committed
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABRAAAAH5CAYAAAD5mBLdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAoY0lEQVR4nO3df3CVZX7w/8/h1zFgkhIjOUnJ0rTLdrsN6zyLVmFUUDDKitbVWV3tdHDK7qwKdDPouIv+IbvTEuvsoh2pWlsf/LWKs1NxnZHuGkeFZagdRByBbRntooIkT6qDCSAmkNzfP1rP1wNcajAQgq/XzD3Due7rnFy3c4nw9j7n5LIsywIAAAAA4DCGDfYCAAAAAIDjl4AIAAAAACQJiAAAAABAkoAIAAAAACQJiAAAAABAkoAIAAAAACQJiAAAAABA0ojBXsCR6Ovri507d0Z5eXnkcrnBXg4AAAAADClZlsXu3bujrq4uhg375HsMh2RA3LlzZ9TX1w/2MgAAAABgSNu+fXuMHz/+E+cMyYBYXl4eEf9zgRUVFYO8GgAGW9//+z+DvQTgIKv2lsX/vbIpel//3WAvBTjILzsfHuwlAHAc6Orqivr6+mJn+yRDMiB+9LbliooKARGA6PvAR/rC8Wb0sOExYng+crmRg70U4CD+DgXAx32Wjwf0Ny4AAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIKlfAbGlpSXOOOOMKC8vj3HjxsVll10WW7duLZlz7bXXRi6XKznOOuuskjnd3d2xYMGCqK6ujjFjxsSll14aO3bs+PxXAwAAAAAMqH4FxNWrV8e8efPipZdeitbW1jhw4EA0NTXF3r17S+ZddNFF0dbWVjxWrVpVcr65uTlWrlwZK1asiLVr18aePXti9uzZ0dvb+/mvCAAAAAAYMCP6M/lXv/pVyePly5fHuHHjYsOGDXHuuecWx/P5fBQKhcO+RmdnZzzwwAPxyCOPxMyZMyMi4tFHH436+vp47rnn4sILL+zvNQAAAAAAR8nn+gzEzs7OiIioqqoqGX/xxRdj3Lhx8ZWvfCW+973vRUdHR/Hchg0bYv/+/dHU1FQcq6uri8bGxli3bt1hf053d3d0dXWVHAAAAADA0XfEATHLsli4cGGcffbZ0djYWByfNWtW/PznP4/nn38+fvazn8X69evj/PPPj+7u7oiIaG9vj1GjRsXYsWNLXq+mpiba29sP+7NaWlqisrKyeNTX1x/psgEAAACAfujXW5g/bv78+fHaa6/F2rVrS8avuuqq4q8bGxvj9NNPjwkTJsQzzzwTl19+efL1siyLXC532HOLFi2KhQsXFh93dXWJiAAAAABwDBzRHYgLFiyIp59+Ol544YUYP378J86tra2NCRMmxOuvvx4REYVCIXp6emLXrl0l8zo6OqKmpuawr5HP56OioqLkAAAAAACOvn4FxCzLYv78+fHkk0/G888/Hw0NDZ/6nPfeey+2b98etbW1ERExefLkGDlyZLS2thbntLW1xebNm2Pq1Kn9XD4AAAAAcDT16y3M8+bNi8ceeyx++ctfRnl5efEzCysrK6OsrCz27NkTixcvjiuuuCJqa2vjzTffjFtuuSWqq6vjW9/6VnHu3Llz48Ybb4xTTjklqqqq4qabbopJkyYVv5UZAAAAADg+9Csg3nvvvRERMX369JLx5cuXx7XXXhvDhw+PTZs2xcMPPxzvv/9+1NbWxnnnnRdPPPFElJeXF+ffeeedMWLEiLjyyitj3759MWPGjHjwwQdj+PDhn/+KAAAAAIAB06+AmGXZJ54vKyuLX//615/6OieddFLcfffdcffdd/fnxwMAAAAAx9gRfYkKAAAAAPDFICACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQ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xWPVqlUl55ubm2PlypWxYsWKWLt2bezZsydmz54dvb29/b8CAAAAAOCoGdHfJ8yaNStmzZr1iXPy+XwUCoXDnuvs7IwHHnggHnnkkZg5c2ZERDz66KNRX18fzz33XFx44YX9XRIAAAAAcJQclc9AfPHFF2PcuHHxla98Jb73ve9FR0dH8dyGDRti//790dTUVByrq6uLxsbGWLdu3WFfr7u7O7q6ukoOAAAAAODoG/CAOGvWrPj5z38ezz//fPzsZz+L9evXx/nnnx/d3d0REdHe3h6jRo2KsWPHljyvpqYm2tvbD/uaLS0tUVlZWTzq6+sHetkAAAAAwGH0+y3Mn+aqq64q/rqxsTFOP/30mDBhQjzzzDNx+eWXJ5+XZVnkcrnDnlu0aFEsXLiw+Lirq0tEBAAAAIBj4Ki8hfnjamtrY8KECfH6669HREShUIienp7YtWtXybyOjo6oqak57Gvk8/moqKgoOQAAAACAo++oB8T33nsvtm/fHrW1tRERMXny5Bg5cmS0trYW57S1tcXmzZtj6tSpR3s5AAAAAEA/9PstzHv27Ik33nij+Hjbtm3x6quvRlVVVVRVVcXixYvjiiuuiNra2njzzTfjlltuierq6vjWt74VERGVlZUxd+7cuPHGG+OUU06JqqqquOmmm2LSpEnFb2UGAAAAAI4P/Q6IL7/8cpx33nnFxx99NuGcOXPi3nvvjU2bNsXDDz8c77//ftTW1sZ5550XTzzxRJSXlxefc+edd8aIESPiyiuvjH379sWMGTPiwQcfjOHDhw/AJQEAAAAAAyWXZVk22Ivor66urqisrIzOzk6fhwhA9LVPHOwlAAd5eu/ouG/2N6N36xufPhk4plr7fjHYSwDgONCfvnbUPwMRAAAAABi6BEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACS+h0Q16xZE5dccknU1dVFLpeLp556quR8lmWxePHiqKuri7Kyspg+fXps2bKlZE53d3csWLAgqqurY8yYMXHppZfGjh07PteFAAAAAAADr98Bce/evXHaaafFsmXLDnv+jjvuiKVLl8ayZcti/fr1USgU4oILLojdu3cX5zQ3N8fKlStjxYoVsXbt2tizZ0/Mnj07ent7j/xKAAAAAIABN6K/T5g1a1bMmjXrsOeyLIu77rorbr311rj88ssjIuKhhx6KmpqaeOyxx+L73/9+dHZ2xgMPPBCPPPJIzJw5MyIiHn300aivr4/nnnsuLrzwwkNet7u7O7q7u4uPu7q6+rtsAAAAAOAIDOhnIG7bti3a29ujqampOJbP52PatGmxbt26iIjYsGFD7N+/v2ROXV1dNDY2FuccrKWlJSorK4tHfX39QC4bAAAAAEgY0IDY3t4eERE1NTUl4zU1NcVz7e3tMWrUqBg7dmxyzsEWLVoUnZ2dxWP79u0DuWwAAAAAIKHfb2H+LHK5XMnjLMsOGTvYJ83J5/ORz+cHbH0AAAAAwGczoHcgFgqFiIhD7iTs6Ogo3pVYKBSip6cndu3alZwDAAAAABwfBjQgNjQ0RKFQiNbW1uJYT09PrF69OqZOnRoREZMnT46RI0eWzGlra4vNmzcX5wAAAAAAx4d+v4V5z5498cYbbxQfb9u2LV599dWoqqqKL33pS9Hc3BxLliyJiRMnxsSJE2PJkiUxevTouOaaayIiorKyMubOnRs33nhjnHLKKVFVVRU33XRTTJo0qfitzAAAAADA8aHfAfHll1+O8847r/h44cKFERExZ86cePDBB+Pmm2+Offv2xQ033BC7du2KM888M5599tkoLy8vPufOO++MESNGxJVXXhn79u2LGTNmxIMPPhjDhw8fgEsCAAAAAAZKLsuybLAX0V9dXV1RWVkZnZ2dUVFRMdjLAWCQ9bVPHOwlAAd5eu/ouG/2N6N36xufPhk4plr7fjHYSwDgONCfvjagn4EIAAAAAJxYBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIElABAAAAACSBEQAAAAAIGnAA+LixYsjl8uVHIVCoXg+y7JYvHhx1NXVRVlZWUyfPj22bNky0MsAAAAAAAbAUbkD8U//9E+jra2teGzatKl47o477oilS5fGsmXLYv369VEoFOKCCy6I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",
Markus Holzer's avatar
Markus Holzer committed
      "text/plain": [
Markus Holzer's avatar
Markus Holzer committed
       "<Figure size 1600x600 with 1 Axes>"
Markus Holzer's avatar
Markus Holzer committed
      ]
     },
Markus Holzer's avatar
Markus Holzer committed
     "metadata": {},
Markus Holzer's avatar
Markus Holzer committed
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scalar_field(dh.cpu_arrays[\"c\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "ur = ps.Assignment(c_field[0, 0], c_field[1, 0])\n",
Markus Holzer's avatar
Markus Holzer committed
    "config = ps.CreateKernelConfig(target=dh.default_target, cpu_openmp=False, skip_independence_check=True)\n",
    "ast = ps.create_kernel(ur, config=config)\n",
Markus Holzer's avatar
Markus Holzer committed
    "kernel = ast.compile()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
Markus Holzer's avatar
Markus Holzer committed
    "c_sync = dh.synchronization_function_cpu(['c'])"
Markus Holzer's avatar
Markus Holzer committed
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def timeloop(steps=10):\n",
    "    for i in range(steps):\n",
    "        c_sync()\n",
    "        dh.run_kernel(kernel)\n",
    "    return dh.gather_array('c')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "ps.jupyter.set_display_mode('video')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<video controls width=\"80%\">\n",
Markus Holzer's avatar
Markus Holzer committed
       " <source src=\"data:video/x-m4v;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAJjFtZGF0AAACZAYF//9g3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE1NyAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTggLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0yIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz0xMiBsb29rYWhlYWRfdGhyZWFkcz0yIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTAgd2VpZ2h0cD0wIGtleWludD0yNTAga2V5aW50X21pbj0yNSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmNfbG9va2FoZWFkPTQwIHJjPWNyZiBtYnRyZWU9MSBjcmY9MjMuMCBxY29tcD0wLjYwIHFwbWluPTAgcXBtYXg9NjkgcXBzdGVwPTQgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAFn5liIQK8mKAAKXknJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddf//q8KhrgAJEeGOhd4jhldO/onMpiY7jej53CSDId+KqByN9/8R5wrwiwpZQAsgz3cDY7hOWTbCP7/wQA7KJLPwOmr+7gVT/BKVopf9/42gOMZw0y3Hb3xgIkQkFQhp7DxpEVBmHfffffffffffffffffffffff4//hBdgDHWkgYfGEAJjHCtrgCZh/YGA7iBg0EC41tbW1tbW1tbXx/94IFwuAEu9MzAAgAUu+EF3IAjwAzHMFrw6bPoB2+SOpcOjJra2tra2tra2tra2tr4/jDGw6aADBOmaDHTf/9fnaO4QAIZhYgLLAuLAKzA8il5nn3//6BaFwdV8eRFIul35jRjTXx/+AwXDgTWvw9JcLucDkTSwGk1IAYcz6IMG99999999999999999999998f//616/w/BAUBwACIDg36Z9Q7XXXXXXXXXXXXXXXXXXHw8AAgNxa9nMMoxnB/C/uC3EUzZF4L9Q7C5mHIEXY4sDc9qAmuOyV7tsV9CeS5tNRjAXLuoFcu7UywnHjYsqnOh//1BuLQ/hLsmxa41Jkv3b/+V8gNk4t7ri0LgqVU9Qrd5/63PAeBEa9YYXEcEQTWJYARoDnnACth6d+AJEk97VTqHe6//3pAX4fw9ABn6JnT1JoAAEREQXQG5lQ7XXXXXXXXXXXXXXXXXXXXXXTzYoA0cA2tra2tra2tra08zigAF47Wtra2tra2tra2tra2sUwWebe/zQXw2HD46WZgk2UwS1111111111111111111111/w/+HwtG0x16heuuuuuuuuuuuuuuuuuuu+uuuuuuuuuuuuuuuuuuuuuuuunp6666666666enrrrrrrrrrrrrrp6euZgk6pglrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrp6euuuuuuuuunp66666666666666enrp6euuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuunp6666666666enrrrrrrrrrrrrrp6eunp6666666666666666666666666666666666666666666666666666666666666666666666enrrrrrrrrrp6euuuuuuuuuuuuunp66enrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr//1dghUPQAEx3dIRkIJ4vDfSboijANwhD+sYxr39ecl8te38A8Bb44dcXVCv7AasJSKvefvPbmTC1U0///f04V6Q0PAdmJbEnXAJcuMBYC7BjkD+L1W96obRj1YIFBqqfjQ2c9AESMqF6uRAr6z0lr3dxsshfzD8sPgghjvgARXacybTQBFNh9Ch2uuuuuuuuuuuuuuuuuuuuuunp6666666666enrrrrrrrrrrrrrp6eunp6666666666666666666666666666666666666666666+WJ//CQagC8/AwYvKZmEjow/I1sXTdFhHJLvZYGJI+AH8H1b/4S2D7hHEXGEK7e+7RZBfcaKZX7w8Y4LBDn+puw99svbeb2if//b/UcMdQU111111111111111111111109PXXXXXXXXXT09dddddddddddddPT109PXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT09dddddddddPT111111111111109PXT09dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddPT11111111109PXXXXXXXXXXXXXT09dPT11111111111111111111111111111111111111111111111111111111111111111111109PXXXXXXXXXT09dddddddddddddPT109PXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT09dddddddddPT111111111111109PXT09ddddddddddddddddddddddddddddddddddddddddddfxVAS0YBsPQAbCOvx8EYXffBlRtXI1PV4EsCHS1X8coWz7owFuwZHkGxS1ygAKfmQElQdrPyHbWRBsU4Jxd9sM2E6MeZrr/CGAIBk08BWQe6QRv7oEVTBg/XOcQxNE3EjAajO/NyEpKkCN1jWM2LUYAMBscbfAJWjAYrpuroZE95ACC1NjARgIxaiiTNRYp+8FcKlST7pgObuGX15ojw7MJGCvrypKddI+bM8zM/8BDxw+E9jAh+ibp8n//IAAiKh9AbmdQ/XXXXXXXXXXXXXXXXXXXXXXT09dddddddddPT111111111111109PXT09dddddddddddddddddddddddddddddddddddddddddddd9ddddddddddddddddddddddddPT11111111109PXXXXXXXXXXXXXT09dPT11111111111111111111111111111111111111111111111111111111111111111111109PXXXXXXXXXT09dddddddddddddPT109PXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT09dddddddddPT111111111111109PXT09dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddPT11111111109PXXXXXXXXXXXXXT09dPT1111111111111111111111111111111111111111111///wqGuAC90LYJolBm+x4IOBKqYAEpkAx6onhDko4P/f/V90hX8xoZylwrnl7jf31ALeODv6YeYR+Lg8eAUjEk1Q5Fu+nC6h2uuuuuuuuuuuuuuuuuuuuuunp6666666666enrrrrrrrrrrrrrp6eunp6666666666666666666666666666666666666666666/wgf/CQe/AAhOAwyYmFMe4vadGYG/ucGzw1vF/W3f1snRSdKOijn7ueBf8JVaSHD/4Zh0Wdt9013iMYxiEfr/1fUtgLu2P/hIdbcyDJzt/4ezARgkXVOVKAPDAP/w9AjcjT5qJ//yAABAZME0A+ofrrrrrrrrrrrrrrrrrrrrrrp6euuuuuuuuunp66666666666666enrp6euuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu++uuuuuuuuuuuuuuuuuuuuuuuunp6666666666enrrrrrrrrrrrrrp6eunp6666666666666666666666666666666666666666666666666666666666666666666666enrrrrrrrrrp6euuuuuuuuuuuuunp66enrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrp6euuuuuuuuunp66666666666666enrp6euuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuunp6666666666enrrrrrrrrrrrrrp6eunp6666666666666666666666666666666666666666666//+koUDnABfBFqKDwYIXvoGacPrGZzC8gbqJ4lBdKIJf/lxHFCZjezWTHgCGEqSwAxsRRgNRGP7/4ILOK1lxZC83vv1lyjZWR4ys07+qVYADb8jPqe6wjEofaJ6XTd0gHdSsPc9YruiOCC8KrV4Di8TlroJt9p4jYW8f1lWm8/xe3HsPyBfwQQCi+Smek0AiuhtAZvaFBDXXXXXXXXXXXXXXXXXXXXXXT09dddddddddPT111111111111109PXT09ddddddddddddddddddddddddddddddddddddddddddd94agqVQV111111111111111111111109PXXXXXXXXXT09dddddddddddddPT109PXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT09dddddddddPT111111111111109PXT09dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddPT11111111109PXXXXXXXXXXXXXT09dPT11111111111111111111111111111111111111111111111111111111111111111111109PXXXXXXXXXT09dddddddddddddPT109PXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT09dddddddddPT111111111111109PXT09dddddddddddddddddddddddddddddddddddddddddddfwU+mbdh6ACjaCRz8hnckInoBIf1djVcAGXAS/AVvirtI/9msJKZt1JYABAJgc8wDDdr7c/gF+zHO47BV9f72kS0qPG9v/b/whoA/4S/ABtyNPmlk1QAEImC5jACgDZgHhenpHRnnBv8fwgPi/AARsRWycrMjk7+jJ/LbRhf/6GC9999999999/j/wEMKcABGxFbJysyObuH0ZP5baMF//gUO+++++++++/xwh8IIOeAAkYzN0yqTvmH9UbvWkeF/0MIJWcBcAYQcxI4QHvwjtfwDAB/oN8RsgHzoi3NHNbTRTW1tZ19a2tra2tr44Q/0Cw3ACqrgQ6n9eCEjIAmACC8kxL0HPxy5+AYADh9BfgDMxJdlVOqZw/qfep08gMOkTW0ZWtra2tra2trHqAAp79aUpnwAMi+SmbSw+8PiPpQgf/tbXgIYB/w0WhQAhAvZwAlBs30HAwIVQPMAEjsrAhsQiPL/CXJH9/AMA/0GwrmuviuNGNYPzIPzO18YQD/QLB2CH3ZYyCAExzBdcANa2NyDg9+ECl77774/AATQs+7927Zn/AArJmaE2Uqswf9urbAgXKscDh3FDPn33333333x8Wwf/9fj8BD8J8ABk0ZIbdSKzqHnT6caZf73P3FNPvvvvj4v9bf/D+H+Hi4ADdGRmEXMdikYNQ7XXXXXXXXXXXXXXXXXXXfX8eXy4oPYADP0Tam0iZgABMxg8tAAqU74e5qjJcb2/ve/4gCsUKxxfmeO8Y/DqLAJ4pi/fagMZnXBLkqX3AQ91BIcLLis/aFk4qbnXRGX8WQARJkc8sA5YaCfoZD/7uBLDsEtdzFff6JAnE1jWABswUXV/xbDVf3gAmgjDknB66FR7f4f4AUlPDvgBIhveuzKFt/2qStP+54c2/hOAMY84qtdOkCt//rQ9ddUTHe5rhUht1JcBDO2eZOtEXpMrOtc//YokLZEz53//vD9Q/XXXXXXX/x8fD4cwAEl7IAAQBf9uDCKERglzC+wZn2QAQkPKjKg6gFaEuMY4p2z2vAZdIGc1pLb/sHHu1dtgFsecVHqso61n/8iFyPrEqEmsBTyErzJYfv54HY443upS6FvV/0dIMo1yrf/7+ND/ETb/sqV7/3hz690298SHrumTFf3gFFiqVgqeU5yqCzbQIaBxsWAARfoc84LPIiYVUZqZ/4NJASiO2f6QJpfEoeYL7AOJSKPnSxM/+4f8Mfu9Mn3IXf/8MOoIa6666666/6gXoegoHgAUbQSOfkM7gEh/V2NVwAZcBL8QieipHCv+AGG7X25wFezCr2XsFZhp4cxD7f0E4Fb4q7SP/b0sAAgEwOefSJaVHje3/t/0g/S1111111/xD7J2CCAK3NJoOr4EuBczcdi1dg14FHoJCnpDZzzjQnE1AJH60/q+Bjg5Qe7fYxj//1dAzjXlMuLz7/ie54vm3cDQ7ObmqsA1l9/gTX4u6Ra3vI4RDaxhwBJBPF1ALRhioXlQcZ3hvYSg8QrI2c7/vGACVGTFOA8SC7MArcfnquA1l9/rUgZ+cLaFqPj/4cNxE2+JS6Wr7TiFoTIio8v/4fqCH33333333/xt7DwoHgAJWFKeIWkhi9qHYgEnIu5fG//DAnbIAsK2LpxAv9gAKZgkUea3Gbl9ohNmQLEklpJv+B/N2BXzTdO4GU/wSlSRbABkeDFU+so4xGgmksei8cSg/1ZoABPYw5VgRyaHIgkWTCwA4mWPg5dOQxyg1DgDhguysBHbTNkCQGK6XXaf1+GZ7ARx4pemJv//eHYZieGIh5gpb/+IPaNxcyqUu48Ooft/hP6JyKQiFUT0fOhrQEL0DnnbD7lUbkuXR/v9/+ofpa66666///4UC0AFGKwqPGI/u9+ADpiRJPNYQ339X4qQTxfFuxQHOgFdaJ8Nd8CNHmAKAvXF/3+AuD6aDJqLOPjv9xjyur/zKg0eA0Ozm5qrANZff4E1+LukXt7yOEQmsYcATQTRdTBMA/CQzl6ogpx8J+9ufX/gFbj89VwGsnv9pK6nsMpzfvv+5/m38JwFowxULyoOM7wvsJQeIVkbFO/7xgAlRkxTgPGguzhw3ETb4lLpavtOIWhMiKjy//h+4IRQDffffffff7EbhHknYIIADzDY0X3lhghP40fDX5OYxskDit/svEhtRJJf+2AGTwxUNjKMKRYfpGYiNS3FE4n740ACfCOJtNy3+3C/JEovZpnGb2AiixSdKTf/+DDmeobpt74SHiHZq0c70AHEyxcFJpiFMQPQ4AzQLgsEDPmbPRK3IyFUzst4a0QDaDnngwmsMyHmHlbxB7ROdEmMXzw8YfV1Ez2JiH+8/5IIb7777776666666666666666666666777666666666676666666666666666666666666666666777666666667776666666666766666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668AAABTUGaOBPgG/gJDmx/h9AtHM+lWmnsJhDoCQ8BEV6BUO+cg/ELiFxC4hcQuIXELiFxC4hcQuIXELr4FU753jojAqnfO8dEYFU753jojAqnfO8dEYFU753jojBlyBiATv9P79fBGd87DMdEYFU753jojAqnfO8dEYFU753jojAqnfO8dEYFU753jojAqnfO8dEYFU753jojAqnfOyx0RgVTvneOiMCqd87x0RgVTvneOiMCqd87x0RgVTvneOiMCqd87x0RgVTvneOiMCqd87x0RgyEdH4ITvneOiMCqd87x0RgVTvneOiMCqd87x0Rg0PwQnfO9n8/n8/n8/n8/n7O+fiT+fz+fz+fz+fz+fgQkAkPoBMcEoSxryr2q8q8REQ6AkPASWD/iRwcRZ/w3B/Po8EMLiPEeI8R4jxHiPEcni8MYjgVRHiOvAyeBk8E8AAAAU9BmkArwDfYCSmBJk+/AoUE3jTY/w+g2N2DSZ8iEtYjojuKIQohcBIcQsCoPYJrP3vX++K8QgV/FfFfFfFfFfFfFfFfFfFZ/8EwJFrWt+AJBgVDvJ8Wd+4FQ7yfFnfuBUO8nxZ37gVDvJ8Wd+4FQ7yfFnfuBUO8nxZ37gVDvJ8Wd+4FQ7yfFnfuBUO8nxZ37gVDvJ8Wd+4FQ7yfFnfuBUO8nxZ37gVDvJ8Wd+4FQ7yfFnfuBUO8nxZ37gVDvJ8Wd+4FQ7yfFnfuBUO8nxZ37gVDvJ8Wd+4FQ7yfFnfuBUO8nxZ37gVDvJ8Wd+4FQ7yfFnfuBUO8nxZ37gVDvJ8Wd+4FQ7yfFnfuBUO8h4Kc/n8/n8/n8/n8/Rg//7BWGg0pn3fPCeHcUeG8/n8/n8/n8/n8/Agv8gJif8J8QsbfcCEeCeFxHiPEeI8R4jxHiOAVeAAAAQ5BmmAnwDevASEBdcYgg7RuAkJghWuAL17gVB7GX+tfASGN/vOgYwKgtgwuzsFsb/fcCod87xv99wKh3zvG/33AqHfO8b/fcCod87xv99wKh3zvG/33AqHfO8b/fcCo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\" type=\"video/mp4\">\n",
Markus Holzer's avatar
Markus Holzer committed
       " Your browser does not support the video tag.\n",
       "</video>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ani = ps.plot.scalar_field_animation(timeloop, rescale=True, frames=12)\n",
    "ps.jupyter.display_animation(ani)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "ps.jupyter.set_display_mode('image_update')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
Markus Holzer's avatar
Markus Holzer committed
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABRAAAAH5CAYAAAD5mBLdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAoG0lEQVR4nO3df3CV5Z3w/8/h1yFikiVGcpKS0uyWbrcb6jNFV2FUUDDKiNbqVKs7++As7VQFthl03KJ/mHZ2ieO06A6sdt118FdtnGdWrDO6anhUKMu6gxFHsLuO3UUFSSZTH0yAYsKP+/tHt+frAS5sMCEGX6+Ze4Zz3dc557qdyxjenh+5LMuyAAAAAAA4ilHDvQAAAAAA4NNLQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBpzHAv4HgcOnQodu7cGeXl5ZHL5YZ7OQAAAAAwomRZFrt37466uroYNerYrzEckQFx586dUV9fP9zLAAAAAIARbfv27TF58uRjzhmRAbG8vDwifnuBFRUVw7waAIbb1yv/93Av4bhkZzfGD//pwfhqPj/cSwE+YtWuL8S6b0yNAzu7hnspMCR+3vPwcC8BgE+B3t7eqK+vL3a2YxmRAfF3b1uuqKgQEAGIMbmxw72E45KNGR+nlo+KiryPJIZPk/H7x8SYUfmIEfqzBT6Ov0MB8FG/z8cD+hsLAAAAAJAkIAIAAAAASQIiAAAAAJA0oIDY2toaZ511VpSXl8ekSZPiiiuuiDfffLNkzvXXXx+5XK7kOOecc0rm9PX1xZIlS6K6ujomTJgQl19+eezYseOTXw0AAAAAMKgGFBDXrVsXixYtipdffjna29vjwIED0dTUFHv37i2Zd8kll0RnZ2fxeOaZZ0rONzc3x5o1a6KtrS02bNgQe/bsifnz58fBgwc/+RUBAAAAAINmQN/C/Oyzz5bcXr16dUyaNCk6Ojri/PPPL47n8/koFApHfYyenp544IEH4pFHHom5c+dGRMSjjz4a9fX1sXbt2rj44osHeg0AAAAAwBD5RJ+B2NPTExERVVVVJeMvvfRSTJo0Kb70pS/Fd77zneju7i6e6+joiP3790dTU1NxrK6uLhobG2Pjxo1HfZ6+vr7o7e0tOQAAAACAoXfcATHLsli6dGmce+650djYWByfN29e/PSnP40XXnghfvzjH8emTZviwgsvjL6+voiI6OrqinHjxsXEiRNLHq+mpia6urqO+lytra1RWVlZPOrr64932QAAAADAAAzoLcwftXjx4nj99ddjw4YNJePXXHNN8c+NjY1x5plnxpQpU+Lpp5+OK6+8Mvl4WZZFLpc76rlly5bF0qVLi7d7e3tFRAAAAAA4AY7rFYhLliyJp556Kl588cWYPHnyMefW1tbGlClT4q233oqIiEKhEP39/bFr166Sed3d3VFTU3PUx8jn81FRUVFyAAAAAABDb0ABMcuyWLx4cTzxxBPxwgsvRENDw8fe5/3334/t27dHbW1tRERMnz49xo4dG+3t7cU5nZ2dsXXr1pg5c+YAlw8AAAAADKUBvYV50aJF8dhjj8XPf/7zKC8vL35mYWVlZZSVlcWePXuipaUlrrrqqqitrY233347brvttqiuro5vfOMbxbkLFy6Mm2++OU477bSoqqqKW265JaZNm1b8VmYAAAAA4NNhQAHxvvvui4iI2bNnl4yvXr06rr/++hg9enRs2bIlHn744fjggw+itrY2Lrjggnj88cejvLy8OP/uu++OMWPGxNVXXx379u2LOXPmxIMPPhijR4/+5FcEAAAAAAyaAQXELMuOeb6srCyee+65j32c8ePHx8qVK2PlypUDeXoAAAAA4AQ7ri9RAQAAAAA+GwREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBJQAQAAAAAkgREAAAAACBpQAGxtbU1zjrrrCgvL49JkybFFVdcEW+++WbJnCzLoqWlJerq6qKsrCxmz54db7zxRsmcvr6+WLJkSVRXV8eECRPi8ssvjx07dnzyqwEAAAAABtWAAuK6deti0aJF8fLLL0d7e3scOHAgmpqaYu/evcU5d911V6xYsSJWrVoVmzZtikKhEBdddFHs3r27OKe5uTnWrFkTbW1tsWHDhtizZ0/Mnz8/Dh48OHhXBgAAAAB8YmMGMvnZZ58tub169eqYNGlSdHR0xPnnnx9ZlsU999wTt99+e1x55ZUREfHQQw9FTU1NPPbYY/Hd7343enp64oEHHohHHnkk5s6dGxERjz76aNTX18fatWvj4osvPuJ5+/r6oq+vr3i7t7d3wBcKAAAAAAzcJ/oMxJ6enoiIqKqqioiIbdu2RVdXVzQ1NRXn5PP5mDVrVmzcuDEiIjo6OmL//v0lc+rq6qKxsbE453Ctra1RWVlZPOrr6z/JsgEAAACA39NxB8Qsy2Lp0qVx7rnnRmNjY0REdHV1RURETU1Nydyampriua6urhg3blxMnDgxOedwy5Yti56enuKxffv24102AAAAADAAA3oL80ctXrw4Xn/99diwYcMR53K5XMntLMuOGDvcsebk8/nI5/PHu1QAAAAA4Dgd1ysQlyxZEk899VS8+OKLMXny5OJ4oVCIiDjilYTd3d3FVyUWCoXo7++PXbt2JecAAAAAAJ8OAwqIWZbF4sWL44knnogXXnghGhoaSs43NDREoVCI9vb24lh/f3+sW7cuZs6cGRER06dPj7Fjx5bM6ezsjK1btxbnAAAAAACfDgN6C/OiRYvisccei5///OdRXl5efKVhZWVllJWVRS6Xi+bm5li+fHlMnTo1pk6dGsuXL49TTjklrrvuuuLchQsXxs033xynnXZaVFVVxS233BLTpk0rfiszAAAAAPDpMKCAeN9990VExOzZs0vGV69eHddff31ERNx6662xb9++uOmmm2LXrl1x9tlnx/PPPx/l5eXF+XfffXeMGTMmrr766ti3b1/MmTMnHnzwwRg9evQnuxoAAAAAYFANKCBmWfaxc3K5XLS0tERLS0tyzvjx42PlypWxcuXKgTw9AAAAAHCCHdeXqAAAAAAAnw0CIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkCIgAAAACQJCACAAAAAEkDDojr16+Pyy67LOrq6iKXy8WTTz5Zcv7666+PXC5Xcpxzzjklc/r6+mLJkiVRXV0dEyZMiMsvvzx27NjxiS4EAAAAABh8Aw6Ie/fujTPOOCNWrVqVnHPJJZdEZ2dn8XjmmWdKzjc3N8eaNWuira0tNmzYEHv27In58+fHwYMHB34FAAAAAMCQGTPQO8yb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uTmbMGFC9vbbbw/30qDE7t27iz+DIyJbsWJFtnnz5uydd97JsizL7rzzzqyysjJ74oknsi1btmTXXnttVltbm/X29hYf44YbbsgmT56crV27Nnv11VezCy+8MDvjjDOyAwcODNdl8Rl14403ZpWVldlLL71U8vvyb37zm+Ice5qRYtmyZdn69euzbdu2Za+//np22223ZaNGjcqef/75LMvsZUa+j34Lc5bZ0xwfAfEwq1evziLiqMdHvfPOO9mll16alZWVZVVVVdnixYuzDz/8sGTO66+/np133nlZPp/PCoVC1tLSkh06dOhEXg5kCxYsOOp+fvHFF4tz7GdGur//+7/PpkyZko0bNy772te+lq1bt264lwRHePHFF4/683jBggVZlmXZoUOHsjvuuCMrFApZPp/Pzj///GzLli0lj7Fv375s8eLFWVVVVVZWVpbNnz8/e/fdd4fhavisS/2+vHr16uIce5qR4i//8i+Lv0ecfvrp2Zw5c4rxMMvsZUa+wwOiPc3xyGXZ/3wTAgAAAADAYT4zn4EIAAAAAAycgAgAAAAAJAmIAAAAAECSgAgAAAAAJAmIAAAAAECSgAgAAAAAJAmIAAAAAECSgAgAAAAAJAmIAAAAAECSgAgAAAAAJAmIAAAAAEDS/weMm/CTN0ZaGQAAAABJRU5ErkJggg==",
Markus Holzer's avatar
Markus Holzer committed
      "text/plain": [
Markus Holzer's avatar
Markus Holzer committed
       "<Figure size 1600x600 with 1 Axes>"
Markus Holzer's avatar
Markus Holzer committed
      ]
     },
Markus Holzer's avatar
Markus Holzer committed
     "metadata": {},
Markus Holzer's avatar
Markus Holzer committed
     "output_type": "display_data"
    }
   ],
   "source": [
    "ani = ps.plot.scalar_field_animation(timeloop, rescale=True, frames=12)\n",
    "ps.jupyter.display_animation(ani)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def grid_update_function(image):\n",
    "    for i in range(40):\n",
    "        c_sync()\n",
    "        dh.run_kernel(kernel)\n",
    "    return dh.gather_array('c')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
Markus Holzer's avatar
Markus Holzer committed
      "image/png": "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",
Markus Holzer's avatar
Markus Holzer committed
      "text/plain": [
Markus Holzer's avatar
Markus Holzer committed
       "<Figure size 1600x600 with 1 Axes>"
Markus Holzer's avatar
Markus Holzer committed
      ]
     },
Markus Holzer's avatar
Markus Holzer committed
     "metadata": {},
Markus Holzer's avatar
Markus Holzer committed
     "output_type": "display_data"
    }
   ],
   "source": [
    "animation = ps.jupyter.make_imshow_animation(dh.cpu_arrays[\"c\"], grid_update_function, frames=300)"
   ]
Markus Holzer's avatar
Markus Holzer committed
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
Markus Holzer's avatar
Markus Holzer committed
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "Failed to import any of the following Qt binding modules: PyQt6, PySide6, PyQt5, PySide2",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[14], line 2\u001b[0m\n\u001b[1;32m      1\u001b[0m ps\u001b[38;5;241m.\u001b[39mjupyter\u001b[38;5;241m.\u001b[39mset_display_mode(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvideo\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 2\u001b[0m \u001b[43mps\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjupyter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_display_mode\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mwindow\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m      3\u001b[0m ps\u001b[38;5;241m.\u001b[39mjupyter\u001b[38;5;241m.\u001b[39mset_display_mode(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mimage_update\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m      4\u001b[0m ps\u001b[38;5;241m.\u001b[39mjupyter\u001b[38;5;241m.\u001b[39mactivate_ipython()\n",
      "File \u001b[0;32m~/pystencils/pystencils/src/pystencils/jupyter.py:115\u001b[0m, in \u001b[0;36mset_display_mode\u001b[0;34m(mode)\u001b[0m\n\u001b[1;32m    113\u001b[0m     display_animation_func \u001b[38;5;241m=\u001b[39m display_as_html_video\n\u001b[1;32m    114\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m animation_display_mode \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mwindow\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m--> 115\u001b[0m     \u001b[43mipython\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmagic\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmatplotlib qt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m    116\u001b[0m     display_animation_func \u001b[38;5;241m=\u001b[39m display_in_extra_window\n\u001b[1;32m    117\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m animation_display_mode \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_update\u001b[39m\u001b[38;5;124m'\u001b[39m:\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/IPython/core/interactiveshell.py:2539\u001b[0m, in \u001b[0;36mInteractiveShell.magic\u001b[0;34m(self, arg_s)\u001b[0m\n\u001b[1;32m   2537\u001b[0m magic_name, _, magic_arg_s \u001b[38;5;241m=\u001b[39m arg_s\u001b[38;5;241m.\u001b[39mpartition(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m   2538\u001b[0m magic_name \u001b[38;5;241m=\u001b[39m magic_name\u001b[38;5;241m.\u001b[39mlstrip(prefilter\u001b[38;5;241m.\u001b[39mESC_MAGIC)\n\u001b[0;32m-> 2539\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_line_magic\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmagic_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmagic_arg_s\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_stack_depth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/IPython/core/interactiveshell.py:2417\u001b[0m, in \u001b[0;36mInteractiveShell.run_line_magic\u001b[0;34m(self, magic_name, line, _stack_depth)\u001b[0m\n\u001b[1;32m   2415\u001b[0m     kwargs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlocal_ns\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_local_scope(stack_depth)\n\u001b[1;32m   2416\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuiltin_trap:\n\u001b[0;32m-> 2417\u001b[0m     result \u001b[38;5;241m=\u001b[39m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   2419\u001b[0m \u001b[38;5;66;03m# The code below prevents the output from being displayed\u001b[39;00m\n\u001b[1;32m   2420\u001b[0m \u001b[38;5;66;03m# when using magics with decodator @output_can_be_silenced\u001b[39;00m\n\u001b[1;32m   2421\u001b[0m \u001b[38;5;66;03m# when the last Python token in the expression is a ';'.\u001b[39;00m\n\u001b[1;32m   2422\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(fn, magic\u001b[38;5;241m.\u001b[39mMAGIC_OUTPUT_CAN_BE_SILENCED, \u001b[38;5;28;01mFalse\u001b[39;00m):\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/IPython/core/magics/pylab.py:99\u001b[0m, in \u001b[0;36mPylabMagics.matplotlib\u001b[0;34m(self, line)\u001b[0m\n\u001b[1;32m     97\u001b[0m     \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAvailable matplotlib backends: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m backends_list)\n\u001b[1;32m     98\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m---> 99\u001b[0m     gui, backend \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mshell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43menable_matplotlib\u001b[49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgui\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlower\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43misinstance\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgui\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mstr\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgui\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    100\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_show_matplotlib_backend(args\u001b[38;5;241m.\u001b[39mgui, backend)\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/IPython/core/interactiveshell.py:3603\u001b[0m, in \u001b[0;36mInteractiveShell.enable_matplotlib\u001b[0;34m(self, gui)\u001b[0m\n\u001b[1;32m   3599\u001b[0m         \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mWarning: Cannot change to a different GUI toolkit: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m   3600\u001b[0m                 \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m Using \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m instead.\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m (gui, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpylab_gui_select))\n\u001b[1;32m   3601\u001b[0m         gui, backend \u001b[38;5;241m=\u001b[39m pt\u001b[38;5;241m.\u001b[39mfind_gui_and_backend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpylab_gui_select)\n\u001b[0;32m-> 3603\u001b[0m \u001b[43mpt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mactivate_matplotlib\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbackend\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   3604\u001b[0m configure_inline_support(\u001b[38;5;28mself\u001b[39m, backend)\n\u001b[1;32m   3606\u001b[0m \u001b[38;5;66;03m# Now we must activate the gui pylab wants to use, and fix %run to take\u001b[39;00m\n\u001b[1;32m   3607\u001b[0m \u001b[38;5;66;03m# plot updates into account\u001b[39;00m\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/IPython/core/pylabtools.py:360\u001b[0m, in \u001b[0;36mactivate_matplotlib\u001b[0;34m(backend)\u001b[0m\n\u001b[1;32m    355\u001b[0m \u001b[38;5;66;03m# Due to circular imports, pyplot may be only partially initialised\u001b[39;00m\n\u001b[1;32m    356\u001b[0m \u001b[38;5;66;03m# when this function runs.\u001b[39;00m\n\u001b[1;32m    357\u001b[0m \u001b[38;5;66;03m# So avoid needing matplotlib attribute-lookup to access pyplot.\u001b[39;00m\n\u001b[1;32m    358\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m pyplot \u001b[38;5;28;01mas\u001b[39;00m plt\n\u001b[0;32m--> 360\u001b[0m \u001b[43mplt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mswitch_backend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbackend\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    362\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow\u001b[38;5;241m.\u001b[39m_needmain \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m    363\u001b[0m \u001b[38;5;66;03m# We need to detect at runtime whether show() is called by the user.\u001b[39;00m\n\u001b[1;32m    364\u001b[0m \u001b[38;5;66;03m# For this, we wrap it into a decorator which adds a 'called' flag.\u001b[39;00m\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/pyplot.py:271\u001b[0m, in \u001b[0;36mswitch_backend\u001b[0;34m(newbackend)\u001b[0m\n\u001b[1;32m    268\u001b[0m \u001b[38;5;66;03m# have to escape the switch on access logic\u001b[39;00m\n\u001b[1;32m    269\u001b[0m old_backend \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mdict\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__getitem__\u001b[39m(rcParams, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbackend\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m--> 271\u001b[0m backend_mod \u001b[38;5;241m=\u001b[39m \u001b[43mimportlib\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimport_module\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    272\u001b[0m \u001b[43m    \u001b[49m\u001b[43mcbook\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_backend_module_name\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewbackend\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    274\u001b[0m required_framework \u001b[38;5;241m=\u001b[39m _get_required_interactive_framework(backend_mod)\n\u001b[1;32m    275\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m required_framework \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py:126\u001b[0m, in \u001b[0;36mimport_module\u001b[0;34m(name, package)\u001b[0m\n\u001b[1;32m    124\u001b[0m             \u001b[38;5;28;01mbreak\u001b[39;00m\n\u001b[1;32m    125\u001b[0m         level \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m--> 126\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_bootstrap\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_gcd_import\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m[\u001b[49m\u001b[43mlevel\u001b[49m\u001b[43m:\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpackage\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlevel\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m<frozen importlib._bootstrap>:1204\u001b[0m, in \u001b[0;36m_gcd_import\u001b[0;34m(name, package, level)\u001b[0m\n",
      "File \u001b[0;32m<frozen importlib._bootstrap>:1176\u001b[0m, in \u001b[0;36m_find_and_load\u001b[0;34m(name, import_)\u001b[0m\n",
      "File \u001b[0;32m<frozen importlib._bootstrap>:1147\u001b[0m, in \u001b[0;36m_find_and_load_unlocked\u001b[0;34m(name, import_)\u001b[0m\n",
      "File \u001b[0;32m<frozen importlib._bootstrap>:690\u001b[0m, in \u001b[0;36m_load_unlocked\u001b[0;34m(spec)\u001b[0m\n",
      "File \u001b[0;32m<frozen importlib._bootstrap_external>:940\u001b[0m, in \u001b[0;36mexec_module\u001b[0;34m(self, module)\u001b[0m\n",
      "File \u001b[0;32m<frozen importlib._bootstrap>:241\u001b[0m, in \u001b[0;36m_call_with_frames_removed\u001b[0;34m(f, *args, **kwds)\u001b[0m\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/backends/backend_qt5agg.py:7\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m backends\n\u001b[1;32m      6\u001b[0m backends\u001b[38;5;241m.\u001b[39m_QT_FORCE_QT5_BINDING \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m----> 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbackend_qtagg\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (    \u001b[38;5;66;03m# noqa: F401, E402 # pylint: disable=W0611\u001b[39;00m\n\u001b[1;32m      8\u001b[0m     _BackendQTAgg, FigureCanvasQTAgg, FigureManagerQT, NavigationToolbar2QT,\n\u001b[1;32m      9\u001b[0m     FigureCanvasAgg, FigureCanvasQT)\n\u001b[1;32m     12\u001b[0m \u001b[38;5;129m@_BackendQTAgg\u001b[39m\u001b[38;5;241m.\u001b[39mexport\n\u001b[1;32m     13\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m \u001b[38;5;21;01m_BackendQT5Agg\u001b[39;00m(_BackendQTAgg):\n\u001b[1;32m     14\u001b[0m     \u001b[38;5;28;01mpass\u001b[39;00m\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/backends/backend_qtagg.py:9\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mctypes\u001b[39;00m\n\u001b[1;32m      7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtransforms\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Bbox\n\u001b[0;32m----> 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mqt_compat\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m QT_API, _enum\n\u001b[1;32m     10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbackend_agg\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m FigureCanvasAgg\n\u001b[1;32m     11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbackend_qt\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m QtCore, QtGui, _BackendQT, FigureCanvasQT\n",
      "File \u001b[0;32m/opt/local/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/backends/qt_compat.py:135\u001b[0m\n\u001b[1;32m    133\u001b[0m         \u001b[38;5;28;01mbreak\u001b[39;00m\n\u001b[1;32m    134\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 135\u001b[0m         \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m(\n\u001b[1;32m    136\u001b[0m             \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFailed to import any of the following Qt binding modules: \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m    137\u001b[0m             \u001b[38;5;241m.\u001b[39mformat(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(_ETS\u001b[38;5;241m.\u001b[39mvalues())))\n\u001b[1;32m    138\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:  \u001b[38;5;66;03m# We should not get there.\u001b[39;00m\n\u001b[1;32m    139\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAssertionError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUnexpected QT_API: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mQT_API\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n",
      "\u001b[0;31mImportError\u001b[0m: Failed to import any of the following Qt binding modules: PyQt6, PySide6, PyQt5, PySide2"
     ]
    }
   ],
Markus Holzer's avatar
Markus Holzer committed
   "source": [
    "ps.jupyter.set_display_mode(\"video\")\n",
    "ps.jupyter.set_display_mode(\"window\")\n",
    "ps.jupyter.set_display_mode(\"image_update\")\n",
    "ps.jupyter.activate_ipython()"
   ]
Markus Holzer's avatar
Markus Holzer committed
  }
 ],
 "metadata": {
  "kernelspec": {
Markus Holzer's avatar
Markus Holzer committed
   "display_name": "Python 3 (ipykernel)",
Markus Holzer's avatar
Markus Holzer committed
   "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",
Markus Holzer's avatar
Markus Holzer committed
   "version": "3.11.4"
Markus Holzer's avatar
Markus Holzer committed
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}