OpenMD version 2.2

We are pleased to announce the availability of OpenMD version 2.2. This is primarily a performance and bug-fix release, but there are some new features that have been added to the code since the 2.1 release:

  • New non-bonded constraints can now be specified within a molecule
  • RNEMD statistics now give reasonable error bars based on 95% confidence intervals
  • The pAngle module in StaticProps can now use multiple selections or selection offsets to define vectors
  • Fixes to deal with deprecation of MPI C++ bindings in openmpi. We’ve reverted back to the C calls
  • Fixes for compilation with MPICH
  • Fixes to the g(r,θ) and g(r,ω) modules in StaticProps
  • Memory reporting and memory management fixes in the BlockSnapshotManager – this fixed correlation functions for very large trajectory files
  • Bond extension autocorrelation function (–bondcorr) was added to DynamicProps
  • Fixed BondType parser bugs
  • Made some of the information messages a bit less scary
  • Added some interesting builder samples
  • Started some internal work to migrate to git

Go grab it at the Download page!

OpenMD version 2.1

We are pleased to announce the availability of OpenMD version 2.1. This is primarily a performance and bug-fix release, but there are some new features that have been added to the code since the 2.0 release:

  • The electrostatics code has been completely re-written and two new real-space methods are available for testing for multipole-multipole interactions (look for upcoming papers on this subject).
  • We’ve added some spatial analysis tools to  StaticProps that can compute properties as a function of the z-axis (in periodic boundaries) or as a function of radius (in non-periodic simulations). These properties include: temperature, density, velocity, angular velocity, and tetrahedral order parameters.
  • OpenMD now builds on a much wider array of compilers.
  • New perturbation: Static electric fields can be applied to the simulation.
  • The reverse non-equilibrium molecular dynamics (RNEMD) methods now allow for exchanges in non-periodic geometries.
  • New utility program: “recenter”  which centers non-periodic simulations at specified points in space.
  • New builder utility: “icosahedralBuilder” which creates single-component nanoparticles in interesting geometries like:
    • Mackay Icosahedra
    • truncated decahedra (e.g. pentagonal rods)
    • ino-decahedra
    • curling-stone decahedra
    • other common nanoparticle geometries
  • New samples (and sample builders) to test the multipole electrostatics code for multipolar crystals.
  • New bonded potential function: HarmonicInversionType for GROMOS and CHARMM-style force fields.
  • Inversions can now be specified using center and satellites keywords.
  • Added  “region” constraints for fluctuating charge force fields.
  • New electrostatic method: single-processor implementation of a multipolar Ewald sum.
  • New correlation function: COH(z,t), which is a spatially-resolved OH bond time correlation function for water.
  • Significant performance boost over 2.0

Reproducibility in parallel OpenMD simulations

There’s an interesting issue with of how OpenMD distributes load on parallel (MPI) architectures.  At the very beginning of a parallel simulation, the molecules are distributed among the processors using a short Monte Carlo procedure to divide the labor.  This ensures that each processor has an approximately equal number of atoms to work with, and that the row- and column- distribution of atoms in the force decomposition is roughly equitable.  The Monte Carlo procedure involves the use of a pseudo-random number to make processor assignments. So, if you run the same parallel simulation multiple times, the distribution of atoms on the processors can change from run to run.  This shouldn’t be a problem if the MD algorithms are all working as they should, right?

However, one thing that many people forget is a specific limitation of floating point arithmetic.  Due to roundoff errors, the associative laws of algebra do not necessarily hold for floating-point numbers. For example, on a computer, the sum

(x+y)+z

can have a different answer than

x+(y+z)

when x = 1030y = -1030 and z = 1.  In the first case, the answer we get is 1, while roundoff might give us 0 for the second expression.   The addition-ordering roundoff issue can have effects on a simulation that are somewhat subtle.  If you add up the forces on an atom in a different order, the total force might change by a small amount (perhaps 1 part in 1010). When we use this force to move that atom, we’ll be off by a small amount (perhaps 1 part in 109). These small errors can start to make real differences in the microstate of a simulation (i.e. the configuration of the atoms), but shouldn’t alter the macrostate (i.e. the temperature, pressure, etc.).

That said, whenever there’s a random element to the order in which quantities are added up, we can get simulations that are not reproducible.  And non-reproducibility is, in general, not good.  So, how do we get around this issue in OpenMD?   We let the user introduce a static seed for the random number generator that ensures that we always start with exactly the same set of pseudo-random numbers.  If we seed the random number generator, then on the same number of processors, we’ll always get the same division of atoms, and we’ll get reproducible simulations.

To use this feature simply add a seed value to your <MetaData> section:

seed = 8675309;

This seed can be any large positive integer (an unsigned long int).

Once the seed is set, you can run on MPI clusters and be reasonably sure of getting reproducible simulations for runs with the same number of processors.  However, if you mix runs of different numbers of processors, then the roundoff issue will reappear.

OpenMD version 2.0

