[Wannier] Complex values in seedname.mmn from real VASP wavefunction

Giovanni Pizzi giovanni.pizzi at epfl.ch
Fri Nov 27 19:48:44 CET 2020


Dear Espen,

thanks for your message.
First of all I'd like to remind the policy of this mailing list of signing posts with the official affiliation.

Then, to your issue: while having complex values in the Mmn overlaps might seem surprising at first, this is correct.
If you are at Gamma only, your 'first-neighbour k-points' in k-space (needed to compute gradients in k-space, a key part of the Wannierisation algorithm), are "Gamma points" in neighbouring (reciprocal) cells.

More precisely, the line
    1    1    0    0    1
means exactly that the next 4x4 block is the overlap of the (periodic part of the) wave functions at the Gamma point (nk=1, first integer) with the point (k+b) obtained as starting the Gamma point (nk=1, second integer) and shifting it by (0, 0, 1) in units of reciprocal vectors (last three integers). So in this example "b" is the third reciprocal vector "b_3".

Now, while at Gamma you can choose an appropriate phase to get real u_nk (which are periodic in real space), this phase can indeed be chosen *locally* in reciprocal space, but not globally.
That is to say, there is a non-zero phase between u_Gamma and u_b3.

I think it is instructive to read sections IV.C.3 and IV.C.4 of the Marzari-Vanderbilt paper (PRB 1997), which has comments that are much closely related to this (for the related case of functions that can be chosen real under inversion symmetry).
This is also commented in footnote 4 of the review of Marzari et al, Rev. Mod. Phys.. 84 (2012) and discussed in detail in section II.F.2 of the same review.

If you prefer to look into the code - I don't know about VASP, but for Quantum ESPRESSO you can check search for `zerophase` in the source code of pw2wannier90 (e.g. here https://gitlab.com/QEF/q-e/blob/86749ba053539de4785264c98fdc7f3ffdbb2b0d/PP/src/pw2wannier90.f90) to see when and how this phase is introduced (indeed, when the at least one of the last three numbers of the line discussed above is non-zero).

I hope this explanation clarifies a bit the issue.

Best,

Giovanni

--
Giovanni Pizzi
EPFL and NCCR MARVEL
http://people.epfl.ch/giovanni.pizzi
http://nccr-marvel.ch/en/people/profile/giovanni-pizzi


On 27 Nov 2020, at 13:00, Espen Sagvolden <Espen.Sagvolden at sintef.no<mailto:Espen.Sagvolden at sintef.no>> wrote:

Dear all,

Seemingly paradoxical values arise in the seedname.mmn files from wannier_setup with VASP: They seem to be complex-valued (alternating between purely real and purely imaginary), even when the underlying VASP wavefunction is real (gamma-point computation). Since the seedname.mmn entries should only be orbital overlaps, this troubles me, but I'm new to Wannier90 and there may be something I don't know about the overlap integrals.

Here is an excerpt from the seedname.mmn file for a subspace of the four lowest orbitals from a gamma-point VASP run with real orbitals:

File generated by VASP: unknown system
           4           1           4
    1    1    0    0    1
    0.946270648002   -0.000000000000
   -0.000695821546    0.000000000000
   -0.000000000000   -0.000000278197
   -0.000000000000   -0.000000195965
   -0.000695821546    0.000000000000
   -0.944393397524   -0.000000000000
   -0.000000000000    0.000000000281
   -0.000000000000   -0.000000001135
   -0.000000000000   -0.000000278197
   -0.000000000000    0.000000000281
    0.962394262259    0.000000000000
    0.000000000265   -0.000000000000
   -0.000000000000   -0.000000195965
   -0.000000000000   -0.000000001135
    0.000000000265   -0.000000000000
    0.962394258975    0.000000000000
    1    1    1    1   -1
    0.810376149699    0.000000000000
   -0.000596328721    0.000000000000
    0.000000000000    0.498834776389
    0.000000000000    0.103890215607
   -0.000596328721    0.000000000000
   -0.811164204017    0.000000000000
   -0.000000000000    0.000205733055
   -0.000000000000    0.000042846592
    0.000000000000    0.498834776389
   -0.000000000000    0.000205733055
    0.648824351005   -0.000000000000
   -0.046098789574   -0.000000000000
    0.000000000000    0.103890215607
   -0.000000000000    0.000042846592
   -0.046098789574   -0.000000000000
    0.860569485467   -0.000000000000
    1    1    1    0   -1
    0.810376181990   -0.000000000000
   -0.000596328947   -0.000000000000
    0.000000000000    0.159445743764
    0.000000000000    0.483948506733
   -0.000596328947   -0.000000000000
   -0.811164196521   -0.000000000000
   -0.000000000000    0.000065759196
   -0.000000000000    0.000199593417
    0.000000000000    0.159445743764
   -0.000000000000    0.000065759196
    0.847555958915   -0.000000000000
   -0.068638884681   -0.000000000000
    0.000000000000    0.483948506733
   -0.000000000000    0.000199593417
   -0.068638884681   -0.000000000000
    0.661838058801   -0.000000000000
    1    1    0    1    1
    0.810376169686   -0.000000000000
   -0.000596328168    0.000000000000
    0.000000000000    0.339388794748
   -0.000000000000   -0.380058459416
   -0.000596328168    0.000000000000
   -0.811164201039    0.000000000000
   -0.000000000000    0.000139974419
   -0.000000000000   -0.000156748296
    0.000000000000    0.339388794748
   -0.000000000000    0.000139974419
    0.767710591576   -0.000000000000
    0.114737676141    0.000000000000
   -0.000000000000   -0.380058459416
   -0.000000000000   -0.000156748296
    0.114737676141    0.000000000000
    0.741683353736   -0.000000000000

Yet, when seedname.mmn is used in a subsequent wannierization run with gamma_only = T, the resulting seedname_u.mat file seems to be OK (i.e., no imaginary components).

written on 25Nov2020 at 10:27:40
           1           4           4

   0.0000000000  +0.0000000000  +0.0000000000
   0.5773502345  +0.0000000000
  -0.0002035071  +0.0000000000
  +0.4419431296  +0.0000000000
  +0.6865514806  +0.0000000000
  +0.0003524826  +0.0000000000
  +0.9999999379  +0.0000000000
  +0.0000000032  +0.0000000000
  -0.0000000003  +0.0000000000
  -0.5773502553  +0.0000000000
  +0.0002035033  +0.0000000000
  +0.8155425747  +0.0000000000
  -0.0394582080  +0.0000000000
  -0.5773502102  +0.0000000000
  +0.0002035074  +0.0000000000
  -0.3735994902  +0.0000000000
  +0.7260097205  +0.0000000000


Is this because everything straightens itself out when the MLWF algorithm is run,
or are imaginary components stripped away at some point because of the keyword gamma_only = T?

Best regards,

Espen
_______________________________________________
Wannier mailing list
Wannier at lists.quantum-espresso.org<mailto:Wannier at lists.quantum-espresso.org>
https://lists.quantum-espresso.org/mailman/listinfo/wannier

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/wannier/attachments/20201127/4f293651/attachment-0001.html>


More information about the Wannier mailing list