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:
- 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