Some basic documentation already exists on the web, but there were some tricks that Paul told me and saved me many hours of fiddling.

My task was to covert a Si pseudopotential from the BFD web site to a format that can be read in by Quantum Espresso.

Getting your hands on ppconvert.

QMCPACK is an open-source quantum Monte Carlo code that does many things, but among them is a converter for pseudopotentials. The converter lives in qmcpack/src/QMCTools/ppconvert/ where there is a README with compile instructions. You execute those compile instructions in the qmcpack/build/ directory (from the QMCPACK root).

Using ppconvert for Si.

Once that is done, the ppconvert executable exists in the qmcpack/build/bin. Copy the pseudopotential section from the BFD web page into a text file, I called it ./bfd. Then I executed the following command:

ppconvert --gamess_pot bfd --s_ref "1s(2)2p(2)" --p_ref "1s(2)2p(2)" --d_ref "1s(2)2p(2)" --upf bfd_si.upf

Breaking this down:

  • I copied the GAMESS input format for Si, so thats what --gamess_pot is all about.
  • --s_ref etc. is the valence state in a funky format. The preceding number seems to be iterating across angular momentum channels. Paul suggested doing all of the valence state for each channel, but I suspect it ignores the “s” part for the --p_ref, for instance.
  • --upf specifies the output format. The last thing is the resulting output that I wanted.

The process utilizes the Kleinman-Bylander approximation, and I believe it performs an LDA on the pseudoatom system to figure out if the potentials match. I think the correspondence between ground-state densities and potentials is the theoretical grounding for this.

Checking the conversion.

Will be added shortly…