LAMMPS

提供: Akionux-wiki
Share/Save/Bookmark
移動先: 案内検索

概要

LAMMPSはフリー・オープンソースソフトウェアの古典的分子動力学のコード。

参考

テスト環境

Slackware Linux 14.2 x86_64

LAMMPSのバージョン (gitリポジトリ)

  • stable 4b51719 new 17Nov16 patch and stable
commit 4b51719e67c2015551416cdda65cf85b66781b8f
Author: Steve Plimpton <sjplimp@sandia.gov>
Date:   Thu Nov 17 16:51:35 2016 -0700

    new 17Nov16 patch and stable

インストール

ダウンロード

git clone https://github.com/lammps/lammps.git
cd lammps/src

stable版にする

git checkout stable

インストールされているパッケージ一覧を表示

make package-status

または

make ps

ライブラリ

ATC

ATC (Atom To Continuum methods)
局所的に分子論的記述が必要で分子動力学と有限要素法の動的相互関係が必要な系において、有限要素法と分子動力学の統一した計算フレームワークを提供する[1]
cd lib/atc
make -f Makefile.mpi

ATCを使うには別途にlinalgもビルドしておく必要がある。

例題はexamples/USER/atcにある。

linalg

USER-ATCとUSER-AWPMDをビルドする場合に必要。

cd lib/linalg
make -f Makefile.mpi

MEAM

MEAM (modified embedded atom method) library

cd ../meam
make -f Makefile.mpi

POEMS

POEMS (Parallelizable Open source Efficient Multibody Software) library

cd ../poems
make -f Makefile.mpi

ReaxFF

ReaxFFポテンシャルの実装。

cd ../reax
make -f Makefile.mpi

QUIP

QUIP (QUantum mechanics and Interatomic Potentials)

ビルドするためには、Fortranコンパイラ(gfortranなど)、BLASとLAPACKが必要。

クローンする。--recursiveオプション必須

cd ~/LAMMPS/lammps/lib/quip
git clone --recursive https://github.com/libAtoms/QUIP.git
cd QUIP

arch以下のアーキテクチャから選ぶ

export QUIP_ARCH=linux_x86_64_gfortran_openmpi
make config

質問に答えていく。よくわからなかったらエンターでデフォルトにする。

make

kim

OpenKIM

cd ~/LAMMPS
git clone https://github.com/openkim/kim-api.git
cd kim-api
cp Makefile.KIM_Config.example Makefile.KIM_Config

Makefile.KIM_Configを編集

...
KIM_DIR = $(HOME)/LAMMPS/kim-api
...

インストールディレクトリはデフォルトでは/root/kim-apiだが、変える場合はprefixで指定する。例えばホームディレクトリの~/LAMMPS/kim-api-buildにインストールする場合は、

prefix = $(HOME)/LAMMPS/kim-api-build

とする。

ビルド

make add-EAM_Dynamo_Angelo_Moody_NiAlH__MO_418978237058_001
make
make install
make install-set-default-to-v1

PATHにインストールした実行ファイルのパスを追加する

printf "export PATH=${PATH}:${HOME}/LAMMPS/kim-api-build/bin\n" >> ${HOME}/.zshrc
source ${HOME}/.zshrc

AWPMD

AWPMD (Antisymmetrized Wave Packet Molecular Dynamics)
電子と電子・イオンのハミルトニアンを計算するインターフェイスを提供する。
cd lib/awpmd

Makefile.*のうち、適当なプラットフォームのMakefileか、Makefile.emptyを編集したものでmakeする

make -f Makefile.mpi

AWPMDを使うには別途にlinalgもビルドしておく必要がある。

colvars

Colvars (Collective variables module for molecular simulation programs)
分子動力学におけるサンプリングのためのライブラリ。
cd lib/colvars
make -f Makefile.mpi

qmmm

QM/MM (quantum mechanics / molecular mechanics)サポートのためのライブラリ。 特に、Quantum ESPRESSOの平面波密度汎関数とLAMMPSへ組み込むための基本的なインターフェースを提供する。

cd lib/qmmm
make -f Makefile.mpi

h5md

H5MDファイル(HDF5をベースにしたMD用のファイル形式)をCで読み書きするためのライブラリ。 hdf5をインストールしておく必要がある。

cd lib/h5md
make -f Makefile.mpi

voro++

cd ~/LAMMPS
wget http://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz
tar xvf voro++-0.4.6.tar.gz
mkdir voro++
cd voro++-0.4.6

ここで、config.mkを編集する。 後にLAMMPSを共有ライブラリとしてビルドできるようにするために、CFLAGSに-fPICを追加する。

# Flags for the C++ compiler
CFLAGS=-Wall -ansi -pedantic -O3 -fPIC

