Autotest Overview: Autotest for Deep Generator

Suppose that we have a potential (can be DFT, DP, MEAM …), autotest helps us automatically calculate M properties on N configurations. The folder where the autotest runs is called the working directory of autotest. Different potentials should be tested in different working directories.

A property is tested in three steps: make, run and post. make prepares all computational tasks that are needed to calculate the property. For example to calculate EOS, make prepares a series of tasks, each of which has a scaled configuration with certain volume, and all necessary input files necessary for starting a VASP, ABACUS, or LAMMPS calculations. run sends all the computational tasks to remote computational resources defined in a machine configuration file like machine.json, and automatically collects the results when remote calculations finish. post calculates the desired property from the collected results.

Relaxation

The relaxation of a structure should be carried out before calculating all other properties:

dpgen autotest make relax.json
dpgen autotest run relax.json machine.json
dpgen autotest post relax.json

If, for some reasons, the main program terminated at stage run, one can easily restart with the same command. relax.json is the parameter file. An example for deepmd relaxation is given as:

{
        "structures":   "confs/mp-*",
        "interaction": {
                "type":         "deepmd",
                "model":        "frozen_model.pb",
                "type_map":     {"Al": 0, "Mg": 1}
        },
        "relaxation": {}
}

where the key structures provides the structures to relax. interaction is provided with deepmd, and other options are vasp, abacus, meam

Task type

There are now six task types implemented in the package: vasp, abacus, deepmd, meam, eam_fs, and eam_alloy. An inter.json file in json format containing the interaction parameters will be written in the directory of each task after make. We give input examples of the interaction part for each type below:

VASP:

The default of potcar_prefix is “”.

	"interaction": {
		"type":		"vasp",
		"incar":	"vasp_input/INCAR",
		"potcar_prefix":"vasp_input",
		"potcars":	{"Al": "POTCAR.al", "Mg": "POTCAR.mg"}
	}

ABACUS:

The default of potcar_prefix is “”. The path of potcars/orb_files/deepks_desc is potcar_prefix + potcars/orb_files/deepks_desc.

	"interaction": {
		"type":		"abacus",
		"incar":	"abacus_input/INPUT",
		"potcar_prefix":"abacus_input",
		"potcars":	{"Al": "pseudo_potential.al", "Mg": "pseudo_potential.mg"},
		"orb_files": {"Al": "numerical_orb.al", "Mg": "numerical_orb.mg"},
		"atom_masses": {"Al": 26.9815, "Mg":24.305},
		"deepks_desc": "jle.orb"
	}

deepmd:

Only 1 model can be used in autotest in one working directory.

	"interaction": {
		"type":		 "deepmd",
		"model":	 "frozen_model.pb", 
		"type_map":      {"Al": 0, "Mg": 1}
	}

meam:

Please make sure the USER-MEAMC package has already been installed in LAMMPS.

	"interaction": {
		"type":		 "meam",
		"model":	 ["meam.lib","AlMg.meam"],
		"type_map":      {"Al": 1, "Mg": 2}
	}

eam_fs & eam_alloy:

Please make sure the MANYBODY package has already been installed in LAMMPS

	"interaction": {
		"type":		 "eam_fs (eam_alloy)", 
		"model":	 "AlMg.eam.fs (AlMg.eam.alloy)", 
		"type_map":      {"Al": 1, "Mg": 2}
	}

Property type

Now the supported property types are eos, elastic, vacancy, interstitial, surface, and gamma. Before property tests, relaxation should be done first or the relaxation results should be present in the corresponding directory confs/mp-*/relaxation/relax_task. A file named task.json in json format containing the property parameter will be written in the directory of each task after make step. Multiple property tests can be performed simultaneously.

Make run and post

There are three operations in auto test package, namely make, run, and post. Here we take eos property as an example for property type.

Make

The INCAR, POSCAR, POTCAR input files for VASP or in.lammps, conf.lmp, and the interatomic potential files for LAMMPS will be generated in the directory confs/mp-*/relaxation/relax_task for relaxation or confs/mp-*/eos_00/task.[0-9]*[0-9] for EOS. The machine.json file is not needed for make. Example:

dpgen autotest make relaxation.json 

Run

The jobs would be dispatched according to the parameter in machine.json file and the calculation results would be sent back. Example:

dpgen autotest run relaxation.json machine.json

Post

The post process of calculation results would be performed. result.json in json format will be generated in confs/mp-*/relaxation/relax_task for relaxation and result.json in json format and result.out in txt format in confs/mp-*/eos_00 for EOS. The machine.json file is also not needed for post. Example:

dpgen autotest post relaxation.json