N-body simulations and trajectory analysis rely on the calculation of attributes that depend on pairwise particle distances within a cutoff. Interparticle potential energies, forces, distribution functions, neighbor lists, and distance-dependent distributions, for example, must be calculated. Cell lists are widely used to avoid computing distances outside the cutoff. However, efficient cell list implementations are difficult to customize. Here, we provide a fast and parallel implementation of cell lists in Julia that allows the mapping of custom functions dependent on particle positions in 2 or 3 dimensions. Arbitrary periodic boundary conditions are supported. Automatic differentiation and unit propagation can be used. The implementation provides a framework for the development of new analysis tools and simulations with custom potentials. The performance of resulting computations is comparable to state-of-the-art implementations of neighbor list algorithms and cell lists, available in specialized software. Examples are provided for the computation of potential energies, forces, distribution of pairwise velocities, neighbor lists and other typical calculations in molecular and astrophysical simulations. The Julia package is freely available at http://m3g.github.io/CellListMap.jl. Interfacing with Python and R with minimal overhead is possible. Program summaryProgram Title: CellListMap.jlCPC Library link to program files:https://doi.org/10.17632/5kf5zh9zms.1Developer's repository link:http://github.com/m3g/CellListMap.jlLicensing provisions: MITProgramming language: JuliaNature of problem: Particle simulations and trajectory analysis, in chemistry, atomic and molecular physics, and astrophysics, require the computation of pairwise properties within a cutoff, for example potential energies, forces, distance distributions, among others. Cell lists can be used to accelerate these computations and are used in major simulation software, but these implementations cannot be easily adapted for novel custom calculations, simulations, and novel research.Solution method: This package provides a fast and customizable implementation of cell lists for the development of new simulation and analysis software for particle simulations. To provide a customizable implementation, the Julia language was used, allowing the user to write high-level yet performant custom functions to be mapped into pairs of particles satisfying the distance constraint desired. State-of-the art performance is obtained in serial and parallel executions.Additional comments including restrictions and unusual features: The implementation is type-generic, allowing systems in 2 or 3 dimensions to be studied, and the computations can be written in such a way to allow the propagation of units, uncertainties, and automatic differentiation of the computed properties.
Read full abstract