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¶
type
Format : str
Description : The solver type (
OpenMX, QE, VASP, aenet, aenetPyLammps, nequip, allegro, mlip_3, potts
). Whenpotts
, the following parameters are not used.path
Format : str
Description : The path to the solver.
base_input_dir
Format : 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.
perturb
Format : 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_species
Format : 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.x
as command-line options.function
(Only fortype = "user"
)Format : str
Description : Specify a user-defined solver function.
The solver function must take a
pymatgen.core.Structure
object as an argument and return afloat
value.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.mymodule
is imported andmyfunction
is called.The package is searched from the current directory as well as from the directories specified by the
PYTHONPATH
environment variable.