Tips and tricks#

This section introduces some tips and tricks for using the plugin.

Creating restarts of calculations#

You can create restarts easily using the create_restart method attached to the tools of the CalcJobNode created. The function can also be applied to builder or input dictionary to created a copy with some alterations. Hence, the usage is not limited to the case where the calculation failed or the geometry optimisation does not converged within the iteration limit. For example, you may just want to create a series of calculation with slightly different parameters, which can be achieved using the param_update and param_delete keywords. For more detail, please see the docstring of aiida_castep.calculations.tools.create_restart().

Creating pseudopotential families#

These can be achieved using functions aiida_castep.data.otfg.upload_otfg_family() and aiida_castep.data.usp.upload_usp_family(). The commandline tools are not avaliable at this time.

Update parameter of a calculation#

There is a update_parameters method under CastepCalculation which is available to quickly change the input parameters of a calculation that is not yet stored in the database. Simply pass the field you want to change as keyword arguments to the method. A plain python dictionary may also be used as the input and will be serialized automatically into Dict.

Get a summary of the inputs and compare them#

The method get_castep_inputs_summary can be called to get a summary of the inputs of a CastepCalculation at any time. In addition, the compare_with method can be used to compare the inputs between another calculation and returns the difference in the inputs as a dictionary. The deepdiff package is used behind the scene.

Convention of kpoints#

CASTEP uses the Monkhorst-Pack grid formula following this <https://journals.aps.org/prb/abstract/10.1103/PhysRevB.13.5188> paper, where the directions with odd numbers are centred to the origin, and those with even numbers are not. To get Gamma-centered grid, kpoint_mp_offset needs to be specified with -1/N for each direction with odd N.

For example, to use a Gamma-centered 8x8x8 grid, the follwing lines are required in the <seed>.cell:

kpoint_mp_grid: 8 8 8
kpoint_mp_offset: -0.0625 -0.0625 -0.0625

The pulgin follows the same convention as used by the code, with the grid and the offsets passed to the code as they are. This does mean that the same KpointsData used for other DFT code can mean differently. For example, a KpointsData with (8, 8, 8) mesh given to aiida-vasp is Gamma-centered, but is it not when passed to aiida-castep.

Certain quantities returned by methods of KpointData assumes that grid is Gamma-centering, so care should be taken to use them with aiida-castep.

To select Gamma-centered kpoint grid, one can set the ensure_gamma_centering port of the CastepBaseWorkchain to be Bool(True). This will automatically compute the offset and include it in the KpointsData generated and passed to the underlying CastepCalculation.

Reading occupantions#

The standard bands output file written by CASTEP does not included the occupations for each band. To read the occupation nubmers, one has to include the castep_bin output in the retrieve list. This will trigger the plugin to read the band information directly from this binary checkpoint file, which contains the occupation numbers. The will check if all kpoints contain empty bands, as otherwise the calculation results can have large errors.