Top Page > Browsing
Incorrect Bloch phase factor?
Date: 2022/02/20 08:55
Name: Malone

Dear OpenMX developers,

I have some concern with the Bloch phase factor currently used in calculations.
Consider the file Band_DFT_NonCol.c, lines 2012-2033:

for (AN=1; AN<=atomnum; AN++){
GA_AN = order_GA[AN];
wanA = WhatSpecies[GA_AN];
tnoA = Spe_Total_CNO[wanA];
Anum = MP[GA_AN];

for (i=0; i<tnoA; i++){

for (LB_AN=0; LB_AN<=FNAN[GA_AN]; LB_AN++){
GB_AN = natn[GA_AN][LB_AN];
Rn = ncn[GA_AN][LB_AN];
wanB = WhatSpecies[GB_AN];
tnoB = Spe_Total_CNO[wanB];
Bnum = MP[GB_AN];

l1 = atv_ijk[Rn][1];
l2 = atv_ijk[Rn][2];
l3 = atv_ijk[Rn][3];
kRn = k1*(double)l1 + k2*(double)l2 + k3*(double)l3;

si = sin(2.0*PI*kRn);
co = cos(2.0*PI*kRn);

Is it correct that the phase `kRn' equals not to the scalar product of k-vector by the hopping vector from atom GA_AN to its evaluated neighboring atom LB_AN?
Page: [1]

Re: Incorrect Bloch phase factor? ( No.1 )
Date: 2022/02/21 14:08
Name: Naoya Yamaguchi


The product of `kRn` and 2π is equal to the R_n・k in eqs. 28 and 29 of .

Naoya Yamaguchi
Re: Incorrect Bloch phase factor? ( No.2 )
Date: 2022/02/21 14:26
Name: Kunihiro Yananose  <>

Dear Malone,

This is just a matter of convention. lattice vector-only convention and convention including atomic position are related by a unitary transformation. They differ only by additional phase factors other than Bloch phase. If the code keeps the consistency of the convention throughout the entire code, there's no problem.

The following document includes this convention issue. It can be helpful.
The difference is that the pythtb uses the tight-binding eigenvectors as a wavefunction, whereas openmx uses a full expression for the wavefunctions.

K. Yananose
Re: Incorrect Bloch phase factor? ( No.3 )
Date: 2022/02/22 09:01
Name: Malone

Thank you very much for comments. Unitary transformation is the way.


Page: [1]

Thread Title (must) Move the thread to the top
Your Name (must)
E-Mail (must)
Password (used in modification of the submitted text)
Comment (must)

   Save Cookie