potfit wiki

open source force-matching

User Tools

Site Tools


Potential files

The interactions supported by potfit are defined in terms of tabulated functions, given by analytic parameters or with the KIM model name. Typical functions are central pair potentials, which depend on the distance of two atoms and the two atom types involved. Support for three-body potential has been added to potfit to support a wider range of interatomic potentials.

Each potential file consists of a header and a body, just like the configurations. While the header format is the same for all supported potentials the body format is fundamentally different for tabulated, analytic and KIM potentials.

For potentials implemented in potfit the number of potentials and parameters required for each interaction is given on the bottom of each interaction page. For KIM potentials please see the KIM format page for details.

Potential File Header

The header format is very similar to headers in IMD. It specifies the format of the potential file and some other properties which are shared between the different potential representations. It has the following format:

#F <format> <count>
#T <interaction name>
#C <element 0> <element 1> ...
#I 0 1 ... n entries
#G 2 3 ... n entries

Header lines have to start with the number sign #. Comments start with two number signs.

The second character can be any of the following specifiers. Lines with unknown specifiers will be treated like comments, but it is recommended that such lines start with two # characters.

Not all specifiers all mandatory, some of them are optional.


The mandatory format specifier #F needs to be the first non-comment line in the potential file. It requires two arguments, the format itself and the number of potential functions present in the file. Valid formats are:

  • Format 0 - analytic potentials
  • Format 3 - tabulated potentials with fixed spacing
  • Format 4 - tabulated potentials with variable spacing
  • Format 5 - KIM potentials

The value for the number of potential functions needs to be the correct value for the selected potential type. If the number of atom types in the parameter file is 2 and the potential is pair, this value needs to be 3 because pair potentials require $n*(n+1) / 2$ potential functions. (KIM potentials do ignore this number)


The optional interaction type specifier #T has one argument, the capitalized interaction name. This is helpful when dealing with multiple potential files for the same system. If the value is not present in the starting potential, potfit will add it to all potential files which are output.

Even though this line is optional, a mismatch in the string and the compiled potfit binary will lead to a runtime error. A potfit binary compiled for PAIR potentials will only accept potential files which don't have a #T line or the interaction type set to PAIR.


The optional line #C specifies the chemical elements the potentials belong to. This needs to match the order of chemical elements in the configuration file. In output files potfit will write a comment on how the potentials are ordered. For the ternary system AlPdMn this looks like this:

#C Al Pd Mn
## Al-Al Al-Pd Al-Mn Pd-Pd Pd-Mn Mn-Mn Al Pd Mn Al Pd Mn

The optional line #I defines whether a whole potential function should be kept constant during a force matching run. Each argument corresponds to one function, so there need to be as much digits as there are potential functions. A value of 0 allows potfit to change the corresponding potential function, a value of 1 keeps it fixed. This is useful for example if a third component is to be added to a binary system and only the additional potentials are to be allowed to change. If this line is omitted all potential functions will be optimized.


The optional line #G specifies whether the gradient of the interpolation splines should be treated as fixed or as an additional degree of freedom. Each argument corresponds to one potential function, so there should be n arguments in total. The information is bit-coded, 0 declares both lower and upper gradient fixed, 1 allows adjusting the gradient at the upper end, 2 at the lower end, and 3 at both ends. This does not apply to analytic potentials.


The last line of the header must have the #E specifier, which indicates the end of the header part.

The order of the different potential functions for a specific potential can be found on the corresponding potential page.

potfiles/main.txt ยท Last modified: 2018/09/24 17:29 by daniel