Closed Luc1anoo closed 3 months ago
I've repeated this result by using 9 9 9
KPOINTS.
It seems truly a problem
There's something wrong in nscf. @Luc1anoo You can use pyatb to calculate the band structure instead.
=====================================
I've found the bug coming from PR #3451, commit 68ff6cb. @maki49 Could you help to fix it? THX. nscf_bug.zip
After compiling the updated ABACUS, hybrid functional hse calculation gave the bandgap of 1.51825 eV. Given the general accuracy of the hybrid functional calculation of silicon band structure, this result is still not acceptable. To Reproduce: Si_update.zip There is another point to note: compared with the previous, the structure has been optimized, and the volume of the original cell became larger after optimization. For the updated ABACUS, both configurations were calculated. The band gap before optimization was 1.45308eV, while the band gap after optimization was 1.51825 eV(i.e. the result in the Si_update file). Using VASP, my experience is that tensile strain will reduce band gap rather than increase.
@maki49, do you think the result is acceptable? @dyzheng, could you have a look?
@Luc1anoo, According to the report https://deepmodeling-activity.github.io/abacus-test.github.io/index.html?pname=sc I see the band gap of Si is 1.2 eV, which is quite close to the result of VASP. Could you double-check it? Which one is wrong now, INPUT or code?
@Luc1anoo, According to the report https://deepmodeling-activity.github.io/abacus-test.github.io/index.html?pname=sc I see the band gap of Si is 1.2 eV, which is quite close to the result of VASP. Could you double-check it? Which one is wrong now, INPUT or code?
I have tested with the same input files as abacustest, the result I got is 1.47351 eV.
@WHUweiqingzhou @Luc1anoo
I've repeated the 1.48 eV band-gap with the attachment above. And after I relax the STRU under HSE calculation with KPT=9 9 9
, the band-gap become 1.21 eV
E_bandgap 0.0891066414 1.2123580532
I consider @Luc1anoo can try to do nscf after a relaxed STRU
Update: the 1.21 eV results is only from relax but not cell-relax, which is also not precise, I'm checking
By doing cell-relax in HSE in KPT 9 9 9
, the band-gap is changed from 1.21 eV to 1.28 eV from SCF
E_bandgap 0.0938700965 1.2771681842
my STRU:
ATOMIC_SPECIES
Si 28.0855 Si_ONCV_PBE-1.0.upf upf201
NUMERICAL_ORBITAL
Si_gga_8au_100Ry_2s2p1d.orb
LATTICE_CONSTANT
1.8897260000
LATTICE_VECTORS
0.0000000000 2.7300817457 2.7300817962
2.7300817452 -0.0000000000 2.7300817963
2.7300817452 2.7300817457 -0.0000000000
ATOMIC_POSITIONS
Direct
Si #label
0.0000 #magnetism
2 #number of atoms
0.2500000000 0.2500000000 0.2500000000 m 1 1 1
0.0000000000 0.0000000000 0.0000000000 m 1 1 1
my INPUT:
INPUT_PARAMETERS RUNNING ABACUS-DFT
#Parameters (1.General)
suffix ABACUS # suffix of OUTPUT DIR
nspin 1 # 1/2/4 4 for SOC
symmetry 0 # 0/1 1 for open, default
esolver_type ksdft # ksdft, ofdft, sdft, tddft, lj, dp
dft_functional hse # same as upf file, can be lda/pbe/scan/hf/pbe0/hse
ks_solver genelpa # default for ksdft-lcao
vdw_method none # d3_bj
pseudo_dir /data/home/liuzq/example/PP
orbital_dir /data/home/liuzq/example/ALLORB
#Parameters (2.Iteration)
calculation cell-relax # scf relax cell-relax md
ecutwfc 100
scf_thr 1e-7
scf_nmax 300
relax_nmax 400
relax_method bfgs # cg, bfgs, cg_bfgs, sd, "fire"
force_thr_ev 0.02 # ev
#Parameters (3.Basis)
basis_type lcao # lcao or pw
#Parameters (4.Smearing)
smearing_method gau # mp/gaussian/fixed mp-ISMAER=1 gau-ISMAER=0
smearing_sigma 0.001 # Rydberg, 0.008 for mp and 0.001-0.002 for gau
#Parameters (5.Mixing)
#mixing_type broyden # pulay/broyden
#mixing_beta 0.4 # for metal: 0.05-0.4
#mixing_gg0 1.0 # only for metal
#Parameters (6.Calculation)
cal_force 1
cal_stress 1
out_stru 1 # print STRU in OUT
out_chg 1 # print CHG or not
out_bandgap 1
out_mul 1 # print Mulliken charge and mag of atom in mulliken.txt
and after nscf , the band-gap is 1.25 eV
$ grep band OUT.ABACUS/running_nscf.log
occupied bands = 4
end of band structure calculation
band eigenvalue in this processor (eV) :
E_bandgap 1.25438 eV
| DOS (density of states) and bands will be output here. |
Output bands in file: OUT.ABACUS/BANDS_1.dat
ModuleIO nscf_band 0.00 1 0.00 0.02
Also the band graph can be plotted by abacus-plot with 6.39 eV Fermi energy
@Luc1anoo You can try it twice, with the newest LibRI (which will be faster)
https://gitee.com/abacus_dft/LibRI
In my case, the result 0.03eV bandgap is fundamentally wrong and it's fixed by https://github.com/deepmodeling/abacus-develop/pull/3451 (For those who may encounter this problem for the first time, this means that you need to compile the version of ABACUS after this PR.) Then the reason I still got inaccurate bandgap of 1.47351 eV, even using the same inputs of abacustest(ecutwfc
=100, Kmesh =14 14 14), is that I used a orbital Si_gga_8au_100Ry_2s2p1d.orb
, which is old in SG15-V1.0__Orbitals-V1.0.zip. When I change to the orbital with the same name but in SG15-V1.0__StandardOrbitals-V2.0.zip , I got a bandgap of 1.2eV.
Describe the bug
Hybrid functional HSE cannot give right bandgap of Si. The bandgap of Si is only 0.03eV using HSE functional, which is even smaller than the value calculated by PBE functional.
I also tested KPT of 9×9×9, which gave bandgap of 0.028eV.
Expected behavior
No response
To Reproduce
Si2.zip
Environment
ABACUS:3.6.0 mirror: abacus:3.6.0-user-guide
Additional Context
No response
Task list for Issue attackers (only for developers)