clang
brew
LAMMPS

LAMMPSのインストール(mac用)

分子動力学計算ソフト「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


入れたいパッケージをonにしてLAMMPSの makeファイルを作って行きます。

パッケージのビルド

いくつかのパッケージは事前準備しなきゃいけないものがあって、
とりあえずぼくが欲しかった MEAM パッケージとついでに REAX パッケージはソースコードは与えられているので以下のようにビルドしておけばokです。

cd lib/meam/
make -f Makefile.gfortran

cd lib/reax/
make -f Makefile.gfortran

POEMS も同じようにビルドしておけばできる気がしたのですが、なぜかできなかったしぼくはいらないので今回は入れないことにしました。
KIMVORONOI などは外部プログラムを使用するもので別途にインストールしなければならないものがあって面倒なので入れないでおきました。

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 の中を

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

でちゃんと計算できてるか確かめれば良いと思います。

参考リンク