Pure Python EMT calculator

The EMT potential is included in the ASE package in order to have a simple calculator that can be used for quick demonstrations and tests.


If you want to do a real application using EMT, you should use the much more efficient implementation in the ASAP calculator.

class ase.calculators.emt.EMT(**kwargs)[source]

Python implementation of the Effective Medium Potential.

Supports the following standard EMT metals: Al, Cu, Ag, Au, Ni, Pd and Pt.

In addition, the following elements are supported. They are NOT well described by EMT, and the parameters are not for any serious use: H, C, N, O


asap_cutoff (bool, default: False) – If True the cutoff mimics how ASAP does it; most importantly the global cutoff is chosen from the largest atom present in the simulation. If False it is chosen from the largest atom in the parameter table. True gives the behaviour of ASAP and older EMT implementations, although the results are not bitwise identical.


Formulation mostly follows Jacobsen et al. [1] Documentation in ASAP can also be referred to.


In the following, the seven parameters \(E_{0i}\), \(s_{0i}\), \(V_{0i}\), \(\eta_{2i}\), \(\kappa_{i}\), \(\lambda_{i}\), and \(n_{0i}\) are specific for the species of atom \(i\).


In the effective-medium theory (EMT), the energy is given by

\[E = \sum_{i=1}^{N} (E_{\mathrm{c},i} + E_{\mathrm{AS},i})\]

The cohesive function \(E_{\mathrm{c},i}\) describes the energy in the reference system, where we assume the face-centered cubic (fcc) structure and given by

\[E_{\mathrm{c},i} = E_{0i} f(\lambda_i (s_{i} - s_{0i})) = E_{0i} f(\lambda_i \dot{s}_{i})\]
\[f(x) = (1 + x) \exp(-x)\]

where \(E_{0i}\) is the cohesive energy, \(s_{0i}\) is the Wigner–Seitz radius in the equilibrium fcc state, and \(\lambda_i\) is related to the curvature of the energy–volume curve and thus to the bulk modulus. \(s_i\) is the neutral-sphere radius, and

\[\dot{s}_i = s_{i} - s_{0i} = - \frac{1}{\beta \eta_{2i}} \log \frac{\sigma_{1i}}{12 \gamma_{1i}}\]

