★ LAMMPS Installation Guide (M2 Mac, Ventura: GNU Compiler, FFTW3) 

## はじめに
+ 私は、LAMMPS 初心者なのでこちらの記事は、自分用の備忘録。
+ この記事を参考にして生じた損害等には一切の責任は負いません。
+ Apple Silicon (M2) の Mac に LAMMPS を入れる記事。
+ Homebrew で LAMMPS をインストールできますが、ここでは cmake で build する。
+ LAMMPS では、分子性液体、イオン液体、電解液のMDシミュレーションを想定。
+ また、電極界面にも興味があるため、ELECTRODE パッケージを導入。
+ GROMACS, VMD に慣れているので、MOLFILE, EXTRA-DUMP パッケージを導入。
+ M1 Mac で macOS monterey の場合は、Xcode 13.4.1 をそのまま使用するとOK。

## インストール環境
+ Mac Studio (M2, 2023)   Apple M2 Ultra   128 GB   macOS Ventura 13.4.1
+ Mac mini (M2, 2023)	Apple M2   16 GB   macOS Ventura 13.4.1

## 【重要】 Xcode 13.4.1 をダンロードし、設定する
&emsp;macOS Ventura では Xcode 14 以上しか使えない。
&emsp;Xcode 14.3.1 で LAMMPS を install できるが、LAMMPS を動かすと pppm 処理でエラーが発生する。
（つまり、正常にインストールできているようで、インストールできていない >> ldのエラーが発生する）

&emsp;→ よって、本来 Ventura で使用できない Xcode 13.4.1 を無理やりインストールし、
&emsp;&emsp;LAMMPS を build することでそのエラーを回避する。
1. Apple Developper <https://developer.apple.com/jp/> にアクセスし、Apple ID でログインする。
2. <https://developer.apple.com/download/all/?q=Xcode> にアクセスする。
3. Xcode_13.4.1.xip をダウンロードする（結構時間がかかる）。
4. Xcode_13.4.1.xip をダブルクリックし、Xcode.app に展開する（結構時間がかる）。
5. Xcode_13.4.1 と名前を変更して、Finder > アプリケーション に 移動させる。
6. アイコンのダブルクリックでインストールを開始できないので、
Terminal から以下のコマンドでインストールを開始する。

~~~
open /Applications/Xcode_13.4.1.app/Contents/MacOS/Xcode
~~~

&emsp;&emsp;下のような画面が表示されるので、Install をクリックする。
<img width="600" alt="Xcode.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553575/1478c19c-2b5c-c14c-dcd7-79f61d10a424.png">
&emsp;&emsp;Install をクリックすると、別のTerminal ウィンドが立ち上がり、インストールされる。
<img width="600" alt="terminal.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553575/5e44ef9c-8395-cde5-0f82-e55597927cd8.png">

+ ターミナル上での Xcode の Version 確認と Xcode 13.4.1 への変更

~~~
xcode-select -p
// "/Applications/Xcode.app/Contents/Developer" と表示される //

sudo xcode-select -s /Applications/Xcode_13.4.1.app/Contents/Developer/
// PASSWORD を打つ //
~~~
※ LAMMPS のインストールが終わったら Xcode を 14.3.1（元のバージョン）に戻すの忘れずに！

