SCF calculations for systems with zero or small HOMO-LUMO gap (such as metals) can exhibit very slow convergence or may even fail to converge. This problem arises because the energetic ordering of orbitals and states can switch during the SCF optimization leading to discontinuities in the optimization. Using fractional MO occupation numbers can improve the convergence for small-gap systems. In this approach, the occupation numbers of MOs around the Fermi level are allowed to assume non-integer values. This “occupation smearing” allows one to include multiple electron configurations in the same optimization, which improves the stability of the optimization.
We follow the pseudo-Fractional Occupation Number (pFON) method of Rabuck and Scuseria771 that scales the MO occupation used to construct the AO density:
(4.42) |
For a conventional (integer occupation number) SCF run, the occupation number is either one (occupied) or zero (virtual). In pFON, the occupation numbers are following a Fermi-Dirac distribution,
(4.43) |
where is the respective orbital energy and the Boltzmann constant and temperature, respectively. The Fermi energy is set to in our implementation. To ensure conservation of the total number of electrons, the pFON approach re-scales the occupation numbers so that .
There are several parameters to control the electronic temperature throughout a pFON SCF run. The temperature can either be held constant at finite temperature ( = ), or the system can be cooled from a higher temperature down to the final temperature. So far, no zero-temperature extrapolation has been implemented.
OCCUPATIONS
Activates pFON calculation.
TYPE:
INTEGER
DEFAULT:
0
OPTIONS:
0
Integer occupation numbers
1
Not yet implemented
2
Pseudo-fractional occupation numbers (pFON)
RECOMMENDATION:
Use pFON to improve convergence for small-gap systems.
FON_T_START
Initial electronic temperature (in K) for FON calculation.
TYPE:
INTEGER
DEFAULT:
1000
OPTIONS:
Any desired initial temperature.
RECOMMENDATION:
Pick the temperature to either reproduce experimental conditions (e.g. room
temperature) or as low as possible to approach zero-temperature.
FON_T_END
Final electronic temperature for FON calculation.
TYPE:
INTEGER
DEFAULT:
0
OPTIONS:
Any desired final temperature.
RECOMMENDATION:
Pick the temperature to either reproduce experimental conditions (e.g. room
temperature) or as low as possible to approach zero-temperature.
FON_NORB
Number of orbitals above and below the Fermi level that are allowed to have
fractional occupancies.
TYPE:
INTEGER
DEFAULT:
4
OPTIONS:
n
number of active orbitals
RECOMMENDATION:
The number of valence orbitals is a reasonable choice.
FON_T_SCALE
Determines the step size for the cooling.
TYPE:
INTEGER
DEFAULT:
90
OPTIONS:
n
temperature is scaled by in each cycle (cooling method 1)
n
temperature is decreased by n K in each cycle (cooling method 2)
RECOMMENDATION:
The cooling rate should be neither too slow nor too fast. Too slow may lead to
final energies that are at undesirably high temperatures. Too fast may lead to
convergence issues. Reasonable choices for methods 1 and 2 are 98 and 50,
respectively. When in doubt, use constant temperature.
FON_E_THRESH
DIIS error below which occupations will be kept constant.
TYPE:
INTEGER
DEFAULT:
4
OPTIONS:
n
freeze occupations below DIIS error of
RECOMMENDATION:
This should be one or two numbers bigger than the desired SCF convergence
threshold.
FON_T_METHOD
Selects cooling algorithm.
TYPE:
INTEGER
DEFAULT:
1
OPTIONS:
1
temperature is scaled by a factor in each cycle
2
temperature is decreased by a constant number in each cycle
RECOMMENDATION:
We have made slightly better experience with a constant cooling rate. However,
choose constant temperature when in doubt.
$molecule 0 1 Pt -0.20408 1.19210 0.54029 Pt 2.61132 1.04687 0.66196 Pt 0.83227 0.03296 -1.49084 Pt 0.95832 -1.05360 0.92253 Pt -1.66760 -1.07875 -1.02416 $end $rem METHOD pbe ECP fit-lanl2dz SYMMETRY false OCCUPATIONS 2 ! pseudo-fractional occupation numbers FON_NORB 10 FON_T_START 300 ! electronic temperature: 300 K FON_T_END 300 FON_E_THRESH 5 ! freeze occupation numbers once DIIS error is 10^-5 GEN_SCFMAN false $end