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
26 stars 19 forks source link

Implement superposition of atomic potentials guess #74

Open susilehtola opened 1 year ago

susilehtola commented 1 year ago

In J. Chem. Theory Comput. 15, 1593 (2019), I pointed out that the superposition of atomic potentials (SAP) initial guess can be easily formed on a Becke grid.

Later on, I tabulated more accurate potentials with fully numerical calculations. These potentials are available as a BSD licensed C++ implementation in https://github.com/psi4/psi4/blob/master/psi4/src/psi4/libfock/sap.cc

The guess is evaluated similarly to an LDA Fock matrix; one just needs to form

$$ V{\mu\nu}^{\text{SAP}}=\int\chi{\mu}({\bf r})V^{\text{SAP}}(\boldsymbol{r})\chi_{\nu}({\bf r}){\rm d}^{3}r $$

where the pointwise potential is a sum over atomic potentials

$$ V^{\text{SAP}}(\boldsymbol{r})=-\sum{A}\frac{Z{A}}{r_{A}} $$

which also have a limited range of 40 bohr. The guess is then obtained by forming the Fock matrix

$$ {\bf F} = {\bf T} + {\bf V}^\text{SAP} $$

and diagonalizing it to find orbitals and eigenvalues.

It would also be possible to implement a superposition of atomic densities (SAD) guess in GauXC by computing the pointwise sum of densities, approximating the exchange potential with the LDA, and computing the Coulomb part with analogous machinery to SAP.

wavefunction91 commented 10 months ago

Just because it took me a second to realize what's denoted here, you mean

$$ V^{SAP}(r) = -\sum_A \frac{Z^{eff}_A(r)}{\vert r - R_A\vert} $$

where the effective charge is tabulated in the above source. Should be very easy to implement, particularly if we also add a simple nuclear potential integrator (for e.g. STOs / NAOs)

How are you interpolating for arbitrary radial points?

susilehtola commented 10 months ago

How are you interpolating for arbitrary radial points?

Lagrange interpolation. I have a C implementation of the tabulated potentials.

susilehtola commented 10 months ago

It should also be quite straightforward to use the tabulated atomic wave functions to compute Coulomb + LDA exchange potentials, which is what we use anyhow.