I would like to use QE to obtain u_K(r), which is the Bloch wave function of spin-up maximum valance band at K point. If I define the K point in the input file and do an SCF calculation by QE including spin-orbit coupling, I was wondering how I can extract the mentioned Bloch wave function?

I have followed the below link:

What is the best program to manipulate numerical DFT wavefunctions to calculate custom matrix elements?

to get .hdf5 files. This link, presents how to collect wavefunctions.

I am not sure how to use the script together with python to obtain the desired wave function. I would appreciate your help and advice on this.

  • $\begingroup$ Is this something for which h5py which allows you to read HDF5 files in Python, might help? Also, have you already asked Pietro Delugas, the author of that script you linked, about this? $\endgroup$ Aug 9 at 17:24
  • $\begingroup$ I am the OP of that question. I do not have a complete answer for you. What I did was compile QE with the hdf5 flag on (cf. answer to my question), use nscf output in Wannier90, and open the output HDF5 files in MATLAB. This allowed me to clearly see the file structure and write a simple script to extract the wavefunction data I wanted (in a Wannier basis). Your second link was not applicable as the file structure was different. This link has a way to get the Bloch wavefunctions: perturbo-code.github.io/mydoc_qe2pert.html (see the lwannier flag). There may be other solutions. $\endgroup$ Aug 11 at 22:25