potfit wiki

open source force-matching

fweight

fweight

The target function for the optimization algorithms in potfit is defined as:

$$Z_F(\boldsymbol\xi) = \sum_{k=1}^{3N}u_k(F_k(\boldsymbol\xi)-F_k^0)^2 + \sum_{l=1}^{M}w_E(E_l(\boldsymbol\xi)-E_l^0)^2+\ldots$$

where $F_k(\boldsymbol\xi)$ are the forces calculated from the potential and $F_k^0$ the reference value. The same notation is used for the energies $E$.

The weights for the energies ($w_E$) and stresses can be given in the parameter file with the eng_weight and stress_weight parameters. The weight for the forces ($u_k$) is normally chosen to be 1.

This can be a problem for very small reference values. By enabling the fweight compile option, each force component $F_k$ is weighted by the factor

$$u_k=\frac{1}{(\boldsymbol F_k^0+\epsilon)^2},$$

where $\boldsymbol F_k^0$ is the magnitude of the force vector for atom $k$.

This increases the relative contributions of numerically small forces to the error sum.

The compile time parameter FORCE_EPS (in defines.h) prevents the overweighting of very tiny forces. The default for this value is 0.1.