Eigensolver
Name CGAdditionalTerms
Section SCF::Eigensolver
Type logical
Default no
Used by the cg solver only.
Add additional terms during the line minimization, see PTA92, eq. 5.31ff.
These terms can improve convergence for some systems, but they are quite costly.
If you experience convergence problems, you might try out this option.
This feature is still experimental.
Name CGDirection
Section SCF::Eigensolver
Type integer
Used by the cg solver only.
The conjugate direction is updated using a certain coefficient to the previous
direction. This coeffiction can be computed in different ways. The default is
to use Fletcher-Reeves (FR), an alternative is Polak-Ribiere (PR).
Options:
- fletcher:
The coefficient for Fletcher-Reeves consists of the current norm of the
steepest descent vector divided by that of the previous iteration.
- polak:
For the Polak-Ribiere scheme, a product of the current with the previous
steepest descent vector is subtracted in the nominator.
Name CGEnergyChangeThreshold
Section SCF::Eigensolver
Type float
Default 0.1
Used by the cg solver only.
For each band, the CG iterations are stopped when the change in energy is smaller than the
change in the first iteration multiplied by this factor. This limits the number of CG
iterations for each band, while still showing good convergence for the SCF cycle. The criterion
is discussed in Sec. V.B.6 of Payne et al. (1992), Rev. Mod. Phys. 64, 4.
The default value is 0.1, which is usually a good choice for LDA and GGA potentials. If you
are solving the OEP equation, you might want to set this value to 1e-3 or smaller. In general,
smaller values might help if you experience convergence problems.
For very small convergence tolerances, choose 0 to disable this criterion.
Name CGOrthogonalizeAll
Section SCF::Eigensolver
Type logical
Default no
Used by the cg solver only.
During the cg iterations, the current band can be orthogonalized
against all other bands or only against the lower bands. Orthogonalizing
against all other bands can improve convergence properties, whereas
orthogonalizing against lower bands needs less operations.
Moreover, orthogonalizing against all bands can make converging
the highest band or unoccupied bands more difficult.
Name Eigensolver
Section SCF::Eigensolver
Type integer
Which eigensolver to use to obtain the lowest eigenvalues and
eigenfunctions of the Kohn-Sham Hamiltonian. The default is
conjugate gradients (cg), except that when parallelization in states is
enabled, the default is rmmdiis.
Options:
- cg:
Conjugate-gradients algorithm.
- plan:
Preconditioned Lanczos scheme. Ref: Y. Saad, A. Stathopoulos, J. Chelikowsky, K. Wu and S. Ogut,
"Solution of Large Eigenvalue Problems in Electronic Structure Calculations", BIT 36, 1 (1996).
- cg_new:
An alternative conjugate-gradients eigensolver, faster for
larger systems but less mature.
Ref: Jiang et al., Phys. Rev. B 68, 165337 (2003)
- evolution:
(Experimental) Propagation in imaginary time.
- rmmdiis:
Residual minimization scheme, direct inversion in the
iterative subspace eigensolver, based on the implementation of
Kresse and Furthmüller [Phys. Rev. B 54, 11169
(1996)]. This eigensolver requires almost no orthogonalization
so it can be considerably faster than the other options for
large systems. To improve its performance a large number of ExtraStates
are required (around 10-20% of the number of occupied states).
Note: with unocc, you will need to stop the calculation
by hand, since the highest states will probably never converge.
Usage with more than one block of states per node is experimental, unfortunately.
Name EigensolverImaginaryTime
Section SCF::Eigensolver
Type float
Default 0.1
The imaginary-time step that is used in the imaginary-time evolution
method (Eigensolver = evolution) to obtain the lowest eigenvalues/eigenvectors.
It must satisfy EigensolverImaginaryTime > 0.
Increasing this value can make the propagation faster, but could lead to unstable propagations.
Name EigensolverMaxIter
Section SCF::Eigensolver
Type integer
Determines the maximum number of iterations that the
eigensolver will perform if the desired tolerance is not
achieved. The default is 25 iterations for all eigensolvers
except for rmdiis, which performs only 5 iterations.
Increasing this value for rmdiis increases the convergence speed,
at the cost of an increased memory footprint.
In the case of imaginary time propatation, this variable is not used.
Name EigensolverMinimizationIter
Section SCF::Eigensolver
Type integer
Default 0
During the first iterations, the RMMDIIS eigensolver requires
some steepest-descent minimizations to improve
convergence. This variable determines the number of those
minimizations.
Name EigensolverSkipKpoints
Section SCF::Eigensolver
Type logical
Only solve Hamiltonian for k-points with zero weight
Name EigensolverTolerance
Section SCF::Eigensolver
Type float
This is the tolerance for the eigenvectors. The default is 1e-7.
Name Preconditioner
Section SCF::Eigensolver
Type integer
Which preconditioner to use in order to solve the Kohn-Sham
equations or the linear-response equations. The default is
pre_filter, except for curvilinear coordinates, where no
preconditioner is applied by default.
Options:
- no:
Do not apply preconditioner.
- pre_filter:
Filter preconditioner.
- pre_jacobi:
Jacobi preconditioner. Only the local part of the pseudopotential is used.
Not very helpful.
- pre_poisson:
Uses the full Laplacian as preconditioner. The inverse is calculated through
the solution of the Poisson equation. This is, of course, very slow.
- pre_multigrid:
Multigrid preconditioner.
Name PreconditionerFilterFactor
Section SCF::Eigensolver
Type float
This variable controls how much filter preconditioner is
applied. A value of 1.0 means no preconditioning, 0.5 is the
standard.
The default is 0.5, except for periodic systems where the default is 0.6.
If you observe that the first eigenvectors are not converging properly, especially for periodic systems, you should increment this value.
The allowed range for this parameter is between 0.5 and 1.0.
For other values, the SCF may converge to wrong results.
Name PreconditionerIterationsMiddle
Section SCF::Eigensolver
Type integer
This variable is the number of smoothing iterations on the coarsest grid for the multigrid
preconditioner. The default is 1.
Name PreconditionerIterationsPost
Section SCF::Eigensolver
Type integer
This variable is the number of post-smoothing iterations for the multigrid
preconditioner. The default is 2.
Name PreconditionerIterationsPre
Section SCF::Eigensolver
Type integer
This variable is the number of pre-smoothing iterations for the multigrid
preconditioner. The default is 1.
Name StatesOrthogonalization
Section SCF::Eigensolver
Type integer
The full orthogonalization method used by some
eigensolvers. The default is cholesky_serial, except with state
parallelization, the default is cholesky_parallel.
Options:
- cholesky_serial:
Cholesky decomposition implemented using
BLAS/LAPACK. Can be used with domain parallelization but not
state parallelization.
- cholesky_parallel:
Cholesky decomposition implemented using
ScaLAPACK. Compatible with states parallelization.
- cgs:
Classical Gram-Schmidt (CGS) orthogonalization.
Can be used with domain parallelization but not state parallelization.
The algorithm is defined in Giraud et al., Computers and Mathematics with Applications 50, 1069 (2005).
- mgs:
Modified Gram-Schmidt (MGS) orthogonalization.
Can be used with domain parallelization but not state parallelization.
The algorithm is defined in Giraud et al., Computers and Mathematics with Applications 50, 1069 (2005).
- drcgs:
Classical Gram-Schmidt orthogonalization with double-step reorthogonalization.
Can be used with domain parallelization but not state parallelization.
The algorithm is taken from Giraud et al., Computers and Mathematics with Applications 50, 1069 (2005).
According to this reference, this is much more precise than CGS or MGS algorithms. The MGS version seems not to improve much the stability and would require more communications over the domains.
Name SubspaceDiagonalization
Section SCF::Eigensolver
Type integer
Default standard
Selects the method to perform subspace diagonalization. The
default is standard, unless states parallelization is used,
when the default is scalapack.
Note that this variable is not parsed in the case of the evolution eigensolver.
Options:
- none:
No subspace diagonalization. WARNING: this will generally give incorrect results.
- standard:
The standard routine. Can be used with domain parallelization but not
state parallelization.
- scalapack:
State-parallelized version using ScaLAPACK. (Requires that
Octopus was compiled with ScaLAPACK support.)