amep.order.psi_k#
- amep.order.psi_k(coords: ndarray, box_boundary: ndarray, other_coords: ndarray | None = None, rmax: float = 1.122, k: int = 6, pbc: bool = True) ndarray #
Calculates the k-atic bond order parameter for an entire 2D system.
In a first step, the indexes of the first k next neighbors of each atom is calculated with the KDTree algorithm and with periodic boundary conditions appplied with pbc_points.
Notes
The k-atic order parameter is defined by
\[\Psi_k(\vec{r}_j) = \frac{1}{k} \sum_{n=1}^k\exp(ik\theta_{jn}),\]where the sum goes over the k nearest neighbors of the particle at position $vec{r}_j$. The value of $theta_{jn}$ is equal to the angle between the connection line from $vec{r}_j$ to $vec{r}_n$ and the x axis. See also Refs. [1] [2] [3] for further information.
References:
- Parameters:
coords (np.ndarray) – Coordinate frame of all particles.
box_boundary (np.ndarray of shape (3,2)) – Boundary of the simulation box in the form of np.array([[xmin, xmax], [ymin, ymax], [zmin, zmax]]).
other_coords (np.ndarray, optional) – Coords of the particles which are considered as possible neighbors. If None, coords is used. The default is None.
rmax (float, optional) – Maximum distance between particles to counted as neighbors. The default is 1.122 (which is the cutoff radius of the WCA potential). This value is ignored in the current version.
k (int, optional) – Symmetry of the k-atic bond order parameter. The default is 6.
pbc (bool, optional) – If True, periodic boundary conditions are considered. The default is True.
- Returns:
k-atic order parameter of each particle (1D array of complex numbers).
- Return type:
np.ndarray
Examples
>>> import amep >>> import numpy as np >>> traj = amep.load.traj("../examples/data/lammps.h5amep") >>> frame = traj[-1] >>> psi_4 = amep.order.psi_k( ... frame.coords(), frame.box, k=4 ... ) >>> fig, axs = amep.plot.new(figsize=(3.6,3)) >>> mp = amep.plot.particles( ... axs, frame.coords(), frame.box, frame.radius(), ... values=np.abs(psi_4) ... ) >>> cax = amep.plot.add_colorbar( ... fig, axs, mp, label=r'$|\psi_4|$' ... ) >>> axs.set_xlabel(r'$x$') >>> axs.set_ylabel(r'$y$') >>> fig.savefig('./figures/order/order-psi4.png') >>>
>>> psi_6 = amep.order.psi_k( ... frame.coords(), frame.box, k=6 ... ) >>> fig, axs = amep.plot.new(figsize=(3.6,3)) >>> mp = amep.plot.particles( ... axs, frame.coords(), frame.box, frame.radius(), ... values=np.abs(psi_6) ... ) >>> cax = amep.plot.add_colorbar( ... fig, axs, mp, label=r'$|\psi_6|$' ... ) >>> axs.set_xlabel(r'$x$') >>> axs.set_ylabel(r'$y$') >>> fig.savefig('./figures/order/order-psi6.png') >>>