How to Make Your Own Potential?
This section explains how users can construct their own potentials, and what to pay attention to when configuring the workflow.
Set up the workflow in a new directory:
make setup-workflow dir=my_potential cd my_potential
Inspect the
bd.yamlfiles in each task folder inworkflow/. Most default parameters should be acceptable, but you may want to change some of them, for example the number of MD time steps inmd_select.Most probably, you also want to change the ab initio model. For testing purposes, an EAM potential is used, which is also the default option. For using VASP as the ab initio model, change the alias of
sp_calcinmotoko.yamlto:aliases: sp_calc: vasp
The INCAR file must be located in the
potentialsdirectory; an example INCAR file is provided there. If you use a different INCAR file, change the filename in thebd.yamlof thevasptask.VASP is run through ASE, which requires the VASP executable and the path of the pseudopotential directories to be set as environment variables in
launch.shinworkflow/vasp/:export ASE_VASP_COMMAND=... export VASP_PP_PATH=...
More information on setting up VASP with ASE can be found in the ASE VASP calculator documentation.
Start the daemon processes that execute the tasks:
make -C workflow create launcher
Start the workflow from the workflow directory:
cd workflow motoko orchestrator start --help motoko --verbose orchestrator start your_arguments
AutoPot is designed so that creating different potentials in the same database should not be a problem if a unique
run_nameis added. To create more potentials, append a uniquerun_nametoyour_arguments:--run_name my_potential874
The workflow has finished when the terminal shows:
terminate: workflow successful
Find the final potential and training set.
The final potential and training set,
trained_pot.mtpandts.cfg, are stored in the lasttraintask. IfXis the number of the lasttraintask, they can be found intrain/BD-train-runs/run-X.Alternatively, access them in Python:
from motoko.workflow import Workflow wf = Workflow("motoko.yaml") last_run = wf.train.connect().runs[wf.train.connect().runs_counter - 1] mtp_fname = os.path.join( last_run.run_path, last_run.train_args["trained_pot_name"] )
Delete the database and kill all daemons:
make clean