I'm new to DFT. I want to make use of the GTH pseudopotential.

I am trying to understand how this potential works. I read the article "Separable dual-space Gaussian pseudopotentials" by S. Goedecker, M. Teter, and J. Hutter.

It indicates that the potential consists of two parts: local and nonlocal. There is an exponential parameter $r_{loc}$ in the local potential. This parameter denotes the range of the Gaussian ionic charge distribution.

What is meant by this in terms of physical quantities? Does it mean that at distances exceeding $r_{loc}$, the non-local part of the potential begins to prevail? As the non-local part of the potential does not contain the parameter $r_{loc}$ at all. How is $r_{loc}$ determined in practice? enter image description here

enter image description here

Can anyone please explain the purpose of the parameter $r_{loc}$?

  • 2
    $\begingroup$ +10. Great first question, and welcome! Hopefully we see more of you! $\endgroup$ – Nike Dattani May 24 '20 at 14:47

Great question, will allow me to advertize our newly-released DFT code :](https://github.com/JuliaMolSim/DFTK.jl/).

The rloc parameter is the characteristic distance at which the pseudopotential acts. At distances bigger than rloc, the potential starts to behave like a Coulomb potential. Note that the nonlocal potential also has a characteristic size, though. Generally speaking, the largest rloc the better for numerical purposes (because the potential is less sharp around the nuclei). It can vary a lot from element to element, as the following Julia script shows: (edit: with corresponding Coulomb potential, following Michael's suggestion)

using DFTK
using PyPlot

x = range(0, 2, length=10000)
for pseudo in ("Si-q4", "O-q6", "H-q1")
    psp = load_psp("hgh/lda/$(pseudo)")
    p, = plot(x, DFTK.eval_psp_local_real.(Ref(psp), x), label=pseudo, lw=3)
    q = parse(Int, pseudo[end])
    plot(x, -q ./ x, color=p.get_color(), linestyle="-.")
    axvline(psp.rloc, color=p.get_color(), lw=2)
    xlabel("r (Bohr)")
ylim([-40, 0])

println.([(psp.identifier, load_psp(psp.identifier).rloc) for psp in DFTK.list_psp(family="hgh", functional="lda")])

enter image description here

  • 2
    $\begingroup$ Could you add the appropriate coulomb potential just for comparison of the behaviour? $\endgroup$ – Michael F. Herbst Jun 5 '20 at 12:45
  • 2
    $\begingroup$ good idea! thanks! $\endgroup$ – Antoine Levitt Jun 5 '20 at 12:52
  • $\begingroup$ +1. So it seems rloc is the inflection point at which the curves switch from positive curvature to negative curvature? $\endgroup$ – Nike Dattani Jun 5 '20 at 13:12
  • $\begingroup$ Certainly seems so but I'd imagine that's a coincidence more than anything else; the functional form is pretty complex $\endgroup$ – Antoine Levitt Jun 5 '20 at 15:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.