next up previous contents index
Next: Initialization of the density-matrix Up: The self-consistent-field loop Previous: The self-consistent-field loop   Contents   Index

Mixing options

DM.MixingWeight
(real): Proportion $\alpha$ of output Density Matrix to be used for the input Density Matrix of next SCF cycle (linear mixing): $\rho^{n+1}_{in} = \alpha \rho^{n}_{out}
+(1 - \alpha) \rho^{n}_{in}$.

Default value: 0.25

DM.NumberPulay
(integer): It controls the Pulay convergence accelerator. Pulay mixing generally accelerates convergence quite significantly, and can reach convergence in cases where linear mixing cannot. The guess for the $n+1$ iteration is constructed using the input and output matrices of the DM.NumberPulay former SCF cycles, in the following way: , where $\bar{\rho}^{n}_{out}$ and $\bar{\rho}^{n}_{in}$ are constructed from the previous $N=$DM.NumberPulay cycles:
\begin{displaymath}
\bar{\rho}^{n}_{out} = \sum_{i=1}^N
\beta_i \rho_{out}^{(n-N...
...{n}_{in} = \sum_{i=1}^N
\beta_i \rho_{in}^{(n-N+i)}.
\nonumber
\end{displaymath}  

The values of $\beta_i$ are obtained by minimizing the distance between $\bar{\rho}^{n}_{out}$ and $\bar{\rho}^{n}_{in}$. The value of $\alpha$ is given by variable DM.MixingWeight.

If DM.NumberPulay is 0 or 1, simple linear mixing is performed.

Default value: 0

DM.Pulay.Avoid.First.After.Kick
( logical): Controls whether the first density-matrix residual of the SCF cycle and the first residual after a kick are included in the Pulay history. It can be argued that in these cases the ``output'' DM might be significantly different from the ``input'' DM. To preserve backwards compatibility, these residuals are kept in the Pulay history unless this variable is activated.

Default value: .false.

DM.PulayOnFile
(logical):

NOTE: This feature is temporarily disabled pending a proper implementation that works well in parallel.

Store intermediate information of Pulay mixing in files (.true.) or in memory (.false.). Memory storage can increase considerably the memory requirements for large systems. If files are used, the filenames will be SystemLabel.P1 and SystemLabel.P2, where SystemLabel is the name associated to parameter SystemLabel.

Default value: .false.

DM.NumberBroyden
(integer): It controls the Broyden-Vanderbilt-Louie-Johnson convergence accelerator, which is based on the use of past information (up to DM.NumberBroyden steps) to construct the input density matrix for the next iteration.

See D.D. Johnson, Phys. Rev. B38, 12807 (1988), and references therein; Kresse and Furthmuller, Comp. Mat. Sci 6, 15 (1996).

If DM.NumberBroyden is 0, the program performs linear mixings, or, if requested, Pulay mixings.

Broyden mixing takes precedence over Pulay mixing if both are specified in the input file.

Note: The Broyden mixing algorithm is still in development, notably with regard to the effect of its various modes of operation, and the assigment of weights. In its default mode, its effectiveness is very similar to Pulay mixing. As memory usage is not yet optimized, casual users might want to stick with Pulay mixing for now.

Default value: 0

DM.Broyden.Cycle.On.Maxit
(logical): Upon reaching the maximum number of historical data sets which are kept for Broyden mixing (see description of variable DM.NumberBroyden), throw away the oldest and shift the rest to make room for a new data set. This procedure tends, heuristically, to perform better than the alternative, which is to re-start the Broyden mixing algorithm from a first step of linear mixing.

Default value: .true.

DM.Broyden.Variable.Weight
(logical): If .true., the different historical data sets used in the Broyden mixing (see description of variable DM.NumberBroyden) are assigned a weight depending on the norm of their residual ${\rho}^{n}_{out}-{\rho}^{n}_{in}$.

Default value: .true.

DM.NumberKick
(integer): Option to skip the Pulay (or Broyden) mixing earch certain number of iterations, and use a linear mixing instead. Linear mixing is done every DM.NumberKick iterations, using a mixing coefficient $\alpha$ given by variable DM.KickMixingWeight (instead of the usual mixing DM.MixingWeight). This allows in some difficult cases to bring the SCF out of loops in which the selfconsistency is stuck. If DM.MixingWeight=0, no linear mix is used.

Default value: 0

DM.KickMixingWeight
(real): Proportion $\alpha$ of output Density Matrix to be used for the input Density Matrix of next SCF cycle (linear mixing): $\rho^{n+1}_{in} = \alpha \rho^{n}_{out}
+(1 - \alpha) \rho^{n}_{in}$, for linear mixing kicks within the Pulay or Broyden mixing schemes. This mixing is done every DM.NumberKick cycles.

Default value: 0.50

DM.MixSCF1
(logical): Logical variable to indicate whether mixing is done in the first SCF cycle or not. Usually, mixing should not be done in the first cycle, to avoid non-idempotency in density matrix from Harris or previous steps. It can be useful, though, for restarts of selfconsistency runs.

Default value: .false.


next up previous contents index
Next: Initialization of the density-matrix Up: The self-consistent-field loop Previous: The self-consistent-field loop   Contents   Index
2011-11-16