EPC matrix |g(k,k+q)| is inconsistent with |g(k+q,k)|

General discussion around the EPW software

Moderator: hlee

zz11ss11zz
Posts: 13
Joined: Sat Jul 11, 2020 1:59 am
Affiliation: National University of Singapore

EPC matrix |g(k,k+q)| is inconsistent with |g(k+q,k)|

Dear all,

I calculate matrix g (EPW5.2) for monolayer H-NbSe2, however, I find a problem that |g(k,k+q)| is inconsistent with |g(k+q,k)| for some k/q points. An example is shown below:
1.png (132.7 KiB) Viewed 639 times
2.png (147.9 KiB) Viewed 639 times
In this case k=(-0.3333334,0.3333334,0), k+q=(-0.3333334,0.6666667,0). The energies of enk and enk+q are self-consistent. While |g(k,k+q)|=0.5133E+02meV, |g(k+q,k)|=0.2552E+02meV (imode=1 cases). I think their values should be same... Appreciate it if someone could help the problem.

My inputs to calculate prtgkk:

Code: Select all

``````--
&inputepw
prefix      = 'NbSe2'
amass(1)    = 92.906
amass(2)    = 78.96
outdir      = './tmp/'

iverbosity  = 3

elph        = .true.
kmaps       = .true.
epbwrite    = .false.

epwwrite    = .false.

nbndsub     =  1
nbndskip    =  12

wannierize  = .false.
num_iter    = 100
iprint      = 2
dis_win_max = 0.5
dis_win_min = -1
dis_froz_max = 0.5
dis_froz_min = -1
proj(1)     = 'Nb:dz2'
!  proj(2)     = 'Se:l=1'
wdata(1) = 'bands_plot = .true.'
wdata(2) = 'begin kpoint_path'
wdata(3) = 'G 0.00 0.00 0.00 M 0.00 0.50 0.00'
wdata(4) = 'M 0.00 0.50 0.00 K 0.333 0.333 0.00'
wdata(5) = 'K 0.333 0.333 0.00 G 0.00 0.00 0.00'
wdata(6) = 'end kpoint_path'
wdata(7) = 'bands_num_points = 30'
wdata(8) = 'dis_num_iter = 10000'
wdata(9) = 'guiding_centres = .true.'

elecselfen  = .false.
phonselfen  = .false.
a2f         = .false.
delta_approx= .false.
prtgkk = .true.

fsthick     = 3 ! eV
eptemp      = 947 ! K (same as PRB 76, 165108)
degaussw    = 0.0816 ! eV
eps_acustic = -100
ngaussw     = -99 !fd

dvscf_dir   = '../phonon/save'
!  filukk      = './diam.ukk'
filqf       = 'meshes/ccq0.txt'
filkf       = 'meshes/cck0.txt'
!  nkf1        = 64
!  nkf2        = 64
!  nkf3        = 1
!  nqf1        = 64
!  nqf2        = 64
!  nqf3        = 1

nk1         = 16
nk2         = 16
nk3         = 1

nq1         = 8
nq2         = 8
nq3         = 1
/
10 cartesian
0.000000000000000E+00   0.000000000000000E+00   0.000000000000000E+00
0.000000000000000E+00   0.144337567297387E+00   0.000000000000000E+00
0.000000000000000E+00   0.288675134594775E+00   0.000000000000000E+00
0.000000000000000E+00   0.433012701892162E+00   0.000000000000000E+00
0.000000000000000E+00  -0.577350269189550E+00   0.000000000000000E+00
0.124999999999992E+00   0.216506350946081E+00   0.000000000000000E+00
0.124999999999992E+00   0.360843918243469E+00   0.000000000000000E+00
0.124999999999992E+00   0.505181485540856E+00   0.000000000000000E+00
0.249999999999985E+00   0.433012701892162E+00   0.000000000000000E+00
0.249999999999985E+00   0.577350269189550E+00   0.000000000000000E+00``````
Best regards,
Zishen
Last edited by zz11ss11zz on Wed Apr 14, 2021 6:26 am, edited 1 time in total.

hlee
Posts: 294
Joined: Thu Aug 03, 2017 12:24 pm
Affiliation: The University of Texas at Austin

Re: EPC matrix |g(k,k+q)| is inconsistent with |g(k+q,k)|

Dear zz11ss11zz:

