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 ~23,300 downloads from this page and another ~133,750 from the LAMMPS download page from Sept 2004 thru Dec 2012.
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 overviewParallel 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)
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 codesFast 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)
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 pageChemCell is a particle-based reaction/diffusion simulator designed for modeling protein networks in biological cells with spatial information.
ChemCell home pageThe 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 pagePHISH 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 pagePizza.py 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 Pizza.py, so they can be invoked from Python, include GnuPlot, MatLab, Raster3d, and RasMol.
Pizza.py home pageI 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)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)
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 FFTsThis 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