QUIP with LAMMPS¶
Added in version 2.5.
Changed in version 2.12: QUIP works through LAMMPS’s pair_style quip, and LAMMPS is now loaded
at runtime via dlopen. No eOn rebuild is needed – just install a
LAMMPS library built with the QUIP package.
In order, we require:
QUIP as a library (
quippyis not required)SOAP needs to be compiled in, documented here
LAMMPS as a shared library, documented here
Without MPI
Linked to the same QUIP
The rest of the document walks through a concrete example of this use-case.
Sample run¶
This needs to be in conjunction with the LAMMPS pair style quip.
Example Build¶
Base environment¶
micromamba create -n quip_eon_lammps
micromamba activate quip_eon_lammps
micromamba install -c conda-forge eigen numpy ase PyYAML pytest sh pytest-datadir sphinx meson gh cmake subversion pkgconfig openblas
export PYTHONROOT=$CONDA_PREFIX
QUIP¶
git clone https://github.com/HaoZeke/quip-nix.git
cd quip-nix
git clone --recursive https://github.com/libAtoms/QUIP.git QUIP
cd QUIP/src
git clone --recursive https://github.com/mcaroba/turbogap.git
source ./../setEnvVars.sh
mkdir -p build/$QUIP_ARCH
mkdir -p "$QUIP_STRUCTS_DIR"
cp ../files/$QUIP_ARCH-Makefile.inc build/$QUIP_ARCH/Makefile.inc
export EXTRA_LINKOPTS="$(pkg-config --libs openblas)"
make -j1
make libquip
make install
We need to also keep track of the build system outputs as well (though it is also installed into the environment in theory by now).
cd build/linux_x86_64_gfortran/
export QUIP_LIB_DIR_BLD=$(pwd)
LAMMPS¶
We require serial LAMMPS, linked to our recently installed QUIP.
git clone https://github.com/lammps/lammps
cd lammps
mkdir build; cd build
# The QUIP_LIB_DIR_BLD is special, needs to be populated from the QUIP folder
cmake ../cmake -D CMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DDOWNLOAD_QUIP=no -DQUIP_LIBRARY=$QUIP_LIB_DIR_BLD/libquip.a -DBUILD_SHARED_LIBS=yes -D PKG_ML-QUIP=yes -D BUILD_MPI=no -D PKG_MANYBODY=yes
make -j$(nproc)
make install
Assuming the same environment is not being used, it makes sense to track the variables for the outputs as well.
cd build
export LMP_BLD_DIR=$(pwd)
eOn¶
Assuming we are starting from scratch..
gh repo clone theochemui/eon
cd eOn
meson setup bbdir --prefix=$CONDA_PREFIX --libdir=lib --buildtype=release
meson install -C bbdir
# LAMMPS is loaded at runtime -- just ensure liblammps.so is on LD_LIBRARY_PATH
At this point both eonclient examples and eon (e.g. AKMC) examples will run.