Example: Troubleshooting SCF convergence: Ti2O4

Download SCF_Ti2O4.run

One can run into SCF convergence problems when calculating certain types of systems. Some of the notorious examples are transition metal oxides and lanthanide compounds. Below, several approaches to solving the SCF convergence problem are demonstrated.

NewDIIS keyword

The first approach is to try a new DIIS algorithm, which will probably become default in a future version. The new algorithm is switched on by using the keyword NewDIIS anywhere in the input file:

$ADFBIN/adf << eor
Title Ti2O4 SCF aid test (NewDIIS)
  Ti  1.730   0.000   0.000
  Ti -1.730   0.000   0.000
  O   0.000   1.224   0.000
  O   0.000  -1.224   0.000
  O   3.850   0.000   0.000
  O  -3.850   0.000   0.000
 GGA Becke Perdew
 Type DZ
 Core Small

  Iterations 300


End input

Multi-step smearing

Second approach is an extension to the so-called “electron smearing” method. In this method, the electrons are distributed among orbitals around Fermi-level using a pseudo-thermal distribution function. Although the result with fractional occupation number has no physical sense, the method can be used to achieve integer occupation numbers by reducing the smearing parameter step-wise. In the example above, replace the NewDIIS keyword with the following line of text:

Occupations Smear=0.2,0.1,0.07,0.05,0.03,0.02,0.01,0.007,0.005,0.001

A few notes:

  • You can specify up to ten comma-delimited values after Smear= (no spaces are allowed). ADF will start from the first value and try to converge SCF using it. If it succeeds, the next value will be picked and so on.
  • Because the whole process may require many cycles to converge it is important to set the number of SCF cycles to a large value to avoid a premature termination.

Steepest descent method

The third example demonstrates the use of the Occupations Steep= option (see the User’s Guide for details). There are two differences from the previous example shown below:

 Iterations 300
 Mixing 0.05

Occupations Steep=0.5,0.3

One difference is, obviously, in the Occupations keyword. The other difference is more subtle. For stable convergence, it is often essential to switch off DIIS and set the mixing parameter to a low value. Of course, it will make convergence quite (sometimes very) slow. Ultimately you should get either an aufbau configuration or a configuration with exactly degenerate HOMO. In this example, the result is an aufbau solution.

Both methods should, in principle, give the same result, which is the case in this example.


The fourth example uses the so called A-DIIS method. The A-DIIS method combines the strength of the ARH and DIIS methods. It does not require energy evaluation so it is much cheaper than the ARH and Energy-DIIS methods.

 Iterations 300
 Mixing 0.05


The fifth example uses the so called Energy-DIIS method. Please note that similar to ARH and unlike the standard SCF procedure in ADF this method requires energy evaluation at each SCF cycle, which makes it significantly slower compared to energy-free SCF. :: SCF Iterations 300 Mixing 0.05 EDIIS End Augmented Roothaan-Hall The sixth example uses the Augmented Roothaan-Hall (ARH) method. The basic idea of this method is that the density matrix is optimized directly to minimize the total energy. Important: the ARH method can be used with SYMMETRY NOSYM only. :: Symmetry NOSYM SCF Iterations 300 Mixing 0.05 ARH End LISTi The seventh example uses the LISTi method. LISTi is very similar to the usual DIIS but typically it performs much better. It is also computationally less expensive and scales better in parallel even though DIIS is rarely a scaling bottleneck. :: SCF Iterations 300 LISTi End