aiida_yambo.workflows.yamborestart#

Module Contents#

Classes#

YamboRestart

This module interacts directly with the yambo plugin to submit calculations

class aiida_yambo.workflows.yamborestart.YamboRestart(*args, **kwargs)[source]#

Bases: aiida_quantumespresso.workflows.protocols.utils.ProtocolMixin, aiida.engine.processes.workchains.restart.BaseRestartWorkChain

This module interacts directly with the yambo plugin to submit calculations

This module submits calculations using the yambo plugin, and manages them, including restarting the calculation in case of: 1. Memory problems (will reduce MPI parallelism before resubmitting) – to be fixed 2. Queue time exhaustions (will increase time by a fraction before resubmitting) 3. Parallelism errors (will reduce the MPI the parallelism before resubmitting) – to be fixed 4. Errors originating from a few select unphysical input parameters like too low bands. – to be fixed

_process_class[source]#
_error_handler_entry_point = 'aiida_yambo.workflow_error_handlers.yamborestart'[source]#
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(preprocessing_code, code, protocol='fast', overrides={}, parent_folder=None, NLCC=False, RIM_v=False, RIM_W=False, **_)[source]#

Return a builder prepopulated with inputs selected according to the chosen protocol. :return: a process builder instance with all inputs defined ready for launch.

setup()[source]#

setup of the calculation and run

validate_parameters()[source]#

validation of the input parameters… including settings and the namelist… for example, the parallelism namelist is different from version the version… we need some input helpers to fix automatically this with respect to the version of yambo

validate_resources()[source]#

validation of machines… completeness and with respect para options

validate_parent()[source]#

validation of the parent calculation –> should be at least nscf/p2y

report_error_handled(calculation, action)[source]#

Report an action taken for a calculation that has failed. This should be called in a registered error handler if its condition is met and an action was taken. :param calculation: the failed calculation node :param action: a string message with the action taken

_handle_unrecoverable_failure(calculation)[source]#

Handle calculations with an exit status below 400 which are unrecoverable, so abort the work chain.

_handle_unknown_error(calculation)[source]#

Handle calculations for an unknown reason; we copy the SAVE already created, if any.

_handle_walltime_error(calculation)[source]#

Handle calculations for a walltime error; we increase the simulation time and copy the database already created.

_handle_parallelism_error(calculation)[source]#

Handle calculations for a parallelism error; we try to change the parallelism options.

_handle_memory_error(calculation)[source]#

Handle calculations for a memory error; we try to change the parallelism options, in particular the mpi-openmp balance. if cpu_per_task(mpi/node) is already set to 1, we can increase the number of nodes, accordingly to the inputs permissions.

_handle_variable_NOT_DEFINED(calculation)[source]#

Handle calculations Variable NOT DEFINED error, happens with ndb.pp_fragments. redo the calculation, trying to delete the wrong fragment and recompute it.