[QE-developers] Phase of wave-function

Duy Le ttduyle at gmail.com
Wed Apr 8 23:52:45 CEST 2020


Thank you very much, Stefano and Lorenzo, for the helpful information.

W.r.t Lorenzo's points, I think I understood it correctly. Indeed, it is
not an observable:
X(k1,k2, ib1, ib2) = Integral_r Intergral_r' { psi( k1, ib1) psi(k1, ib2)*
f(r-r') psi( k2, ib1)* psi(k2, ib2)} dr dr'
however, eigenvalues of X(k1,k2) matrix are observable.

>From my tests with different pwscf runs (with different # cores to generate
random phases), the matrix elements are phase-dependent (except for the
diagonal one, where phase is canceled out) and their eigenvalues  are not
phase dependent, which is what I want. It could be because the matrix goes
over the whole BZ, the results are gauge invariant.

Since I am not very confident with the phase, I want to get some comment
from developers, and indeed they are very helpful.

Duy Le
University of Central Florida


On Wed, Apr 8, 2020 at 4:21 PM Lorenzo Paulatto <paulatz at gmail.com> wrote:

> I'll add something on Stefano answer that I find useful when working on
> this kind of problems: an observable quantity cannot depend on the
> random phase. If you want to compute and expression that depends on the
> phase it means that 1) it is not an observable 2) you did a mistake 3)
> both.
>
> If you fall in (1) it could be that when you sum over all k-points ad/or
> occupied bands the phases cancel out. This is annoying, but inevitable.
> And it actually allows you to check that your calculations are correct.
>
> This also mean that you cannot combine wavefunctions-relate quantities
> at the same k-point/bands that come from different pw calculations, as
> the phases may not cancel out any more (typically a problem when trying
> to implement a restart without wavefunctions). I.e. if you want to
> compute <psi| (O|psi>) you have to be sure that O|psi> has been computed
> with the same |psi> as <psi| or you'll have troubles.
>
> good work
>
>
>
> On 4/8/20 10:06 PM, Stefano de Gironcoli wrote:
> >
> > On 08/04/20 21:38, Duy Le wrote:
> >> Dear developers,
> >>
> >> After reading many threads about the subject, and lot of testing, I
> >> still not very confident in handling the phases of wave functions. I
> >> would appreciate if you could help me with the following:
> >>
> >> 1. Do all wave-functions (of all bands) of a given k-point have the
> >> same phase? In other words, is psi(k, ib1) psi(k, ib2)* gauge invariant?
> >
> > no. the phase of an eigenvector is determined by the diagonalization
> > routine. The safe assumption is that it's basically random, and for
> > degenerate eigenvalues you can assume a random (unitary) rotation inside
> > the degenerate manifold.  this is why in molecular dynamics simulations
> > when you want to extrapolate the starting wavfunctions of a given time
> > step from previous ones, before performing the extrapolation, you need
> > to align the two (or more) wfc subspaces.
> >
> > basically you compute W=<psi(t')|psi(t)> and built the unitary rotation
> > that best align the two wfc sets from SVD of W ->  U  then build
> > |psi'(t')> = |psi(t')> U as the set at t' best aligned to the wfc at t.
> >
> > check routine   extrapolate_wfcs   in file update_pot.f90 in PW/src
> >
> >> 2. I want also to calculate psi(k, ib1) psi(k2, ib2)*. How should it
> >> be done so the random phases of wfc do not affect the result?
> >
> > similarly random phases should be assumed ( in addition to the exp(+ikr)
> > phase from the Bloch vector) so you better work with the periodic part
> > of the wavefuncitons u(k)
> >
> > you can compute  the matrix of the overlap of the periodic part of the
> > wfcs at the two kpoints  W = < psi(k1)|
> > exp(i(k1-k2)r)|psi(k2)>=<u(k1)|u(k2)>,  extract the best unitary
> > transformation from that and play with it in order to align wfcs at
> > different k's. this is one of the basic operation that Wannier 90 code
> > peforms.
> >
> >> 3. Could you please tell me if there is any part of the PWSCF code
> >> that deals with phase of wave function so I can learn how it is done?
> >
> > see above
> >
> > best
> >
> > stefano
> >
> >>
> >> Thank you very much. Be safe!
> >>
> >> Duy Le
> >> University of Central Florida
> >>
> >> _______________________________________________
> >> developers mailing list
> >> developers at lists.quantum-espresso.org
> >> https://lists.quantum-espresso.org/mailman/listinfo/developers
> >
> > _______________________________________________
> > developers mailing list
> > developers at lists.quantum-espresso.org
> > https://lists.quantum-espresso.org/mailman/listinfo/developers
> >
>
> --
> Lorenzo Paulatto - Paris
> _______________________________________________
> developers mailing list
> developers at lists.quantum-espresso.org
> https://lists.quantum-espresso.org/mailman/listinfo/developers
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/developers/attachments/20200408/443fbf74/attachment-0001.html>


More information about the developers mailing list