LAMMPSのインストール（mac用）


分子動力学計算ソフト「LAMMPS」のmacへのインストール手順です。
パッケージなしのLAMMPSは[LAMMPSのwebページ](http://lammps.sandia.gov/download.html)にある通り、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](http://lammps.sandia.gov/doc/Section_start.html)に書いてありますが、これもこれでうまくいかない気がしたので色々調べてぼくが成功した手順を一応まとめておこうと思います。割と自分用。


## **コンパイラ関係**
まず最初に、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](http://lammps.sandia.gov/tars/lammps-stable.tar.gz) をダウンロード、展開して

```
cd lammps-11Aug17/
```

`src`ディレクトリで `make`と打つと使える `make`コマンドの一覧が出てきます。
`make package-status`と打つとどのパッケージをインストールする設定になっているかが表示されます。
<details><summary>例えばこんな感じ</summary><div>

```
$ 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
```
</div></details>
入れたいパッケージをonにしてLAMMPSの `make`ファイルを作って行きます。


## **パッケージのビルド**

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

```
cd lib/meam/
make -f Makefile.gfortran

cd lib/reax/
make -f Makefile.gfortran
```

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



## **fftw3のインストール**
次はめちゃめちゃエラー吐いてくる `fftw` 関連。
[ここ](http://www.fftw.org/download.html) からダウンロード（今回は `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
```

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


## 参考リンク

* http://seesaawiki.jp/qolo/d/LAMMPS%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
* http://decafish.blog.so-net.ne.jp/2007-10-06
* https://www5.hp-ez.com/hp/calculations/page152