## Homebrew で必要なものを入れ、リンクを作成する
[Homebrew のインストールについて](https://brew.sh/index_ja)

+ gcc11 のインストール
~~~
brew install gcc@11
~~~

+ gcc11 のリンクを作成
~~~
sudo ln -sf /opt/homebrew/Cellar/gcc\@11/11.4.0/bin/gcc-11 /usr/local/bin/gcc
sudo ln -sf /opt/homebrew/Cellar/gcc\@11/11.4.0/bin/g++-11 /usr/local/bin/g++
sudo ln -sf /opt/homebrew/Cellar/gcc\@11/11.4.0/bin/gfortran-11 /usr/local/bin/gfortran
~~~
※ 11.4.0 などフォルダ名が違う場合があるので、確認して変更すること

+ gcc Version の確認
~~~
gcc -v
g++ -v
gfortran -v
~~~
※ それぞれ、gcc version 11.4.0 (Homebrew GCC 11.4.0) などが表示されればOK

+ cmake, fftw, ffmpeg, pkg-config をインストール
~~~
brew install cmake fftw ffmpeg pkg-config
~~~

## Open MPI のインストール
&emsp;&emsp;[Open MPI についてはこちら](https://www.open-mpi.org/)

+ 上記ファイルをダウンロードし、解凍してそのフォルダに Terminal で入る。
~~~
cd
cd Downloads
tar xvzf openmpi-4.1.4.tar.gz
cd openmpi-4.1.4
~~~
~~~
mkdir build
cd build
../configure CC=gcc CXX=g++ FC=gfortran F77=gfortran F90=gfortran --prefix=/opt/openmpi-4.1.4
make -j 4
sudo make install
~~~
+ Open MPI を使えるように .bashrc にPATHを通す
~~~
cd
vi .bashrc
~~~
+ その後下記を最終行に追加して、ESC + :wq
~~~
## OpenMPI SETTING
export PATH=/opt/openmpi-4.1.4/bin:$PATH
export LD_LIBRARY_PATH=/opt/openmpi-4.1.4/lib:$LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=/opt/openmpi-4.1.4/lib:$DYLD_LIBRARY_PATH
export MANPATH=/opt/openmpi-4.1.4/share/man:$MANPATH
~~~
+ ターミナルを再起動後にOpen MPI の PATH が通っているか確認する
~~~
mpicc -v
mpic++ -v
mpifort -v
~~~
※ 下部に gcc version 11.4.0 (Homebrew GCC 11.4.0)  等がそれぞれ表示されればOK

## VMD のインストール （output に vmdplugin を使用する場合）
+ LAMMPS で MOLFILE パッケージを使用する場合に以下の作業を行う&emsp;&emsp;[VMDについてはこちら](https://www.ks.uiuc.edu/Research/vmd/)
ここでは、Apple Silicon を使っているはずなので、
&emsp;&emsp;Version 1.9.4 LATEST ALPHA (2022-04-27) Platforms:
&emsp;&emsp;MacOS 11.x, ARM64 (64-bit "M1" Macs) (Apple MacOS-X 11 or later)
をダウンロードし、インストールする。
※ Intel Mac の場合でも、Version 1.9.4 LATEST ALPHA を使用すること （理由は後述）
&emsp;まぁ、MacOS catalina からは 32 bit が廃止されたので、1.9.3 は使われていないと思うが…。

## LAMMPS をインストール前の準備 （VMDのヘッダーファイルの変更）
LAMMPS は、xtc, dcd などのoutput形式を VMD plugin を用いて処理する。（lammpstrj がLAMMPS形式）
LAMMPS ソースコードの中の VMD plugin のヘッダーファイル (vmdplugin.h, molfile_plugin.h) は古い。
したがって、ARM版 VMD-1.9.4 の ヘッダーファイルと入れ替える必要がある。

※ VMD-1.9.3 の macOS版は 32 bit であるため、64 bit LAMMPS では plugin が読み込めないので注意
&emsp;対象の LAMMPS command: [dump molfile](https://docs.lammps.org/dump_molfile.html), [rerun](https://docs.lammps.org/rerun.html) (xtc, trr, dcd, etc), [read_dump](https://docs.lammps.org/read_dump.html)
&emsp;上記コマンドを使用する場合は、VMD plugin のフォルダ PATH を指定する
&emsp;あるいは、作業ディレクトリに *.so をコピーして使用する。

+ LAMMPS のソースファイルのダウンロード
[LAMMPS ](https://www.lammps.org/#gsc.tab=0)から 23Jun2022（stable-update4） をダウンロードする

+ ダウンロードしたファイルを解凍し、/lib/molfile 中のヘッダーファイルを更新する
~~~
cd
cd Downloads
tar xvzf lammps-stable_23Jun2022_update4.tar.gz
cd lammps-stable_23Jun2022_update4/lib/molfile
rm *.h
cp /Applications/VMD\ 1.9.4a57-arm64-Rev12.app/Contents/vmd/plugins/include/vmdplugin.h ./
cp /Applications/VMD\ 1.9.4a57-arm64-Rev12.app/Contents/vmd/plugins/include/molfile_plugin.h ./

// VMD の PATH は、使用しているVMDのバージョンで変更すること
//最新版は、VMD 1.9.4a57 for MacOS X, 64-bit
~~~

## LAMMPS 23Jun2022_update4/GCC/FFTW3 のインストール
~~~
cd
cd Downloads/lammps-stable_23Jun2022_update4
mkdir build
cd build
cmake -DLAMMPS_MACHINE=23Jun2022 -DENABLE_TESTING=on -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/Users/${USER}/programs/lammps/lammps-23Jun2022 -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS=-L/opt/homebrew/Cellar/gcc\@11/11.4.0/lib/gcc/11 -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS=-L/opt/homebrew/Cellar/gcc\@11/11.4.0/lib/gcc/11 -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_Fortran_FLAGS=-L/opt/homebrew/Cellar/gcc\@11/11.4.0/lib/gcc/11 -DLAMMPS_EXCEPTIONS=on -DBUILD_SHARED_LIBS=on -DBUILD_TOOLS=on -DBUILD_MPI=on -DBUILD_OMP=on -DFFT=FFTW3 -DFFT_SINGLE=on -DFFT_FFTW_THREADS=on -DPKG_BODY=on -DPKG_BOCS=on -DPKG_COMPRESS=on -DPKG_CORESHELL=on -DPKG_DIELECTRIC=on -DPKG_DIFFRACTION=on -DPKG_DIPOLE=on -DPKG_DRUDE=on -DPKG_ELECTRODE=on -DPKG_EXTRA-COMPUTE=on -DPKG_EXTRA-DUMP=on -DPKG_EXTRA-FIX=on -DPKG_EXTRA-MOLECULE=on -DPKG_EXTRA-PAIR=on -DPKG_FEP=on -DPKG_INTERLAYER=on -DPKG_KSPACE=on -DPKG_MANYBODY=on -DPKG_MEAM=on -DPKG_MISC=on -DPKG_MOLECULE=on -DPKG_MOLFILE=on -DPKG_OPENMP=on -DPKG_OPT=on -DPKG_PLUGIN=on -DPKG_PYTHON=on -DPKG_RIGID=on -DMOLFILE_INCLUDE_DIR=/Applications/VMD\ 1.9.4a57-arm64-Rev12.app/Contents/vmd/plugins/include ../cmake

// インストール先は、　/Users/${USER}/programs/lammps/lammps-23Jun2022 としている
// gcc の Version は、使用している gcc で変更すること
// MOLFILE_INCLUDE_DIR は、ヘッダーファイルをコピーしたものと同じバージョンを使用すること

make -j 4 install
~~~

+ LAMMPSを使えるように .bashrc に Path を通す
~~~
cd
vi .bashrc
~~~
+ その後下記を最終行に以下を追加して、ESC + :wq
~~~
## LAMMPS SETTING
export PATH=$PATH:/Users/${USER}/programs/lammps/lammps-23Jun2022/bin
export DYLD_LIBRARY_PATH=/Users/${USER}/programs/lammps/lammps-23Jun2022/lib:$DYLD_LIBRARY_PATH
# LAMMPS TOOLS
export PATH=/Users/${USER}/Downloads/lammps-23Jun2022/tools/python:$PATH
export LAMMPS_PYTHON_TOOLS=/Users/${USER}/Downloads/lammps-23Jun2022/tools/python/pizza:$LAMMPS_PYTHON_TOOLS
~~~
※ PATH は自分の好みで適宜変更してもOK

## ターミナルを再起動し、コマンドを確認
~~~
lmp_23Jun2022 

// 下記が表示されれば OK
// LAMMPS (23 Jun 2022 - Update 4)
// OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
// using 1 OpenMP thread(s) per MPI task

// Control+D で終了
~~~
※ .bashrc に　export OMP_NUM_THREADS=1 と追記すると良い

## Xcode 13.4.1 から 元のバージョンに戻す
~~~
xcode-select -p
// "/Applications/Xcode_13.4.1.app/Contents/Developer" と表示される //

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/
// PASSWORD を打つ //
~~~

## 実際に MD シミュレーションを動かす
+ 適当に MD シミュレーションを動かして、エラーが出ないか確認すること