aiida_quantumespresso.workflows.pw.bands#

Workchain to compute a band structure for a given structure using Quantum ESPRESSO pw.x.

Module Contents#

Classes#

PwBandsWorkChain

Workchain to compute a band structure for a given structure using Quantum ESPRESSO pw.x.

Functions#

validate_inputs(inputs[, ctx])

Validate the inputs of the entire input namespace.

aiida_quantumespresso.workflows.pw.bands.validate_inputs(inputs, ctx=None)[source]#

Validate the inputs of the entire input namespace.

class aiida_quantumespresso.workflows.pw.bands.PwBandsWorkChain(inputs: dict | None = None, logger: logging.Logger | None = None, runner: aiida.engine.runners.Runner | None = None, enable_persistence: bool = True)[source]#

Bases: aiida_quantumespresso.workflows.protocols.utils.ProtocolMixin, aiida.engine.WorkChain

Workchain to compute a band structure for a given structure using Quantum ESPRESSO pw.x.

The logic for the computation of various parameters for the BANDS step is as follows:

Number of bands:

One can specify the number of bands to be used in the BANDS step either directly through the input parameters bands.pw.parameters.SYSTEM.nbnd or through nbands_factor. Note that specifying both is not allowed. When neither is specified nothing will be set by the work chain and the default of Quantum ESPRESSO will end up being used. If the nbands_factor is specified the maximum value of the following values will be used:

  • nbnd of the preceding SCF calculation

  • 0.5 * nelectrons * nbands_factor

  • 0.5 * nelectrons + 4

Kpoints:

There are three options; specify either an existing KpointsData through bands_kpoints, or specify the bands_kpoint_distance, or specify neither. For the former those exact kpoints will be used for the BANDS step. In the two other cases, the structure will first be normalized using SeekPath and the path along high-symmetry k-points will be generated on that structure. The distance between kpoints for the path will be equal to that of bands_kpoints_distance or the SeekPath default if not specified.

classmethod define(spec)[source]#

Define the process specification.

classmethod get_protocol_filepath()[source]#

Return pathlib.Path to the .yaml file that defines the protocols.

classmethod get_builder_from_protocol(code, structure, protocol=None, overrides=None, options=None, **kwargs)[source]#

Return a builder prepopulated with inputs selected according to the chosen protocol.

Parameters:
  • code – the Code instance configured for the quantumespresso.pw plugin.

  • structure – the StructureData instance to use.

  • protocol – protocol to use, if not specified, the default will be used.

  • overrides – optional dictionary of inputs to override the defaults of the protocol.

  • options – A dictionary of options that will be recursively set for the metadata.options input of all the CalcJobs that are nested in this work chain.

  • kwargs – additional keyword arguments that will be passed to the get_builder_from_protocol of all the sub processes that are called by this workchain.

Returns:

a process builder instance with all inputs defined ready for launch.

setup()[source]#

Define the current structure in the context to be the input structure.

should_run_relax()[source]#

If the ‘relax’ input namespace was specified, we relax the input structure.

should_run_seekpath()[source]#

Seekpath should only be run if the bands_kpoints input is not specified.

run_relax()[source]#

Run the PwRelaxWorkChain to run a relax PwCalculation.

inspect_relax()[source]#

Verify that the PwRelaxWorkChain finished successfully.

run_seekpath()[source]#

Run the structure through SeeKpath to get the normalized structure and path along high-symmetry k-points .

This is only called if the bands_kpoints input was not specified.

run_scf()[source]#

Run the PwBaseWorkChain in scf mode on the primitive cell of (optionally relaxed) input structure.

inspect_scf()[source]#

Verify that the PwBaseWorkChain for the scf run finished successfully.

run_bands()[source]#

Run the PwBaseWorkChain in bands mode along the path of high-symmetry determined by seekpath.

inspect_bands()[source]#

Verify that the PwBaseWorkChain for the bands run finished successfully.

results()[source]#

Attach the desired output nodes directly as outputs of the workchain.

on_terminated()[source]#

Clean the working directories of all child calculations if clean_workdir=True in the inputs.