abacus-develop
abacus-develop copied to clipboard
Unoccupied state energy mismatches with q-e results when using PBE functionals in LibXC in PW basis
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:
# abacus
STATE ENERGY(eV) AND OCCUPATIONS NSPIN == 1
1/1 kpoint (Cartesian) = 0.0000 0.0000 0.0000 (131155 pws)
1 -25.4444 2.00000
2 -13.2333 2.00000
3 -9.26499 2.00000
4 -7.20492 2.00000
5 -0.871762 0.00000
# qe
-25.4454 -13.2343 -9.2660 -7.2060 -0.9226
Energies
# abacus
----------------------------------------------------------
Energy Rydberg eV
----------------------------------------------------------
E_KohnSham -34.2381003066 -465.8332528647
E_KS(sigma->0) -34.2381003066 -465.8332528647
E_Harris -34.2377708751 -465.8287707194
E_band -8.1065484418 -110.2952499219
E_one_elec -69.2735108555 -942.5144680993
E_Hartree 36.0427508013 490.3867824917
E_xc -8.4227089386 -114.5968341601
E_Ewald 7.4153686862 100.8912669031
E_entropy(-TS) -0.0000000000 -0.0000000000
E_descf 0.0000000000 0.0000000000
E_exx 0.0000000000 0.0000000000
E_Fermi -0.2673299563 -3.6372106521
----------------------------------------------------------
# qe
! total energy = -34.23811682 Ry
estimated scf accuracy < 3.1E-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.27308544 Ry
hartree contribution = 36.04224887 Ry
xc contribution = -8.42264894 Ry
ewald contribution = 7.41536869 Ry
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
&CONTROL
calculation = 'scf',
prefix = 'pwscf',
outdir = './',
pseudo_dir = '/Your/Pseudo/Dir',
disk_io = 'low',
max_seconds = 10000000,
verbosity = 'low',
/
&SYSTEM
ibrav = 0,
celldm(1) = 1,
nat = 3,
ntyp = 2,
nbnd = 5,
ecutwfc = 50,
occupations = 'smearing',
smearing = 'gaussian',
degauss = 0.015,
input_dft = 'XC-000I-000I-101L-130L-000I-000I',
! input_dft = 'pbe',
/
&ELECTRONS
diagonalization = 'davidson',
electron_maxstep = 100,
mixing_mode = 'plain',
mixing_beta = 0.4,
conv_thr = 1.0D-9,
/
CELL_PARAMETERS alat
28.0 0.0 0.0
0.0 28.0 0.0
0.0 0.0 28.0
ATOMIC_SPECIES
O 1.00 O_ONCV_PBE-1.0.upf
H 1.00 H_ONCV_PBE-1.0.upf
ATOMIC_POSITIONS alat
O 18.966810872100 14.638172355700 6.501255519660
H 17.984104813700 16.155190833700 6.682561292200
H 19.500958935300 14.612241615100 4.761862131010
K_POINTS automatic
1 1 1 0 0 0
ABACUS INPUT
INPUT_PARAMETERS
calculation scf
suffix hse
ntype 2
ecutwfc 50.000000
scf_nmax 100
basis_type pw
dft_functional GGA_X_PBE+GGA_C_PBE
nbands 5
mixing_type broyden
mixing_beta 0.80000
symmetry 0
nspin 1
out_wfc_pw 1
# out_wfc_r true
out_chg 1
pseudo_mesh 1
pseudo_rcut 10
ABACUS STRU
ATOMIC_SPECIES
O 1.00 ./O_ONCV_PBE-1.0.upf
H 1.00 ./H_ONCV_PBE-1.0.upf
LATTICE_CONSTANT
1
LATTICE_VECTORS
28.0 0.0 0.0
0.0 28.0 0.0
0.0 0.0 28.0
ATOMIC_POSITIONS
Cartesian
O
0.0
1
18.966810872100 14.638172355700 6.501255519660 0 0 0
H
0.0
2
17.984104813700 16.155190833700 6.682561292200 0 0 0
19.500958935300 14.612241615100 4.761862131010 0 0 0
ABACUS STRU
ATOMIC_SPECIES
O 1.00 ./O_ONCV_PBE-1.0.upf
H 1.00 ./H_ONCV_PBE-1.0.upf
LATTICE_CONSTANT
1
LATTICE_VECTORS
28.0 0.0 0.0
0.0 28.0 0.0
0.0 0.0 28.0
ATOMIC_POSITIONS
Cartesian
O
0.0
1
18.966810872100 14.638172355700 6.501255519660 0 0 0
H
0.0
2
17.984104813700 16.155190833700 6.682561292200 0 0 0
19.500958935300 14.612241615100 4.761862131010 0 0 0
ABACUS KPT
K_POINTS
0
Gamma
1 1 1 0 0 0
Task list for Issue attackers (only for developers)
- [ ] Verify the issue is not a duplicate.
- [ ] Describe the bug.
- [ ] Steps to reproduce.
- [ ] Expected behavior.
- [ ] Error message.
- [ ] Environment details.
- [ ] Additional context.
- [ ] Assign a priority level (low, medium, high, urgent).
- [ ] Assign the issue to a team member.
- [ ] Label the issue with relevant tags.
- [ ] Identify possible related issues.
- [ ] Create a unit test or automated test to reproduce the bug (if applicable).
- [ ] Fix the bug.
- [ ] Test the fix.
- [ ] Update documentation (if necessary).
- [ ] Close the issue and inform the reporter (if applicable).