Use the plugin to support inputs of ASE structure optimizations and of total energy calculations. Requires the installation of ASE on the computer where AiiDA is running.
- tested on ASE v3.8.1 and on GPAW v0.10.0. ASE back compatibility is not guaranteed. Calculators different from GPAW should work, if they follow the interface description of ASE calculators, but have not been tested. Usage requires the installation of both ASE and of the software used by the calculator.
KpointsData(optional) Reciprocal space points on which to build the wavefunctions. Only kpoints meshes are currently supported.
ParameterDataInput parameters that defines the calculations to be performed, and their parameters. See the ASE documentation for more details.
ParameterData(optional) An optional dictionary that activates non-default operations. Possible values are:
- ‘CMDLINE’: list of strings. parameters to be put after the executable and before the input file. Example: [“-npool”,”4”] will produce gpaw -npool 4 < aiida_input
- ‘ADDITIONAL_RETRIEVE_LIST’: list of strings. Specify additional files to be retrieved. By default, the output file and the xml file are already retrieved.
Actual output production depends on the input provided.
calculation.res) Contains the scalar properties. Example: energy (in eV) or warnings (possible error messages generated in the run).
ArrayDataStores vectorial quantities (lists, tuples, arrays), if requested in output. Example: forces, stresses, positions. Units are those produced by the calculator.
StructureDataPresent only if the structure is optimized.
Errors of the parsing are reported in the log of the calculation (accessible
verdi calculation logshow command).
Moreover, they are stored in the ParameterData under the key
warnings, and are
The following example briefly describe the usage of GPAW within AiiDA, assuming that both ASE and GPAW have been installed on the remote machine. Note that ASE calculators, at times, require the definition of environment variables. Take your time to find them and make sure that they are loaded by the submission script of AiiDA (use the prepend text fields of a Code, for example).
First of all install the AiiDA Code as usual, noting that, if you plan to use
the serial version of GPAW (applies to all other calculators) the remote absolute
path of the code has to point to the python executable (i.e. the output of
which python on the remote machine, typically it might be
If the parallel version of GPAW is used, set instead the path to gpaw-python.
To understand the plugin, it is probably easier to try to run one test, to see
the python script which is produced and executed on the remote machine.
We describe in the following some example script, which can be called through
verdi run command (example:
verdi run test_script.py). You should
see a folder
submit_test created in the location from which you run
the command. Here there is the input script that is going to be executed in
the remote machine, with the syntax of the ASE software.
this first example script and execute it with
verdi run command.
This is a minimal script that uses GPAW and a plane-wave basis to compute the
total energy of a structure.
Note that for a serial calculation, it is necessary to run the
Note also, that by default, only the total energy of the structure is computed
This second example instead shows a demo of all
possible options supported by the current plugin.
By specifying an optimizer key in the dictionary, the ASE optimizers are run.
In the example, the QuasiNewton algorithm is run to minimize the forces and find
the equilibrium structures.
By specifying the key “calculator_getters”, the code will get from the
calculator, the properties which are specified in the value, using the get
method of the calculator; similar applies for the
atoms_getters, which will
post_lines are used to insert python commands that are
executed before or after the call to the calculators.
extra_imports is used to specify the import of more modules.
this script is an example of how to
run GPAW parallel. Essentially, nothing has to be changed in input, except that
there is no need to call the method