DFTK.jl
DFTK.jl copied to clipboard
Implement ONCVPSP (Norm-converving Vanderbilt PSPs)
Related to #2
http://www.quantum-simulation.org/potentials/sg15_oncv/ seems to be the most used. The XML format is quite straightforward, so might be the simplest to parse. They give the local potential, the projectors and the dij, so it should be pretty easy to incorporate into DFTK.
Partially done in #741 .
I'm going to call this done for now. We still miss features, but the key things are there.
Notably, fully-relativistic pseudos and pseudos where the local potential angular momentum is defined (i.e. not -1) are not yet supported. Most, if not all, other features of ONCVPSP-generated pseudos (local and non-local potentials, non-linear core correction, pseudo-atomic densities, and pseudo-atomic wavefunctions) are supported.
pseudos where the local potential angular momentum is defined (i.e. not -1)
Is that common? Shouldn't be too hard
fully-relativistic pseudos
This means Dirac equation? Do people really do plane waves with that?
pseudos where the local potential angular momentum is defined (i.e. not -1)
Is that common? Shouldn't be too hard
Not super common, and it shouldn't be very hard to handle.
fully-relativistic pseudos
This means Dirac equation? Do people really do plane waves with that?
Yes, they're from a solution of the Dirac equation. AFAIK, they're needed for spin-orbit coupling.
Yes, they're from a solution of the Dirac equation. AFAIK, they're needed for spin-orbit coupling
OK I see, the PSP code solves the Dirac equation, but the PW code solves for a C^2 valued wavefunction, which has the same Hamiltonian as usual plus a sigma . (nabla V x p) term. I think it's just an info on how the PSP was generated and is meant to be used, but there's nothing more to be done at the PSP level in this case - at least I don't see any relevant field in the UPF format (just PP_SEMILOCAL but pseudos are usually given in nonlocal form anyway).
but there's nothing more to be done at the PSP level in this case
I don't think this is exactly true; the data for the non-local projectors and the pseudo-waves are different, and the way fully-relativistic pseudos are treated in UPF and ABINIT's PSP8 is different enough that they're incompatible without some major finagling.
The data is different but the pseudo-pw code (ie the pseudopotential part of the hamiltonian) is the same? Or what do you mean? If you have references please add them here https://github.com/JuliaMolSim/DFTK.jl/issues/526, @ClementineBarat might be interested in implementing this at some point
Just had a chat with a colleague, and it seems that indeed there will be some work to be done for spin-orbit. The relativistic beta and chi projectors need to be used in this case, which can amount to an adjustment to the non-local coupling Dij
or to how the projection vectors are constructed from the radial functions beta
. Seems like there's some Clebsch-Gordan wizardry to be done. (see QE's upflib/spinor.f90
, upflib/upf_spinorb.f90
, Modules/wavefunctions.f90
)
Thanks! I need to read the papers...
At least the ONCVPSP paper uses scalar relativistic pseudos, meaning the pseudos can just be used as is. So let's not worry about it yet...
Ah, possibly not: see discussion eg here https://orbi.uliege.be/bitstream/2268/25694/1/prb_78_045119_verstraete_Pb_phonons_PREPRINT.pdf
Looks like what's going on is that the pseudopotential term itself stays the same, but the spin-orbit coupling term needs the force nabla V. This requires a bit more algebra, but nothing more is required from the pseudos other than the betas and Dij.