# Finding the correct Molecular Dynamics library

I just started working on some Biophysics research, and I was looking around for a good MD library to use. There is one right now at the university set up in C, with openMC parallelization, but the code is so hacked together at this point that it is hard to tell what is going on.

I do have access to a computing cluster, and several nodes do have Nvidia Tesla GPUs attached. So something that could distribute the load and use CUDA would be a huge help. The actual simulations that I am going to try to run are pretty simple - diffusion of some set of particles, with the twist that there are some other objects that can act between the particles, causing extra non-Brownian forces. I know that this can cause problems in some MD libraries. Right now, a single simulation is run on a node at a time, and then we run the N simulations across all available nodes.

A visualization to go with the simulation would also be incredibly helpful as well, since making movies of the simulations in some cases would be useful in talks, etc.

• It is unclear to me what you mean with "some other objects that can act between the particles." You may want to elaborate on that. – Juan M. Bello-Rivas Jun 13 '13 at 0:56
• It was mostly for the situation when the simulation would be split amongst several cores/nodes. It turns out that won't be the case. The main problem would be dealing with some of the objects if they had to be memory shared across multiple cores. – NuclearAlchemist Jun 13 '13 at 3:35
• @NuclearAlchemist: You should elaborate on the "twist" if it is relevant; it will make your question better, and probably help people answer your question better. Do you mean "openMP parallelization"? – Geoff Oxberry Jun 13 '13 at 3:56
• @GeoffOxberry: I did originally mean OpenMP parallelization, but it turns out that wasn't the problem. The main problem with a lot of the MD libraries is that we need something that can have crosslinks between particles (in this case rods), that provide both a perpendicular force on the attachments, as well as a parallel force. I am attempting to get as much information on the problem as I can (I just started on this, hence the questions). – NuclearAlchemist Jun 16 '13 at 4:01

Allow me to plug my own library, mdcore.

mdcore is an Open-Source, platform-independent library for Molecular Dynamics simulations written in C. It runs on clusters, multi-cores, and GPUs and can handle any type of inter-particle interaction potential. The code is mainly a test-bed for new algorithms, but it is extremely fast.

The library is relatively straight-forward to use: You initialize a simulation engine, insert particles, declare the potentials, and the call engine_step to compute the forces and trajectories for each time step. In between time steps you can add whatever forces and/or interactions you want.

Another similar tool, with a nice Python interface, is MMTK.

• I will give this a look as well. At the moment, I am grabbing the OpenMM framework, and seeing how hard it is to implement what I want to do in it. – NuclearAlchemist Jun 13 '13 at 19:46
• @NuclearAlchemist: Ok, let me know if you give it a try, I'd be quite interested to see how you want to use it and what kind of problems you encounter! – Pedro Jun 16 '13 at 10:39
• Ok! I am trying to install it now - having issues with the macports installed version of fftw-3. Maybe we can exchange emails in a note, and then talk over that? – NuclearAlchemist Jun 17 '13 at 2:33
• @NuclearAlchemist: You probably won't need the fftw library unless you need electrostatics. My e-mail address is in the header of any of the source files, looking forward to hearing from you! – Pedro Jun 17 '13 at 7:09

Since you are specifically looking for a library, you might be interested in OpenMM.

Two popular visualization packages are PyMol and VMD.

You might want to look at ProtoMol. It is not a library but an application but it is designed to be easily extendable. Thus it might be easier to add your custom potential than it would be with e.g. LAMPPS or Gromacs. The later two would be better options if you want to have good parallel performance.

Depends on whether you want free or are happy to pay. Have used CHARMM in the past. Here is a decent list of options (https://en.wikipedia.org/wiki/List_of_software_for_molecular_mechanics_modeling)

I am surprised no one told about LAMMPS. It is pretty nice, and do have GPU capabilities.