LAMMPS
Introduction
LAMMPS is a classical molecular dynamics code, and an acronymfor Large-scale Atomic/Molecular Massively Parallel Simulator. LAMMPS has potentials for solid-state materials (metals, semiconductors) and soft matter(biomolecules, polymers) and coarse-grained or mesoscopic systems. It can be used to model atoms or, more generically, as a parallel particle simulator atthe atomic, meso, or continuum scale. LAMMPS runs on single processors or in parallel using message-passing techniques and a spatial-decomposition of thesimulation domain. The code is designed to be easy to modify or extend with new functionality.
The guide shows how to
prepare a LAMMPS with a Python virtual environment and
submit a test LAMMPS job.
To use LAMMPS you can either use the pre-installed modules or build your own Python virtual environment.
Using the pre-installed versions of LAMMPS:
module spider LAMMPS
LAMMPS/3Mar2020-foss-2020a-Python-3.8.2-kokkos-QUIP
LAMMPS/3Mar2020-foss-2020a-Python-3.8.2-kokkos
LAMMPS/23Jun2022-foss-2021b-kokkos-CUDA-11.4.1
LAMMPS/23Jun2022-foss-2021b-kokkos
And load the appropriate version. For example:
module load LAMMPS/3Mar2020-foss-2020a-Python-3.8.2-kokkos
The above will load LAMMPS into your environment, and the package will be available from within Python.
Setting up your own virtual environment (Python 3)
First ensure you are using an interactive session on a compute node:
srun -p interactive --time=02:00:00 --pty /bin/bash
We have a set of build scripts which you can use to build LAMMPS with most of the packages, and its own Anaconda 3 environment. To obtain a copy of these scripts:
cd $DATA
mkdir scripts ; cd scripts
cp -r /apps/common/examples/LAMMPS/2022.06/* .
By default our build script will create the following directories:
$DATA/LAMMPS-env (Python environment and installation location)
$DATA/LAMMPS-build (Build files)
If you would like to use different directories, you will need to change the $DATA/scripts/LAMMPS-config.sh
file. Specifically the following two lines:
export LAMMPS_INSTALL=$DATA/LAMMPS-env
export LAMMPS_BUILD=$DATA/LAMMPS-build
To run the build of LAMMPS:
cd $DATA/scripts
sh LAMMPS-build.sh
Once the build completes you can test the LAMMPS build by submitting the test job in the scripts
folder as follows:
cd $DATA/scripts
sbatch LAMMPS-test.sh
The output in the generated SLURM file slurm-nnnnnn.out
should include the following information:
Testing Python interface...(quick)
LAMMPS (23 Jun 2022)
using 1 OpenMP thread(s) per MPI task
Total wall time: 0:00:00
Followed by:
Testing dipole example run...
LAMMPS (23 Jun 2022)
using 1 OpenMP thread(s) per MPI task
WARNING: Atom style hybrid defines both, per-type and per-atom masses; both must be set, but only per-atom masses will be used (src/atom_vec_hybrid.cpp:133)
...
...
...
Lattice spacing in x,y,z = 1.6903085 1.6903085 1.6903085
Created orthogonal box = (0 0 -0.84515425) to (16.903085 16.903085 0.84515425)
6 by 8 by 1 MPI processor grid
Per MPI rank memory allocation (min/avg/max) = 5.055 | 5.055 | 5.055 Mbytes
Step Temp E_pair c_erot TotEng Press
0 0 -2.1909822 0 -2.1909822 -2.5750971
...
...
...
Performance: 23142333.912 tau/day, 53570.217 timesteps/s
99.3% CPU use with 48 MPI tasks x 1 OpenMP threads
...
...
...
Total # of neighbors = 1650
Ave neighs/atom = 8.25
Neighbor list builds = 684
Dangerous builds = 0
Total wall time: 0:00:00
Note
If you need to change the packages installed you can edit the build script $DATA/scripts/LAMMPS-build.sh
and re-run it.