SIESTA Base workflow¶
Description¶
The SIESTA program is able to perform, in a single run, the computation of the electronic structure, the optional relaxation of the input structure, and a final analysis step in which a variety of magnitudes can be computed: band structures, projected densities of states, etc. The operations to be carried out are specified in a very flexible input format. Accordingly, the SiestaBaseWorkchain has been designed to be able to run the most general SIESTA calculation, with support for most of the available options (limited only by corresponding support in the parser plugin). In addition, the workchain is able to restart a calculation in case of failure (lack of electronic-structure or geometry relaxation convergence, termination due to walltime restrictions, etc).
Supported Siesta versions¶
At least 4.0.1 of the 4.0 series, and 4.1-b3 of the 4.1 series, which can be found in the development platform (https://gitlab.com/siesta-project/siesta).
Inputs¶
- code, class
Code
A database object representing a Siesta executable.
- structure, class
StructureData
A structure. See the plugin documentation for more details.
- parameters, class
Dict
A dictionary with scalar fdf variables and blocks, which are the basic elements of any Siesta input file. A given Siesta fdf file can be cast almost directly into this dictionary form, except that some items (e.g. for structure data) are blocked. Any units are specified for now as part of the value string. Blocks are entered by using an appropriate key and Python’s multiline string constructor. For example:
{
"mesh-cutoff": "200 Ry",
"dm-tolerance": "0.0001",
"%block example-block":
"""
first line
second line
%endblock example-block""",
...
}
Note that Siesta fdf keywords allow ‘.’, ‘-‘, or nothing as internal separators. AiiDA does not allow the use of ‘.’ in nodes to be inserted in the database, so it should not be used in the input script (or removed before assigning the dictionary to the Dict instance). For legibility, a single dash (‘-‘) is suggested, as in the examples above.
- pseudos, input namespace of class
PsfData
OR classPsmlData
(Optional) A dictionary of PsfData or PsmlData objects representing the pseudopotentials for the calculation. If it is not input, a pseudo_family specification must be used (see below).
The PsfData and PsmlData classes have been implemented along the lines of the Upf class for QE.
- pseudo_family, class
Str
(Optional) String representing the name of the pseudopotential family (that can be uploaded via the verdi data psf CLI interface) to be used.
- basis, class
Dict
A dictionary specifically intended for basis set information. It follows the same structure as the parameters element, including the allowed use of fdf-block items. This raw interface allows a direct translation of the myriad basis-set options supported by the Siesta program. In future we might have a more structured input for basis-set information.
- kpoints, class
KpointsData
Reciprocal space points for the full sampling of the BZ during the self-consistent-field iteration. It must be given in mesh form. There is no support yet for Siesta’s kgrid-cutoff keyword.
If this node is not present, only the Gamma point is used for sampling.
- bandskpoints, class
KpointsData
Reciprocal space points for the calculation of bands. They can be given as a simple list of k-points, as segments with start and end point and number of points, or as a complete automatic path, using the functionality of modern versions of the class.
If this node is not present, no band structure is computed.
- settings, class
Dict
An optional dictionary that activates non-default operations. For a list of possible values to pass, see the section on advanced features.
- options, class
Dict
Execution options
- clean_workdir, class
Bool
(Optional) If true, work directories of all called calculations will be cleaned out.
- max_iterations, class
Int
(Optional) The maximum number of iterations allowed in the restart cycle for calculations.
Outputs¶
- output_parameters
Dict
A dictionary with metadata and scalar result values from the last calculation executed.
- output_structure
StructureData
Present only if the workchain is modifying the geometry of the system.
- bands,
BandsData
Present only if a band calculation is requested (signaled by the presence of a bandskpoints input node of class KpointsData) Contains an array with the list of electronic energies for every kpoint. For spin-polarized calculations, there is an extra dimension for spin.
- forces_and_stress
ArrayData
Contains the final forces (eV/Angstrom) and stresses (GPa) in array form.
- remote_folder,
RemoteData
The working remote folder for the last calculation executed.