next up previous
Next: Results Up: Parallel Tempering in Monte Previous: Project Goals

Code Design and Implementation

All code was written from scratch in C++. We used the STL libaries whenever possible; boost libraries were used for random number generation and serialization.

The code was designed to be object oriented and highly modular and extensible.

Configurations can be read in from a restart file or initialized at runtime.

The code keeps track of data for each particle (coordinates, molecule and species to which it belongs) and other simulation data.

Periodic boundary conditions are employed.

Traditional Metropolis MC moves can translate a particle or molecule or rotate a molecule; parameters are adjustable.

Parallel tempering swap moves exchange configurations among replicas at different temperatures.

MC moves can be evaluated with developer-defined `actions.' Already implemented is code to describe the energetics of hard spheres, Lennard-Jones particles, and the TIP5P water potential.

Developer-defined observables can be collected at prescribed frequencies. Currently implemented are energy, pair correlation functions, swap acceptance data, and single-molecule dipole-dipole autocorrelation time for use with TIP5P water molecules.

A general, robust serialization manager and job scheduler is included. This allows paralleization of the code with passing of all simulation data among processors. When a processor finishes its assigned job, it can be assigned any unstarted jobs still on the queue.


next up previous
Next: Results Up: Parallel Tempering in Monte Previous: Project Goals
John Gergely 2006-05-12