next up previous contents index
Next: Restarting Up: User's manual of OpenMX Previous: Fixing the relative position   Contents   Index

SCF convergence

Five charge mixing schemes in OpenMX Ver. 3.5 are available by the keyword 'scf.Mixing.Type':

In the first three schemes density matrices (real space) are mixed to generate the input density matrix which can be easily converted into (spin) charge density. On the other hand, the charge mixing is made in Fourier space in the last two schemes. Generally, it is easier to achieve SCF convergence in large gap systems using any mixing scheme. However, it would be difficult to achieve a sufficient SCF convergence in smaller gap and metallic systems, since a charge sloshing problem in the SCF calculations becomes serious often. To handle such difficult systems, two mixing schemes are currently available: Kerker and RMM-DIISK methods. The two mixing schemes could be an effective way for achieving the SCF convergence of metallic systems. When 'Kerker' or 'RMM-DIISK' is used, the following prescriptions are helpful to obtain the convergence of SCF calculations:

In addition, the charge sloshing, which comes from charge components with long wave length, can be significantly suppressed by tuning Kerker's factor $\alpha$ by the keyword 'scf.Kerker.factor', where Kerker's metric is defined by


$\displaystyle \langle A \vert B \rangle =
\sum_{\bf q} \frac{A_{\bf q}^* B_{\bf q}}{w_{\bf q}}$      


$\displaystyle w_{\bf q} = \frac{ \vert{\bf q}\vert^2}
{\vert {\bf q}\vert^2+ q_0^2}$      


$\displaystyle q_0 = \alpha \vert {\bf q}_{\rm min} \vert$      

where ${\bf q}_{\rm min}$ is the ${\bf q}$ vector with the minimum magnitude except 0-vector. A larger $\alpha$ significantly suppresses the charge sloshing, but leads to slower convergence. Since an optimum value depends on system, you may tune an appropriate value for your system, while the default value is 1.0.

Furthermore, the behavior of 'RMM-DIISK' can be controlled by the following keyword:

   scf.Mixing.EveryPulay    5   # default = 5

Figure 6: Convergence properties of the norm of residual density matrix or charge density in the SCF calculations using five mixing schemes of (a) a sialic acid molecule, (b) a Pt$_{13}$ cluster, and (c) a Pt$_{63}$ cluster. The input files are SialicAcid.dat, Pt13.dat, and Pt63.dat in the directory 'work'.
\begin{figure}\begin{center}
\epsfig{file=SCF.eps,width=10.0cm} \end{center} \end{figure}

The residual vectors in the Pulay-type mixing schemes tend to become linearly dependent each other as the mixing steps accumulate, and the linear dependence among the residual vectors makes the convergence difficult. A way of avoiding the linear dependence is to do the Pulay-type mixing occasionally during the Kerker mixing. With this prescription, you can specify the frequency using the keyword 'scf.Mixing.EveryPulay'. For example, in case of 'scf.Mixing.EveryPulay=5', the Pulay-mixing is made at every five SCF iteration, while Kerker-type mixing is used at the other steps. 'scf.Mixing.EveryPulay=1' corresponds to the conventional Pulay-type mixing. It is noted that the keyword 'scf.Mixing.EveryPulay' is supported for only 'RMM-DIISK', and the default value is five.

The above prescription works in some cases. But the most recommended prescription to accelerate the convergence is the following:

Since the Pulay type mixing such as RMM-DIIS and RMM-DIISK is based on a quasi Newton method, the convergence speed is governed by how a good Hessian matrix can be found. As 'scf.Mixing.History' increases, the calculated Hessian may become more accurate.

In Fig. 6 a comparison of five mixing schemes is shown in the SCF convergence for (a) a sialic acid molecule, (b) a Pt$_{13}$ cluster, and (c) a Pt$_{63}$ cluster, where the norm of residual density matrix or charge density can be found as NormRD in the file *.out and the input files are SialicAcid.dat, Pt13.dat, and Pt63.dat in the directory 'work'. We see that 'RMM-DIISK' works with robustness for all the systems shown in Fig. 6. In most cases, 'RMM-DIISK' will be the best choice, while the use of 'Kerker' is required with a large 'scf.Kerker.factor' and a small 'scf.Max.Mixing.Weight' in quite difficult cases in which the convergence is hardly obtained.


next up previous contents index
Next: Restarting Up: User's manual of OpenMX Previous: Fixing the relative position   Contents   Index
2009-08-28