First, it seems that you are using some old version of EPW; there was a bug in the subroutine of print_gkk (https://gitlab.com/QEF/q-e/-/commit/d20 ... 30dc73d783) which I fixed last year.

However, even if you apply this fix, you can still get the difference.

After averaging over the degenerate subspaces, the relation you mentioned holds on coarse grids (before interpolation).
However, after interpolation, in general this doesn't hold and the degree of difference depends on the interpolation quality in your calculation.

Additionally, I think that the 2D calculation also might affect the degree of difference; EPW officially doesn't support the 2D case.
(If you have the same data for 3D materials, please check the difference.)

Sincerely,

H. Lee

zz11ss11zz
Posts: 13
Joined: Sat Jul 11, 2020 1:59 am
Affiliation: National University of Singapore

Re: EPC matrix |g(k,k+q)| is inconsistent with |g(k+q,k)|

Dear Dr. Lee,

Thank you for your quick response.
I used EPW5.3.1 to do the same thing (2D case).

Code: Select all

``````     iq =       1 coord.:    0.0000000   0.3333334   0.0000000
ik =       1 coord.:   -0.3333334   0.3333334   0.0000000
ibnd     jbnd     imode   enk[eV]    enk+q[eV]  omega(q)[meV]   |g|[meV]
------------------------------------------------------------------------------
1        1        1     -0.7648      0.1143        3.4903627682    0.1144008386E+03
1        1        2     -0.7648      0.1143        8.4110983196    0.5343100875E-01
1        1        3     -0.7648      0.1143       10.2468956546    0.2273084410E+02
1        1        4     -0.7648      0.1143       18.1417131450    0.4558837240E-02
1        1        5     -0.7648      0.1143       20.9247934630    0.9707814905E-02
1        1        6     -0.7648      0.1143       21.7322444276    0.5362211299E+02
1        1        7     -0.7648      0.1143       22.1713519827    0.9845506482E+01
1        1        8     -0.7648      0.1143       28.7904858203    0.2389767205E+02
1        1        9     -0.7648      0.1143       29.8399234041    0.1180736233E-01
------------------------------------------------------------------------------
``````

Code: Select all

``````
iq =       2 coord.:    0.0000000  -0.3333334   0.0000000
ik =       2 coord.:   -0.3333334   0.6666667   0.0000000
ibnd     jbnd     imode   enk[eV]    enk+q[eV]  omega(q)[meV]   |g|[meV]
------------------------------------------------------------------------------
1        1        1      0.1143     -0.7648        3.4903627682    0.1144007401E+03
1        1        2      0.1143     -0.7648        8.4110983196    0.5343096200E-01
1        1        3      0.1143     -0.7648       10.2468956546    0.2273079324E+02
1        1        4      0.1143     -0.7648       18.1417131450    0.4558829211E-02
1        1        5      0.1143     -0.7648       20.9247934630    0.9707805887E-02
1        1        6      0.1143     -0.7648       21.7322444276    0.5362203226E+02
1        1        7      0.1143     -0.7648       22.1713519827    0.9845499050E+01
1        1        8      0.1143     -0.7648       28.7904858203    0.2389765263E+02
1        1        9      0.1143     -0.7648       29.8399234041    0.1180735418E-01
------------------------------------------------------------------------------
``````
Now the g(k,k+q)=g(k+q,k). Note that I also increased nk from 16 to 24, nq from 8 to 12, nkf/nqf from 64 to 120. I think these increasements will get better interpolation. The enk, enk+q and omega(q) have similar values to the previous results. But the |g| changes from 0.5133E+02/0.2552E+02 to 0.1144E+03, I am not sure such change is reasonable (the change seems to be big)? Maybe due to the better interpolation and the new EPW version?

Best regards,
Zishen

hlee
Posts: 294
Joined: Thu Aug 03, 2017 12:24 pm
Affiliation: The University of Texas at Austin

Re: EPC matrix |g(k,k+q)| is inconsistent with |g(k+q,k)|

Dear Zishen:

I found several bugs in the previous EPW versions and they were applied to EPW v5.3.x.

I think that the main reason for your difference is the bug in print_gkk I already mentioned in my previous post although the change in the number of fine grids might also affect it in some way.

If you want, you can perform the DFPT calculations for these points and compare the e-ph vertices from the DFPT calculations with those from EPW.

Lastly, as I already said, generally speaking, the 2D treatment in EPW is not complete.

Sincerely,

H. Lee

zz11ss11zz
Posts: 13
Joined: Sat Jul 11, 2020 1:59 am
Affiliation: National University of Singapore

Re: EPC matrix |g(k,k+q)| is inconsistent with |g(k+q,k)|

Dear Dr. Lee,

Yes, thanks a lot!
May I ask a further question about reducing computational cost or memory usage in prtgkk outputs?
As we know, fsthick determines the energy window in which matrixes are interpolated. However, if I want to obtain a full picture of matrix distribution on the band which crosses the Fermi surface, sometimes I need to make fsthich equal to 2~3eV, then it will contain a lot of bands. Besides, maybe I only interested in their coupling to the certain phonon modes (eg: LA phonon), but I need to waste a lot of time and memory to obtain the useless data...(eg: the coupling between the band which doesn't cross Fermi level and optical phonon modes). I just wonder if there are other tags to reduce matrixes computation?

Best regards,
Zishen

hlee
Posts: 294
Joined: Thu Aug 03, 2017 12:24 pm
Affiliation: The University of Texas at Austin

Re: EPC matrix |g(k,k+q)| is inconsistent with |g(k+q,k)|

Dear Zishen:
Besides, maybe I only interested in their coupling to the certain phonon modes (eg: LA phonon), but I need to waste a lot of time and memory to obtain the useless data...(eg: the coupling between the band which doesn't cross Fermi level and optical phonon modes). I just wonder if there are other tags to reduce matrixes computation?
Currently, there is no such tag and the evaluation of e-ph vertex on fine grids is filtered only by the energy window using fsthick (not by the phonon frequency).
So you need to modify the code yourself.

PS) If you are satisfied with "printing" relevant data only, you can easily achieve this by modifying the subroutine of print_gkk.

Sincerely,

H. Lee