物性研(System B Ohtaka)でのVTST-VASPコンパイル
内輪用です!(重要!)
下準備
まずはmodule loadから
module purge module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0
次にHDF5のインストール
HDF5® Source Code - The HDF Group
ここからソースコードをダウンロードしてください。
ダウンロードできたらHDF5のディレクトリ内で以下を実行します。
prefix=は各々のディレクトリを指定してください。
./configure --prefix=/home/test/hdf5-1.8.18/ --enable-fortran CC=mpicc FC=mpiifort CXX=mpicxx make make install
VASPのコンパイル
ここではVASPのバージョンは6.4.1を使用してます。
-VTSTの準備
ここではvtstcode 6.4を使用します。
Download — Transition State Tools for VASP
ここから入手できます。
解凍するとvtstcode6.4というディレクトリがあるので、その中に入ってるものを使用します。
"vasp.6.4.1/src"内にmain.Fというファイルがあるのでそれを開いて以下の箇所を次のように書き換えます。
CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, & LATT_CUR%A,LATT_CUR%B,IO%IU6)
この箇所はこんな感じに
CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, & TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)
IF (LCHAIN) CALL chain_init( T_INFO, IO)
この箇所はこんな感じに
CALL chain_init( T_INFO, IO)
そうしたら"vtstcode6.4"内にあるすべてのファイル/ディレクトリを"vasp.6.4.1/src"内にコピーします。
その際chain.Fが置き換えられるので、バックアップ取るなりなんなりしておいてください。
次に".objects"ファイルを編集します。"vasp.6.4.1/src"内にあります。
隠しファイルなので、なんとかして頑張って開いてください。
ファイルを見てみると
~~~ hamil_rot.o \ chain.o \ ~~~
という箇所があるので、これを以下のように追記します。
~~~ hamil_rot.o \ bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \ fire.o lanczos.o neb.o qm.o \ pyamff_fortran/*.o ml_pyamff.o \ opt.o chain.o \ ~~~
次に"vasp.6.4.1/src"内にある"makefile"を編集します。
適宜検索して、以下のように変更してください。
LIB= lib parser pyamff_fortran
dependencies: sources libs
これでVTSTの準備は完了です。
-makefile.includeの準備
VASPのコンパイル済みバイナリの利用について - ISSP Supercomputer Center
ここに書いてある通り、"/home/issp/vasp/makefile.include"内に各バージョンごとにmakefile.includeが置いてあるので 基本的にはそれを元にして編集していきます。
CPP_OPTIONSはDFT-D4とかを使用したい場合はVASP wikiを見て書き換えてください。
HDF5_ROOTを下準備でインストールした、HDF5を指定するように書き換えてあげてください。
実行速度を比べてことはないのでなんとも言えないですが、OFLAGを-O3に書き換えたりはあんまりしない方がいいかも?
make
以下のような"~~.sh"ファイルを作ってsbatchでjobを投げればmakeできるはずです。
#!/bin/bash #SBATCH -J test #SBATCH -p i8cpu #SBATCH -N 1 cd ${SLURM_SUBMIT_DIR} ulimit -s unlimited module purge module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0 export PATH=$PATH:/HDF5をインストールしたディレクトリ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/HDF5をインストールしたディレクトリ/lib echo $PATH make DEPS=1 -j 128 std
make時のログはslurm-"jobnumber".outに出力されてるはずです。