where \(\beta\) is the constant related to the Wigner–Seitz radius and the first nearest neighbor distance (cf. Tips). \(\sigma_{1i}`\) is given by

\[\sigma_{1i} = \sum_{j} \chi_{ij} w(r_{ij}) \exp(- \eta_{2j} (r_{ij} - \beta s_{0j})) = \sum_{j} \dot{\sigma}_{1ij}^\mathrm{s}\]

The summation is over the neighbors of atom \(i\). \(r_{ij}\) is the distance of atoms \(i\) and \(j\) and given using their position vectors \(\mathbf{r}_i\) and \(\mathbf{r}_j\) by

\[r_{ij} = |\mathbf{r}_{ij}| = |\mathbf{r}_{j} - \mathbf{r}_i|\]

\(\chi_{ij}\) is given by

\[\chi_{ij} = \frac{n_{0j}}{n_{0i}}\]

The contribution from atom \(j\) is given by

\[\dot{\sigma}_{1ij}^\mathrm{s} = \chi_{ij} w(r_{ij}) \exp(- \eta_{2j} (r_{ij} - \beta s_{0j}))\]

For later convenience in Forces, the contribution from atom \(i\) to atom \(j\) is also written as;

\[\dot{\sigma}_{1ij}^\mathrm{o} = \chi_{ji} w(r_{ij}) \exp(- \eta_{2i} (r_{ij} - \beta s_{0i}))\]

\(w(r)\) is the smooth cutoff function given by

\[w(r) = \frac{1}{1 + \exp(a (r - r_\mathrm{c}))}\]

\(\gamma_{1i}\) is a correction factor when considering beyond the first nearest neighbor sites and given by (cf. Tips)

\[\gamma_{1i} = \frac{1}{12} ( n^\mathrm{1NN} w(d_0^\mathrm{1NN}) \exp(\eta_{2i} (d_0^\mathrm{1NN} - \beta s_{0i})) + n^\mathrm{2NN} w(d_0^\mathrm{2NN}) \exp(\eta_{2i} (d_0^\mathrm{2NN} - \beta s_{0i})) + n^\mathrm{3NN} w(d_0^\mathrm{3NN}) \exp(\eta_{2i} (d_0^\mathrm{3NN} - \beta s_{0i})) + \cdots )\]

which is \(1\) when considering only up to the first nearest neighbors of the equilibrium fcc structure.

The atomic-sphere correction \(E_{\mathrm{AS},i}\) describes the derivation from the reference fcc system and given by

\[E_{\mathrm{AS},i} = E_{\mathrm{AS},i}^{1} + E_{\mathrm{AS},i}^{2}\]

\(E_{\mathrm{AS},i}^{1}\) is the pair interactions of the real system, and \(E_{\mathrm{AS},i}^{2}\) is the negative of the pair interactions of the reference unary perfect fcc structure. Both terms are described using the following pair interaction function;

\[V_{ij} (r) = -V_{0i} \cdot \frac{1}{\gamma_{2i}} \chi_{ij} w(r) \exp(-\frac{\kappa_{j}}{\beta}(r - \beta s_{0j}))\]

\(\gamma_{2i}\) is a correction factor when considering beyond the first nearest neighbor sites and given by (cf. Tips)

\[\gamma_{2i} = \frac{1}{12} ( n_\mathrm{1NN} w(d_\mathrm{1NN}) \exp(-\frac{\kappa_{2i}}{\beta} (r_\mathrm{1NN} - \beta s_{0i})) + n_\mathrm{2NN} w(d_\mathrm{2NN}) \exp(-\frac{\kappa_{2i}}{\beta} (r_\mathrm{2NN} - \beta s_{0i})) + n_\mathrm{3NN} w(d_\mathrm{3NN}) \exp(-\frac{\kappa_{2i}}{\beta} (r_\mathrm{3NN} - \beta s_{0i})) + \cdots )\]

Here, if we consider only up to the first nearest neighbors,

\[\gamma_{2i} \rightarrow 1\]

For \(E_{\mathrm{AS},i}^{2}\), only the interactions up to the first nearest neighbors are considered, i.e., \(j = i\) and \(r_{ij} = d^\mathrm{1NN} = \beta s_{i}\). Thus,

\[E_{\mathrm{AS},i}^{2} = \frac{1}{2} n^\mathrm{1NN} V_{ii}(d^\mathrm{1NN}) = -\frac{12}{2} V_{ii} (\beta s_{i}) = 6 V_{0i} \exp(-\kappa_{i} \dot{s}_i)\]

The first term \(E_{\mathrm{AS},i}^{1}\) is the pair interactions of the real system. Here we consider the interactions up to a certain cutoff radius, and we average the contribution from atom \(i\) to atom \(j\) and that from atom \(j\) to atom \(i\). Thus,

\[E_{\mathrm{AS},i}^{1} = \frac{1}{2} \sum_{j} \frac{1}{2} \left(V_{ij}(r_{ij}) + V_{ji}(r_{ij})\right) = - \frac{V_{0i}}{2 \gamma_{2i}} \cdot \frac{1}{2} \sum_{j} (\dot{\sigma}_{2ij}^\mathrm{s} + \dot{\sigma}_{2ij}^\mathrm{o})\]


\[\dot{\sigma}_{2ij}^\mathrm{s} = \chi_{ij} w(r_{ij}) \exp(-\frac{\kappa_j}{\beta} (r_{ij} - \beta s_{0j}))\]
\[\dot{\sigma}_{2ij}^\mathrm{o} = \chi_{ji} w(r_{ij}) \exp(-\frac{\kappa_i}{\beta} (r_{ij} - \beta s_{0i}))\]

and further for unary perfect fcc systems,


The forces on atom \(i\) can be computed as

\[\mathbf{F}_{i} = -\nabla_i E = \sum_j \frac{\partial E}{\partial r_{ij}} \frac{\mathbf{r}_{ij}}{r_{ij}} = \sum_j \mathbf{f}_{ij}\]

where the force applied on atom \(i\) by atom \(j\) is given by

\[\mathbf{f}_{ij} = \frac{\partial E}{\partial r_{ij}} \frac{\mathbf{r}_{ij}}{r_{ij}}\]

The derivative of \(E\) with respect to \(r_{ij}\) is further written as

\[\frac{\partial E}{\partial r_{ij}} = \left( \frac{\partial E_{\mathrm{c},i}}{\partial r_{ij}} + \frac{\partial E_{\mathrm{c},j}}{\partial r_{ij}} + \frac{\partial E_{\mathrm{AS},i}^2}{\partial r_{ij}} + \frac{\partial E_{\mathrm{AS},j}^2}{\partial r_{ij}} \right) + \left( \frac{\partial E_{\mathrm{AS},i}^1}{\partial r_{ij}} + \frac{\partial E_{\mathrm{AS},j}^1}{\partial r_{ij}} \right)\]

Be careful that we also need to consider the contribution of the energy term associated to atom \(j\).

The first terms depend on \(r_{ij}\) indirectly via \(s_{i}\) and \(s_{j}\).

\[\frac{\partial E_{\mathrm{c},i}}{\partial r_{ij}} = \frac{\partial E_{\mathrm{c},i}}{\partial s_{i}} \frac{\partial s_i}{\partial \sigma_{1i}} \frac{\partial \sigma_{1i}}{\partial r_{ij}}\]
\[\frac{\partial E_{\mathrm{c},j}}{\partial r_{ij}} = \frac{\partial E_{\mathrm{c},j}}{\partial s_{j}} \frac{\partial s_j}{\partial \sigma_{1j}} \frac{\partial \sigma_{1j}}{\partial r_{ij}}\]
\[\frac{\partial E_{\mathrm{AS},i}^2}{\partial r_{ij}} = \frac{\partial E_{\mathrm{AS},i}^2}{\partial s_{i}} \frac{\partial s_i}{\partial \sigma_{1i}} \frac{\partial \sigma_{1i}}{\partial r_{ij}}\]
\[\frac{\partial E_{\mathrm{AS},j}^2}{\partial r_{ij}} = \frac{\partial E_{\mathrm{AS},j}^2}{\partial s_{j}} \frac{\partial s_j}{\partial \sigma_{1j}} \frac{\partial \sigma_{1j}}{\partial r_{ij}}\]

They can be computed using

\[\frac{\partial E_{\mathrm{c},i}}{\partial s_i} = - E_{0i} \lambda_i^2 \dot{s}_i \exp(-\lambda_i \dot{s}_i)\]
\[\frac{\partial E_\mathrm{AS}^2}{\partial s_i} = -6 V_{0i} \kappa_i \exp(-\kappa_i \dot{s}_i)\]
\[\frac{\mathrm{d}s_i}{\mathrm{d}\sigma_{1i}} = \frac{\mathrm{d}\dot{s}_i}{\mathrm{d}\sigma_{1i}} = -\frac{1}{\beta\eta_{2i}} \frac{1}{\sigma_{1i}}\]
\[\frac{\partial \sigma_{1i}}{\partial r_{ij}} = \chi_{ij} \left( \frac{\partial w}{\partial r_{ij}} \exp(-\eta_{2j} (r_{ij} - \beta s_{0j})) - w(r_{ij}) \eta_{2j} \exp(-\eta_{2j} (r_{ij} - \beta s_{0j})) \right) = \left( \frac{1}{w(r_{ij})} \frac{\partial w}{\partial r_{ij}} - \eta_{2j} \right) \dot{\sigma}_{1ij}^\mathrm{s}\]
\[\frac{\partial \sigma_{1j}}{\partial r_{ij}} = \chi_{ji} \left( \frac{\partial w}{\partial r_{ij}} \exp(-\eta_{2i} (r_{ij} - \beta s_{0i})) - w(r_{ij}) \eta_{2i} \exp(-\eta_{2i} (r_{ij} - \beta s_{0i})) \right) = \left( \frac{1}{w(r_{ij})} \frac{\partial w}{\partial r_{ij}} - \eta_{2i} \right) \dot{\sigma}_{1ij}^\mathrm{o}\]

The second part directly depends on \(r_{ij}\) and given by

\[\frac{\partial E_{\mathrm{AS},i}^1}{\partial r_{ij}} + \frac{\partial E_{\mathrm{AS},j}^1}{\partial r_{ij}} = - \frac{1}{2} \left( \frac{V_{0i}}{2 \gamma_{2i}} \frac{\partial \dot{\sigma}_{2ij}^\mathrm{s}}{\partial r_{ij}} + \frac{V_{0j}}{2 \gamma_{2j}} \frac{\partial \dot{\sigma}_{2ij}^\mathrm{o}}{\partial r_{ij}} \right)\]


\[\frac{\partial \dot{\sigma}_{2ij}^\mathrm{s}}{\partial r_{ij}} = \chi_{ij} \left( \frac{\partial w}{\partial r_{ij}} \exp(-\frac{\kappa_j}{\beta} (r_{ij} - \beta s_{0j})) - w(r_{ij}) \frac{\kappa_j}{\beta} \exp(-\frac{\kappa_j}{\beta} (r_{ij} - \beta s_{0j})) \right) = \left( \frac{1}{w(r_{ij})} \frac{\partial w}{\partial r_{ij}} - \frac{\kappa_j}{\beta} \right) \dot{\sigma}_{2ij}^\mathrm{s}\]
\[\frac{\partial \dot{\sigma}_{2ij}^\mathrm{o}}{\partial r_{ij}} = \chi_{ji} \left( \frac{\partial w}{\partial r_{ij}} \exp(-\frac{\kappa_i}{\beta} (r_{ij} - \beta s_{0i})) - w(r_{ij}) \frac{\kappa_i}{\beta} \exp(-\frac{\kappa_i}{\beta} (r_{ij} - \beta s_{0i})) \right) = \left( \frac{1}{w(r_{ij})} \frac{\partial w}{\partial r_{ij}} - \frac{\kappa_i}{\beta} \right) \dot{\sigma}_{2ij}^\mathrm{o}\]

Note that

\[\frac{\mathrm{d}w}{\mathrm{d}r} = a w(r) (w(r) - 1)\]


The static part of the virial stress can be given as

\[\tau^{\alpha \beta} = \frac{1}{\Omega} \frac{1}{2} \sum_{i=1}^{N} \sum_{j \neq i} r_{ij}^{\alpha} f_{ij}^{\beta} = \frac{1}{\Omega} \sum_{i=1}^{N} \sum_{j > i} r_{ij}^{\alpha} f_{ij}^{\beta}\]

where \(\alpha\) and \(\beta\) are indices for Cartesian components. When considering all the neighbors for each atom, we should not forget the factor \(1/2\).


For the fcc structure, the numbers of neighbor sites and the distances of first several shells are

\[ \begin{align}\begin{aligned}:wowrap:\\\begin{split}n^\mathrm{1NN} &= 12, & \quad d^\mathrm{1NN} &= \beta s_{i} \\ n^\mathrm{2NN} &= \phantom{0}6, & \quad d^\mathrm{2NN} &= \sqrt{2}\,d^\mathrm{1NN} \\ n^\mathrm{3NN} &= 24, & \quad d^\mathrm{3NN} &= \sqrt{3}\,d^\mathrm{1NN} \\ n^\mathrm{4NN} &= 12, & \quad d^\mathrm{4NN} &= \sqrt{4}\,d^\mathrm{1NN} \\ n^\mathrm{5NN} &= 24, & \quad d^\mathrm{5NN} &= \sqrt{5}\,d^\mathrm{1NN}\end{split}\end{aligned}\end{align} \]

where \(s_{i}\) is the Wigner–Seitz radius of the species of atom \(i\) and \(\beta = 2^{-1/2} (16 \pi / 3)^{1/3} \approx 1.809\).