{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Zones\n", "\n", "Here we illustrate how to define and work with zones, using the ``atomsmltr.environment.zones`` subpackage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction to zones\n", "\n", "### Defining zone\n", "\n", "The ``Zone`` class allows to define zones in the position-velocity space, that are associated with actions. Currently, the only action that is implemented is \"stop\", and it means that the simulation will stop when an atom steps **outside** of the defined zone.\n", "\n", "When creating a zone, users should specify whether they apply to 'position' or 'speed' using the ``target`` property. Then, one can check whether a position or speed vector is inside the zone using the ``in_zone()`` method.\n", "\n", "Note that regular zones are designed to deal with only position or speed vector, and hence the ``in_zone()`` takes a vector of shape (,3) or (n,m,..,3) as an input. To work with position-velocity vectors of dimension (...,6), there is a special type of zone collection : ``SuperZone``" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "───────────────\n", "| Upper Limit |\n", "───────────────\n", ". Parameters :\n", " ├── type : 1D lower limit\n", " ├── tag : positive x\n", " ├── in_tag\n", " ├── out_tag : positive x\n", " ├── target : position\n", " ├── action : stop\n", " ├── value : 0.0\n", " ├── axis : 0\n", " └── inverted : False\n", "\n", "\n", "True\n", "False\n" ] } ], "source": [ "# - \"1D\" zones > limits\n", "from atomsmltr.environment import UpperLimit, LowerLimit, Limits \n", "\n", "# define a zone corresponding to x > 0\n", "x_pos = LowerLimit(value=0, axis=0, target=\"position\", action=\"stop\", tag=\"positive x\")\n", "x_pos.print_info()\n", "print(x_pos.get_value((1,0,0)))\n", "print(x_pos.get_value((-1,0,0)))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# - other examples\n", "# zone -10 < y < 10\n", "y_limits = Limits(min=-10, max=10, axis=1, target=\"position\", tag=\"y limits\")\n", "# zone vz < 500\n", "vz_max = UpperLimit(value=500, axis=2, target=\"speed\", tag=\"vz cap\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The logic of a zone can be inverted using the ``inverted`` property :" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "True\n" ] } ], "source": [ "from atomsmltr.environment import UpperLimit\n", "\n", "xlim = UpperLimit(10, axis=0, target=\"position\")\n", "print(xlim.get_value((20, 0, 0)))\n", "xlim.inverted = True\n", "print(xlim.get_value((20, 0, 0)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Examples of 3D zones\n", "\n", "Currently two kind of 3D zones are implemented: **Box** and **Cylinder**" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from atomsmltr.environment import Box\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# -- setup zone\n", "zone = Box(xmin=0, xmax=3, ymin=-5, ymax=8, zmin=-8, zmax=8, target=\"position\")\n", "\n", "# -- plot\n", "\n", "# prepare the grid\n", "grid = np.mgrid[-10:10:500j, -10:10:500j, 0:0:1j]\n", "grid = np.squeeze(grid)\n", "X, Y, _ = grid\n", "X, Y = X.T, Y.T\n", "pos = grid.T\n", "\n", "# compute result\n", "res = zone.get_value(pos)\n", "\n", "# plot\n", "plt.figure()\n", "plt.pcolormesh(X, Y, res, cmap=\"cividis\")\n", "plt.gca().set_aspect('equal')\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from atomsmltr.environment import Cylinder\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# -- setup zone\n", "zone = Cylinder(origin=(1,3,0), direction=(0,0,1), radius=5, target=\"position\")\n", "\n", "# -- plot\n", "\n", "# prepare the grid\n", "grid = np.mgrid[-10:10:500j, -10:10:500j, 0:0:1j]\n", "grid = np.squeeze(grid)\n", "X, Y, _ = grid\n", "X, Y = X.T, Y.T\n", "pos = grid.T\n", "\n", "# compute result\n", "res = zone.get_value(pos)\n", "\n", "# plot\n", "plt.figure()\n", "plt.pcolormesh(X, Y, res, cmap=\"cividis\")\n", "plt.gca().set_aspect('equal')\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Zone collections\n", "\n", "### Create a collection\n", "\n", "Simple zones can be combined using the logical operators ``&`` (and), ``|`` (or) , ``^`` (xor) to create zone collections. \n", "\n", "Hence, there are three kind of zone collections : ``ANDCollection``, ``ORCollection``, ``XORCollection``.\n", "\n", "A zone collection contains a list of zones, and the result is evaluated by combining the result of each zone and \"adding\" them using the logical operator. It is possible to add zones to the list using the ``+=`` operator. Note that only zones collections of the same kind (or, and, xor) can be added using the ``+=`` operator ; in this case, the lists of zones are merged.\n", "\n", "Finally, note that a ``ZoneCollection`` is still a ``Zone`` , so it is possible to combine them with other ``Zone`` objects to create new collections." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "───────────────────────\n", "| AND Zone Collection |\n", "───────────────────────\n", ". Parameters :\n", " ├── type : AND Zone Collection\n", " ├── tag : xarovo\n", " ├── in_tag\n", " ├── out_tag\n", " ├── target : position\n", " ├── action : stop\n", " ├── zones : ['x limits', 'y limits']\n", " └── inverted : False\n", "\n", "\n" ] }, { "data": { "image/png": "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o76+vvSJD8DYIxeA/uQCjH7DWiqeffbZWLZsWWn7rVORjY2NsW3btvj85z8fx48fj8985jPR0dERS5cujccffzzOOeec4RwLyJFcAPqTCzD6jdjfqRguXV1dUVNTEzFrhddJwm/qPRXRuj06OzvPulP/cqFYencfznsEfqXr6OmYPPfZsy4XZELxyIViGMpMGB0fUg0AABSWUgEAACRRKgAAgCRKBQAAkESpAAAAkigVAABAEqUCAABIolQAAABJlAoAACCJUgEAACRRKgAAgCRKBQAAkESpAAAAkigVAABAEqUCAABIolQAAABJlAoAACCJUgEAACRRKgAAgCRKBQAAkESpAAAAkigVAABAEqUCAABIolQAAABJlAoAACCJUgEAACRRKgAAgCRKBQAAkESpAAAAkigVAABAEqUCAABIolQAAABJlAoAACCJUgEAACRRKgAAgCRKBQAAkESpAAAAkigVAABAEqUCAABIolQAAABJlAoAACCJUgEAACRRKgAAgCRKBQAAkESpAAAAkuReKu69994oKyvrc5k/f37eYwE5kQlAf3IBim9c3gNERFx66aWxY8eO0va4cYUYC8iJTAD6kwtQbIX4iRw3blzU1dXlPQZQEDIB6E8uQLHl/vKniIgDBw5EfX19zJkzJ/74j/84Dh069LbHdnd3R1dXV58LMLacSSZEyAU4G3iuAMVWlmVZlucA27dvj2PHjsW8efPi1VdfjfXr18fLL78c//3f/x1VVVUDjr/33ntj/fr1A29o1oqI8vEjMDG/Te/uw3mPQER0HT0dk+c+G52dnVFdXZ33OO/amWZCxNvnQseBy6O6qhAnZKEQzpZckAnFV37l1LxHICKi91RE6/YhyYTcS0V/HR0dcfHFF8cDDzwQn/70pwfs7+7uju7u7tJ2V1dXzJgxQ6koEKWiGEbrk4f+flsmRLx9LngCAX2dLbkgE4pPqSiIISwVhfvJmjx5cvzu7/5uvPDCC4Pur6ysjMrKyhGeCsjLb8uECLkAZxvPFaB4CvGeit907Nix+PnPfx7Tp0/PexSgAGQC0J9cgOLJvVTcfvvt8dRTT0Vra2vs3r07Pv7xj0dFRUV88pOfzHs0IAcyAehPLkDx5f7yp//93/+NT37yk/Haa69FbW1tLF26NJ555pmora3NezQgBzIB6E8uQPHlXiq++93v5j0C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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from atomsmltr.environment import Limits\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# -- define y and y limits\n", "xlim = Limits(0, 10, axis=0, tag=\"x limits\")\n", "ylim = Limits(-5, 5, axis=1, tag=\"y limits\")\n", "\n", "# -- try collections\n", "and_coll = xlim & ylim \n", "or_coll = xlim | ylim\n", "xor_coll = xlim ^ ylim\n", "\n", "and_coll.print_info()\n", "\n", "# -- plot\n", "\n", "# prepare the grid\n", "grid = np.mgrid[-10:10:500j, -10:10:500j, 0:0:1j]\n", "grid = np.squeeze(grid)\n", "X, Y, _ = grid\n", "X, Y = X.T, Y.T\n", "pos = grid.T\n", "\n", "# compute result\n", "res_and = and_coll.get_value(pos)\n", "res_or = or_coll.get_value(pos)\n", "res_xor = xor_coll.get_value(pos)\n", "\n", "# plot\n", "fig, axes = plt.subplots(1,3,figsize=(8,3), tight_layout=True)\n", "axes[0].pcolormesh(X, Y, res_and, cmap=\"cividis\")\n", "axes[0].set_title(\"and\")\n", "axes[1].pcolormesh(X, Y, res_or, cmap=\"cividis\")\n", "axes[1].set_title(\"or\")\n", "axes[2].pcolormesh(X, Y, res_xor, cmap=\"cividis\")\n", "axes[2].set_title(\"xor\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Operations on collection" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['x_max', 'x_min']\n", "['y_max', 'y_min']\n", "['x_max', 'x_min', 'y_max', 'y_min']\n", "['xlim', 'ylim']\n", "['y_max', 'y_min', 'x_max', 'x_min', 'z_min', 'z_max']\n" ] } ], "source": [ "from atomsmltr.environment import UpperLimit, LowerLimit\n", "\n", "# -- define limits\n", "x_min = LowerLimit(0, axis=0, tag=\"x_min\")\n", "y_min = LowerLimit(-1, axis=1, tag=\"y_min\")\n", "z_min = LowerLimit(-10, axis=2, tag=\"z_min\")\n", "x_max = UpperLimit(0, axis=0, tag=\"x_max\")\n", "y_max = UpperLimit(-1, axis=1, tag=\"y_max\")\n", "z_max = UpperLimit(-10, axis=2, tag=\"z_max\")\n", "\n", "\n", "# -- play with collections\n", "# combine x_min and x_max\n", "xlim = x_max & x_min\n", "xlim.tag = \"xlim\"\n", "# now xlim is a collection of two zones\n", "print([z.tag for z in xlim.zones]) \n", "# same with y\n", "ylim = y_max & y_min\n", "ylim.tag = \"ylim\"\n", "print([z.tag for z in ylim.zones])\n", "\n", "# How to combine them ?\n", "# option 1 : \"merge\"\n", "xylim = xlim + ylim # addition works since both are ANDCollections\n", "print([z.tag for z in xylim.zones])\n", "\n", "# option 2 : combine them in a new collection\n", "xylim = xlim & ylim\n", "print([z.tag for z in xylim.zones]) # then the new collection has only two zones\n", "\n", "# increment also works\n", "all_lim = ylim + xlim\n", "all_lim += z_min\n", "all_lim += z_max\n", "print([z.tag for z in all_lim.zones]) # then the new collection has only two zones" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A few examples of zones collections\n", "\n", "### using OR collection" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from atomsmltr.environment.zones import Cylinder\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# -- generate the zone\n", "\n", "# create two cylinders\n", "cyl_1 = Cylinder()\n", "cyl_1.origin = (0, 0, 0)\n", "cyl_1.direction = (1, 1, 1)\n", "cyl_1.radius = 5\n", "\n", "# the second one is inverted\n", "cyl_2 = cyl_1.copy()\n", "cyl_2.radius = 4.7\n", "cyl_2.inverted = True\n", "\n", "# the union of the tw0\n", "orbit = cyl_1 & cyl_2\n", "\n", "# add another cylinder\n", "nucleus = Cylinder()\n", "nucleus.origin = (0, 0, 0)\n", "nucleus.direction = (0, 0, 1)\n", "nucleus.radius = 2\n", "\n", "# and a last one\n", "electron = Cylinder()\n", "electron.origin = (5.5, 6.3, 0)\n", "electron.direction = (0, 0, 1)\n", "electron.radius = 1\n", "\n", "# combine them in a \"OR\" collection\n", "coll = orbit | nucleus | electron\n", "\n", "# -- plot\n", "\n", "# prepare the grid\n", "grid = np.mgrid[-10:10:500j, -10:10:500j, 0:0:1j]\n", "grid = np.squeeze(grid)\n", "X, Y, _ = grid\n", "X, Y = X.T, Y.T\n", "pos = grid.T\n", "\n", "# compute result\n", "res = coll.get_value(pos)\n", "\n", "# plot\n", "plt.figure()\n", "plt.pcolormesh(X, Y, res, cmap=\"cividis\")\n", "plt.gca().set_aspect('equal')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### playing with XOR" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# - One step further\n", "from atomsmltr.environment import LowerLimit\n", "x_positive = LowerLimit(value=0, axis=0)\n", "coll_2 = coll ^ x_positive # xor\n", "\n", "# compute result\n", "res = coll_2.get_value(pos)\n", "\n", "# plot\n", "plt.figure()\n", "plt.pcolormesh(X, Y, res, cmap=\"cividis\")\n", "plt.gca().set_aspect('equal')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# - Go on with that ?\n", "y_positive = LowerLimit(value=0, axis=1)\n", "coll_3 = coll_2 ^ y_positive\n", "\n", "# compute result\n", "res = coll_3.get_value(pos)\n", "\n", "# plot\n", "plt.figure()\n", "plt.pcolormesh(X, Y, res, cmap=\"cividis\")\n", "plt.gca().set_aspect('equal')\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "atomsmltr-KmviZRuT-py3.12", "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.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }