VASP 実行チュートリアル

対象: rmc_dft v0.6.13

rmc_vasp.py を直接実行して VASP を単独で動かす場合と、rmc_vasp_init.py の使い方を説明します。

1. 概要

rmc_vasp.py は、既存の VASP 入力を利用して VASP を実行するスクリプトです。

VASP の入力条件は rmc_vasp_init.py に記述します。

config.yml
    |
rmc_vasp_init.py
    |
    +--> KPOINTS
    +--> POTCAR
    +--> VaspIncar.init()
    +--> INCAR のタグ設定
    |
rmc_vasp.py
    |
    +--> run_vasp()
            |
            +--> VASP 実行
            +--> postprocess
            +--> logN_dft へ保存

2. 必要なファイル

典型的には、

config.yml
rmc_vasp.py
rmc_vasp_init.py
POSCAR

を用意します。

INCAR、KPOINTS、POTCAR は既存ファイルを使用することも、init 側から準備することもできます。

3. rmc_vasp_init.py

rmc_vasp.py を直接起動すると、

run_vasp_init(
    config=config_,
    vasp_incar=vasp_incar_,
    logger=logger_,
)

が VASP 実行前に呼ばれます。

KPOINTS

現行 init では、KPOINTS が存在しない場合のみ作成します。

if not os.path.exists("KPOINTS"):
    ...

既存 KPOINTS があれば、そのまま使用します。

POTCAR

POTCAR も存在しない場合のみ作成します。

元素情報は config.element_info を使用します。

INCAR

INCARについては、

vasp_incar.init()

を最初に実行します。

これはRMC側の rmc_dat.init() に対応する初期化です。

4. VaspIncar.init()

v0.6.13 では、VASP側にも正式な初期化処理があります。

基本動作は、

INCARあり
    -> 既存INCARを読み込む
    -> init() 自体では書き換えない

INCARなし
    -> 初期INCARを作成する

すでに初期化済み
    -> init() は再初期化しない

です。

その後、

vasp_incar.set_tag("EDIFF", 1e-4)
vasp_incar.set_tag("EDIFFG", 1e-3)
vasp_incar.set_tag("ISMEAR", 0)
vasp_incar.set_tag("SIGMA", 0.1)
vasp_incar.set_tag("NSW", 30)
vasp_incar.set_tag("ISIF", 2)
vasp_incar.set_tag("IBRION", 2)

のように、rmc_vasp_init.py に明示したタグを設定します。

重要なのは、既存 INCAR がある場合でも init を無視しないことです。

既存INCARを初期入力として読み込み、その上で rmc_vasp_init.py の setter を実行します。

5. 実行

python rmc_vasp.py

で実行します。

実行モードは基本的に config.yml の run_mode を使用します。

run_vasp() 内では、

if run_mode is None:
    run_mode = config.run_mode

として VASP を起動します。

6. postprocess

VASP終了後、通常は postprocess が実行されます。

vasp.postprocess(
    log_dir=log_dir_vasp,
    cfg_name=config.cfg_name,
)

ここで計算結果のバックアップや、次のRMC計算に必要な構造ファイルへの変換・更新が行われます。

7. ログディレクトリ

保存先は、

next_log_dir_name("dft")

で決定されます。

例えば、

log0_dft
log1_dft
log2_dft
...

という名前になります。

RMC-DFTとして使用するとき、数字部分はRMCとDFTで共有する通し番号です。

8. CONTINUE_NUMBERED_INIT

rmc_vasp_init.py には、

CONTINUE_NUMBERED_INIT = False

があります。

単独で rmc_vasp.py を実行する場合には通常使用しません。

rmc_vasp_script.py / rmc_vasp_script_sequence.py から、

rmc_vasp_init_N.py

として使用するときに、番号付きinitを次のVASP runでも継続するかを指定します。

9. 基本的な編集方針

VASP条件を変更する場合は、原則として rmc_vasp.py 本体ではなく rmc_vasp_init.py を編集します。

例えば、

EDIFF
EDIFFG
ISTART
ISMEAR
SIGMA
NELM
NSW
ISIF
IBRION
LREAL
ISPIN
ALGO
KPAR
NCORE
NSIM

などです。

rmc_vasp.py は実行処理、rmc_vasp_init.py は入力条件、という役割分担にします。