<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<div class="moz-cite-prefix">On 08/04/20 21:38, Duy Le wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAF-j6z8b17GAS3=XYU8RhduGBp9H64JGEnp-eva0wScKmAp0gQ@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">Dear developers,
<div><br>
</div>
<div>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:</div>
<div><br>
</div>
<div>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?</div>
</div>
</blockquote>
<p>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. <br>
</p>
<p>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. <br>
</p>
<p>check routine extrapolate_wfcs in file update_pot.f90 in
PW/src<br>
</p>
<blockquote type="cite"
cite="mid:CAF-j6z8b17GAS3=XYU8RhduGBp9H64JGEnp-eva0wScKmAp0gQ@mail.gmail.com">
<div dir="ltr">
<div>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? <br>
</div>
</div>
</blockquote>
<p>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)<br>
</p>
<p>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. <br>
</p>
<blockquote type="cite"
cite="mid:CAF-j6z8b17GAS3=XYU8RhduGBp9H64JGEnp-eva0wScKmAp0gQ@mail.gmail.com">
<div dir="ltr">
<div>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?</div>
</div>
</blockquote>
<p>see above</p>
<p>best</p>
<p>stefano<br>
</p>
<blockquote type="cite"
cite="mid:CAF-j6z8b17GAS3=XYU8RhduGBp9H64JGEnp-eva0wScKmAp0gQ@mail.gmail.com">
<div dir="ltr">
<div><br>
</div>
<div>Thank you very much. Be safe!</div>
<div><br>
</div>
<div>Duy Le</div>
<div>University of Central Florida <br>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:developers@lists.quantum-espresso.org">developers@lists.quantum-espresso.org</a>
<a class="moz-txt-link-freetext" href="https://lists.quantum-espresso.org/mailman/listinfo/developers">https://lists.quantum-espresso.org/mailman/listinfo/developers</a>
</pre>
</blockquote>
</body>
</html>