4
$\begingroup$

I have noticed that many researchers calculate Berry curvature using Wannier functions. I have a specific question related to this:

After performing an NSCF calculation in Quantum ESPRESSO, the data is stored in the output folder. How can I construct the eigenvectors or Kohn-Sham wave functions (psi_nk) from that data? I’ve seen that many people saying it is not necessary to do this, but I’m asking out of curiosity.

Any guidance would be greatly appreciated!

Thank you, Teja

$\endgroup$

1 Answer 1

2
$\begingroup$

Welcome!

If you want Berry phases from plane-waves, it is already implemented in pw.x. See the input option lberry. This doesn't require any kind of Wannierization. It is implemented in most electronic structure codes.

If you want to implement it yourself as a post processing step, you need wave-functions, not just eigenvalues... but consider that it is really not trivial at all to calculate Berry phases. See e.g. the book by Vanderbilt (https://doi.org/10.1017/9781316662205). Still, if you want to do it, go for it! Let us know how it goes.

Finally, to actually answer your question: you can use the bands.x post-processing utility. In it's simplest mode, it extracts eigenvalues from the pw.x output and writes them to files you can use to plot band-structures. However, it doesn't actually matter what kpts you use: it could be a homogeneous grid from nscf calculation. Another method is to parse them directly from the *.xml file (or *.hdf5 if compiled with hdf5 support I think). There are probably tools on github to do this, but I have written my own to parse occupations etc. It's not the difficult.

Cheers! Ty

$\endgroup$
2
  • 1
    $\begingroup$ Thank you for your answer, Tyler. However, this is not my original question. It seems it was edited by someone. My original question was: How can I construct an eigenvectors (psi_nk) or Kohn Sham orbitals from the output data? And from there we can calculate <u_nk | del_k | u_n'k > and then berry curvature. This is my purpose for constructing u_nk from DFT data. $\endgroup$ Commented Aug 29, 2024 at 3:08
  • 1
    $\begingroup$ Ah, so the question is supposed to say 'eigenvectors' instead of 'eigenvalues' ? I suggest just to edit it back. Anyway, take a look at root/PP/src/wfck2r.f90, which reads the QE ouput data and writes wave functions in real-space. Does this help? FYI, there are lots of utilities that arent documented on the website, but have documentation in the headers. Look in root/bin and then check the headers of the corresponding .f90 files. $\endgroup$ Commented Aug 29, 2024 at 17:01

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.