分子動力学計算ソフト「LAMMPS」のmacへのインストール手順です。
パッケージなしのLAMMPSはLAMMPSのwebページにある通り、macは brew install lammps
で入れられます。
パッケージも入れたい場合は、webページに書いてあるように brew install lammps --enable-{パッケージ}
としても Warning: lammps: this formula has no --enable-{パッケージ} option so it will be ignored!
と出てパッケージは入れてくれないので、macに入れる場合は自分でソースコードからコンパイルする必要があります。
公式の手順はLAMMPSのGetting startedに書いてありますが、これもこれでうまくいかない気がしたので色々調べてぼくが成功した手順を一応まとめておこうと思います。割と自分用。
コンパイラ関係
まず最初に、LAMMPSのコンパイルには g++,c++
等のコマンドが使われますが、mac標準の clang
が参照されていると一生エラーしか吐かないです。 g++ -v
などを実行して
Apple LLVM version 9.0.0 (clang-900.0.39.2)
と出る場合は、ちゃんと最新の g++-7
等をインストールした後、 g++
コマンドを g++-7
として使えるように以下のシンボリックリンクを貼ります。
ln -s /usr/local/bin/gcc-7 /usr/local/bin/gcc
ln -s /usr/local/bin/g++-7 /usr/local/bin/g++
ln -s /usr/local/bin/c++-7 /usr/local/bin/c++
シンボリックリンクが正しく設定されているかどうかは、 ls -la /usr/local/bin/g++
を実行して
lrwxr-xr-x 1 username admin 20 1 25 16:16 /usr/local/bin/gcc -> /usr/local/bin/g++-7
と出てくる -> /usr/local/bin/g++-7
の場所と which g++-7
の実行結果が一致していれば良いです。
LAMMPSのダウンロード
LAMMPS(11 Aug 2017)のsource tarball をダウンロード、展開して
cd lammps-11Aug17/
src
ディレクトリで make
と打つと使える make
コマンドの一覧が出てきます。
make package-status
と打つとどのパッケージをインストールする設定になっているかが表示されます。
例えばこんな感じ
$ make package-status
Installed YES: package ASPHERE
Installed YES: package BODY
Installed YES: package CLASS2
Installed YES: package COLLOID
Installed YES: package COMPRESS
Installed YES: package CORESHELL
Installed YES: package DIPOLE
Installed NO: package GPU
Installed YES: package GRANULAR
Installed NO: package KIM
Installed YES: package KOKKOS
src/fix_qeq_reax_kokkos.cpp does not exist
src/fix_reaxc_bonds_kokkos.cpp does not exist
src/fix_reaxc_species_kokkos.cpp does not exist
src/pair_lj_sdk_kokkos.cpp does not exist
src/pair_reaxc_kokkos.cpp does not exist
src/fix_qeq_reax_kokkos.h does not exist
src/fix_reaxc_bonds_kokkos.h does not exist
src/fix_reaxc_species_kokkos.h does not exist
src/pair_lj_sdk_kokkos.h does not exist
src/pair_reaxc_kokkos.h does not exist
Installed YES: package KSPACE
Installed YES: package MANYBODY
Installed YES: package MC
Installed YES: package MEAM
Installed YES: package MISC
Installed YES: package MOLECULE
Installed NO: package MPIIO
Installed NO: package MSCG
Installed YES: package OPT
Installed YES: package PERI
Installed NO: package POEMS
Installed YES: package PYTHON
Installed YES: package QEQ
Installed YES: package REAX
Installed YES: package REPLICA
Installed YES: package RIGID
Installed YES: package SHOCK
Installed YES: package SNAP
Installed YES: package SRD
Installed NO: package VORONOI
Installed NO: package USER-ATC
Installed NO: package USER-AWPMD
Installed NO: package USER-CGDNA
Installed NO: package USER-CGSDK
Installed NO: package USER-COLVARS
Installed NO: package USER-DIFFRACTION
Installed NO: package USER-DPD
Installed NO: package USER-DRUDE
Installed NO: package USER-EFF
Installed NO: package USER-FEP
Installed NO: package USER-H5MD
Installed NO: package USER-INTEL
Installed NO: package USER-LB
Installed NO: package USER-MANIFOLD
Installed NO: package USER-MEAMC
Installed NO: package USER-MGPT
Installed NO: package USER-MISC
Installed NO: package USER-MOLFILE
Installed NO: package USER-NETCDF
Installed NO: package USER-OMP
Installed NO: package USER-PHONON
Installed NO: package USER-QMMM
Installed NO: package USER-QTB
Installed NO: package USER-QUIP
Installed NO: package USER-REAXC
Installed NO: package USER-SMD
Installed NO: package USER-SMTBQ
Installed NO: package USER-SPH
Installed NO: package USER-TALLY
Installed NO: package USER-VTK
パッケージのビルド
いくつかのパッケージは事前準備しなきゃいけないものがあって、
とりあえずぼくが欲しかった MEAM
パッケージとついでに REAX
パッケージはソースコードは与えられているので以下のようにビルドしておけばokです。
cd lib/meam/
make -f Makefile.gfortran
cd lib/reax/
make -f Makefile.gfortran
POEMS
も同じようにビルドしておけばできる気がしたのですが、なぜかできなかったしぼくはいらないので今回は入れないことにしました。
KIM
や VORONOI
などは外部プログラムを使用するもので別途にインストールしなければならないものがあって面倒なので入れないでおきました。
fftw3のインストール
次はめちゃめちゃエラー吐いてくる fftw
関連。
ここ からダウンロード(今回は fftw-3.3.7
)して、展開。
cd fftw-3.3.7
./configure --enable-float --enable-debug
make
sudo make install
これで /usr/local/
以下にインストールされます。
設定はなにも付けなくてもいいのかもしれないです。よくわからない。
LAMMPSのインストール
まず、 src/MAKE/MACHINE/Makefile.mac
の中を
FFT_INC = -I/usr/local/Cellar/fftw/3.3.7_1/include -DFFT_FFTW3
FFT_PATH = -L/usr/local/Cellar/fftw/3.3.7_1/lib
FFT_LIB = -lfftw3
のように編集します。
src
ディレクトリに戻って、
make yes-standard
で standard
パッケージがインストールされる設定になります。
次に standard
パッケージの中から今回入れないパッケージを外して行きます。
make no-GPU
make no-KIM
make no-MPIIO
make no-MSCG
make no-POEMS
make no-VORONOI
単純にインストール時にエラーを出すものを外しただけです。これで上の例にあった設定と同じになると思います。これ以外のパッケージは何もしなくても勝手に入ってくれるやつらです。
この中に入れたいものがあったら別途調べてください。
よく覚えてないのだが、この辺で
make stubs
しておいた方良いのかもしれないです。
これで準備が整ったので、インストールします。
make mac
make
が成功すれば src
ディレクトリ内に lmp_mac
が生成されます。エラーが出たら make clean-all
してからまた色々頑張り直した方が良いらしいです。
ちなみに、
Undefined symbols for architecture x86_64:
なんちゃらかんちゃら
ld: symbol(s) not found for architecture x86_64
なんちゃらかんちゃら
って出るエラーは入れられないパッケージ入れようとしてる的な問題だと思うので、
長いエラーメッセージ内から該当しそうなパッケージ見つけて除外するとうまく行ったりします。
lmp_mac
がLAMMPSの実行ファイルなのでパスを通せば使えるようになります。
一応ちゃんと動くかテストするには
cp lmp_mac ../bench/
cd ../bench/
./lmp_mac < in.lj
でちゃんと計算できてるか確かめれば良いと思います。