Constructing the Hamiltonian
In our package, the XC functional can be set explicitly using the
dft_functional keyword in
INPUT file. If
dft_functional is not specified, ABACUS will use the xc functional indicated in the pseudopotential file.
Several common functionals are implemented in ABACUS, such as PZ and PBE. Users can check out this file for a complete list of functionals implemented in ABACUS. Furthermore, if ABACUS is compiled with LIBXC, we also support all the LDA, GGA and meta-GGA functionals provided therein.
Here, we use a simple example calculation for illustration.
In the original
INPUTfile, there is no specification of the
dft_functionalkeyword. As a result, we use the default option, that is to use the xc functional in the pseudopotential file,
Si.pz-vbc.UPF. We can take a look at the first few lines of the
<PP_HEADER>section from the pseudopotential file:
<PP_HEADER> 0 Version Number Si Element NC Norm - Conserving pseudopotential F Nonlinear Core Correction SLA PZ NOGX NOGC PZ Exchange-Correlation functional
From the line commented ‘Exchange-Correlation functional’, we see that this pseudopotential is generated using PZ functional. As a result, if we run ABACUS with the original setting, PZ functional will be used.
Note : for systems with multiple elements, if no
dft_functionalis specified, users should make sure that all pseudopotentials are using the same functional. Otherwise, the type of xc functional should be specified explicitly.
On the other hand, users might also explicitly specify the xc functional through
dft_functionalparameter. For example, to use PBE functional, add the following line to
INPUTfile and rerun the calculation:
More functionals from LIBXC
ABACUS has its own implementation of the PBE functional as well as a few others, but our list is far from comprehensive. However, if ABACUS is compiled with LIBXC, we also support all the LDA, GGA and meta-GGA functionals provided therein.
For this part, users should compile the ABACUS code with LIBXC linked (version 5.1.7 or higher).
To use SCAN functional, make the following modification to the
Note that in the case of PBE and SCAN, we are using ‘short-hand’ names to represent the entire functional, which is made up of individual exchange and correlation components. A complete list of ‘short-hand’ expressions supported by ABACUS can be found in source code.
Apart from the ‘short-hand’ names, ABACUS also allow supplying exchange-correlation functionals as combinations of LIBXC keywords for functional components, joined by plus sign, for example, setting:
means we are using the short-range Yukawa attenuated exchange along with the Casula, Sorella & Senatore LDA correlation functional.
The list of LIBXC keywords can be found on its website.
In ABACUS, we provide temperature-dependent functionals through LIBXC. For such functionals, the keyword
xc_temperature(unit is Rydberg) is used to specify the temperature, such as the following:
dft_functional LDA_XC_CORRKSDT xc_temperature 10
ABACUS supports functionals with exact Hartree-Fock exchange in LCAO basis set only. The old INPUT parameter exx_hybrid_type for hybrid functionals has been absorbed into
dft_functional. Options are
scan0(SCAN0) (Note: in order to use HSE or SCAN0 functional, LIBXC is required). Note also that only HSE has been tested while other hybrid functionals have NOT been fully tested yet, and the maximum parallel cpus for running exx is Nx(N+1)/2, with N being the number of atoms. And forces for hybrid functionals are not supported yet.
More information on the hybrid functional can be found from the section Exact Exchange in the list of input variables for more information.
An example HSE calculation is provided in this directory. Apart from the input files (
KPT), we further provide two files: running_scf.log_ref and log_ref, which contains reference for running_scf.log and standard output from the program, respectively.
In the log_ref file, you will see the repetitive appearance of a piece of warning message:
The angular momentum larger than 4 (g orbitals) may be error about eggbox. Check file ./module_orbital/ORB_atomic_lm.cpp line 272
This is normal and it will not affect the results of calculation.
Conventional functionals, e.g., L(S)DA and GGAs, encounter failures in strongly correlated systems, usually characterized by partially filled d/f shells. These include transition metals ™ and their oxides, rare-earth compounds, and actinides, to name a few, where L(S)DA/GGAs typically yield quantitatively or even qualitatively wrong results. To address this failure, an efficient and successful method named DFT+U, which inherits the efficiency of L(S)DA/GGA but gains the strength of the Hubbard model in describing the physics of strongly correlatedsystems, has been developed.
Now the DFT+U method is accessible in ABACUS. The details of the DFT+U method could be found in this paper. It should be noted that the DFT+U works only within the NAO scheme, which means that the value of the keyword
basis_type must be lcao when DFT+U is called. To turn on DFT+U, users need to set the value of the
dft_plus_u keyword in the
INPUT file to be 1. All relevant parmeters used in DFT+U calculations are listed in the DFT+U correction part of the list of keywords.
Examples of DFT+U calculations are provided in this directory.