xnn.dnn.models.hdnnp#

High-dimensional neural network potentials of the first to the fourth generation.

The four generations of Behler’s classification (Chem. Rev. 121, 10037, 2021):

  • 1G (NNP1G): one feed-forward network maps a fixed set of coordinates of a fixed system to its energy (Blank et al. 1995, Lorenz et al. 2004; Fig. 1 and eq. 1 of Behler and Parrinello 2007).

  • 2G (HDNNP, generation=2): the energy is a sum of atomic energies, each the output of the network of the atom’s element on the atom-centered symmetry functions of its environment (Behler and Parrinello, Phys. Rev. Lett. 98, 146401, 2007; eq. 2).

  • 3G (generation=3): a second set of element networks gives environment-dependent atomic charges, whose electrostatic energy is added to the short-range one (Artrith, Morawietz and Behler, Phys. Rev. B 83, 153101, 2011).

  • 4G (generation=4): the networks give atomic electronegativities; the charges follow from a charge equilibration over the whole system with Gaussian charges and element hardnesses, so they respond to distant changes and to the total charge, and they enter the short-range networks as an extra input (Ko, Finkler, Goedecker and Behler, Nat. Commun. 12, 398, 2021; eqs. 1-9).

The descriptor is AtomCenteredSymmetryFunctions. The conventions follow the RuNNer code, so that a RuNNer model (input.nn, the weights and scaling files) loads into this class unchanged (xnn.dnn.common.runner.load_runner_model()):

  • Charges are Gaussians of width sigma per element (zero: point charges), by default 0.45 times the covalent radius clamped to [0.25, 0.6] Angstrom (default_gaussian_widths()). The electrostatic energy is that of the Gaussian charges, sum_{i<j} q_i q_j erf(r_ij / (sqrt(2) gamma_ij)) / r_ij + sum_i q_i^2 / (2 sigma_i sqrt(pi)), Ewald-summed in a periodic cell.

  • An optional screening cutoff f_s removes the electrostatics inside the short-range sphere: the pair terms within its radius are multiplied by 1 - f_s(r) and the Gaussian self energies are dropped.

  • 3G charges are shifted uniformly to the total charge, q_i - (sum_j q_j - Q) / N; the output charges are the shifted ones, charges_raw the network outputs.

  • 4G hardnesses are element constants (the paper; hardness="element", J = activation(p_Z)) or the outputs of element networks (hardness="network"). The electrostatic energy reported and added to the total is that of the Gaussian charges alone (the electronegativity and hardness terms only select the charges). The charge enters the short-range networks last, as (q - c_Z) s_Z.

Units are those of the data (xnn: Angstrom, eV, e). energy_scale, chi_scale and hardness_scale multiply the raw network outputs (one for models trained in xnn; the hartree for models read from RuNNer files), and coulomb_constant is e^2 / (4 pi epsilon_0) in the energy and length units.

Module Attributes

COVALENT_RADII

covalent radii in Angstrom (WebElements), indexed by atomic number; None where no value is tabulated.

Functions

default_gaussian_widths(species)

Gaussian charge widths in Angstrom: 0.45 r_cov clamped to [0.25, 0.6].

default_symmetry_functions(species, cutoff)

A generic symmetry-function set: radial and angular functions for every element.

Classes

HDNNP(species, featurizer[, generation, ...])

High-dimensional neural network potential, generations 2, 3 and 4.

NNP1G(species[, hidden, activation, ...])

First-generation neural network potential: one network for the whole system.