Ion-Ion interaction

The following description works, but it is slow due to the interpolation required and less modular. So now this term is implemented using an standard Ewald sum.


The ion-ion interaction term is tricky to treat, as it is an infinite sum with a finite result. The standard way to handle it is through an Ewald sum; however in Octopus this is done in a slightly different way (formally equivalent).

The energy term (per volume unit) is:

$$ E_{ii}=\frac12\sum_i^{\infty}\sum_j^{in}\frac{z_iz_j}{r_{ij}} $$

$in$ is a sum over atoms inside the cell, $out$ only over atoms outside and $\infty$ is over all the atoms.

The first separation that is

$$ E_{ii}=\frac12\sum_i^{in}\sum_j^{in}\frac{z_iz_j}{r_{ij}} + \frac12\sum_i^{out}\sum_j^{in}\frac{z_iz_j}{r_{ij}} $$

the first term is the energy of a finite system, the second can be seen as the interaction of the particles in the cell with the potential generated by the particles outside, we will call it $E_{io}$.

Now, as in the case of the Ewald sum we will separate the potential in two parts:

$$ \frac{z_j}{r}=z_j\frac{1-\rm{erf}(\alpha r)}{r} + z_j\frac{\rm{erf}(\alpha r)}{r}=v^{sr}_j(r)+v^{lr}_j(r)\ , $$

with $\alpha$ chosen to match the separation of the pseudo-potential. Now

$$ E_{io}=\frac12\sum_i^{out}\sum_j^{in}z_jv^{sr}_i(r_j) + \frac12\sum_j^{in}z_j\sum_i^{out}v^{lr}_i(r_j) $$

As $v^{sr}_j(r)$ is short-ranged (i.e. exists $r_c$ such that $v^{sr}_j(r)=0$ for $r>r_c$) the first term is a finite sum and can be calculated directly by including periodic copies of the atoms in the cell up to an $r_c$ radius.

To obtain the second term we first see that

$$ V(r)=\sum^{\infty}_iv^{lr}_i(r) $$

can be obtained by solving the Poisson equation

$$ \nabla^2V(r)=-4\pi\sum_i^{\infty}n^{lr}(r)=-4\pi n(r) $$

and $n(r)$ can be calculated directly because $n^{lr}$, the charge distribution that generates $v^{lr}$, is short ranged (it is a gaussian). Actually this is the same way that the long range part of the pseudopotential is calculated, so we already have to calculate $V$.

From here is direct that

$$ V^{out}(r)=\sum_i^{out}v^{lr}_i(r) = V(r) - \sum_i^{in}v^{lr}_i(r)\ . $$

So the second term of $E_{io}$ can be calculated by evaluating $V^{out}\!$ in the atomic positions.

$$ E^{lr}=\frac12\sum_j^{in}z_jV^{out}(r_j) $$

In the case of Octopus this means we have to interpolate the function, as the atoms are not always over a grid point. Currently this is quite slow, if we want to do dynamics with periodic systems this has to be improved.


The forces are the gradients of the previous terms with respect to the positions of the atoms ‘‘‘in’’’ the cell.

The in-in term is as usual for finite systems:

$$ \vec{F}_i=\sum_j^{in}\frac{z_iz_j}{r_{ij}^3}(\vec{r}_i-\vec{r}_j)\,, $$

the short range part of the in-out term is similar:

$$ \vec{F}^{sr}_i=\frac12\sum_j^{out}z_i\frac{d v^{sr}(r_j)}{dr}\frac{(\vec{r}_i-\vec{r}_j)}{r_{ij}}\ , $$

while the long range part is simply:

$$ \vec{F}^{lr}_i=\frac12z_i\vec{\nabla}V^{out}(r_i) $$ .