pyiron_contrib.protocol.compound.nudged_elastic_band module

class pyiron_contrib.protocol.compound.nudged_elastic_band.NEB(**kwargs)[source]

Bases: CompoundVertex

Relaxes a system according to the nudged elastic band method (Jonsson et al).

Input attributes:

ref_job_full_path (str): Path to the pyiron job to use for evaluating forces and energies. structure_initial (Atoms): The starting structure for the elastic band. structure_final (Atoms): The final structure for the elastic band. Warning: must have the same number and

species of atoms, cell, and periodic boundary conditions as the initial structure.

n_images (int): How many images create by interpolating between the two structures. n_steps (int): How many steps to run for. (Default is 100.) f_tol (float): Ionic force convergence (largest atomic force). (Default is 1e-4 eV/angstrom.) spring_constant (float): Spring force between atoms in adjacent images. (Default is 1.0 eV/angstrom^2.) tangent_style (‘plain’/’improved’/’upwinding’): How to calculate the image tangent in 3N-dimensional space.

(Default is ‘upwinding’.)

use_climbing_image (bool): Whether to replace the force with one that climbs along the tangent direction for

the job with the highest energy. (Default is True.)

smoothing (float): Strength of the smoothing spring when consecutive images form an angle. (Default is None,

do not apply such a force.)

gamma0 (float): Initial step size as a multiple of the force. (Default is 0.1.) fix_com (bool): Whether the center of mass motion should be subtracted off of the position update. (Default

is True)

use_adagrad (bool): Whether to have the step size decay according to adagrad. (Default is False)

Output attributes:

energy_pot (list[float]): Total potential energy of the system in eV. positions (list[numpy.ndarray]): Atomic positions in angstroms for each image. forces (list[numpy.ndarray]): Atomic forces in eV/angstrom for each image, including spring forces.

define_execution_flow()[source]

Wire the logic for traversing the graph edges.

define_information_flow()[source]

Connect input and output information inside the graph. Also set the archive clock for all vertices.

define_vertices()[source]

Add child vertices to the graph.

get_barrier(frame=None, use_minima=True)[source]

Get the energy barrier from the 0th image to the highest energy (saddle state).

Parameters
  • frame (int) – A particular dump. (Default is None, the final dump.)

  • use_minima (bool) – Whether to use the minima of the energies to compute the barrier. (Default is False, use the 0th value.)

Returns

the forward migration barrier.

Return type

(float)

get_forward_barrier(frame=None, use_minima=False)[source]

Get the energy barrier from the 0th image to the highest energy (saddle state).

Parameters
  • frame (int) – A particular dump. (Default is None, the final dump.)

  • use_minima (bool) – Whether to use the minima of the energies to compute the barrier. (Default is False, use the 0th value.)

Returns

the forward migration barrier.

Return type

(float)

get_output()[source]

Define the output dictionary to be returned when the graph traversal completes. This synchronizes the behaviour of primitive vertices and compound vertices when they themselves are the child vertex in another graph.

get_reverse_barrier(frame=None, use_minima=False)[source]

Get the energy barrier from the final image to the highest energy (saddle state).

Parameters
  • frame (int) – A particular dump. (Default is None, the final dump.)

  • use_minima (bool) – Whether to use the minima of the energies to compute the barrier. (Default is False, use the nth value.)

Returns

the backward migration barrier.

Return type

(float)

plot_elastic_band(ax=None, frame=None, plot_kwargs=None)[source]
Plot the string at an input frame. Here, frame is a dump of a step in the run. If `neb_job´ is the name

of the neb job, the number of dumps can be specified by the user while submitting the job, as:

>>> neb_job.set_output_whitelist(**{'calc_static': {'energy_pot': 20}})
and run the job. Here, it dumps (or records a frame) of `energy_pot´ from the `calc_static´ vertex

once every 20 steps.

Default is plot the string at the final frame, as only the final dump is recorded. (unless specified

otherwise by the user!)

class pyiron_contrib.protocol.compound.nudged_elastic_band.ProtoNEBSer(project=None, job_name=None)[source]

Bases: Protocol, NEB