A model has two parts, a descriptor that maps atomic configuration to a set of symmetry invariant features, and a fitting net that takes descriptor as input and predicts the atomic contribution to the target physical property. It's defined in the model
section of the input.json
, for example
"model": {
"type_map": ["O", "H"],
"descriptor" :{
"...": "..."
},
"fitting_net" : {
"...": "..."
}
}
Assume that we are looking for a model for water, we will have two types of atoms. The atom types are recorded as integers. In this example, we denote 0
for oxygen and 1
for hydrogen. A mapping from the atom type to their names is provided by type_map
.
The model has two subsections descritpor
and fitting_net
, which defines the descriptor and the fitting net, respectively. The type_map
is optional, which provides the element names (but not necessarily to be the element name) of the corresponding atom types.
DeePMD-kit implements the following descriptors:
se_e2_a
: DeepPot-SE constructed from all information (both angular and radial) of atomic configurations. The embedding takes the distance between atoms as input.se_e2_r
: DeepPot-SE constructed from radial information of atomic configurations. The embedding takes the distance between atoms as input.se_e3
: DeepPot-SE constructed from all information (both angular and radial) of atomic configurations. The embedding takes angles between two neighboring atoms as input.loc_frame
: Defines a local frame at each atom, and the compute the descriptor as local coordinates under this frame.hybrid
: Concate a list of descriptors to form a new descriptor.
The fitting of the following physical properties are supported
ener
: Fitting the energy of the system. The force (derivative with atom positions) and the virial (derivative with the box tensor) can also be trained. See the example.dipole
: The dipole moment.polar
: The polarizability.