Potential Energy Surfaces#

Potential energy surface in N-dimensions (distances), enables parallel calculations over the grid of points, location of saddle points in the surface and connecting minima and saddle points

class autode.pes.pes_nd.PESnD(species: Species | None = None, rs: Dict[Tuple[int, int], Tuple | ndarray] | None = None, allow_rounding: bool = True)#

Potential energy surface (PES) in N-dimensions

__init__(species: Species | None = None, rs: Dict[Tuple[int, int], Tuple | ndarray] | None = None, allow_rounding: bool = True)#

N-dimensional PES for a species in a number of distances, defined by the ‘rs’ dictionary containing atom pairs and distances

either initial and final, or just final distances. If undefined the initial distances are just their current values.

Parameters:

allow_rounding – Allow rounding of a step-size to support an integer number of steps between the initial and final distances

calculate(method: Method, keywords: Keywords | None = None, n_cores: int | None = None) None#

Calculate the surface by running calculations over each structure on the surface. Requires the PES to be initialised with a species

for an unrelaxed or method.keywords.opt for a relaxed

Parameters:

n_cores – Number of cores. If None then use ade.Config.n_cores

clear() None#

Clear the energies, derivatives of, and coordinates on this surface

classmethod from_file(filename: str) PESnD#

Load a potential energy surface from a compressed numpy file (.npz)

Return type:

(autode.pes.pes_nd.PESnD)

load(filename: str) None#

Load a PES from a saved numpy file

Raises:

(FileNotFoundError)

property ndim: int#

Number of dimensions in this PES

property origin: Tuple[int, ...]#

Tuple of the origin e.g. (0,) in 1D and (0, 0, 0) in 3D

plot(filename: str | None = 'PES.pdf', interp_factor: int = 0, units: str = 'kcal mol-1') None#

Plot this PES along a number of dimensions

Parameters:
  • interp_factor – Factor by which to interpolate the surface with, if 0 (the default) then no interpolation is used

  • units – Units of the surface. One of {‘Ha’, ‘eV’, ‘kcal’, ‘kJ’}

property relative_energies: EnergyArray#

Relative energies on this PES

save(filename: str) None#

Save the PES as a text file (.txt) or compressed numpy file (.npz). If .npz then re-loading is possible, either into a PES or otherwise in pure numpy. If .txt then will save only the energies in units of Hartrees.

property shape: Tuple[int, ...]#

Shape of the surface, which is the number of points in each dimension




‘Reactive’ potential energy surfaces that have support for saddle point and transition state guess finding

class autode.pes.reactive.ReactivePESnD(species: Species, rs: Dict[Tuple[int, int], Tuple | ndarray], allow_rounding: bool = True)#
__init__(species: Species, rs: Dict[Tuple[int, int], Tuple | ndarray], allow_rounding: bool = True)#

Reactive potential energy surface in N-dimensions

representation of what values they should take in the scan

Parameters:

allow_rounding – Allow rounding of the step size, if required

_set_gradients() None#

Set the numerical gradient for each point on the surface, in each dimension.

\[\frac{\text{d}E}{\text{d}r_i} = \frac{E(R + \Delta r) - E(R - \Delta r)}{\Delta r}\]

where \(\Delta r\) is the difference between two points on the surface and \(R\) is the nuclear positions, \(r_i\) is a dimension on the dimension on the surface. If possible, central differences are used otherwise forwards or backwards finite differences are used. If neither possible then the gradient is set as np.nan

ts_guesses(product: Species | None = None, min_separation: ~autode.values.Distance = Distance(0.5 Å)) Iterator[TSguess]#

Generate TS guesses from the saddle points in the energy on this surface. Only those that are seperated by at least min_separation will be yielded in order of increasing energy.

structures.

Yields:

(autode.transition_states.ts_guess.TSguess)




class autode.pes.relaxed.RelaxedPESnD(species: Species, rs: Dict[Tuple[int, int], Tuple | ndarray], allow_rounding: bool = True)#

Potential energy surface over a set of distances, where all other degrees of freedom are minimised




Unrelaxed potential energy surfaces

class autode.pes.unrelaxed.UnRelaxedPES1D(species: Species, rs: Dict[Tuple[int, int], Tuple | ndarray], allow_rounding: bool = True)#

1D potential energy surface without minimising other degrees of freedom. Only supports over bonds