Return to Steve Plimpton's home page

Software Packages for Download

This page is for downloading software packages that I distribute. Sandia's molecular dynamics code LAMMPS now has its own download page.

Select the package you want via the circular check-button, click the "Download Now" button, and your browser should download a gzipped tar file. Unpack it with the following commands, and look for a README to get you started.

gunzip file.tar.gz
tar xvf file.tar 

Note that some of these packages will unpack into a directory like pizza-16Mar09. If the date is later than the release date listed below, it means you have downloaded an upgraded version that includes the bug fixes and new features listed on bug/feature page whose link is also given below. However, when the program runs it will still print out the release date listed below to the screen, since that is not changed every time there is a bug fix.

Follow the links below for more information on the individual packages.

Some of this software is distributed freely; some is copyrighted open-source software distributed under the terms of the GNU Public license or modified BSD license.

There have been ~45,200 downloads from this page and another ~285,500 from the LAMMPS download page from Sept 2004 thru Dec 2017.

Molecular dynamics codes: (LAMMPS download page)

ParaDyn --- embedded atom method (EAM) code, 390 Kb
Lennard-Jones --- 3 LJ codes with different parallel algorithms, 47 Kb

Other software:

SPARTA --- Direct Simulation Monte Carlo (DSMC) simulator, GPL license, 4.4 Mb,
       version with all bug fixes and new features described on this page
SPPARKS --- kinetic and Metropolis Monte Carlo simulator, GPL license, 3.5 Mb,
       version with all bug fixes and new features described on this page
ChemCell --- particle-based biological cell simulator, GPL license, 1.3 Mb,
       version with all bug fixes and new features described on this page
MR-MPI --- MapReduce-MPI library, modified BSD license, 1.8 Mb,
       version with all bug fixes and new features described on this page
PHISH --- PHISH streaming library, modified BSD license, 1.3 Mb,
       version with all bug fixes and new features described on this page
FFTs --- parallel 2d and 3d complex FFTs, GPL license, 27 Kb Toolkit --- analysis/plotting/viz for LAMMPS, ChemCell, SPPARKS, SPARTA, GPL license, 1.6 Mb,
       version with all bug fixes and new features described on this page
HPCC RandomAccess --- algorithm for HPCC GUPS benchmark, 22 Kb
Parallel GeneHunter --- parallel genetic linkage analysis, 740 Kb
txt2html --- text file to HTML converter for WWW pages and documentation, 19 Kb

No package

ParaDyn - embedded atom method (EAM) molecular dynamics

ParaDyn is a parallel F77 code that implements all the features of the popular serial EAM code for metals and metal alloys known as DYNAMO. DYNAMO was written by two of the EAM originators, Stephen Foiles and Murray Daw. ParaDyn's parallelism is based on the atom- and force-decomposition algorithms discussed on this page and in the 1993 MRS paper listed below.

Nearly all of ParaDyn's functionality is now in LAMMPS, which runs 2-4x faster than ParaDyn both on a single processor and in parallel. This is due to force computations and neighbor list building being implemented in a different way. So only download ParaDyn if you're sure it's what you want.

ParaDyn overview
ParaDyn documentation
Download menu (top of this page)

Parallel Molecular Dynamics With the Embedded Atom Method, S. J. Plimpton and B. A. Hendrickson, in Materials Theory and Modelling, edited by J. Broughton, P. Bristowe, and J. Newsam, MRS Proceedings 291, Pittsburgh, PA, 1993, p 37. (abstract) (postscript) (ps.gz)

Lennard-Jones molecular dynamics parallel algorithm codes

These are 3 parallel Lennard-Jones codes discussed in the 1995 J Comp Phys paper listed below. Each code performs the same computations, but implements either a atom-, force-, or spatial-decomposition algorithm. The algorithms are discussed briefly on this page and fully in the paper. These codes were written before MPI was around, so the codes have their own message-passing libraries with a wrapper on a vanilla MPI send and receive that was added later.

Documentation for LJ codes
Download menu (top of this page)

