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 側に置くのが基本です。