Numerical Evaluation of NLDF Features
Computing Nonlocal Density Features (NLDFs) using simple numerical integration can be unwieldy and computationally costly, so in practical calculations, the feature integrals are expanded as a sum of convolutions. The expansion is slightly different for each feature version.
For version j, the general form of the feature is
In the context of implementing a nonlocal van der Waals density functional, Román-Pérez and Soler[1] found that the kernel \(k(a_0[n](\mathbf{r}'), a_i(\mathbf{r}), |\mathbf{r}-\mathbf{r}'|)\) can be approximated as
where \(\alpha\) and \(\beta\) are a set of interpolating points that span the range of values taken by \(a_0\) and \(a_i\) over the density distribution, and \(p_\alpha(a)\) is a cubic spline that is \(1\) when \(a=\alpha\) and \(0\) when \(a=\beta\) (with \(\beta\) being another interpolation point not equal to \(\alpha\)). Because the interpolation points are constants independent of the density, the above approximation converts the feature integral into a sum over convolutions.
The ciderpress.dft.plans.NLDFSplinePlan
class implements this interpolation
approach.
The version j integration kernel \(k(a, b, r)\) is separable in \(a\) and \(b\):
Because of this, the interpolations can also be performed by expanding \(\exp(-a r^2)\)
as a linear combination of the interpolation functions \(\exp(-\alpha r^2)\). This
modified approach is implemented by the ciderpress.dft.plans.NLDFGaussianPlan
class.
The details of how this interpolation approximation is used to compute the NLDFs is dependent on the periodicity, type of grid, and type of basis set used in a DFT calculation. For details on the implementation of this approach for isolated Gaussian-type orbital calculations and periodic plane-wave DFT calculations, see Bystrom and Kozinsky[2].
The other features versions (i and k) require slightly modified version of this approach, but the basic idea is the same and the implementation quite similar.