RMC Execution Tutorial
Applies to: rmc_dft v0.6.13
This tutorial explains the basic procedure for running RMC_POT independently by executing
rmc.pydirectly.
1. Overview
rmc.py runs RMC_POT on the current *.cfg structure.
RMC input parameters are specified in rmc_init.py.
The basic workflow is:
config.yml
|
+--> RmcPotDat
|
rmc_init.py
|
+--> run_rmc_init()
|
+--> Initialize *.dat
+--> Set RMC parameters
|
rmc.py
|
+--> run_rmc()
|
+--> Execute RMC_POT
+--> Save to logN_rmc
2. Required Files
At minimum, prepare the following files in the calculation directory:
config.yml
rmc.py
rmc_init.py
aaa.cfg
The aaa part depends on cfg_name in config.yml.
The RMC_POT executable, experimental data, and any other files referenced by config.yml or *.dat are also required.
3. rmc_init.py
When rmc.py is launched directly, the following function is called before execution:
run_rmc_init(
config=config_,
rmc_dat=rmc_dat_,
logger=logger_,
)
RMC parameter changes should generally be defined in rmc_init.py, rather than in rmc.py.
For example, use setters:
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)
Free-format settings, including COORD, SNC/Qn, and angular constraints, are also configured in rmc_init.py.
4. rmc_dat.init()
run_rmc_init() first calls RmcPotDat.init().
The basic behavior in v0.6.13 is:
If an existing
*.datfile is present, use it as the initial input.If no
*.datfile exists, create the initial input.Calling
init()again on an already initializedRmcPotDatdoes not repeat initialization.Subsequent
set_*()calls perform the actual parameter changes.
Thus, init() and the setters have distinct responsibilities.
5. Execution
Run:
python rmc.py
rmc.py applies rmc_init.py and then executes RMC_POT.
6. Log Directories
The RMC output directory is determined by next_log_dir_name("rmc").
For example:
log0_rmc
log1_rmc
log2_rmc
...
When RMC and DFT are combined, the numbering is a single shared sequence across RMC and DFT, not separate RMC and DFT counters.
7. Ctrl+C
In v0.6.13, rmc.py / run_rmc() wraps the RMC_POT execution in try/finally.
Consequently, even if RMC_POT is interrupted with Ctrl+C, postprocessing is performed on partially generated files such as *.cfg, and the files are archived in the log directory.
8. CONTINUE_NUMBERED_INIT
rmc_init.py contains:
CONTINUE_NUMBERED_INIT = False
This setting is effectively unused when rmc_init.py is used for standalone RMC execution.
It matters when rmc_vasp_script.py or rmc_vasp_script_sequence.py uses a numbered initialization file:
rmc_init_N.py
See rmc_dft.md and rmc_dft_sequence.md for details.
9. Typical Parameters to Edit
Normally, edit rmc_init.py rather than rmc.py to change RMC conditions.
Typical settings include:
density
cutoff
maximum move
sigma
moveout
RMC time / save interval
experimental range
r spacing
experimental data
FNC / topology
COORD
SNC / Qn
angle constraint
The basic design separates execution control from input-parameter configuration, keeping calculation conditions in the initialization file.