Fast Parallel Algorithms for Short-Range Molecular Dynamics, S. J. Plimpton, J Comp Phys, 117, 1-19 (1995). (abstract) (pdf) (tar file of figures if they don't display correctly in the PDF file)

SPARTA - Direct Simulation Monte Carlo (DMSC) simulator

SPARTA is a parallel DSMC code for performing simulations of low-density gases in 2d or 3d. Particles advect through a hierarchical Cartesian grid that overlays the simulation box. The grid is used to group particles by grid cell for purposes of performing collisions and chemistry. Physical objects with triangulated surfaces can be embedded in the grid, creating cut and split grid cells. The grid is also used to efficiently find particle/surface collisions.

SPARTA home page
SPARTA documentation
Download menu (top of this page)

SPPARKS - kinetic and Metropolis Monte Carlo simulator

SPPARKS is a kinetic Monte Carlo (KMC) code that has algorithms for both rejection-free KMC and null-event or rejection KMC, which is sometimes called Metropolis Monte Carlo. The KMC solvers in the code catalog a list of "events", each with an associated probability, choose a single event to perform, and advance time by the correct amount. The applications currently provided in SPPARKS are mostly on-lattice KMC models, though we are working on new off-lattice models as well. Users can add their own applications to the code, by defining what an "event" and its associated probability are, and how the execution of an event changes the state of the model.

SPPARKS home page
SPPARKS documentation
Download menu (top of this page)

ChemCell - particle-based biological cell simulator

ChemCell is a particle-based reaction/diffusion simulator designed for modeling protein networks in biological cells with spatial information.

ChemCell home page
ChemCell documentation
Download menu (top of this page)

MapReduce-MPI library - implementation of MapReduce in MPI

The MapReduce-MPI library is an implementation of MapReduce written for distributed-memory parallel machines on top of standard MPI message passing. MapReduce is the programming paradigm, popularized by Google, which is widely used for processing large data sets in parallel. Its salient feature is that if a task can be formulated as a MapReduce, the user can perform it in parallel without writing any parallel code. Instead the user writes serial functions (maps and reduces) which operate on portions of the data set independently. The data-movement and other necessary parallel operations can be performed in an application-independent fashion, in this case by the MR-MPI library.

MapReduce home page
MapReduce MPI library documentation
Download menu (top of this page)

PHISH library - a framework for processing streaming data in parallel

PHISH is a lightweight framework which a set of independent processes can use to exchange data as they run on the same desktop machine, on processors of a parallel machine, or on different machines across a network. This enables them to work in a coordinated parallel fashion to perform computations on either streaming or archived data. The library runs on top of either MPI message-passing or ZMQ sockets.

PHISH home page
PHISH library documentation
Download menu (top of this page) Toolkit - analysis, plotting, viz for LAMMPS is a loosely integrated collection of tools, written in Python, many of which provide pre- and post-processing capability for the LAMMPS molecular dynamics, ChemCell cell modeling, and SPPARKS kinetic Monte Carlo packages. There are tools to create input files, convert between file formats, process log and dump files, create plots, and visualize and animate simulation snapshots. Software packages that are wrapped by, so they can be invoked from Python, include GnuPlot, MatLab, Raster3d, and RasMol. home page documentation
Download menu (top of this page)

HPCC RandomAccess (GUPS) Benchmark

I wrote an optimized version of this HPCC benchmark using a synchronous hypercube-style all2all algorithm. It enables scalable GUPS performance on large numbers of processors. The tar file includes files for a simple stand-alone code for quick testing, as well as modules that can be incorporated into the HPCC harness for running an official benchmark test.

The algorithm is described briefly on this page and fully in this paper:

A Simple Synchronous Distributed-Memory Algorithm for the HPCC RandomAccess Benchmark, S. J. Plimpton, R. Brightwell, C. Vaughan, K. Underwood, M. Davis, Proc of Cluster 2006 - IEEE International Conf on Cluster Computing, Sept 2006. (abstract) (pdf)

Download menu (top of this page)

Parallel GeneHunter - genetic linkage analysis

I worked with a UNM biology student, Gavin Conant, to parallelize the MIT WhiteHead Institue linkage analysis code GeneHunter. This page gives all the details as does the paper below. Gavin did the bulk of this work and supports the modified code.

Download menu (top of this page)

Parallel Genehunter: Implementation of a Linkage Analysis Package for Distributed-Memory Architectures, G. C. Conant, S. J. Plimpton, W. Old, A. Wagner, P. R. Fain, T. R. Pacheco, and G. Heffelfinger, Journal of Parallel and Distributed Computing, 63, 674-682 (2003). (abstract) (pdf) (pdf.gz)

Parallel Fast Fourier Transforms (FFTs)

I've written some 2d and 3d parallel complex-to-complex FFTs that we use in various applications. More details are discussed on this page.

The parallel FFTs in the tar file you download are implemented in C, and can be called from C, C++, or Fortran (there are Fortran example driver routines in the file). The parallel FFTs require you to link with a 1d on-processor FFT library. This can be a native library or a portable one like FFTW.

Documentation for parallel FFTs
Download menu (top of this page)

txt2html - text file to HTML converter for WWW pages and documentation

This is a small C++ program (one file) that converts text files into HTML files. The text files can contain simple a few simple formatting and markup commands that get converted into appropriate HTML syntax.

I wrote this tool because I am more productive using a text editor (emacs) to write vanilla text than trying to write HTML or use a browser's WYSIWYG composer tool with an editor I don't like. Anna Reese wrote the table capabilities in txt2html.

All the WWW pages on my site, the LAMMPS site, and the LAMMPS documentation were converted to HTML via txt2html. As you view any of those pages, you can see what the underlying text file looks like, by changing the .html suffix of the URL you are browsing to .txt (not the same as viewing the source of the HTML file). An example is given below.

Curiously, looking at the .txt version of the page you are currently on (download.html), or the doc and example files for the txt2html itself, are not great examples of the simple syntax of .txt files that the tool recognizes. This is because they have to contain a lot of native HTML to fool a browser into displaying HTML itself or displaying the download form up above.

Documentation for txt2html
Examples of txt2html options
Example of a text file before applying txt2html
Corresponding HTML page after applying txt2html
Download menu (top of this page)