The potential format 0
is used for analytical potentials exclusively.
All header tokens are supported except for the #G
line.
Each analytic potential function has to be specified as follows:
type identifier cutoff value param_1 value min max param_2 value min max ...
The type
keyword has to be followed by the unique identifier for
the analytic function. To enable the smooth cutoff option _sc
can be added at the end of the identifer (this also adds another parameter to the end potential function!).
Examples:
# plain Lennard-Jones potential type lj epsilon 1 0 2 sigma 1 0 2 # Lennard-Jones with smooth cutoff option enabled type lj_sc epsilon 1 0 2 sigma 1 0 2 h 1 0 2
All list of all supported analytic potential functions is available here.
The cutoff
keyword is required to specify the cutoff radius, which may be different for each potential function. The minimal distance for each potential function is calculated by potfit from the configuration file and will be present in the output potential as a comment after the cutoff
line.
cutoff 7.0 # rmin 2.2
This indicates the minimum neighbor distance for this interaction is 2.2 units of distance.
After the keywords the values for the analytic parameters have to be specified. Each line starts with an identifier for that parameter followed by the starting value, the minimum and maximum value for that parameter. The order of these parameters is fixed, for the implemented analytic functions the order can be found here.
Giving three times the same value will remove this parameter from the optimization table and use exactly that value when calculating forces/energies. This is usually called a fixed parameter.
potfit supports global parameters, which can occur in different potentials. With this feature it is possible for any potential to “share” parameters with each other.
To use them, you need a section starting with global <n>
after the header in your potential file, where n
is the number of global parameters.
The format for the parameters is the same as for normal parameters: name value min max
.
If you want to use a global parameter in a potential, use the name of the global parameter and add an exclamation mark.
#F 0 3 #C Mg Zn #I 0 0 0 #E global 2 glob1 1 0 2 glob2 2 0 5 type lj cutoff 8 glob1! glob2! type lj cutoff 8 glob2! glob1!
The smooth cutoff function is very important for analytic potentials since it ensures that the potential and its gradient vanish at the desired cutoff radius. Therefore the potential is multiplied with a cutoff function $\Psi$.
$$V_{SC}(r)=\Psi\left(\frac{r-r_c}{h}\right)V(r)\qquad\text{where}\qquad\Psi(x)=\frac{x^4}{1+x^4}$$
To enable the smooth cutoff for a potential, _sc
has to be added to the potential identifier.
type lj_sc cutoff 7 epsilon 0.1 0 1 sigma 2.5 1 4 h 1 0 2
Potentials fitted with the _sc
option will have an additional parameter h
at the end.
If you omit it, it will be kept fixed at a value of 1.
#F 0 1 #C Al ## Al-Al #E type lj_sc cutoff 7.000000 # rmin 2.159655 epsilon 2100.0633799282 0.500000 10000.000000 sigma 10.3066290006 1.000000 20.000000 h 1 0.5 2
Many more examples are available in the potential examples section.