System

January 2, 2023 · View on GitHub

DeePMD-kit takes a system as the data structure. A snapshot of a system is called a frame. A system may contain multiple frames with the same atom types and numbers, i.e. the same formula (like H2O). To contains data with different formulas, one usually needs to divide data into multiple systems, which may sometimes result in sparse-frame systems. See a new system format to further combine different systems with the same atom numbers, when training with descriptor se_atten.

A system should contain system properties, input frame properties, and labeled frame properties. The system property contains the following property:

IDPropertyRaw fileRequired/OptionalShapeDescription
typeAtom type indexestype.rawRequiredNatomsIntegers that start with 0
type_mapAtom type namestype_map.rawOptionalNtypesAtom names that map to atom type, which is unnecessart to be contained in the periodic table
nopbcNon-periodic systemnopbcOptional1If True, this system is non-periodic; otherwise it's periodic

The input frame properties contain the following property, the first axis of which is the number of frames:

IDPropertyRaw fileUnitRequired/OptionalShapeDescription
coordAtomic coordinatescoord.rawÅRequiredNframes * Natoms * 3
boxBoxesbox.rawÅRequired if periodicNframes * 3 * 3in the order XX XY XZ YX YY YZ ZX ZY ZZ
fparamExtra frame parametersfparam.rawAnyOptionalNframes * Any
aparamExtra atomic parametersaparam.rawAnyOptionalNframes * aparam * Any
numb_copyEach frame is copied by the numb_copy (int) timesprob.raw1OptionalNframesInteger; Default is 1 for all frames

The labeled frame properties are listed as follows, all of which will be used for training if and only if the loss function contains such property:

IDPropertyRaw fileUnitShapeDescription
energyFrame energiesenergy.raweVNframes
forceAtomic forcesforce.raweV/ÅNframes * Natoms * 3
virialFrame virialvirial.raweVNframes * 9in the order XX XY XZ YX YY YZ ZX ZY ZZ
atom_enerAtomic energiesatom_ener.raweVNframes * Natoms
atom_prefWeights of atomic forcesatom_pref.raw1Nframes * Natoms
dipoleFrame dipoledipole.rawAnyNframes * 3
atomic_dipoleAtomic dipoleatomic_dipole.rawAnyNframes * Natoms * 3
polarizabilityFrame polarizabilitypolarizability.rawAnyNframes * 9in the order XX XY XZ YX YY YZ ZX ZY ZZ
atomic_polarizabilityAtomic polarizabilityatomic_polarizability.rawAnyNframes * Natoms * 9in the order XX XY XZ YX YY YZ ZX ZY ZZ

In general, we always use the following convention of units:

PropertyUnit
Timeps
LengthÅ
EnergyeV
ForceeV/Å
VirialeV
PressureBar