| Default | ||
| IALGO | = | 8 |
| LDIAG | = | .TRUE. |
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
(
for the current wavefunctions
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.
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.
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.
Sub-switches:
| 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.
The RMM-DIIS algorithm reduces the number of orthonormalization steps
(o(
)) 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 |
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 param.inc 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 (
). 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 param.inc 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
, till
the norm of the residual vector (column "rms") decreases continuously
during the delay phase.
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.
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.
This algorithm is no longer supported.
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).