wavefunction91 / GauXC

GauXC is a modern, modular C++ library for the evaluation of quantities related to the exchange-correlation (XC) energy (e.g. potential, etc) in the Gaussian basis set discretization of Kohn-Sham density function theory (KS-DFT) on heterogenous architectures.
Other
25 stars 16 forks source link

Coulomb potential evaluator #96

Open susilehtola opened 4 months ago

susilehtola commented 4 months ago

Many atomic-orbital codes such as ADF and FHI-aims solve Poisson's equation numerically with the scheme of Becke and Dickson from J. Chem. Phys. 89, 2993–2997 (1988); see J. Chem. Theory Comput. 10, 1994 (2014) and Comput. Phys. Commun. 190, 33 (2015), respectively.

In this scheme, one uses an atomic partitioning (like in the polyatomic quadrature) to decompose the density into atomic fragments, and then computes the Coulomb potential using the Laplace decomposition:

  1. for each atom, define a radial spline basis and a maximum angular momentum
  2. for each radial shell, compute the projections onto $Y_{lm}$
  3. compute the potential $V_{lm}(r)$

The total Coulomb potential in each molecular quadrature point is obtained by summing over the atomic potentials. The Coulomb matrix is then obtained by computing the LDA-type expression.

Because this method is independent of the atomic basis, the most logical place to implement it is within GauXC. Although it is typically used with Slater-type orbitals or numerical atomic orbitals, it might be useful also for Gaussian-type orbitals.

susilehtola commented 3 days ago

See also Termath and Handy in Chem. Phys. Lett 240, 17 (1994)