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 ChebyshevFilterBoundMixing
Section SCF::Eigensolver
Type float
Default 0.5
In the first application of the filter, for the first SCF step, the initial lower bound estimate
is defined as a linear combination of the smallest and largest eigenvalues of the Hamiltonian.
The bound mixing determines the proportion of linear mixing, beta:
$b_{lower} = beta min{\lambda} + (\beta - 1) max{\lambda}$
of the smallest and largest eigenvalues.
Name ChebyshevFilterDegree
Section SCF::Eigensolver
Type integer
Default 10
Used by the Chebyshev filter only.
The degree of the Chebyshev polynomial used to dampen the interval of eigenstates
one is not interested in.
The larger the polynomial, the fewer SCF steps should be required to reach convergence,
however this directly defines the number of matrix-vector products performed on the Hamiltonian
per SCF step.
A value in the range 8 <= ChebyshevFilterDegree <= 20 is reasonable.
Name ChebyshevFilterLanczosOrder
Section SCF::Eigensolver
Type integer
Default 5
Used by the Chebyshev filter only.
The number of Lanczos iterations used to construct the tridiagonal matrix,
from which the upper bound of H is estimated.
A value in the range 4 <= ChebyshevFilterLanczosOrder <= 10 is reasonable.
Values greater than 10 will raise an assertion.
Name ChebyshevFilterNIter
Section SCF::Eigensolver
Type integer
Default 5
The max number of iterations in the first SCF step of the Chebyshev solver. In practice this
does not need to exceed 10, as the eigenstates will vary alot between the first and second
SCF steps.
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.
- chebyshev_filter:
A Chebyshev-filtered subspace iteration method, which avoids most of the explicit computation of
eigenvectors and results in a significant speedup over iterative diagonalization methods.
This method may be viewed as an approach to solve the original nonlinear Kohn-Sham equation by a
nonlinear subspace iteration technique, without emphasizing the intermediate linearized Kohn-Sham
eigenvalue problems. For further details, see [Zhou et. al.](http://dx.doi.org/10.1016/j.jcp.2014.06.056)
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 controls the number of iterations
for which the Hxc potential is frozen. Default is 1 for the imaginary time evolution.
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 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.)