LIBATOMS1.1 is a Fortran 95 library for developing molecular dynamics codes. It has been designed to be extensible and efficient, and can be used both serially and on large parallel computers that offer an implementation of the MPI library. At present the parallisation is at a very early stage, and there is no parallelisation of data. The fundamental design principal behind the developement of LIBATOMS is the idea of expressive programming -- this involves making sensible use of high level language features to produce clear and easily understood code that is as close as possible to the abstract algorithm that is being implemented.
LIBATOMS is structured as a series of Fortran modules, each of which can be thought as self contained entities rather like C++ classes. Most modules define a type that takes its name from that of the module (for example the `Atoms' type in the module Atoms_module), and a series of subroutines and functions that operate on objects of that type, in analogue with the methods of a C++ class.
There are modules within LIBATOMS to represent a set of atoms, to apply constraints to those atoms and to integrate their equations of motion. There are also utility modules to perform task such as reading parameters from files, to solve multi-dimensional optimisation problems or to calculate the elastic properties of a given force model. It is intended that users write their own top-level programs which define instances of the various LIBATOMS types and call LIBATOMS methods.