5.3. [sampling.solver], [mlref.solver] section¶
These sections specify the parameters of solvers, which calculate the energy of a configuration (e.g., atomic positions).
sampling.solver is used while Monte Carlo sampling, and mlref.solver is used for generating training dataset of a machine learning model.
In the present version, there are two main types of solvers.
Ab initio solvers
Solvers for calculating DFT energy from atomic position.
Indeed, abICS uses an external DFT solver package such as VASP.
Parameters of the DFT solver such as convergence criteria are specified by using input files of the solver.
Solver specific notes (e.g., input filename) are described in Specific notes for first-principles solvers.
Configurations (atomic positions, atomic species, etc.) are specified by the
[config]section.
Potts model solver
A solver for calculating the energy \(E = -\sum_{ij} \delta_{\sigma_i, \sigma_j} \quad (\sigma_i = 0, 1, \dots, Q-1)\) of a spin configuration on a hyper cubic lattice (\(\{\sigma_i\}\), \(\sigma_i = 0, 1, \dots, Q-1\)).
The dimension and lengths of a hyper cubic lattice \(L\), and the local degree of freedom of a spin \(Q\) are specified in the
[config]section.This solver is for the purpose of testing of algorithms and tutorials.
This section specifies solver parameters such as solver type (VASP, QE, …), path to solver, directory with solver-specific input file(s). An example is shown as follows:
[sampling.solver] type = 'vasp' path = './vasp' base_input_dir = './baseinput' perturb = 0.1 run_scheme = 'mpi_spawn_ready'
5.3.1. Input Format¶
Keywords and their values are specified by a keyword and its value in the form keyword = value.
Comments can also be entered by adding # (Subsequent characters are ignored).
5.3.2. Keywords¶
typeFormat : str
Description : The solver type (
OpenMX, QE, VASP, aenet, aenetPyLammps, nequip, allegro, mlip_3, potts). Whenpotts, the following parameters are not used.pathFormat : str
Description : The path to the solver.
base_input_dirFormat : str or list of str
Description : The path to the base input file. If multiple calculations are set up in the form of a list, each calculation using each input is performed in turn. For the second and subsequent calculations, the structure from the last step of the previous calculation is used as the initial coordinates, and the energy from the last calculation is used. For example, it is possible to perform a fast structural optimization in the first input file at the expense of accuracy, and then perform the structural optimization in the second and later input files with a higher accuracy setting. Or, in the case of grid vector relaxation, one can run the same input multiple times to reset the computational mesh based on a set plane-wave cutoff.
perturbFormat : float
Description : If a structure with good symmetry is input, structure optimization tends to stop at the saddle point. In order to avoid this, an initial structure is formed by randomly displacing each atom in proportion to this parameter. It can also be set to 0.0 or false. Default value = 0.0.
ignore_speciesFormat : list
Description : Specify atomic species to “ignore” in neural network models such as
aenet. For those that always have an occupancy of 1, it is computationally more efficient to ignore their presence when training and evaluating neural network models.run_scheme(Only forsampling.solver)Format : str
Description : Way to invoke the solver program. For details, please see Specific notes for first-principles solvers
parallel_level(Only fortype = "QE")Format : dict
Description : How to split parallel cpu resources, i.e., Parallelization levels . Key names are long-form command-line options (without the leading hyphen), that is,
nimage,npools,nband,ntg, andndiag. Values are the number of parallelization. Only the specified elements will be passed topw.xas command-line options.function(Only fortype = "user")Format : str
Description : Specify a user-defined solver function.
The solver function must take a
pymatgen.core.Structureobject as an argument and return afloatvalue.When
.is included, it is assumed that the function is defined in a module, and the module will be automatically imported.For example, if
function = "mypackage.mymodule.myfunction"is specified,mypackage.mymoduleis imported andmyfunctionis called.The package is searched from the current directory as well as from the directories specified by the
PYTHONPATHenvironment variable.