forum@abinit.org
Subject: The ABINIT Users Mailing List ( CLOSED )
List archive
- From: Alex Kutana <akut@yahoo.com>
- To: forum@abinit.org
- Subject: Re: [abinit-forum] Smoothness of the wavefunction in abinit
- Date: Tue, 12 Aug 2008 09:32:04 -0700 (PDT)
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Received:X-Mailer:Date:From:Reply-To:Subject:To:MIME-Version:Content-Type:Message-ID; b=nSu6RwYcm0tb1sbmrZ2wEim0H02JL1/q/j1/RZPjcozIEo0q5wekzTCr+jSk7eJaXQIN9ZLXiMz/FZdUTTk4v5s7GiSYu4e/zETOmNEU1yNZwG6hq0tymwh7hOxK3Raro34mQ17sZbId2/fcsG1tMty9/U7j3FgwZef2uRtBoRk=;
Dear Doug,
Thank you for your interesting comment. From the search of the source code,
it looks like the routine fxphas is indeed being called at some parts of
abinit, and so its action is probably the reason why the phase difference
between the two k points that I saw is almost exactly -1.
I stumbled upon these phase jumps by trying to construct maximally localized
Wannier functions using the recipe by Nicola Marzari and David Vanderbilt,
PRB 56, 12847 (1997). One needs to compute the overlap integrals M_mn(k,b)
between the periodic parts of the Bloch function at two neighboring k points
(Eq. 25 in this paper):
M_mn(k,b)=< u_m(k) | u_n(k+b) >
where b is a vector originating at point k. Due to smallness of b, M_nn(k,b)
can be expanded starting from M_nn(k,0)=1 (Eq. 26):
M_nn(k,b)=1 + ixb + y(b^2)/2 + O(b^3)
What puzzled me was that the leading term that I obtained in that expansion
was sometimes not 1, but -1. After Nicola's comment I realized that there
doesn't have to be any phase correlation between u_n(k) and u_n(k+b), hence
M_nn(k,b) is defined modulo an arbitrary phase, just like the Bloch function.
Only if the phase is a smooth function of k in the BZ would a leading term in
Eq. 26 be always 1. I am still trying to figure out how this phase
indeterminacy of M_nn(k,b) affects other quantities depending on it, such as
centers and spreads of the Wannier functions, but this is another issue, not
related to my original question.
Again, thank you for your helpful comments.
Alex
----- Original Message ----
From: "Allan, Douglas C Dr" <AllanDC@corning.com>
To: forum@abinit.org
Sent: Tuesday, August 12, 2008 6:01:07 AM
Subject: RE: [abinit-forum] Smoothness of the wavefunction in abinit
Dear Alex and Nicola,
I will add another small comment that may be helpful.
The -1 is no accident.
At least I know that at one time in the distant murky past of abinit, I
wrote a routine called "fxphas" for "fix phase" (back then Fortran77
only allowed 6-character names) whose purpose it was to avoid randomness
of the phase associated with Fourier coefficients of the wavefunction.
fxphas imposed a phase on the wavefunction by maximizing the real part,
so that if the underlying wavefunction were actually real then it would
be "rotated" into purely real coefficients. The normalization is
unaffected of course.
This was done mainly to avoid having the phase randomly wander around
from one iteration to the next.
Apparently this choice of phase convention can make the phase jump in
sign from one k-point to a nearby one. I don't know if a different
definition would avoid the jump, but I do know that if fxphas is still
in use then its operation explains what you are seeing.
Best regards,
Doug Allan
- [abinit-forum] Smoothness of the wavefunction in abinit, Alex Kutana, 08/12/2008
- Re: [abinit-forum] Smoothness of the wavefunction in abinit, Nicola Marzari, 08/12/2008
- Re: [abinit-forum] Smoothness of the wavefunction in abinit, Alex Kutana, 08/12/2008
- RE: [abinit-forum] Smoothness of the wavefunction in abinit, Allan, Douglas C Dr, 08/12/2008
- RE: [abinit-forum] Smoothness of the wavefunction in abinit, Allan, Douglas C Dr, 08/12/2008
- Re: [abinit-forum] Smoothness of the wavefunction in abinit, Alex Kutana, 08/12/2008
- <Possible follow-up(s)>
- Re: [abinit-forum] Smoothness of the wavefunction in abinit, Alex Kutana, 08/12/2008
- Re: [abinit-forum] Smoothness of the wavefunction in abinit, Nicola Marzari, 08/12/2008
- Re: [abinit-forum] Smoothness of the wavefunction in abinit, Nicola Marzari, 08/12/2008
Archive powered by MHonArc 2.6.16.