RMC 実行チュートリアル

対象: rmc_dft v0.6.13

rmc.py を直接実行して、RMC_POT を単独で動かす場合の基本的な使い方を説明します。

1. 概要

rmc.py は、現在の *.cfg 構造に対して RMC_POT を実行するためのスクリプトです。

RMC の入力パラメーターは rmc_init.py に記述します。

基本的な流れは次の通りです。

config.yml
    |
    +--> RmcPotDat
    |
rmc_init.py
    |
    +--> run_rmc_init()
            |
            +--> *.dat の初期化
            +--> RMC パラメーター設定
    |
rmc.py
    |
    +--> run_rmc()
            |
            +--> RMC_POT 実行
            +--> logN_rmc へ保存

2. 必要なファイル

最低限、計算ディレクトリに以下を用意します。

config.yml
rmc.py
rmc_init.py
aaa.cfg

aaa の部分は config.yml の cfg_name に依存します。

RMC_POT の実行ファイルや実験データなど、config.yml および *.dat から参照されるファイルも必要です。

3. rmc_init.py

rmc.py を直接起動した場合、実行前に

run_rmc_init(
    config=config_,
    rmc_dat=rmc_dat_,
    logger=logger_,
)

が呼ばれます。

RMC のパラメーター変更は rmc.py ではなく、基本的に rmc_init.py に記述します。

例えば、

rmc_dat.set_density(0.0570880440)

rmc_dat.set_maximum_moves(
    [
        0.01,
        0.01,
        0.01,
        0.01,
    ]
)

rmc_dat.set_sigma_factor(0.05)
rmc_dat.set_moveout_option(True)
rmc_dat.set_time_and_save(15, 1)

のように setter を使用します。

COORD、SNC/Qn、角度拘束などの free-format 設定も rmc_init.py で行います。

4. rmc_dat.init()

run_rmc_init() の最初では RmcPotDat.init() を実行します。

v0.6.13 の基本的な考え方は、

  • 既存の *.dat がある場合は、それを初期入力として使用する。

  • *.dat がない場合は初期入力を作成する。

  • 一度初期化された RmcPotDat に対して再び init() を呼んでも、初期化を繰り返さない。

  • 実際のパラメーター変更は、その後の set_*() が担当する。

というものです。

したがって、init() と setter は別の役割を持ちます。

5. 実行

python rmc.py

を実行します。

rmc.py は rmc_init.py を適用した後、RMC_POT を実行します。

6. ログディレクトリ

RMC の保存先は next_log_dir_name("rmc") によって決定されます。

例えば、

log0_rmc
log1_rmc
log2_rmc
...

のように保存されます。

RMC と DFT を組み合わせた場合も、番号はRMC専用番号・DFT専用番号ではなく、RMC/DFTで共有する通し番号として扱います。

7. Ctrl+C

v0.6.13 の rmc.py / run_rmc() では、RMC_POT 実行部分を try/finally で処理しています。

そのため、RMC_POT を Ctrl+C で停止した場合でも、途中まで生成された *.cfg などに対して postprocess が実行され、ログディレクトリへの退避処理が行われます。

8. CONTINUE_NUMBERED_INIT

rmc_init.py には、

CONTINUE_NUMBERED_INIT = False

があります。

これは rmc_init.py を単独RMC用として使用するときには実質的に使用しません。

この設定が意味を持つのは、rmc_vasp_script.py または rmc_vasp_script_sequence.py から、

rmc_init_N.py

として使用するときです。

詳細は rmc_dft.md および rmc_dft_sequence.md を参照してください。

9. 典型的な編集箇所

通常、RMC条件を変更するときは rmc.py 本体ではなく rmc_init.py を編集します。

代表的な設定は、

density
cutoff
maximum move
sigma
moveout
RMC time / save interval
experimental range
r spacing
experimental data
FNC / topology
COORD
SNC / Qn
angle constraint

です。

実行制御と入力パラメーター設定を分離し、計算条件は init 側に置くのが基本です。