Dear all,
I just noticed recently that the band obtained in EPW via keyword "band_plot" has some differences compared with the one obtained from wannier interpolation. The wannier interpolation is done also by EPW by setting keyword "wdata(1) = 'bands_plot = true'" and corresponding k-path.
I thought the EPW using the same interpolation algorithm for the electronic band structure. Where is the difference from?
Thanks,
Fanchem
interpolated band different
Moderator: stiwari
Re: interpolated band different
Dear Fanchem:
In order to identify your issue, I need more information:
Could you provide your obtained band dispersions and all relevant inputs and outputs?
Sincerely,
H. Lee
In order to identify your issue, I need more information:
Could you provide your obtained band dispersions and all relevant inputs and outputs?
Sincerely,
H. Lee
Re: interpolated band different
Dear Lee,
Thank you for your response.
The comparison between the band structure using the two methods in EPW is attached. The calculations were done with EPW 5.3.
Although they are close in energy, but from my understanding, they should be exactly identical to each other since they are interpolated using the same interpolation technique.
My input files are follow:
scf.in
nscf.in&CONTROL
calculation='scf',
outdir='.',
prefix='mg2si',
pseudo_dir='/home/fanchem/oncvpp/rel-PZ',
verbosity='low',
wf_collect = .true.
etot_conv_thr=1.0D-6
forc_conv_thr=1.0D-5
tprnfor = .true.
tstress = .true.
/
&SYSTEM
ibrav=2,
celldm(1)=11.818416465386269,
nat=3,
ntyp=2,
ecutwfc=46,
occupations='fixed',
smearing='mp',
degauss=0.02d0,
/
&ELECTRONS
conv_thr=1d-010,
mixing_beta=0.7d0,
diagonalization = 'david'
/
&IONS
/
&CELL
press_conv_thr=0.1
/
ATOMIC_SPECIES
Mg 24.305000d0 Mg_ONCV_PZ-1.0_r.oncvpsp.upf
Si 28.085500d0 Si_ONCV_PZ-1.1_r.oncvpsp.upf
ATOMIC_POSITIONS {crystal}
Mg 0.7500000000d0 0.7500000000d0 0.7500000000d0
Mg 0.2500000000d0 0.2500000000d0 0.2500000000d0
Si 0.0000000000d0 0.0000000000d0 0.0000000000d0
K_POINTS {automatic}
16 16 16 0 0 0
epw.in&CONTROL
calculation='nscf',
outdir='.',
prefix='mg2si',
pseudo_dir='/home/fanchem/oncvpp/rel-PZ',
verbosity='low',
wf_collect = .true.
etot_conv_thr=1.0D-6
forc_conv_thr=1.0D-5
tprnfor = .true.
tstress = .true.
/
&SYSTEM
ibrav=2,
celldm(1)=11.818416465386269,
nat=3,
ntyp=2,
ecutwfc=46,
occupations='fixed',
smearing='mp',
degauss=0.02d0,
nbnd = 30
/
&ELECTRONS
conv_thr=1d-010,
mixing_beta=0.7d0,
diagonalization = 'david'
/
&IONS
/
&CELL
press_conv_thr=0.1
/
ATOMIC_SPECIES
Mg 24.305000d0 Mg_ONCV_PZ-1.0_r.oncvpsp.upf
Si 28.085500d0 Si_ONCV_PZ-1.1_r.oncvpsp.upf
ATOMIC_POSITIONS {crystal}
Mg 0.7500000000d0 0.7500000000d0 0.7500000000d0
Mg 0.2500000000d0 0.2500000000d0 0.2500000000d0
Si 0.0000000000d0 0.0000000000d0 0.0000000000d0
K_POINTS crystal
1000
0.00000000 0.00000000 0.00000000 1.000000e-03
0.00000000 0.00000000 0.10000000 1.000000e-03
0.00000000 0.00000000 0.20000000 1.000000e-03
0.00000000 0.00000000 0.30000000 1.000000e-03
0.00000000 0.00000000 0.40000000 1.000000e-03
0.00000000 0.00000000 0.50000000 1.000000e-03
......
Thanks,--
&inputEPW
prefix = 'mg2si'
outdir = './'
elph = .true.
epbwrite = .false.
epbread = .false.
epwwrite = .true.
epwread = .false.
kmaps = .false.
lpolar = .true.
wdata(8) = 'dis_num_iter = 2000'
! wdata(9) = 'dis_mix_ratio = 0.5'
wdata(10) = 'guiding_centres=true'
wdata(11) = 'use_ws_distance = .true.'
wdata(1) = 'bands_plot = true'
wdata(2) = 'begin kpoint_path'
wdata(3) = 'L 0.50000 0.50000 0.5000 G 0.00000 0.00000 0.0000'
wdata(4) = 'G 0.00000 0.00000 0.0000 X 0.50000 0.00000 0.5000'
wdata(5) = 'X 0.50000 0.00000 0.5000 W 0.50000 0.25000 0.7500'
wdata(6) = 'W 0.50000 0.25000 0.7500 G 0.00000 0.00000 0.0000'
wdata(7) = 'end kpoint_path'
nbndsub = 12
bands_skipped = 'exclude_bands = 1:8'
wannierize = .true.
num_iter = 2000
iprint = 2
dis_froz_max= 10
dis_win_min=-10
dis_win_max= 21.5
proj(1) = 'Si:s,p'
proj(2) = 'Mg:s,p'
elecselfen = .false.
phonselfen = .false.
a2f = .false.
fsthick = 2
dvscf_dir = './save/'
band_plot = .true.
filkf = "inp.kpt"
filqf = "inp.kpt"
lifc = .true.
asr_typ = 'crystal'
nk1 = 10
nk2 = 10
nk3 = 10
nq1 = 5
nq2 = 5
nq3 = 5
/
Fanchem
- Attachments
-
- comparison
- compare.png (54.91 KiB) Viewed 5456 times
Re: interpolated band different
Dear Fanchem:
In your case, you are using "Minimal-distance replica selection method" by adding "'use_ws_distance = .true." when interpolating band structures in Wannier90 (W90).
So I think that you need to add "use_ws = .true." in your epw input for consistent comparison.
Also, there is something in EPW for constructing Hamiltonian in the fine Bloch basis and diagonalizing it which is not present in W90; please look at the subroutine of hamwan2bloch in EPW/src/wan2bloch.f90 (but I guess this yields negligible difference.)
Sincerely,
H. Lee
In your case, you are using "Minimal-distance replica selection method" by adding "'use_ws_distance = .true." when interpolating band structures in Wannier90 (W90).
So I think that you need to add "use_ws = .true." in your epw input for consistent comparison.
Also, there is something in EPW for constructing Hamiltonian in the fine Bloch basis and diagonalizing it which is not present in W90; please look at the subroutine of hamwan2bloch in EPW/src/wan2bloch.f90 (but I guess this yields negligible difference.)
Sincerely,
H. Lee
Re: interpolated band different
Dear Lee,hlee wrote: ↑Thu Oct 29, 2020 6:56 pm Dear Fanchem:
In your case, you are using "Minimal-distance replica selection method" by adding "'use_ws_distance = .true." when interpolating band structures in Wannier90 (W90).
So I think that you need to add "use_ws = .true." in your epw input for consistent comparison.
Also, there is something in EPW for constructing Hamiltonian in the fine Bloch basis and diagonalizing it which is not present in W90; please look at the subroutine of hamwan2bloch in EPW/src/wan2bloch.f90 (but I guess this yields negligible difference.)
Sincerely,
H. Lee
Thanks! It works!
Fanchem
Re: interpolated band different
Dear Lee,hlee wrote: ↑Thu Oct 29, 2020 6:56 pm Dear Fanchem:
In your case, you are using "Minimal-distance replica selection method" by adding "'use_ws_distance = .true." when interpolating band structures in Wannier90 (W90).
So I think that you need to add "use_ws = .true." in your epw input for consistent comparison.
Also, there is something in EPW for constructing Hamiltonian in the fine Bloch basis and diagonalizing it which is not present in W90; please look at the subroutine of hamwan2bloch in EPW/src/wan2bloch.f90 (but I guess this yields negligible difference.)
Sincerely,
H. Lee
A follow-up of the problem: if I remove the "use_ws_distance = .true." and set use_ws = .false. in EPW, the problem shows up again as in the attachment. My epw input is below. Is there any way so solve this issue?
In addition, if I set use_ws =.true. for EPW calculation (with tag "wdata(11) = 'use_ws_distance = .true.'" still commented), the EPW interpolated band match exactly with that from wannier run (see below). Does it mean we need always set use_ws =.true. for all epw calculations? Is there any method we could get exactly identical band structure without using use_ws =.true.?
Thanks,
Fanchem
epw.in
--
&inputEPW
prefix = 'mg2si'
outdir = './'
elph = .true.
epbwrite = .false.
epbread = .false.
epwwrite = .true.
epwread = .false.
kmaps = .false.
lpolar = .true.
wdata(8) = 'dis_num_iter = 2000'
! wdata(9) = 'dis_mix_ratio = 0.5'
wdata(10) = 'guiding_centres=true'
! wdata(11) = 'use_ws_distance = .true.'
wdata(1) = 'bands_plot = true'
wdata(2) = 'begin kpoint_path'
wdata(3) = 'L 0.50000 0.50000 0.5000 G 0.00000 0.00000 0.0000'
wdata(4) = 'G 0.00000 0.00000 0.0000 X 0.50000 0.00000 0.5000'
wdata(5) = 'X 0.50000 0.00000 0.5000 W 0.50000 0.25000 0.7500'
wdata(6) = 'W 0.50000 0.25000 0.7500 G 0.00000 0.00000 0.0000'
wdata(7) = 'end kpoint_path'
nbndsub = 12
bands_skipped = 'exclude_bands = 1:8'
wannierize = .true.
num_iter = 2000
iprint = 2
dis_froz_max= 10
dis_win_min=-10
dis_win_max= 21.5
proj(1) = 'Si:s,p'
proj(2) = 'Mg:s,p'
elecselfen = .false.
phonselfen = .false.
a2f = .false.
fsthick = 2
dvscf_dir = '../save/'
band_plot = .true.
filkf = "inp.kpt"
! filqf = "inp.kpt"
lifc = .true.
asr_typ = 'crystal'
! nkf1 = 40
! nkf2 = 40
! nkf3 = 40
!
nqf1 = 4
nqf2 = 4
nqf3 = 4
nk1 = 10
nk2 = 10
nk3 = 10
nq1 = 5
nq2 = 5
nq3 = 5
/
Re: interpolated band different
Dear Fanchem:
The reason is that as you can see below, in Wannier90, use_ws_distance = .true in default, but in EPW, use_ws = .false. in default.
From parameters.F90 in Wannier90 src directory
From epw_readin.f90 in EPW/src directory
Sincerely,
H. Lee
The reason is that as you can see below, in Wannier90, use_ws_distance = .true in default, but in EPW, use_ws = .false. in default.
From parameters.F90 in Wannier90 src directory
Code: Select all
use_ws_distance = .true.
call param_get_keyword('use_ws_distance', found, l_value=use_ws_distance)
Code: Select all
use_ws = .FALSE.
H. Lee
Re: interpolated band different
Dear Lee,
Thank you so much for your help.
Best,
Fanchem
Thank you so much for your help.
Best,
Fanchem