All Projects → m3g → CellListMap.jl

m3g / CellListMap.jl

Licence: MIT license
Flexible implementation of cell lists to map the calculations of particle-pair dependent functions, such as forces, energies, neighbour lists, etc.

Programming Languages

julia
2034 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to CellListMap.jl

senpai
Molecular dynamics simulation software
Stars: ✭ 124 (+100%)
Mutual labels:  molecular-dynamics, molecular-dynamics-simulation
ls1-mardyn
ls1-MarDyn is a massively parallel Molecular Dynamics (MD) code for large systems. Its main target is the simulation of thermodynamics and nanofluidics. ls1-MarDyn is designed with a focus on performance and easy extensibility.
Stars: ✭ 17 (-72.58%)
Mutual labels:  molecular-dynamics, molecular-dynamics-simulation
covid
MolSSI SARS-CoV-2 Biomolecular Simulation Data and Algorithm Store
Stars: ✭ 24 (-61.29%)
Mutual labels:  molecular-dynamics, molecular-dynamics-simulation
Espresso
The ESPResSo package
Stars: ✭ 130 (+109.68%)
Mutual labels:  molecular-dynamics
Hoomd Blue
Molecular dynamics and Monte Carlo soft matter simulation on GPUs.
Stars: ✭ 143 (+130.65%)
Mutual labels:  molecular-dynamics
awesome-molecular-dynamics
😎 A curated list of awesome Molecular Dynamics libraries, tools and software.
Stars: ✭ 76 (+22.58%)
Mutual labels:  molecular-dynamics
calphy
A Python library and command line interface for automated free energy calculations
Stars: ✭ 28 (-54.84%)
Mutual labels:  molecular-dynamics
Lumol
Universal extensible molecular simulation engine
Stars: ✭ 120 (+93.55%)
Mutual labels:  molecular-dynamics
membrane-curvature
MDAnalysis tool to calculate membrane curvature.
Stars: ✭ 19 (-69.35%)
Mutual labels:  molecular-dynamics-simulation
Tensormol
Tensorflow + Molecules = TensorMol
Stars: ✭ 226 (+264.52%)
Mutual labels:  molecular-dynamics
Pyemma
🚂 Python API for Emma's Markov Model Algorithms 🚂
Stars: ✭ 200 (+222.58%)
Mutual labels:  molecular-dynamics
Chemlab
The chemistry library you were waiting for
Stars: ✭ 187 (+201.61%)
Mutual labels:  molecular-dynamics
Vde
Variational Autoencoder for Dimensionality Reduction of Time-Series
Stars: ✭ 148 (+138.71%)
Mutual labels:  molecular-dynamics
openmm-tutorials
Quickstart Python tutorials helping molecular dynamics practitioners get up to speed with OpenMM
Stars: ✭ 37 (-40.32%)
Mutual labels:  molecular-dynamics
Openff Toolkit
The Open Forcefield Toolkit provides implementations of the SMIRNOFF format, parameterization engine, and other tools. Documentation available at http://open-forcefield-toolkit.readthedocs.io
Stars: ✭ 138 (+122.58%)
Mutual labels:  molecular-dynamics
physical validation
Physical validation of molecular simulations
Stars: ✭ 37 (-40.32%)
Mutual labels:  molecular-dynamics
Molecular Design Toolkit
Notebook-integrated tools for molecular simulation and visualization
Stars: ✭ 123 (+98.39%)
Mutual labels:  molecular-dynamics
Plumed2
Development version of plumed 2
Stars: ✭ 178 (+187.1%)
Mutual labels:  molecular-dynamics
fahbench
Folding@home GPU benchmark
Stars: ✭ 32 (-48.39%)
Mutual labels:  molecular-dynamics
wepy
Weighted Ensemble simulation framework in Python
Stars: ✭ 38 (-38.71%)
Mutual labels:  molecular-dynamics

CellListMap.jl

This package is for computing interactions or any other property that is dependent on the distances between pairs of two- or three-dimensional particles, within a cutoff. It maps a function to be computed pairwise using cell lists, using periodic boundary conditions of any type. Parallel and serial implementations can be used.

It allows the fast computation of any quantity from the pairs that are within the desired cutoff, for example pairwise potentials and forces, neighbor lists, minimum distances, an average distance or an histogram of distances, etc. This is done by passing the function to be evaluated as a parameter of the map_pairwise! function.

The user guide provides direct examples of each of these applications.


USER GUIDE:
https://m3g.github.io/CellListMap.jl


Installation

Download and install Julia for your platform from this http url. Version 1.6 or greater is required.

Install it as usual for registered Julia packages:

julia> import Pkg

julia> Pkg.add("CellListMap")

Brief overview

The main function is map_parwise!:

If the analysis is performed on the pairs of a single vector x (n*(n-1)/2 pairs), the function can be called with:

map_pairwise!(f::Function,output,box::Box,cl::CellList)

while if two distinct sets of points are provided (n*m pairs), it is called with:

map_pairwise!(f::Function,output,box::Box,cl::CellListPair)

where the cl variable of type CellList or CellListPair contains the cell lists built from the coordinates of the system, and box contains the system box properties.

These functions will run over every pair of particles which are closer than box.cutoff and compute the (squared) Euclidean distance between the particles, considering the periodic boundary conditions given in the Box structure. If the distance is smaller than the cutoff, a user defined function f of the coordinates of the two particles will be computed.

The function f receives six arguments as input:

f(x,y,i,j,d2,output)

Which are the coordinates of one particle, the coordinates of the second particle, the index of the first particle, the index of the second particle, the squared distance between them, and the output variable. It has also to return the same output variable. Thus, f may or not mutate output, but in either case it must return it. The squared distance d2 is computed internally for comparison with the cutoff, and is passed to the f because many times it is used for the desired computation. Thus, the function f that is passed to map_pairwise! must be always of the form:

function f(x,y,i,j,d2,output)
    # update output
    return output
end

and the user can define more or less parameters or additional data required to compute the function using closures, as shown in the examples.

Parallel calculations are the default if more than one thread is available. Use parallel=false as an optional argument to map_pairwise! to run the serial version instead.

Some benchmarks

The goal here is to provide a good implementation of cell lists. We compare it with the implementation of the nice cython/python halotools package, in the computation of an histogram of mean pairwise velocities.

The full test is available at this repository. And we kindly thank Carolina Cuesta for providing the example. These benchmarks were run on an Intel i7 8th gen laptop, with 4 cores (8 threads).

Citation

If you use this software and need to cite it, please use the following reference:

L. Martínez, CellListMap.jl: Efficient and customizable cell list implementation for calculation of pairwise particle properties within a cutoff. Computer Physics Communications, 279, 108452, 2022. https://doi.org/10.1016/j.cpc.2022.108452

Tests CellListMap Downloads

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].