PREFIXをインストール先ディレクトリ(ここでは、/home/hoge/LAMMPS/voro++)にする

# Installation directory
PREFIX=/home/akio/LAMMPS/voro+

ビルド実行

make
make install

lib/voronoi/Makefile.lammpsを編集

voronoi_SYSINC = -I/home/hoge/LAMMPS/voro++/include/voro++
voronoi_SYSLIB = -lvoro++
voronoi_SYSPATH = -L/home/hoge/LAMMPS/voro++/lib

openmpi

Slackbuildsのsystem/openmpiをインストール。

fftw

ocaml, ocamlbuild, autoconf, automake, indent, およびlibtoolをインストールしておく。

cd ~/LAMMPS
git clone https://github.com/FFTW/fftw3.git
cd fftw3
sh bootstrap.sh
make
make check

あとはインストール。デフォルトで/usr/local以下にインストールされる。

sudo make install

本体ビルド

  • パッケージ選択

まず全パッケージを有効にする

cd ~/LAMMPS/lammps/src
make yes-all

ここからmake no-<package>で不要なパッケージを無効にする。 gpuは無効にする

make no-gpu

その他、今のところビルドが上手くいかないものを無効にした

make no-kokkos
make no-user-quip
make no-user-vtk
  • 画像・動画の出力のための設定

計算結果を画像で出力するには、MAKE/Makefile.mpiまたはMAKE/Makefile.serialLMP_INC-DLAMMPS_PNG-DLAMMPS_JPEG、動画で出力するには、ffmpegをインストールした状態で、-DLAMMPS_FFMPEGを追加してLAMMPSをビルドする[2]-DLAMMPS_PNG-DLAMMPS_JPEGを有効にする際には、MAKE/Makefile.*

JPG_LIB =   -ljpeg -lpng

というように各ライブラリをリンクするように記入する。

  • MPI

OpenMPIを使う場合は、MAKE/Makefile.mpiまたはMAKE/Makefile.serialMPI_LIB-lmpi-lmpi_cxxを入れておく。

MPI_INC =       -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1
MPI_PATH =
MPI_LIB =   -lmpi -lmpi_cxx

OpenMPIバージョン2.1.1の場合には、-lmpi_cxxを消す。

MPI_INC =       -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1
MPI_PATH =
MPI_LIB =   -lmpi

ちなみにMPICHを使う場合は

MPI_LIB =   -lmpich -lmpl -lpthread

にする。

  • fftw3

fftw3用にMAKE/Makefile.mpiまたはMAKE/Makefile.serialを編集

FFT_INC =
FFT_PATH =
FFT_LIB =   -lfftw3f
  • eigen3

Slackware特有のケースかもしれないが、eigen3のインクルードパスが見つけられないようなので、MAKE/Makefile.mpiまたはMAKE/Makefile.serialLMP_INC-I/usr/include/eigen3を加える。

LMP_INC =   -DLAMMPS_GZIP -DLAMMPS_MEMALIGN=64 -DLAMMPS_FFMPEG -DLAMMPS_PNG -DLAMMPS_JPEG -I/usr/include/eigen3

実行ファイルをビルド(mpi)。

make mpi

ビルドしなおす場合は、

make clean-all

を実行しておく。

gitなどでソースコードをアップデートした場合は、 古いソースコードのコピーの削除

make purge

と、アップデートされたファイルへの置き換え

make package-update

または

make pu

を実行する必要がある。

例題

[3] 例題ディレクトリに移動

cd examples/indent

実行

../../src/lmp_mpi -in in.indent

設定ファイルの書き方

公式ドキュメントをよく読む。

ポストプロセッシング

Pizza.py

http://www.sandia.gov/~sjplimp/download.html からダウンロードして展開後、src/pizza.pyの最初の行を

#!/usr/bin/env python

に直す。

可視化

xmovie

xmovieは可視化ツールの一つ。

cd tools/xmovie

MakefileXLIBDIRLIBSを変更。

XLIBDIR = -L/usr/X11R6/lib64
...
LIBS    = $(XLIBDIR) -lX11 -lXaw -lm -lXt -lXpm

ビルド

make

実行例

../../lammps/tools/xmovie/xmovie -scale tmp.dump

xmovieで保存するとimage*.xpmができるので、

convert -delay 5 -loop 0 image*.xpm movie.gif

などでgifにするとアニメーションを保存できる。

References

  1. Overview of the Atoms-to-Continuum Package for LAMMPS http://lammps.sandia.gov/workshops/Aug11/Templeton/Templeton_LWS.pdf
  2. dump image command — LAMMPS documentation http://lammps.sandia.gov/doc/dump_image.html
  3. 7. Example problems — LAMMPS documentation http://lammps.sandia.gov/doc/Section_example.html