# Self-consistency (SCF)¶

The SCF procedure searches for a self-consistent density. The self-consistent error is the square root of the integral of the squared difference between the input and output density of the cycle operator. When the SCF error is below a certain criterion, controlled by subkey `Criterion`

of block key `Convergence`

, convergence is reached. In case of bad convergence the SCF looks at the subkeys `Mixing`

, and `Degenerate`

, and the subkeys of block key `DIIS`

.

See also

Troubleshooting: SCF does not converge

## SCF key¶

The SCF key block controls technical SCF parameters

```
SCF
{Mixing value}
{Iterations n}
{Eigenstates}
{Pmatrix}
{Rate value}
{VSplit value}
End
```

`Mixing`

- (
**Default: 0.075**) Initial ‘damping’ parameter in the SCF procedure, for the iterative update of the potential: new potential = old potential + mix (computed potential-old potential). Note: the program automatically adapts Mixing during the SCF iterations, in an attempt to find the optimal mixing value.

`Iterations`

- (
**Default: 0**) The maximum number of SCF iterations to be performed. If zero, termination of the SCF procedure will depend on other aspects (convergence, time-out, insufficient progress towards convergence, ...).

`EigenStates`

- The program knows two alternative ways to evaluate the charge density iteratively in the SCF procedure: from the P-matrix, and directly from the squared occupied eigenstates. By default the program actually uses both at least one time and tries to take the most efficient. If present,
`Eigenstates`

turns off this comparison and lets the program stick to one method (from the eigenstates).

`Pmatrix`

- If present, evaluate the charge density from the P-matrix. See also the subkey Eigenstates.

`Rate`

- (
**Default: 0.99**) Minimum rate of convergence for the SCF procedure. If progress is too slow the program will take measures (such as smearing out occupations around the Fermi level, see subkey`Degenerate`

of block key`Convergence`

) or, if everything seems to fail, it will stop.

`VSplit`

- (
**Default: 5E-2**) To disturb degeneracy of alpha and beta spin MOs the value of this key is added to the beta spin potential at the startup.

## Convergence key¶

All options and parameters related to the convergence behavior of the SCF procedure are defined in the `Convergence`

block key. Also the finite temperature distribution is part of this

```
Convergence
{Criterion value}
{ElectronicTemperature value}
{Degenerate value}
{SpinFlip list}
{StartWithMaxSpin [True|False]}
{InitialDensity [RHO|PSI]}
{Boltzmann n}
{LessDegenerate [False|True]}
{NoDegenerate}
End
```

`Criterion`

- Criterion for termination of the SCF procedure. The default depends on NumericalQuality. For Normal numerical quality it is 1E-6.

`ElectronicTemperature`

- (
**Default: 0**) Requires a numerical argument, which is an energy width (in a.u.). It simulates a finite-temperature electronic distribution. The key may be used to achieve convergence in an otherwise problematically converging system. The energy of a finite-T distribution is different from the T=0 value, but for small T a fair approximation of the zero-T energy is obtained by extrapolation. The extrapolation energy correction term is printed with the survey of the bonding energy in the output file. Check that this value is not too large. Build experience yourself how different settings may affect the outcomes.**Note**: this key is meant to help you overcome convergence problems, not to do finite-temperature research! Only the electronic distribution is computed T-dependent, other aspects are not accounted for!

`Degenerate`

- (
**Default: default**) Smooths (slightly) occupation numbers around the Fermi level, so as to insure that nearly-degenerate states get (nearly-) identical occupations.**Be aware**: In case of problematic SCF convergence the program will turn this key on automatically, unless the key`Nodegenerate`

is set in input. The smoothing depends on the argument to this key, which can be considered a ‘degeneration width’. When the argument reads**default**, the program will use the value**1e-4 a.u.**for the energy width.

`SpinFlip`

- List here the atoms for which you want the initial spin polarization to be flipped. This way you can distinguish between ferromagnetic and anti ferromagnetic states. Currently, it is not allowed to give symmetry equivalent atoms a different spin orientation. To achieve that you have to break the symmetry.

`StartWithMaxSpin`

- (
**Default: True**) To break the initial perfect symmetry of up and down densities there are two strategies. One is to occupy the numerical orbitals in a maximum spin configuration. The alternative is to add a constant to the potential. See also Vsplit key.

`InitialDensity`

- (
**Default: RHO**) The SCF is started with a guess of the density. There are the following choices**RHO**: the sum of atomic density.**PSI**: construct an initial eigensystem by occupying the atomic orbitals. The guessed eigensystem is orthonormalized, and from this the density is calculated.

`LESSDEGENERATE`

- If smoothing of occupations over nearly degenerate orbitals is applied (see Degenerate key), then, if this key is set in the input file, the program will limit the smoothing energy range to 1e-4 a.u. as soon as the SCF has converged ‘halfway’, i.e. when the SCF error has decreased to the square root of its convergence criterion.

`NODEGENERATE`

- This key prevents any internal automatic setting of the key DEGENERATE.

## DIIS key¶

The DIIS procedure to obtain the SCF solution depends on several parameters. Default values can be overruled with this key block.

```
DIIS
{dimix rval}
{adaptable lval}
{ncycledamp ival}
{nvctrx ival}
{clarge rval}
{chuge rval}
{condition rval}
{variant sval}
END
```

`dimix`

- (
**Default: 0.2**) mixing parameter for the DIIS procedure. `adaptable`

- (
**Default: true**) change automatically the value of`dimix`

during the SCF. `ncycledamp`

- (
**Default: 5**) number of initial iterations where damping is applied, before any DIIS is considered. `nvctrx`

- (
**Default: 20**) maximum number of DIIS expansion vectors. `clarge`

- (
**Default: 20**) when the largest DIIS coefficient exceeds this value, the oldest DIIS vector is removed and the procedure re-applied. `chuge`

- (
**Default: 50**) when the largest coefficient in the DIIS expansion exceeds this value, damping is applied. `condition`

- (
**Default: 1e+6**) the condition number of the DIIS matrix, the largest eigenvalue divided by the smallest, must not exceed this value. If this value is exceeded, this vector will be removed. `variant`

- if specified, you can invoke one of the LIST methods, possible values are
**LISTi**,**LISTb**, and**LISTd**. It appears that among these LISTi is the advised method. This can be tried if SCF convergence turns out to be problematic. As it requires an extra fitting step, it is more expensive per SCF iteration.

## DIRIS key¶

`DIRIS (block-type)`

- Same options as
`DIIS`

key, except that this one applies to the DIIS procedure used in the Dirac subprogram, for numerical single atom calculations, which constructs the radial tables for the NAOs.