¡Hola! (Hordes Of Little Atoms)

A Particle Dynamics Simulation Toolkit

¡Hola!, for "Hordes of Little Atoms," is a project to develop a lean, modular, scalable toolkit for massive simulations of particle (molecular) dynamics. It is written in C and Python to get the best balance between programmer and run time. It is available under the Gnu Public License (GPL).

¡Come Hack Hola with us!

Our developer page at SourceForge lets you download the code and watch the development in progress.

The project currently consists of a research-quality (which means fast and powerful, but specialized and ugly) code for investigating condensed matter physics, primarily dynamic fracture. The program can be build on the Cray T3E, IBM SP3, Linux, and Windows (with Cygwin), and can be built as either a single- processor or parallel (using MPI) program.

(BTW, ¡Hola! should be pronounced like the Spanish word: "O'la," The "h" is silent, and the first syllable rhymes with "toe.")

Support of the National Science Foundation through the Materials Theory program, DMR9877044, is gratefully acknowledged.

A ¡Hola! new Approach

The "right" particle dynamics architecture should have the following attributes:

We plan to implement a Python framework that will call efficient, specialized C routines in order to get the best balance of programmer and run time. This is similar to the design of UNIX: a set of loosely coupled tools written in C for efficiency, a well-defined interface for passing data, and a flexible scripting language to glue it all together.

An interesting feature of particle dynamics is that almost every function involves either less than 100 or more than 1,000,000 operations -- that is, almost every function is either O(1) or O(N). The expensive routines will be written in C, for run-time efficiency, while the inexpensive routines will be in Python, for programmer efficiency. For example, the excellent text manipulation facilities of Python will make it easy to process data and to write and interpret configuration files: we will simply use Python as a scripting language to implement these routines.

One of the most important features of this design is that Python is a "weak glue:" it should be very easy for a researcher to adapt their existing code, whether in C, C++, Fortran, or Logo, by placing a Python wrapper around their routine (SWIG, www.swig.org) makes this easy). A module may do anything it wants behind the scenes as long as it subscribes to the public interface for the task it performs. The object- oriented features of Python allow these public interfaces to be subclassed and extended for special purposes.

The focus of the project is purely on simulation, rather than visualization or analysis, and on remaining lean and mean (without sacrificing modularity). The code is inherently parallel and will scale to dozens of processors on supercomputers or commodity clusters. The parallel efficiency is respectable across the range of processors we have access to. You may view advanced demonstrations and a description of the research motivating this work here.

A Simple Example

The following picture is a visualization (generated in Mathematica) of a ¡Hola! simulation run on a regular PC workstation. It consists of 4,200 atoms connected by snapping hooke springs and is therefore about the simplest "interesting" simulation. This simulation takes 40 seconds to run on one Athlon-1500+ processor for 12,600 timesteps. Memory usage is insignificant for such a small simulation. You may also view results of 3-D simulations, done on supercomputers, using realistic effective potentials and many thousands of particles.

Traveling Self-Healing Crack (166k; click for 2MB anim)

See an animation of results (2MB -- 5 mins at 56k) in this window: Seeded Crack or a No Seed (pure shear) Crack.
Or in a new window: Seeded Crack or a No Seed (pure shear) Crack.
No javascript: Seeded Crack or a No Seed (pure shear) Crack.
(click to stop)