VASP
2025年7月12日 更新
このチュートリアルでは,PBSなどのジョブスケジューラーを備えたPCクラスターを想定してCrySPYを試す.第一原理計算のVASPを用いて,Na8Cl8(16原子)の構造探索を行う.
Assumption
ここでは次のような条件を想定している:
- CrySPY 1.2.0 or later in your PC cluster
- CrySPY job command:
qsub - CrySPY job filename:
job_cryspy - executable file, vasp_std in your PC cluster
Input files
どこか適当なワーキングディレクトリに移動して,まずはexampleをコピーしてくる.下記のどちらからコピーしてきても良い.
- Download from Cryspy_utility/examples/vasp_Na8Cl8_RS
- Copy from CrySPY utility that you installed
cd vasp_Na8Cl8_RS
tree
.
├── calc_in
│ ├── 1_INCAR
│ ├── 2_INCAR
│ ├── POTCAR_dummy
│ └── job_cryspy
└── cryspy.in
cryspy.in
cryspy.inはCrySPYの入力ファイル.
[basic]
algo = RS
calc_code = VASP
tot_struc = 5
nstage = 2
njob = 2
jobcmd = qsub
jobfile = job_cryspy
[structure]
atype = Na Cl
nat = 8 8
mindist_1 = 2.5 1.5
mindist_2 = 1.5 2.5
[VASP]
kppvol = 40 80
[option]
[basic] セクションのjobcmd = qsubは環境に合わせて変更する.
CrySPYは内部でバックグラウンドジョブとしてqsub job_cryspyを実行する.
下記のファイル名は好きなように変えても良い.
jobfile
構造最適化計算はステージ制を採用しており,ここではnstage = 2を用いている.
例えば,最初のステージでは,セルを固定し内部座標だけ緩和する設定で,k点も少ない計算を実行し,2ステージ目でセルも含めてフルに構造緩和して,精度も高めるようなことが可能となっている.
VASPを使う場合は,[VASP]セクションが必要.
ここでは各ステージにおけるk点のグリッド密度(Å^-3)をkppvolに指定する必要がある.
kppvolの詳細はこちら –> Input file > Kpoint
他のインプット変数に関しては後ほど説明する.
calc_in directory
ジョブファイルやVASPのインプットをこのディレクトリに置く.
Job file
ジョブファイルの名前はcryspy.inのjobfileに一致させる必要がある.
ジョブファイルの例は下記の通り.
#!/bin/sh
#$ -cwd
#$ -V -S /bin/bash
####$ -V -S /bin/zsh
#$ -N Na8Cl8_CrySPY_ID
#$ -pe smp 20
####$ -q ibis1.q
####$ -q ibis2.q
####$ -q ibis3.q
####$ -q ibis4.q
# ---------- vasp
VASPROOT=/usr/local/vasp/vasp.6.4.2/bin
mpirun -np $NSLOTS $VASPROOT/vasp_std
VASPROOTは環境に合わせて変更する.普段VASPのジョブを流しているジョブファイルを使えば良い.
CrySPYではジョブファイルの最後の行はsed -i -e ‘3 s/^.*$/done/’ stat_jobとしておくルールになっている.
バージョン1.4.2からCrySPYがジョブファイルの末尾に自動的に下記を追記するようになった.(参考:機能 > ジョブファイルの自動書き換え)
# ---------- CrySPY
sed -i -e '3s/^sub.*/done/' stat_job
1.4.2より古いバージョンでは,ジョブファイルの最後の行はsed -i -e '3s/^sub.*/done/' stat_jobと書いておくルールになっている.自分でsedコマンド文を書いたジョブファイルを1.4.2以上のバージョンで使用しても2回実行されるだけなので問題はない.
上記sedコマンドの意味は,stat_jobというファイルの3行目のsubから始まる部分をdoneに変える処理.
(詳細:機能 > ジョブファイルの自動書き換え)
CrySPYのジョブファイルのCrySPY_IDという文字列は自動的に構造IDに置き換わるようになっている.
PBSやSLURMといったジョブスケジューラーを使う場合,ジョブ名にCrySPY_IDと書いておくとどの構造のジョブなのかが分かり便利である.
例えば,PBSでは#PBS -N Si_CrySPY_IDのように書いておくと,ジョブをサブミットする際,#PBS -N Si_10のように置き換わる.
注意点として,ジョブ名を数字から始めるとエラーとなることが多いので,Si_のように何か文字列を頭につけておくこと.
Input for VASP
ステージ数(nstage in cryspy.in)に応じた数のインプットファイルが必要となる.
インプットファイル名の先頭にx_,または語尾に_xをつけて準備する.
ここでxはステージ数.
CrySPYが探すインプットファイル名の優先順位は以下の通り.
x_INCARINCAR_xINCAR
各ステージで共通のインプットを使用するのであればx_や_xを省略できる.
今はnstage = 2を用いているので,1_INCAR_1と2_INCARが必要となる.
ここでは,1_INCARはセルを固定して内部座標だけ緩和する設定,2_INCARはセルも含めてフルに緩和する設定になっている.
1_INCAR
SYSTEM = NaCl
!!!LREAL = Auto
Algo = Fast
NSW = 40
LWAVE = .FALSE.
!LCHARG = .FALSE.
ISPIN = 1
ISMEAR = 0
SIGMA = 0.1
IBRION = 2
ISIF = 2
EDIFF = 1e-5
EDIFFG = -0.01
2_INCAR
SYSTEM = NaCl
!!LREAL = Auto
Algo = Fast
NSW = 200
ENCUT = 341
!!LWAVE = .FALSE.
!!LCHARG = .FALSE.
ISPIN = 1
ISMEAR = 0
SIGMA = 0.1
IBRION = 2
ISIF = 3
EDIFF = 1e-5
EDIFFG = -0.01
CrySPYはPOSCARとKPOINTSファイルを自動生成する.
POTCARファイルはユーザーが準備する必要がある.
このexampleに含まれているPOTCARは空のファイルなので,各自で準備すること.
exampleに含まれているPOTCARは空のファイル.配布できない.
CrySPY実行
ここまで準備ができたらCrySPY実行に進む.