We are pleased to announce the availability of OpenMD version 2.0. This version represents a complete rewrite of the low-level force routines into C++. Here are some features that have been added to the code since the latest release:

  • The low-level loops, non-bonded interactions, and parallelization have been completely rewritten into C++ and should be faster.
  • The build system has been converted to CMake, which makes builds approximately 4 times faster than previous versions.
  • Multiple overlapping non-bonded interactions can be defined explicitly for two atom types.
  • There’s a new velocity-shearing and scaling (VSS) method for reverse non-equilibrium molecular dynamics (RNEMD).
  • We have added a completely new optimization library.
  • The selection syntax has been parallelized and now works during parallel simulations.
  • New correlation functions:  Selection survival correlation functions.
  • New correlation functions: Helfand-moments for thermal conductivity [Viscardy et al. JCP 126, 184513 (2007)]
  • Users can specify an electric field and we have added an architecture for external perturbations.
  • OpenMD now uses Gay-Berne strength parameter mixing ideas from Wu et al. [J. Chem. Phys. 135, 155104 (2011)]. This helps get the dissimilar particle mixing behavior to be the same whichever order the two particles come in. This does require that the force field file to specify explicitly the values for epsilon in the cross (X), side-by-side (S),  and end-to-end (E) configurations.

There are also a few hundred bugs that have been fixed in this release.

OpenMD version 1.1.5

We are pleased to announce the release of OpenMD version 1.1.5. This version is a bugfix release, and is recommended for all users of OpenMD. New things include:

  • Added the LangevinHull integrator and sample files.
  • Added “hull” token to selection syntax
  • BUGFIX: Added a check to make sure value matches data type of ForceField parameters
  • BUGFIX: We now traverse the base chains for NON-bonded interactions as well as bonded. This allows one to specify Metal – non-Metal interactions based on base types instead of exact matches.
  • Matched default Charges for OH and HO (Hydroxyl) to the values from OPLS paper.
  • BUGFIX: Changed dumpwriter to synchronize file writing to avoid file descriptor issues on large machines (>1000 nodes).
  • Added support for a stress correlation function.
  • BUGFIX: fixed a rare cutoff bug in calc_eam_prepair_rho
  • Added a staticProps module to compute the length of a nanorod
  • PERFORMANCE: Updated the BlockSnapshotManager to use a specified memory footprint in constructor and not to rely on physmem and residentMem to figure out free memory. DynamicProps is the only program that uses the BlockSnapshotManager, so substantial changes were needed there as well.
  • Fixed a clang compilation problem
  • Added the ability to output particle potential in the dump files
  • Added Momentum correlation function
  • Imported changes from Vector from development branch.
  • Added P4 order parameter to the computation done during director axis and P2 computation.
  • Added support to print Thermal Helfand Moment in the stat file.
  • Fixed typo in thermo.
  • Added RNEMD integrator.
  • Added vector source capability for the P2 order parameter in staticProps.

OpenMD version 1.1.4

We are pleased to announce the release of OpenMD version 1.1.4. This version is a primarily bugfix release, and is recommended for all users of OpenMD. New things include:

  • Fixed a bug on atomic torques for MPI jobs involving directional (Sticky, GayBerne) atoms.
  • Added a new NPTsz integrator (similar to NPTxyz, but locks the expansion / contraction of the x and y axes together).

OpenMD version 1.1.3

We are pleased to announce the release of OpenMD version 1.1.3. This version is a bugfix release, and is recommended for all users of OpenMD. New things include:

  • Fixed a bug in doForces that was causing errors in the total potential
  • Added a count option in StaticProps (useful for counting atoms that match selection criteria)

OpenMD version 1.1.2

We are pleased to announce the release of OpenMD version 1.1.2. This version is largely a bugfix and performance release, and is recommended for all users of OpenMD. New things include:

  • Fixed a bug with FCFLAGS in the configure script
  • Fixed a configure script bug for qhull with C++ compilers
  • Fixed a bug with the conserved quantity in NPTxyz
  • Performance enhancements in main force loop (replaced slow anint with floor & ceiling) (10-20% speedup!)

OpenMD version 1.1.1

We are pleased to announce the release of OpenMD version 1.1.1. This version is largely a bugfix release, and is recommended for all users of OpenMD. New things include:

  • Fixed calls to getCharge for non-charge atoms (triggered by shifted pot / shifted force computations of self-self interactions without point charges on topologically connected molecules).
  • gcc 4.4 compatibility in ProgressBar
  • Revamped the visitor architecture to allow for easier conversion of internal data structures into xyz files for export and display.
  • Added svn revision numbering for banner display.

OpenMD version 1.1

We are pleased to announce the release of OpenMD version 1.1. This version fixes a number of bugs and provides extended functionality for some of the utility programs. It is recommended for all users of OpenMD. New things include:

  • Added a Progress bar to print out how long the simulation has remaining.
  • Fixed ConvexHull code and added “select hull” as valid selection syntax.
  • Fixed over-specificity in md-solvator and fixed installation bug.
  • Fixed parameter typo for minimizer.
  • Fixed gradients for minimization of rigid bodies
  • Added EAM line for Art Voter’s aluminium potential
  • Added NaN / INF detectors to DumpWriter and StatWriter
  • Added a new correlation function (gofrz) to do slab-segregated g(r) calculations. This computes at g(r) for pairs while requiring the z coordinates of the two sites to be at fixed separations. The data is output in: r, z, g(r,z).
  • Fixed a number of bugs in GhostBend and GhostTorsion.
  • Fixed a bug in Torsion (and GhostTorsion) triggered by configurations with colinear atoms. The problem was discovered by Brett Donovan. Thanks, Brett!
  • Added a new CosineBendType
  • Updated the visitor architecture to make it easier to extend
  • Updated Dump2XYZ to output velocities, forces, or vectors if requested.