LAMMPS
概要
LAMMPSはフリー・オープンソースソフトウェアの古典的分子動力学のコード。
参考
- GitHubリポジトリ https://github.com/lammps/lammps
- 導入手順 http://lammps.sandia.gov/doc/Section_start.html
- LAMMPSインストール方法: ころにっき http://qolo.sblo.jp/article/86235047.html
- LAMMPS_install_manual_jp_linux.pdf https://winmostar.com/jp/LAMMPS_install_manual_jp_linux.pdf
- 第一原理計算入門 LAMMPS(Linux) http://www5.hp-ez.com/hp/calculations/page100
テスト環境
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]
- Overview of the Atoms-to-Continuum Package for LAMMPS http://lammps.sandia.gov/workshops/Aug11/Templeton/Templeton_LWS.pdf
- Atom-to-Continuum (AtC) package for LAMMPS http://lammps.sandia.gov/workshops/Aug13/Jones/rjones_LAMMPS_workshop_2013.pptx
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
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.serial
のLMP_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.serial
のMPI_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.serial
のLMP_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
設定ファイルの書き方
公式ドキュメントをよく読む。
- Commands — LAMMPS documentation http://lammps.sandia.gov/doc/commands.html
ポストプロセッシング
Pizza.py
http://www.sandia.gov/~sjplimp/download.html からダウンロードして展開後、src/pizza.py
の最初の行を
#!/usr/bin/env python
に直す。
可視化
- Vizualization Tools for use with LAMMPS http://lammps.sandia.gov/viz.html
- LAMMPSシミュレーションからParaView可視化 | piyajk.com http://piyajk.com/archives/334
xmovie
xmovieは可視化ツールの一つ。
cd tools/xmovie
Makefile
のXLIBDIR
とLIBS
を変更。
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
- ↑ Overview of the Atoms-to-Continuum Package for LAMMPS http://lammps.sandia.gov/workshops/Aug11/Templeton/Templeton_LWS.pdf
- ↑ dump image command — LAMMPS documentation http://lammps.sandia.gov/doc/dump_image.html
- ↑ 7. Example problems — LAMMPS documentation http://lammps.sandia.gov/doc/Section_example.html