next up previous contents
Next: 7.39 NSIM - tag Up: 7 The INCAR File Previous: 7.37 DIPOL-tag (VASP.3.2 only)

7.38 IALGO, and LDIAG-tag





IALGO selects the main algorithm, and LDIAG determines whether a subspace-diagonalization is performed, or not. We don't recommend a normal user to set LDIAG, and IALGO should be set only to 8 or 48. These algorithms are fast, and definitely the most reliable ones implemented in VASP. For high performance calculation and large systems or parallel computers you should use IALGO=48.

Generally the first digit of IALGO specifies the main algorithm, the second digit determines the actual settings within the algorithm. For instance 4X will always call the same routine for the electronic minimization the second digit X controls the details of the electronic minimization.

Mind: All implemented algorithms will result in the same answer, i.e. they will correctly calculate the KS groundstate, if they converge. This is guaranteed because all minimization routines use the same subroutines to calculate the (gradient) correction vector ( tex2html_wrap_inline4685 for the current wavefunctions tex2html_wrap_inline4687 and they are converged if this correction vector gets smaller than some specified threshold. The only difference between the algorithms is the way this correction vector is added to the trial wavefunction and therefore the performance of the routines might be quite different.

The most extensive testing has been done for IALGO=8. If random vectors (INIWAV=1) are used for the initialization of the wavefunctions, this algorithm always gives the correct KS groundstate. So if you have problems switch to IALGO=8.

Here is a list of possible settings for IALGO.

Performance test.

VASP does not perform real calculations -- only some important parts of the program will be executed and the timing for each part is printed out at the end.

Conjugate gradient algorithm (section 9.1.5)

Optimize each band iteratively using a conjugate gradient algorithm. Subspace-diagonalization before conjugate gradient algorithm. The conjugate gradient algorithm is used to optimize the eigenvalue of each band.


5 steepest descent
6 conjugated gradient
7 preconditioned steepest descent
8 preconditioned conjugated gradient

IALGO=8 is always fastest, IALGO=5-7 are only implemented for test purpose.

Residual minimization method direct inversion in the iterative subspace (RMM-DIIS see section 9.1.4 and 9.1.6)

The RMM-DIIS algorithm reduces the number of orthonormalization steps (o( tex2html_wrap_inline4347 )) considerably and is therefore much faster than IALGO=8 for large systems and on workstations with a small memory band width (i.e. DEC, SGI, SUN ...). For reasons of performance we recommend to use this switch together with LREAL= .TRUE. or LREAL= On (Section 7.34) for large systems. In vasp.4.4 the algorithm can also run in a blocked mode in which several bands are optimized at the same time. This can improve the performance even further on systems with a low memory band width (see 7.39).

The following sub-switches exist:

44 steepest descent eigenvalue minimization
46 residuum-minimization + preconditioning
48 preconditioned residuum-minimization
IALGO=48 is usually most reliable (IALGO=44 and 46 are mainly for test purposes).

For IALGO=4X, a subspace-diagonalization is performed before the residual vector minimization, and a Gram-Schmidt orthogonalization is employed after the RMM-DIIS step. In the RMM-DIIS step, each band is optimized individually (without the orthogonality constraint); a maximum of IRMMD iterative steps per band (see file) are performed for each band. We recommend to set IRMMD=4, change this value only after extensive tests.

Please mind, that the RMM-DIIS algorithm can fail in rare cases, whereas IALGO=8 did not fail for any system tested up to date. Therefore, if you have problems with IALGO=48 try first to switch to IALGO=8. But in some cases the performance gains due to IALGO=48 are so large that IALGO=8 might not be a feasible option. In the following we try to explain what to do if IALGO=48 does not work reliable:

In general two major problems can be encountered when using IALGO=48. First, the optimization of unoccupied bands might fail in rare cases, for molecular dynamics and relaxations. This is because our implementation of the RMM-DIIS algorithm treats unoccupied bands more ``sloppy'' then occupied bands (see section 7.41) during MD's. The problem can be solved rather easily by specifying WEIMIN=0 in the INCAR file. In that case all bands are treated accurately.

The other major problem - which occurs also for static calculations - is the initialization of the wavefunctions. Because the RMM-DIIS algorithm tends to find eigenvectors which are close the the initial set of trial vectors there is no guarantee to converge to the correct ground state! This situation is usually very easy to recognize; whenever one eigenvector is missing in the final solution, the convergence becomes exceedingly slow at the end (mind, that it is possible that one state with a small fractional occupancy above the Fermi-level is missing). If you suspect that this is the case switch to ICHARG=12 (i.e. no update of charge and Hamiltonian) and try to calculate the wavefunctions with high accuracy ( tex2html_wrap_inline4691 ). If the convergence is fairly slow or stucks at some accuracy the RMM-DIIS has problems with the initial set of wavefunctions (as a rule of thumb not more than 12 electronic iterations should be required to determine the wavefunction for the default precision for ICHARG=12). The first thing to do in that case is to increase the number of bands (NBANDS) in the file (or the INCAR file for vasp.4.2). This is usually the simplest and most efficient fix, but it does not work in all cases. This solution is also undesirable for MD's and long relaxations because it increases the computational demand somewhat. A simple alternative - which worked in all tested cases - is to use IALGO=8 (CG algorithm) for a few non selfconsistent iterations (i.e. IALGO=8 ; NELM=6 ; ICHARG=12), and to switch then to the RMM-DIIS algorithm. This is a little bit inconvenient because it requires to startup vasp twice with two different INCAR files.

The final option is somewhat complicated and requires an understanding how the initialization phase of the RMM-DIIS algorithm works: After the random initialization of the wavefunctions, the initial wavefunctions for the RMM-DIIS algorithm are determined during a non selfconsistent steepest descent phase (the number of steepest descent sweeps is given by NELMDL, default is NELMDL=-5 for RMM-DIIS, section 7.13). During this initial phase in each sweep, two steepest descent steps per wavefunction are done between each sub space rotation. This "automatic" simple steepest descent approach during the delay is faced with a rather ill-conditioned minimization problem and can fail to produce reasonable trial wavefunctions for the RMM-DIIS algorithm. In this case the quantity in the column "rms" will not decrease during the initial phase (5 steps), and you must improve the conditioning of the problem by setting the ENINI parameter in the INCAR file. ENINI controls the cutoff during the initial (steepest descent) phase for IALGO=48. Default for ENINI is ENINI=ENCUT. If convergence problems are observed, start with a slightly smaller ENINI; reduce ENINI in steps of tex2html_wrap_inline4693 , till the norm of the residual vector (column "rms") decreases continuously during the delay phase.


wavefunctions are kept fixed, perform only recalculation of band structure energy (mainly testing)
wavefunctions are kept fixed, perform only sub space rotation (mainly testing)

Conjugate gradient algorithm

Subspace-diagonalization after iterative refinement of the eigenvectors using the conjugate gradient algorithm. This switch is for compatibility reasons only and should not be used any longer. Generally IALGO=5-8 is preferable, but was not implemented previous to VAMP 1.1.

Sub-switches as above.

Conjugate gradient algorithm (section 9.1.5)

Subspace-diagonalization before conjugate gradient algorithm.

No explicit orthonormalization of the gradients to the trial wave functions is done.

This setting saves time, but does fail in most cases -- mainly included for test purpose. Try IALGO=4X instead.

Kosugi algorithm (special blocked Davidson scheme) (see section 9.1.2)

This algorithm is no longer supported.

Treat total free energy as variational quantity and minimize the functional completely selfconsistently.

This is a nice idea first proposed in Refs. [27, 28, 29]. We did a lot of work on this topic and the algorithm works well for insulators. For metallic systems it is far slower than the mixing algorithms, although IALGO=58 will still give the correct answer after a lot of iterations. The algorithm is included in the VASP package only because of completeness. it is very important to set the TIME tag for this algorithm (see section 7.42).

next up previous contents
Next: 7.39 NSIM - tag Up: 7 The INCAR File Previous: 7.37 DIPOL-tag (VASP.3.2 only)

Mon Mar 29 10:38:29 MEST 1999