Open Flying-dragon-boxing opened 3 months ago
is it because the virtual space is not accurately/exactly diagonalized? If so, it is a known feature of QE rather than a bug. Have you tried their in-built PBE implementation?
is it because the virtual space is not accurately/exactly diagonalized? If so, it is a known feature of QE rather than a bug. Have you tried their in-built PBE implementation?
Results of built-in PBE is closer to the libxc pbe in q-e than libxc pbe in abacus
# q-e with built-in pbe
-25.4450 -13.2339 -9.2657 -7.2056 -0.9152
the Fermi energy is -6.0272 ev
! total energy = -34.23811398 Ry
estimated scf accuracy < 2.8E-10 Ry
smearing contrib. (-TS) = -0.00000000 Ry
internal energy E=F+TS = -34.23811398 Ry
The total energy is F=E-TS. E is the sum of the following terms:
one-electron contribution = -69.27325493 Ry
hartree contribution = 36.04245100 Ry
xc contribution = -8.42267873 Ry
ewald contribution = 7.41536869 Ry
is it because the virtual space is not accurately/exactly diagonalized? If so, it is a known feature of QE rather than a bug. Have you tried their in-built PBE implementation?
Results of libxc pbe with q-e input diago_full_acc
set to true, couldn't see any difference.
k = 0.0000 0.0000 0.0000 (131155 PWs) bands (ev):
-25.4454 -13.2343 -9.2661 -7.2061 -0.9226
the Fermi energy is -6.0329 ev
! total energy = -34.23811682 Ry
estimated scf accuracy < 9.6E-10 Ry
smearing contrib. (-TS) = -0.00000000 Ry
internal energy E=F+TS = -34.23811682 Ry
The total energy is F=E-TS. E is the sum of the following terms:
one-electron contribution = -69.27314073 Ry
hartree contribution = 36.04231640 Ry
xc contribution = -8.42266117 Ry
ewald contribution = 7.41536869 Ry
convergence has been achieved in 11 iterations
I'm currently implementing hybrid functionals for planewave, and currently we need range-separated exchange functionals in libxc to support hse functionals. In my local version of abacus I suspect this is causing band gap differences in hse calculations between qe and abacus. I've tested on more bands and this problem persists.
@pxlxingliang could you reproduce this mismatch?
I have tested with QE and ABACUS with following settings: QE:
&CONTROL
calculation = 'scf'
forc_conv_thr = 0.00038
outdir = './output/'
prefix = 'VLAB'
pseudo_dir = './'
restart_mode = 'from_scratch'
tefield = .FALSE.
verbosity = 'high'
wf_collect = .TRUE.
/
&SYSTEM
degauss = 0.002
ecutrho = 400
ecutwfc = 100
ibrav = 0
lda_plus_u = .FALSE.
nat = 3
noinv = .FALSE.
noncolin = .FALSE.
nosym = .FALSE.
nspin = 1
ntyp = 2
occupations = 'fixed'
nbnd = 20
/
&ELECTRONS
conv_thr = 1e-06
electron_maxstep = 100
mixing_beta = 0.5
mixing_mode = 'plain'
scf_must_converge = .TRUE.
startingwfc = 'random'
diagonalization = 'david'
diago_full_acc = .TRUE.
/
ATOMIC_SPECIES
O 15.9994 O_ONCV_PBE-1.0.upf
H 1.00797 H_ONCV_PBE-1.0.upf
K_POINTS {GAMMA}
CELL_PARAMETERS {angstrom}
20.0000000000 0.0000000000 0.0000000000
0.0000000000 20.0000000000 0.0000000000
0.0000000000 0.0000000000 20.0000000000
ATOMIC_POSITIONS {angstrom}
O 10.27885 10 10.78217
H 10 10.49942 10
H 11.246739999999999 10.02499 10.74303
ABACUS:
INPUT_PARAMETERS
calculation scf
basis_type pw
ecutwfc 100
nspin 1
nbands 20
pseudo_dir .
out_chg 1
printe 1
gamma_only 1
pseudo_mesh 1
pseudo_rcut 10
ks_solver dav
ATOMIC_SPECIES
H 1.008 H_ONCV_PBE-1.0.upf
O 8.0 O_ONCV_PBE-1.0.upf
LATTICE_CONSTANT
1.889
LATTICE_VECTORS
20 0 0
0 20 0
0 0 20
ATOMIC_POSITIONS
Cartesian
H
0.00
2
10 10.49942 10
11.246739999999999 10.02499 10.74303
O
0.00
1
10.27885 10 10.78217
yes, I indeed find the unoccupied states seem really mismatch with QE. QE:
k = 0.0000 0.0000 0.0000 (455957 PWs) bands (ev):
-25.2700 -13.0845 -9.3018 -7.2115 -0.9610 0.0464 0.2535 0.3358
0.3510 0.3834 0.3851 0.4992 0.5459 0.6468 0.6659 0.7405
0.7466 0.7562 0.7592 0.7624
occupation numbers
1.0000 1.0000 1.0000 1.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000
highest occupied, lowest unoccupied level (ev): -7.2115 -0.9610
ABACUS:
1 -25.2743 2
2 -13.0875 2
3 -9.30289 2
4 -7.21301 2
5 -0.959999 0
6 -0.0341803 0
7 0.215135 0
8 0.280001 0
9 0.284157 0
10 0.30875 0
11 0.312123 0
12 0.422734 0
13 0.484018 0
14 0.591274 0
15 0.602132 0
16 0.66789 0
17 0.677375 0
18 0.680566 0
19 0.681608 0
20 0.68866 0
But I also want to inform of you about the physical meaning of those unoccupied state. For QE I can plot each unoccupied states and find many of them shows really unphysical shape. LUMO looks not bad: But things will get worse for higher states: My points are:
Describe the bug
When using LibXC for planewave basis, ABACUS and quantum espresso give similar total energies, but different unoccupied state energies, which is shown as below:
State energies:
Energies
Expected behavior
Same orbital energies
To Reproduce
Try the input given in the additional context.
Environment
OS: Archlinux latest Compiler: gcc 14.1.1
Additional Context
Input for q-e
ABACUS INPUT
ABACUS STRU
ABACUS STRU
ABACUS KPT
Task list for Issue attackers (only for developers)