{ "cells": [ { "cell_type": "markdown", "id": "e20a7d67-5104-43b3-a36d-5889264979ff", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# Particle Monitor: WR75 study case\n", "In this script, we showcase how the particle monitor data from CST can be treated. Source `CST` file for the electromagnetic and PIC solvers are provided." ] }, { "cell_type": "code", "execution_count": 1, "id": "a8bbe044-365e-4b81-9c6a-142a9648836e", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;37m[INFO ] [log_manager.py ]\u001b[0m Starting log for Simultipac - Version: 2.0.1rc1.dev22+g67f2926.d20250414, Commit: 67f2926fa6435cd4dda78cafa18fcab1d21fb2dc\n" ] } ], "source": [ "from pathlib import Path\n", "\n", "from simultipac.cst.simulation_results import CSTResults, CSTResultsFactory\n", "from simultipac.plotter.default import DefaultPlotter" ] }, { "cell_type": "markdown", "id": "7be4c02b-b9ae-433c-84ae-da447e6e212d", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Setting up the 3D backend" ] }, { "cell_type": "markdown", "id": "d63bfd36-05b9-4565-8b9c-04fa130d5192", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "It is mandatory to set up the proper 3D backend for your configuration.\n", "You may have to test several backends; the most reliable way is to run your python script from bash.\n", "\n", "All 3D plots are created usinge the excellent [vedo](https://vedo.embl.es/) library." ] }, { "cell_type": "code", "execution_count": 2, "id": "8bc69df1-89ec-4317-b9d4-14c969cb7540", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;37m[INFO ] [default.py ]\u001b[0m Applying patch for k3d.\n" ] } ], "source": [ "plotter = DefaultPlotter(\n", " # To output interactive 3d in .html (needs k3d library):\n", " vedo_backend=\"k3d\",\n", " # To output interactive 3d that does not appear in .html:\n", " # (this is my default choice for python scripts called from bash)\n", " # vedo_backend=\"vtk\",\n", " # To output non-interactive 2d only, but that creates an image in .html:\n", " # (better for online documentation)\n", " # vedo_backend=\"2d\",\n", ")" ] }, { "cell_type": "markdown", "id": "6cd3960d-ed89-4a41-ab7a-ce3744b98874", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Loading files" ] }, { "cell_type": "markdown", "id": "426792aa-5049-41b2-b86f-876725ccbae5", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "We need three paths:\n", "1. To the `STL` file holding the geometry.\n", "2. To the folder where all the particle monitor files are stored.\n", "3. To the folder holding classic `CST` output, such a `Parameters.txt` and `ParticleInfo [PIC]/`.\n", " - In this example I did not have this folder, so I feed in dummy data instead." ] }, { "cell_type": "code", "execution_count": 3, "id": "e9b03fa5-bd0c-449d-aa41-cbb3fe7b83b7", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "stl_path = Path(\"../data/cst/WR75_reduced/wr75.stl\")\n", "folder_particle_monitor=Path(\"../data/cst/WR75_reduced/Export/3d\")\n", "folder_results=Path(\"../../../examples/cst/Export_Parametric/0307-5216540\")" ] }, { "cell_type": "raw", "id": "34b97d83-112f-4525-a0c7-f9e811756c1b", "metadata": { "editable": true, "raw_mimetype": "text/x-rst", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Set up the :class:`.CSTResultsFactory`; it can be reused to create different :class:`.CSTResults` with different particle monitor data." ] }, { "cell_type": "code", "execution_count": 4, "id": "2645a6db-3489-4105-9705-36ba7ef357c2", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "factory = CSTResultsFactory(\n", " plotter=plotter,\n", " freq_ghz=1.30145,\n", " stl_path=stl_path,\n", " stl_alpha=0.3,\n", ")" ] }, { "cell_type": "raw", "id": "42be736e-81c1-4500-a0a2-e2c08c29c0d7", "metadata": { "raw_mimetype": "text/x-rst", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "The :class:`.CSTResults` can be created.\n", "\n", "As loading all the particle monitor data can take some time, the ``load_first_n_particles`` argument allows one to only load the first particles data.\n", "The actual particle monitor data are stored in :attr:`.CSTResults._particle_monitor` attribute, a :class:`.ParticleMonitor` instance." ] }, { "cell_type": "code", "execution_count": 5, "id": "5a4619ae-9c39-4b5f-8ff3-a0a6633d27a9", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/placais/Documents/simulation/python/simultipac/src/simultipac/particle_monitor/vector.py:145: RankWarning: Polyfit may be poorly conditioned\n", " polynom = np.polyfit(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 56121.\n" ] } ], "source": [ "result: CSTResults = factory.from_simulation_folder(\n", " folderpath=folder_results,\n", " folder_particle_monitor=folder_particle_monitor,\n", " # load_first_n_particles=10,\n", ")" ] }, { "cell_type": "markdown", "id": "aeb91155-e491-44e7-b5ef-5bd7fdc7d5a6", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "The `RankWarning` is raised during the extrapolation of the position and momentum arrays (used to detect collision with the mesh).\n", "It is raised because the distance crossed by the particles between two position monitor files is too high.\n", "Typically, I generally save 20 files per RF period.\n", "Here I just wanted the files to be light enough, hence the low resolution." ] }, { "cell_type": "markdown", "id": "2ec8a5ce-e3c6-430b-8074-23a28639504a", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Histograms" ] }, { "cell_type": "markdown", "id": "e348a73e-d586-4554-a478-a793d499a030", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Below we give some examples of the plottable histograms." ] }, { "cell_type": "code", "execution_count": 6, "id": "653a9342-dfd5-45d1-8197-c30a6664061b", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAGwCAYAAABIC3rIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAR3NJREFUeJzt3XlclWX+//E3IiCgHERlS0Vy33MpI8spJVCpydTK1NTETL9YqanIr8YlK0zH0jatbEQnHZdJm5JxQU2blEzN3SLXtGRxUkEpkeX+/eGDezyChggc4H49H4/zeHju+zrX+dx3Zzjvue7rvo6TYRiGAAAALKyKowsAAABwNAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwvKqOLqAiyMvL0+nTp1WjRg05OTk5uhwAAFAEhmHowoULCgwMVJUqNx4DIhAVwenTp1WvXj1HlwEAAIrh1KlTqlu37g3bEIiKoEaNGpKunFAvLy8HVwMAAIoiIyND9erVM7/Hb4RAVAT5l8m8vLwIRAAAVDBFme7CpGoAAGB5BCIAAGB5BCIAAGB5zCECANy03NxcZWdnO7oMQK6urn94S31REIgAAEVmGIZSUlJ0/vx5R5cCSJKqVKmi4OBgubq63lI/BCIAQJHlhyFfX195eHiwWC0cKn/h5OTkZNWvX/+WPo8EIgBAkeTm5pphqFatWo4uB5Ak1alTR6dPn1ZOTo5cXFyK3Q+TqgEARZI/Z8jDw8PBlQD/k3+pLDc395b6IRABAG4Kl8lQnpTU59GhgWju3Llq06aNuQJ0SEiI1qxZY+6///775eTkZPcYMWKEXR8nT55URESEPDw85Ovrq/HjxysnJ8euzebNm9W+fXu5ubmpUaNGiouLK4vDAwAAFYRD5xDVrVtX06dPV+PGjWUYhhYuXKhHHnlEu3fvVsuWLSVJzzzzjF555RXzNVcP1ebm5ioiIkL+/v7atm2bkpOTNWjQILm4uOj111+XJB0/flwREREaMWKEFi9erI0bN2rYsGEKCAhQeHh42R4wAAAol5wMwzAcXcTVfHx8NHPmTEVGRur+++/XHXfcodmzZxfads2aNXrooYd0+vRp+fn5SZLmzZun6OhonTlzRq6uroqOjlZ8fLwOHDhgvq5fv346f/681q5dW6SaMjIyZLPZlJ6ezm+ZAbCsS5cu6fjx4woODla1atXM7Q0mxpdpHSemR5Tp+13PH31HFdWQIUN0/vx5ffbZZyVSl9Vc73Mp3dz3d7mZQ5Sbm6ulS5cqMzNTISEh5vbFixerdu3aatWqlWJiYvTbb7+Z+xITE9W6dWszDElSeHi4MjIydPDgQbNNaGio3XuFh4crMTHxurVkZWUpIyPD7gEAwNVWrlypadOm3XI/c+bMYSpHOeDw2+7379+vkJAQXbp0SdWrV9eqVavUokULSVL//v0VFBSkwMBA7du3T9HR0UpKStLKlSslXVkP4+owJMl8npKScsM2GRkZ+v333+Xu7l6gptjYWE2dOrXEjxUAUHn4+PiUSD82m61E+invLl++fMuLJ5Ymh48QNW3aVHv27NH27ds1cuRIDR48WIcOHZIkDR8+XOHh4WrdurUGDBigRYsWadWqVTp69Gip1hQTE6P09HTzcerUqVJ9PwBA6crLy1NsbKyCg4Pl7u6utm3b6p///KekKzfeODk5ad26dWrXrp3c3d3VtWtXpaWlac2aNWrevLm8vLzUv39/u6sU999/v0aPHm0+f//999W4cWNVq1ZNfn5+6tu3r7nvn//8p1q3bi13d3fVqlVLoaGhyszMlHTlklmvXr3MtllZWXr++efl6+uratWq6d5779WOHTvM/fn1bty4UR07dpSHh4fuueceJSUlFfl8/Otf/1L79u1VrVo13X777Zo6dardDUlOTk6aP3++Hn30UXl4eKhx48b6/PPP7fo4cOCAevTooerVq8vPz09PPfWU/vvf/9qdn1GjRmn06NGqXbu2OW/3888/N8/TAw88oIULF8rJyUnnz59XZmamvLy8zP82+T777DN5enrqwoULRT7Gm+XwQOTq6qpGjRqpQ4cOio2NVdu2bTVnzpxC23bq1EmSdOTIEUmSv7+/UlNT7drkP/f3979hGy8vr0JHhyTJzc3NvPMt/2ElDSbGl/mcAAAoTbGxsVq0aJHmzZungwcPasyYMRo4cKC2bNlitpkyZYreffddbdu2TadOndLjjz+u2bNna8mSJYqPj9f69ev1zjvvFNr/zp079fzzz+uVV15RUlKS1q5dqy5dukiSkpOT9eSTT2ro0KH6/vvvtXnzZvXu3VvXm8I7YcIEffrpp1q4cKG+++47NWrUSOHh4Tp79qxdu5deekmzZs3Szp07VbVqVQ0dOrRI5+I///mPBg0apBdeeEGHDh3SBx98oLi4OL322mt27aZOnarHH39c+/btU8+ePTVgwACzhvPnz6tr165q166ddu7cqbVr1yo1NVWPP/64XR8LFy6Uq6urtm7dqnnz5un48ePq27evevXqpb179+rZZ5/VSy+9ZLb39PRUv379tGDBArt+FixYoL59+6pGjRpFOsbicPgls2vl5eUpKyur0H179uyRJAUEBEiSQkJC9NprryktLU2+vr6SpISEBHl5eZmX3UJCQvTvf//brp+EhAS7eUq4efmBqbxMbgSA68nKytLrr7+uDRs2mH/7b7/9dn399df64IMPNHz4cEnSq6++qs6dO0uSIiMjFRMTo6NHj+r222+XJPXt21dffvmloqOjC7zHyZMn5enpqYceekg1atRQUFCQ2rVrJ+lKIMrJyVHv3r0VFBQkSWrdunWhtWZmZmru3LmKi4tTjx49JEkfffSREhIS9PHHH2v8+PFm29dee01/+tOfJEkTJ05URESELl26VGBi8bWmTp2qiRMnavDgwea5mDZtmiZMmKDJkyeb7YYMGaInn3xSkvT666/r7bff1rfffqvu3bvr3XffVbt27cw7uiXpb3/7m+rVq6cff/xRTZo0kSQ1btxYM2bMMNtMnDhRTZs21cyZMyVduUp04MABuzA2bNgw3XPPPUpOTlZAQIDS0tL073//Wxs2bLjhcd0qh44QxcTE6KuvvtKJEye0f/9+xcTEaPPmzRowYICOHj2qadOmadeuXTpx4oQ+//xzDRo0SF26dFGbNm0kSWFhYWrRooWeeuop7d27V+vWrdPLL7+sqKgoubm5SZJGjBihY8eOacKECfrhhx/0/vvva/ny5RozZowjDx0AUEaOHDmi3377TQ8++KCqV69uPhYtWmQ3BSP/u0W6MtfUw8PDDEP529LS0gp9jwcffFBBQUG6/fbb9dRTT2nx4sXm5bW2bduqW7duat26tR577DF99NFHOnfuXKH9HD16VNnZ2WYwkyQXFxfddddd+v777+3aXl1v/kDB9eq72t69e/XKK6/YnYtnnnlGycnJdpcEr+7f09NTXl5eZv979+7Vl19+addHs2bNzGPI16FDB7v3TkpK0p133mm37a677irwvGXLllq4cKEk6ZNPPlFQUJA54lZaHDpClJaWpkGDBik5OVk2m01t2rTRunXr9OCDD+rUqVPasGGDZs+erczMTNWrV099+vTRyy+/bL7e2dlZq1ev1siRIxUSEiJPT08NHjzYbt2i4OBgxcfHa8yYMZozZ47q1q2r+fPnswZRCbn60hqjRQDKo4sXL0qS4uPjddttt9ntc3NzM7/Ar/4dLCcnpwK/i+Xk5KS8vLxC36NGjRr67rvvtHnzZq1fv16TJk3SlClTtGPHDnl7eyshIUHbtm0zL7u99NJL2r59u4KDg4t9XNfWK+m69V3t4sWLmjp1qnr37l1g39WjSzc6/osXL+rhhx/WG2+8UaCP/HAmXQlSxTFs2DC99957mjhxohYsWKCnn3661FdId2gg+vjjj6+7r169enbXdq8nKCiowCWxa91///3avXv3TdcHAKj4WrRoITc3N508edK8xHS1krpRp2rVqgoNDVVoaKgmT54sb29vbdq0Sb1795aTk5M6d+6szp07a9KkSQoKCtKqVas0duxYuz4aNmxozrnJv7yWnZ2tHTt22E3gvhXt27dXUlKSGjVqdEt9fPrpp2rQoIGqVi16lGjatGmB7+yrJ4znGzhwoCZMmKC3335bhw4dMi/vlaZyN4cI5RNzhgBUVDVq1NC4ceM0ZswY5eXl6d5771V6erq2bt0qLy8vM3jcitWrV+vYsWPq0qWLatasqX//+9/Ky8tT06ZNtX37dm3cuFFhYWHy9fXV9u3bdebMGTVv3rxAP56enho5cqTGjx8vHx8f1a9fXzNmzNBvv/2myMjIW65TkiZNmqSHHnpI9evXV9++fVWlShXt3btXBw4c0KuvvlqkPqKiovTRRx/pySef1IQJE+Tj46MjR45o6dKlmj9/vpydnQt93bPPPqs333xT0dHRioyM1J49e8w1mK4eAapZs6Z69+6t8ePHKywsTHXr1r3l4/4jBCKUGkIUYA0V4X/j06ZNU506dRQbG6tjx47J29tb7du31//7f/+vSJeZ/oi3t7dWrlypKVOm6NKlS2rcuLH+8Y9/qGXLlvr+++/11Vdfafbs2crIyFBQUJBmzZplTpq+1vTp05WXl6ennnpKFy5cUMeOHbVu3TrVrFnzluuUrixOvHr1ar3yyit644035OLiombNmmnYsGFF7iMwMFBbt25VdHS0wsLClJWVpaCgIHXv3l1Vqlx/enJwcLD++c9/6sUXX9ScOXMUEhKil156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GDFCx44d04QJE/TDDz/o/fff1/LlyzVmzBiHHTsAACg/HBqI5s6dq/T0dN1///0KCAgwH8uWLZMkubq6asOGDQoLC1OzZs304osvqk+fPvriiy/MPpydnbV69Wo5OzsrJCREAwcO1KBBg/TKK6+YbYKDgxUfH6+EhAS1bdtWs2bN0vz58wu95R4AAFiPk2EYhqOLKO8yMjJks9mUnp4uLy8vR5dTAJeBio91iACg8rqZ7+9yMakaAADAkQhEAADA8ghEAADA8ghEAADA8ghEAADA8ghEAADA8ghEAADA8ghEgPhZDwCwOgIRAACwvKqOLgBwJEaFAAASI0QAAAAEIgAAAC6ZVVBc6gEAoOQwQgQAACyPQAQAACyPQAQAACyPQAQAACyPQAQAACyPQARchZ/wAABrIhABAADLIxABAADLIxABAADLIxABAADLIxABAADLIxABAADL48ddKxhuCS8bV5/nE9MjHFgJAKAsMEIEAAAsj0AEAAAsr1iB6NixYyVdBwAAgMMUKxA1atRIDzzwgD755BNdunSppGsCAAAoU8UKRN99953atGmjsWPHyt/fX88++6y+/fbbkq4NKBf4fTMAqPyKFYjuuOMOzZkzR6dPn9bf/vY3JScn695771WrVq305ptv6syZMyVdJwAAQKm5pUnVVatWVe/evbVixQq98cYbOnLkiMaNG6d69epp0KBBSk5OLqk6AQAASs0tBaKdO3fq//7v/xQQEKA333xT48aN09GjR5WQkKDTp0/rkUceKak6AYfj0hkAVF7FWpjxzTff1IIFC5SUlKSePXtq0aJF6tmzp6pUuZKvgoODFRcXpwYNGpRkrQAAAKWiWIFo7ty5Gjp0qIYMGaKAgIBC2/j6+urjjz++peIAAADKQrEC0eHDh/+wjaurqwYPHlyc7gEAAMpUseYQLViwQCtWrCiwfcWKFVq4cOEtFwUAAFCWihWIYmNjVbt27QLbfX199frrr99yUQAAAGWpWIHo5MmTCg4OLrA9KChIJ0+eLHI/sbGxuvPOO1WjRg35+vqqV69eSkpKsmtz6dIlRUVFqVatWqpevbr69Omj1NTUAvVERETIw8NDvr6+Gj9+vHJycuzabN68We3bt5ebm5saNWqkuLi4oh8wAACo1IoViHx9fbVv374C2/fu3atatWoVuZ8tW7YoKipK33zzjRIS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RyACAACWRyACLI7b7wGAQAQAAEAgAgAAIBABAADLIxABAADLIxABAADLc+hPdwAoP66+04zVqwFYDSNEAADA8ghEAApgbSIAVkMgAgAAlkcgAnBdjBQBsAoCEQAAsDwCEQAAsDwCEYA/xKUzAJUdgQgAAFgeCzMCKDIWbwRQWTFCBAAALI9ABAAALI9ABAAALI9ABAAALI9ABAAALI9ABKBYWJsIQGVCIAIAAJZHIAIAAJZHIAIAAJZHIAIAAJZHIAIAAJZHIAIAAJbHj7sCKFH8ACyAiogRIgC3hPWIAFQGBCIApYawBKCiIBABAADLIxABAADLIxABAADL4y4zACWCuUIAKjJGiAAAgOURiAAAgOWV60A0ZcoUOTk52T2aNWtm7r906ZKioqJUq1YtVa9eXX369FFqaqpdHydPnlRERIQ8PDzk6+ur8ePHKycnp6wPBYC4DR9A+VXu5xC1bNlSGzZsMJ9Xrfq/kseMGaP4+HitWLFCNptNo0aNUu/evbV161ZJUm5uriIiIuTv769t27YpOTlZgwYNkouLi15//fUyPxbAqghBAMq7ch+IqlatKn9//wLb09PT9fHHH2vJkiXq2rWrJGnBggVq3ry5vvnmG919991av369Dh06pA0bNsjPz0933HGHpk2bpujoaE2ZMkWurq6FvmdWVpaysrLM5xkZGaVzcAAAoFwo15fMJOnw4cMKDAzU7bffrgEDBujkyZOSpF27dik7O1uhoaFm22bNmql+/fpKTEyUJCUmJqp169by8/Mz24SHhysjI0MHDx687nvGxsbKZrOZj3r16pXS0QEAgPKgXAeiTp06KS4uTmvXrtXcuXN1/Phx3Xfffbpw4YJSUlLk6uoqb29vu9f4+fkpJSVFkpSSkmIXhvL35++7npiYGKWnp5uPU6dOleyBARaXP5eIS2kAyotyfcmsR48e5r/btGmjTp06KSgoSMuXL5e7u3upva+bm5vc3NxKrX8AAFC+lOsRomt5e3urSZMmOnLkiPz9/XX58mWdP3/erk1qaqo558jf37/AXWf5zwublwQAAKypQgWiixcv6ujRowoICFCHDh3k4uKijRs3mvuTkpJ08uRJhYSESJJCQkK0f/9+paWlmW0SEhLk5eWlFi1alHn918OlAwAAHKtcXzIbN26cHn74YQUFBen06dOaPHmynJ2d9eST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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.hist(\"emission_energy\")" ] }, { "cell_type": "raw", "id": "4a7e63cf-226d-4f9a-9196-d85bd1dcabcc", "metadata": { "editable": true, "raw_mimetype": "", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "You can filter the particles you want to plot with the ``filter`` keyword.\n", "It accepts some magic keywords:\n", "\n", " - ``\"seed\"`` to select seed electrons.\n", " - ``\"emitted\"`` to plot non-seed electrons.\n", " - ``\"collision\"`` for electron that impacted a wall.\n", " - ``\"no collision\"`` for electron that did not impacted any wall.\n", "\n", "This list may be updated in the future.\n", "Check the documentation of the ``particle_monitor`` module: :mod:`.particle_monitor.particle_monitor`.\n", "\n", "You can also provide a function that takes in a :class:`.Particle` object and returns a boolean." ] }, { "cell_type": "code", "execution_count": 7, "id": "7217fd48-eaeb-4e99-aa7c-6e0ae7dfdbae", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAHHCAYAAABeLEexAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQ69JREFUeJzt3XlcVmX+//H3zSooixuLBYL7XrlEjKalJC45mjZluYv1rbA0K5epFLNCbSzHLK1mkpy0zNGstExExcnMddyN1DScEdBCwCUR4fz+6McZb1EDBO4bzuv5eNyPh+ec6z7nczglb6/rOufYDMMwBAAAYGEuji4AAADA0QhEAADA8ghEAADA8ghEAADA8ghEAADA8ghEAADA8ghEAADA8ghEAADA8ghEAADA8ghEACwnLCxMw4cPd2gNx44dk81mU0JCgkPrAPAbAhEAyztw4IDi4uJ07NixItvefvttQgtgAW6OLgAAKlpKSopcXP7378EDBw5o6tSpuuuuuxQWFmbX9u2331adOnUc3qMEoHwRiABYjqenp6NLAOBkGDID4FT++9//auTIkQoMDJSnp6datmyp999/39y+YcMG2Ww2ffLJJ5o6dapuuukm+fj46P7771d2drZyc3M1duxYBQQEqEaNGhoxYoRyc3PtjnH5HKKEhAT96U9/kiTdfffdstlsstls2rBhg8LCwrR//34lJyeb6++66y5zP1lZWRo7dqxCQkLk6empRo0aacaMGSooKLA7XlZWloYPHy4/Pz/5+/tr2LBhysrKKpefH4DSoYcIgNPIyMjQHXfcIZvNptGjR6tu3br66quvFBMTo5ycHI0dO9ZsGx8fLy8vL02cOFGHDx/Wm2++KXd3d7m4uOj06dOKi4vTd999p4SEBIWHh2vy5MlXPWbnzp311FNPac6cOfrzn/+s5s2bS5KaN2+u2bNn68knn1SNGjX0/PPPS5ICAwMlSefPn1eXLl303//+V//3f/+n0NBQffvtt5o0aZLS0tI0e/ZsSZJhGOrbt6+++eYbPfbYY2revLk+/fRTDRs2rPx+kABKzgAAJxETE2MEBwcbP//8s936gQMHGn5+fsb58+eN9evXG5KMVq1aGRcvXjTbPPTQQ4bNZjN69uxp993IyEijfv36duvq169vDBs2zFxeunSpIclYv359kZpatmxpdOnSpcj6adOmGdWrVzd++OEHu/UTJ040XF1djdTUVMMwDGPFihWGJGPmzJlmm0uXLhl33nmnIclYsGDBdX4iACoKQ2YAnIJhGFq2bJn69OkjwzD0888/m5/o6GhlZ2dr586dZvuhQ4fK3d3dXI6IiJBhGBo5cqTdfiMiInT8+HFdunSpTOtdunSp7rzzTtWsWdOu1qioKOXn52vjxo2SpC+//FJubm56/PHHze+6urrqySefLNN6ANwYhswAOIVTp04pKytL7777rt59992rtjl58qRq1qwpSQoNDbXb5ufnJ0kKCQkpsr6goEDZ2dmqXbt2mdV76NAh7dmzR3Xr1r1mrZL0008/KTg4WDVq1LDb3rRp0zKrBcCNIxABcAqFE5EHDx58zfk1bdq00YEDByT91styNddabxhGGVT5PwUFBbrnnns0fvz4q25v0qRJmR4PQPkiEAFwCnXr1pWPj4/y8/MVFRV1zXaFgags2Wy2Em9r2LChzp49e91aJal+/fpKSkrS2bNn7XqJUlJSSlcsgHLBHCIATsHV1VUDBgzQsmXLtG/fviLbT506VW7Hrl69uiRd9Vb46tWrX3X9Aw88oM2bN+vrr78usi0rK8ucs9SrVy9dunRJ8+bNM7fn5+frzTffLJviAZQJeogAOI3p06dr/fr1ioiI0COPPKIWLVooMzNTO3fu1Nq1a5WZmVkux7311lvl6uqqGTNmKDs7W56enuratasCAgLUrl07zZs3Ty+//LIaNWqkgIAAde3aVc8995w+//xz3XvvvRo+fLjatWunc+fOae/evfrnP/+pY8eOqU6dOurTp486duyoiRMn6tixY2rRooWWL1+u7OzscjkXAKVDIALgNAIDA7V161a99NJLWr58ud5++23Vrl1bLVu21IwZM8rtuEFBQZo/f77i4+MVExOj/Px8rV+/XgEBAZo8ebJ++uknzZw5U2fOnFGXLl3UtWtXeXt7Kzk5Wa+++qqWLl2qhQsXytfXV02aNNHUqVPNSd4uLi76/PPPNXbsWH344Yey2Wz64x//qFmzZum2224rt3MCUDI2o6xnGgIAAFQyzCECAACWRyACAACWRyACAACWRyACAACWRyACAACWRyACAACWx3OIiqGgoEAnTpyQj4/PdR/xDwAAnIdhGDpz5ozq1asnF5fr9wERiIrhxIkTRd6gDQAAKofjx4/r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h4fbbW/Xrp3c3d3trmNKSopSU1O5jg7UrVs37d27V7t27TI/7du316BBg8w/c92cT8eOHYs81uKHH35Q/fr1JUnh4eEKCgqyu245OTnasmUL182Bzp8/LxcX+yjh6uqqgoICSZXsujl6VrdVffzxx4anp6eRkJBgHDhwwHj00UcNf39/Iz093dGl4f97/PHHDT8/P2PDhg1GWlqa+Tl//rzZ5rHHHjNCQ0ONdevWGdu3bzciIyONyMhIB1aNq7n8LjPD4Lo5o61btxpubm7GK6+8Yhw6dMhYtGiR4e3tbXz44Ydmm+nTpxv+/v7GZ599ZuzZs8fo27evER4ebvz6668OrNzahg0bZtx0003GypUrjaNHjxrLly836tSpY4wfP95sU1muG4HIgd58800jNDTU8PDwMG6//Xbju+++c3RJuIykq34WLFhgtvn111+NJ554wqhZs6bh7e1t3HfffUZaWprjisZVXRmIuG7O6YsvvjBatWpleHp6Gs2aNTPeffddu+0FBQXGiy++aAQGBhqenp5Gt27djJSUFAdVC8MwjJycHGPMmDFGaGioUa1aNaNBgwbG888/b+Tm5pptKst1sxnGZY+TBAAAsCDmEAEAAMsjEAEAAMsjEAEAAMsjEAEAAMsjEAEAAMsjEAEAAMsjEAEAAMsjEAEokbi4ON16663m8vDhw9WvXz9z+a677tLYsWOLta+StMX/xMXFyWazyWazafbs2WW+/7CwMHP/V77zDaiqCESAhaSnp+vJJ59UgwYN5OnpqZCQEPXp08fuPUM3avny5Zo2bVqZt4W9li1bKi0tTY8++mix2s+aNUs1a9bUhQsXimw7f/68fH19NWfOHEnStm3btGzZsjKtF3B2BCLAIo4dO6Z27dpp3bp1eu2117R3716tXr1ad999t2JjY8vsOLVq1ZKPj0+Zt61sLl68WK77d3NzU1BQkLy9vYvVfsiQITp37pyWL19eZNs///lPXbx4UYMHD5Yk1a1bV7Vq1SrTegFnRyACLOKJJ56QzWbT1q1bNWDAADVp0kQtW7bUuHHj9N1335ntUlNT1bdvX9WoUUO+vr564IEHlJGRUezjXDkM9vbbb6tx48aqVq2aAgMDdf/991+z7enTpzV06FDVrFlT3t7e6tmzpw4dOmRuT0hIkL+/v77++ms1b95cNWrUUI8ePZSWlnbdmvbt26eePXuqRo0aCgwM1JAhQ/Tzzz/b1fHUU09p/PjxqlWrloKCghQXF2e3j6ysLI0aNUp169aVr6+vunbtqt27d5vbC4cS//a3vyk8PFzVqlWTJH3//ffq1KmTqlWrphYtWmjt2rWy2WxasWKFJKlr164aPXq03bFOnTolDw+PEvfcXa/GgIAA9enTR++//36R773//vvq168fIQiWRiACLCAzM1OrV69WbGysqlevXmS7v7+/JKmgoEB9+/ZVZmamkpOTlZiYqB9//FEPPvhgqY67fft2PfXUU3rppZeUkpKi1atXq3PnztdsP3z4cG3fvl2ff/65Nm/eLMMw1KtXL+Xl5Zltzp8/r7/85S/6xz/+oY0bNyo1NVXPPvvsNfeZlZWlrl276rbbbtP27du1evVqZWRk6IEHHrBr98EHH6h69erasmWLZs6cqZdeekmJiYnm9j/96U86efKkvvrqK+3YsUNt27ZVt27dlJmZabY5fPiwli1bpuXLl2vXrl3Kz89Xv3795O3trS1btujdd9/V888/b3fcUaNGafHixcrNzTXXffjhh7rpppvUtWvX3/8hX+b3aoyJidG6dev0008/md/58ccftXHjRsXExJToWECV4+CXywKoAFu2bDEkGcuXL79uuzVr1hiurq5GamqquW7//v2GJGPr1q2GYRjGlClTjFtuucXcPmzYMKNv377m8uVvll+2bJnh6+tr5OTkXPV4l7f94YcfDEnGpk2bzO0///yz4eXlZXzyySeGYRjGggULDEnG4cOHzTZvvfWWERgYeM1zmjZtmtG9e3e7dcePHzckmW/c7tKli9GpUye7Nh06dDAmTJhgGIZh/Otf/zJ8fX2NCxcu2LVp2LCh8c4775g/F3d3d+PkyZPm9q+++spwc3Mz0tLSzHWJiYmGJOPTTz81DMMwfv31V6NmzZrGkiVLzDZt2rQx4uLirnlOV16D4tZ46dIl46abbjKmTJlibn/xxReN0NBQIz8/3+5769evNyQZp0+fvmYdQFVCDxFgAYZhFKvdwYMHFRISopCQEHNdixYt5O/vr4MHD5b4uPfcc4/q16+vBg0aaMiQIVq0aJHOnz9/zWO7ubkpIiLCXFe7dm01bdrU7tje3t5q2LChuRwcHKyTJ09es4bdu3dr/fr1qlGjhvlp1qyZJOnIkSNmuzZt2th97/L97t69W2fPnlXt2rXt9nP06FG7fdSvX19169Y1l1NSUhQSEqKgoCBz3e233253nGrVqmnIkCHmUNbOnTu1b98+DR8+/JrndK3z/L0aXV1dNWzYMCUkJMgwDBUUFOiDDz7QiBEj5OLCrwNYm5ujCwBQ/ho3biybzabvv/++Qo/r4+OjnTt3asOGDVqzZo0mT56suLg4bdu2zRymKyl3d3e7ZZvNdt3Ad/bsWfXp00czZswosi04OPi6+y0oKDD3ERwcrA0bNhTZx+XncbXhyOIYNWqUbr31Vv3nP//RggUL1LVrV9WvX79E+yhujSNHjlR8fLzWrVungoICHT9+XCNGjChV3UBVQiACLKBWrVqKjo7WW2+9paeeeqrIL+6srCz5+/urefPmOn78uI4fP272Eh04cEBZWVlq0aJFqY7t5uamqKgoRUVFacqUKfL399e6devUv39/u3bNmzfXpUuXtGXLFv3hD3+QJP3yyy9KSUkp9bElqW3btlq2bJnCwsLk5la6v/Latm2r9PR0ubm5KSwsrNjfa9q0qY4fP66MjAwFBgZK+u2W9iu1bt1a7du313vvvafFixdr7ty55VZjw4YN1aVLF73//vsyDENRUVElDl9AVUQfKWARb731lvLz83X77bdr2bJlOnTokA4ePKg5c+YoMjJSkhQVFaXWrVtr0KBB2rlzp7Zu3aqhQ4eqS5cuat++fYmPuXLlSs2ZM0e7du3STz/9pIULF6qgoEBNmzYt0rZx48bq27evHnnkEX3zzTfavXu3Bg8erJtuukl9+/Yt9XnHxsYqMzNTDz30kLZt26YjR47o66+/1ogRI5Sfn1+sfURFRSkyMlL9+vXTmjVrdOzYMX377bd6/vnntX379mt+75577lHDhg01bNgw7dmzR5s2bdILL7wg6bceqMuNGjVK06dPl2EYuu+++0p8niWpMSYmRsuXL9enn37KZGrg/yMQARbRoEED7dy5U3fffbeeeeYZtWrVSvfcc4+SkpI0b948Sb/9kv7ss89Us2ZNde7cWVFRUWrQoIGWLFlSqmP6+/tr+fLl6tq1q5o3b6758+fro48+UsuWLa/afsGCBWrXrp3uvfdeRUZGyjAMffnll0WGs0qiXr162rRpk/Lz89W9e3e1bt1aY8eOlb+/f7HnzdhsNn355Zfq3LmzRowYoSZNmmjgwIH66aefzJ6fq3F1ddWKFSt09uxZdejQQaNGjTLvMiu8Lb/QQw89JDc3Nz300ENFtpV1jQMGDJCnp6e8vb3tnjIOWJnNKO5sSwDADdu0aZM6deqkw4cP200OP3bsmBo2bKht27apbdu2191HXFycVqxYoV27dpVbnRs2bNDdd9+t06dPl3q+F1CZMIcIAMrRp59+qho1aqhx48Y6fPiwxowZo44dO5phKC8vT7/88oteeOEF3XHHHb8bhgrt3btXNWrU0MyZM/XEE0+Uac0tW7bUjz/+WKb7BJwdPUQAUI4WLlyol19+WampqapTp46ioqI0a9Ys1a5dW9L/emKaNGmif/7zn2rduvXv7jMzM9N82GLdunXl5+dXpjX/9NNP5sMwGzRowC35sAQCEQAAsDxiPwAAsDwCEQAAsDwCEQAAsDwCEQAAsDwCEQAAsDwCEQAAsDwCEQAAsDwCEQAAsDwCEQAAsLz/BytGkzKG2rh3AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.hist(\n", " \"collision_energy\",\n", " filter=\"emitted\",\n", " # This filter would select only the particles appearing in the simulation\n", " # after 10ns:\n", " # filter=lambda particle: particle.time[0] >= 10.0,\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "id": "9714a79e-376b-4843-8841-9798e31ddac9", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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Svv27dPp06dtbeLj4xUQEKAmTZrY2lx9jPw2+ccAAADm5tYps+HDh2vJkiX6z3/+I39/f9uan8DAQPn6+iowMFCDBg1SbGysqlSpooCAAD3zzDOKiorSX/7yF0lSly5d1KRJE/Xv31+zZs1SamqqXnjhBQ0fPtw27TVs2DC9/fbbGjdunJ588klt2LBBy5cv15o1rDkBAABuHiF67733lJaWpvbt2yssLMz2WrZsma3N66+/rgcffFC9e/dWu3btFBoaqs8++8y2v1y5clq9erXKlSunqKgoPfbYYxowYIBefPFFW5vatWtrzZo1io+PV4sWLTRnzhx98MEHBV5yDwAAzMdiGIbh7iI8XXp6ugIDA5WWlqaAgACXH5+ro4pH/sNd83++POwVAMzFke9vj7nKDHA1giYAoLA84iozAAAAdyIQAQAA02PKDKZz9VQa64oAABIjRDA5HvkBAJAIRAAAAAQiAAAAAhEAADA9FlXDNFgrBAC4EUaIAACA6RGIAHG1GQCYHYEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHoEIuAp3rAYAc+LhrkABCgpFx2fGuKESAEBJYIQIAACYHoEIAACYHoEIAACYHoEIAACYHoEIAACYHleZAU66+ko0rkADgNKNQAQ4iPsUAUDZw5QZAAAwPQIRAAAwPQIRAAAwPQIRAAAwPQIRAAAwPQIRAAAwPQIRAAAwPQIR4AKRE9ZwfyIAKMUIRAAAwPS4UzVQSIwAAUDZxQgRAAAwPQIRAAAwPQIRAAAwPQIR4EJcbQYApROBCAAAmB6BCAAAmB6BCAAAmB6BCAAAmB6BCCghLLgGAM9FIAIAAKZHIAIAAKZHIAIAAKZHIAKKAeuFAKB0IRABAADT83Z3AUBZxigRAJQOjBABAADTIxABbsI6IwDwHAQiAABgegQiAABgegQiAABgegQiAABgegQiAABgem4NRN988426d++u8PBwWSwWrVq1ym7/448/LovFYvfq2rWrXZtz586pX79+CggIUFBQkAYNGqSLFy/atfnxxx917733qkKFCoqIiNCsWbOKu2sAAKAUceuNGTMzM9WiRQs9+eST6tWrV4FtunbtqgULFtje+/j42O3v16+fUlJSFB8fr+zsbD3xxBMaOnSolixZIklK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AEqCQ4Ho2qfZf/XVV8rMzHRpQQBK1tUPfs3HA2ABmI1Ta4jyXRuQAJQeBQUhADArh64ys1gs160RYs0QAAAo7RwKRIZh6PHHH1evXr3Uq1cvXb58WcOGDbO9z38V1jfffKPu3bsrPDxcFotFq1atuu58kydPVlhYmHx9fdW5c2cdOnTIrs25c+fUr18/BQQEKCgoSIMGDdLFixft2vz444+69957VaFCBUVERGjWrFmOdBsAAJRxDgWigQMHKjg4WIGBgQoMDNRjjz2m8PBw2/v8V2FlZmaqRYsWeueddwrcP2vWLL355puaN2+eduzYoYoVKyo6OlqXL1+2tenXr5/279+v+Ph4rV69Wt98842GDh1q25+enq4uXbqoVq1a2r17t1577TVNnTpV77//viNdBwAAZZhDa4gWLFjg0pM/8MADeuCBBwrcZxiG3njjDb3wwgvq0aOHJOnjjz9WSEiIVq1apT59+ujgwYNau3atdu3apbvuukuS9NZbb6lbt26aPXu2wsPDtXjxYl25ckUfffSRrFarmjZtqsTERMXFxdkFJwAAYF5O3am6JBw7dkypqanq3LmzbVtgYKBat26tbdu2SZK2bdumoKAgWxiSpM6dO8vLy0s7duywtWnXrp2sVqutTXR0tJKSknT+/PkCz52VlaX09HS7F1BWRE5Yw4JqALiGxwai1NRUSbruHkchISG2fampqQoODrbb7+3trSpVqti1KegYV5/jWjNmzLCbAoyIiCh6hwAAgMfy2EDkThMnTlRaWprtdeLECXeXBJQoRpEAmI3HBqLQ0FBJ0qlTp+y2nzp1yrYvNDRUp0+fttufk5Ojc+fO2bUp6BhXn+NaPj4+CggIsHsBAICyy2MDUe3atRUaGqqEhATbtvT0dO3YsUNRUVGSpKioKF24cEG7d++2tdmwYYPy8vLUunVrW5tvvvlG2dnZtjbx8fFq2LChKleuXEK9AQAAnsytgejixYtKTExUYmKipD8XUicmJio5OVkWi0WjRo3SSy+9pM8//1z79u3TgAEDFB4erp49e0qSGjdurK5du2rIkCHauXOntmzZohEjRqhPnz4KDw+XJPXt21dWq1WDBg3S/v37tWzZMs2dO1exsbFu6jUAAPA0RXp0R1F9//336tChg+19fkgZOHCgFi5cqHHjxikzM1NDhw7VhQsX1LZtW61d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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.hist(\"collision_angle\")" ] }, { "cell_type": "raw", "id": "a77c8d02-7a46-4cf7-83e8-d7d32b037259", "metadata": { "editable": true, "raw_mimetype": "", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Check the :meth:`.ParticleMonitor.hist` documentation for a full list of allowed arguments." ] }, { "cell_type": "markdown", "id": "e36a211c-61f7-4890-8a14-18694c773ca7", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## 3D plots" ] }, { "cell_type": "code", "execution_count": 9, "id": "38b5ffe7-831e-475f-aec7-42fa1bad4303", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.plot_mesh()\n", "\n", "some_random_ids = (10, 500, 4332, 54, 4789)\n", "veplotter = result.plot_trajectories(\n", " emission_color=\"blue\",\n", " collision_color=\"red\",\n", " filter=lambda particle: particle.particle_id in some_random_ids,\n", ")\n", "veplotter.show()\n", "\n", "# Save animation to a file to include it into documentation\n", "veplotter.export(filename=\"../../_static/k3d_wr75_example.html\")" ] }, { "cell_type": "raw", "id": "5d8afb9b-3b3c-4fcd-9302-411bb1afcd29", "metadata": { "editable": true, "raw_mimetype": "text/html", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "" ] }, { "cell_type": "markdown", "id": "0b66869d-6add-4802-9304-159e3fde9e4d", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "In this plot, the emission points are in blue. If there is no emission point, it is because the electron you are looking at is a seed electron.\n", "The last collision position is in red." ] }, { "cell_type": "raw", "id": "13ea9fa8-17f3-418d-8ba7-570b8ceef4f6", "metadata": { "editable": true, "raw_mimetype": "text/x-rst", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ ".. note::\n", " I don't know where this comes from, but a patch was necessary for the ``k3d`` backend to work.\n", " See documentation of :meth:`.DefaultPlotter._k3d_patch`." ] }, { "cell_type": "markdown", "id": "6379c50b-ae24-4791-9f4e-19a3ae675663", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# Particle Monitor: TESLA study case\n", "As the gap of the reduced WR75 is very tight, the visualisation of the trajectories is not very impressive. Let's fix that by looking at a TESLA cavity." ] }, { "cell_type": "markdown", "id": "ff2a8110-1ee8-4714-85a9-4101791c28ec", "metadata": { "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Loading data and making trajectory plot" ] }, { "cell_type": "code", "execution_count": 10, "id": "d246384a-5aa9-4e26-b1ed-2f9d8d4392ce", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;37m[INFO ] [default.py ]\u001b[0m Applying patch for k3d.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 341.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1144.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1147.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1142.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1156.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1201.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1206.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1300.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1375.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1399.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1547.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1549.\n", "\u001b[0;37m[INFO ] [particle.py ]\u001b[0m No collision for particle 1550.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n", "\u001b[0;37m[INFO ] [default.py ]\u001b[0m patching invalid point_size=0.0 -> 1.0.\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stl_path = Path(\"../data/cst/Particle_Monitor/tesla.stl\")\n", "folder_particle_monitor=Path(\"../data/cst/Particle_Monitor/tesla_no_mp\")\n", "\n", "factory = CSTResultsFactory(plotter=DefaultPlotter(vedo_backend=\"k3d\"), freq_ghz=1.3, stl_path=stl_path, stl_alpha=0.3)\n", "result = factory.from_simulation_folder(folderpath=folder_results, folder_particle_monitor=folder_particle_monitor)\n", "\n", "result.plot_mesh()\n", "veplotter = result.plot_trajectories(\n", " emission_color=\"blue\",\n", " collision_color=\"red\",\n", " filter=lambda particle: particle.particle_id in range(100, 110),\n", ")\n", "\n", "# Save animation to a file to include it into documentation\n", "veplotter.export(filename='../../_static/k3d_tesla_example.html')" ] }, { "cell_type": "raw", "id": "5d4b2cc7-30b5-42ea-8d95-01a2882d07b9", "metadata": { "editable": true, "raw_mimetype": "text/html", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "" ] }, { "cell_type": "markdown", "id": "c2466db0-bcff-4673-bf78-18abb679ea79", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Note that, again, the resolution on the trajectories is low. This may lead to incorrect impact angles." ] } ], "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.13.2" } }, "nbformat": 4, "nbformat_minor": 5 }