libvdwxc - van der Waals density functional library
===================================================

libvdwxc [0] is a library of density functionals, i.e., for the calculation
of exchange and correlation energies in density functional theory.  The
idea is that DFT codes would link to libvdwxc.

libvdwxc implements several non-local van der Waals density functionals
using the method by Soler [1].  It evaluates the correlation energy
and potential using a convolution in Fourier space

                / /
            1  | |     _    _  _       _    _  _
  E[rho] = --- | | rho(r) K(r, r') rho(r') dr dr'
            2  | |
              / /

               -----   /
            1   \     |      * _      _         _   _
         = ---   )    | theta (k) K  (k) theta (k) dk ,
            2   /     |      a     ab         b
               ----- /
                a,b

where K(r, r') is the kernel of the van der Waals functional, and
theta(k) are auxiliary functions derived from the density.  The
indices a, b refer to an expansion of each quantity in a basis of
splines.  The effect is to reduce the 6D spatial integral over r and
r' to a sum of 3D integrals.

Presently the library calculates the non-local correlation energy and
potential of the functionals

 * vdW-DF1 [2]
 * vdW-DF2 [3]

These can be combined with different semilocal functionals, generally
provided by libxc, to form full functionals consisting of
a semilocal exchange functional (X) plus LDA correlation (C) and
the non-local functional corresponding to vdW-DF1 or vdW-DF2:

 * vdW-DF1 (revPBE X + LDA C + DF1 non-local)
 * vdW-DF2 (RPW86 X + LDA C + DF2 non-local)
 * vdW-DF-cx [4] (Langreth–Vosko/RPW86 X + LDA C + DF1 non-local)
 * vdW-optPBE (modified PBE X + LDA C + DF1 non-local)
 * vdW-optB88 (modified B88 X + LDA C + DF1 non-local)
 * vdW-C09 (C09x X + LDA C + DF1 non-local)
 * vdW-BEEF (semilocal BEE2 kernel + DF2 non-local)
 * vdW-mBEEF (semilocal BEE3 kernel + (0.89 x) DF2 non-local)

Since libvdwxc uses Fourier transforms, it works on electron densities
that are defined on uniform grids within parallel epiped-shaped boxes.

libvdwxc works in parallel with MPI and uses FFTW-MPI or PFFT to
parallelize the three-dimensional Fourier transforms.

libvdwxc main page:

  http://libvdwxc.gitlab.io/libvdwxc

libvdwxc source code:

  https://gitlab.com/libvdwxc/libvdwxc

libvdwxc installation instructions:

  http://libvdwxc.readthedocs.io/

References
==========

[0] A. H. Larsen, M. Kuisma, J. Löfgren, Y. Pouillon, P. Erhart,
and P. Hyldgaard, Modelling Simul. Mater. Sci. Eng. 25 065004
(2017).

[1] G. Román-Pérez and J. M. Soler, Phys. Rev. Lett. 103, 096102
(2009).

[2] M. Dion, H. Rydberg, E. Schröder, D. C. Langreth, and
B. I. Lundqvist, Phys. Rev. Lett. 92, 246401 (2004).

[3] K. Lee, E. D. Murray, L. Kong, B. I. Lundqvist, and
D. C. Langreth, Phys. Rev. B 82, 081101 (2010).

[4] K. Berland and P. Hyldgaard, Phys. Rev. B 89, 035412 (2014).
