Nano-scale chemically powered sphere-dimer motor

Nano-dimer is a molecular modelling software to study the dynamics of chemically powered self-propelled nanomotors (Kapral 2013; Colberg and Kapral 2017). The software combines molecular dynamics and multi-particle collision dynamics (Malevanets and Kapral 1999, 2000; Ihle and Kroll 2001) to simulate the molecular motion of a single to hundreds of sphere-dimer motors (Rückner and Kapral 2007) and their long-range hydrodynamic interaction in a solvent comprising several million particles.

Nano-dimer relies on novel computational techniques to scale from a multi-core processor to a parallel accelerator with thousands of scalar cores. The simulation algorithms are composed in the OpenCL C language using run-time code generation, which allows running simulations with optimal efficiency across a variety of devices, such as AMD GPUs, NVIDIA GPUs, and Intel CPUs.

A simulation is orchestrated using Lua scripts run with LuaJIT, an interpreter and tracing just-in-time compiler for the Lua language that provides native C data structures through its foreign function interface (FFI). Particle trajectories of nanomotors and solvent, and a versatile set of structural and dynamical observables are stored in an H5MD file, a file format for molecular data (de Buyl, Colberg, and Höfling 2014) based on the hierarchical data format (HDF5).


Andersen, Hans C. 1983. “Rattle: A ‘Velocity’ Version of the Shake Algorithm for Molecular Dynamics Calculations.” Journal of Computational Physics 52 (1): 24–34.

Blelloch, Guy E. 1990. “Prefix Sums and Their Applications.” CMU-CS-90-190. School of Computer Science, Carnegie Mellon University.

Buyl, Pierre de, Peter H. Colberg, and Felix Höfling. 2014. “H5MD: A Structured, Efficient, and Portable File Format for Molecular Data.” Computer Physics Communications 185 (6): 1546–53.

Colberg, Peter H., and Felix Höfling. 2011. “Highly Accelerated Simulations of Glassy Dynamics Using GPUs: Caveats on Limited Floating-Point Precision.” Computer Physics Communications 182 (5): 1120–9.

Colberg, Peter H., and Raymond Kapral. 2017. “Many-Body Dynamics of Chemically Propelled Nanomotors.” Journal of Chemical Physics 147: 064910.

Cook, J. M. 1957. “Rational Formulae for the Production of a Spherically Symmetric Probability Distribution.” Mathematics of Computation 11: 81–82.

Ferguson, Niels, Stefan Lucks, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas, and Jesse Walker. 2010. “The Skein Hash Function Family.”

Gompper, G., T. Ihle, D.M. Kroll, and R.G. Winkler. 2009. “Multi-Particle Collision Dynamics: A Particle-Based Mesoscale Simulation Approach to the Hydrodynamics of Complex Fluids.” In Advanced Computer Simulation Approaches for Soft Matter Sciences III, edited by Christian Holm and Kurt Kremer, 221:1–87. Advances in Polymer Science. Springer Berlin Heidelberg.

Hamilton, Chris. 2006. “Compact Hilbert Indices.” Technical Report CS-2006-07. Dalhousie University, Faculty of Computer Science.

Hamilton, Chris H., and Andrew Rau-Chaplin. 2008. “Compact Hilbert Indices: Space-Filling Curves for Domains with Unequal Side Lengths.” Information Processing Letters 105 (5): 155–63.

Hilbert, David. 1891. “Ueber die stetige Abbildung einer Linie auf ein Flächenstück.” Mathematische Annalen 38 (3): 459–60.

Ihle, T., and D. M. Kroll. 2001. “Stochastic Rotation Dynamics: A Galilean-Invariant Mesoscopic Model for Fluid Flow.” Physical Review E 63: 020201.

Kapral, Raymond. 2013. “Perspective: Nanomotors Without Moving Parts That Propel Themselves in Solution.” Journal of Chemical Physics 138 (2): 020901.

Malevanets, Anatoly, and Raymond Kapral. 1999. “Mesoscopic Model for Solvent Dynamics.” Journal of Chemical Physics 110 (17): 8605–13.

———. 2000. “Solute Molecular Dynamics in a Mesoscale Solvent.” Journal of Chemical Physics 112 (16): 7260–9.

Marsaglia, G., and T. Bray. 1964. “A Convenient Method for Generating Normal Variables.” SIAM Review 6 (3): 260–64.

Marsaglia, George. 1972. “Choosing a Point from the Surface of a Sphere.” Annals of Mathematical Statistics 43 (2): 645–46.

Neumann, John von. 1951. “Various Techniques Used in Connection with Random Digits.” Journal of Research of the National Bureau of Standards, Applied Mathematics Series 12: 36–38.

Rückner, Gunnar, and Raymond Kapral. 2007. “Chemically Powered Nanodimers.” Physical Review Letters 98 (15): 150603.

Salmon, John K., Mark A. Moraes, Ron O. Dror, and David E. Shaw. 2011. “Parallel Random Numbers: As Easy as 1, 2, 3.” In Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis, 16:1–16:12. SC ’11. New York, NY, USA: ACM.

Sengupta, Shubhabrata, Mark Harris, Yao Zhang, and John D. Owens. 2007. “Scan Primitives for GPU Computing.” In Graphics Hardware 2007, 97–106. San Diego, CA: ACM.

Swope, William C., Hans C. Andersen, Peter H. Berens, and Kent R. Wilson. 1982. “A Computer Simulation Method for the Calculation of Equilibrium Constants for the Formation of Physical Clusters of Molecules: Application to Small Water Clusters.” Journal of Chemical Physics 76 (1): 637–49.

Whitmer, Jonathan K, and Erik Luijten. 2010. “Fluid–Solid Boundary Conditions for Multiparticle Collision Dynamics.” Journal of Physics: Condensed Matter 22 (10): 104106.