GeneralizedDavidsonSolver(absolute_tolerance=None, relative_tolerance=None, maximum_number_of_restarts=None, initialization_method=None)¶
Iterative eigensolver that uses a blocked generalized Davidson algorithm to improve on an initial guess for the eigenstates of the Hamiltonian.
- absolute_tolerance (float) – The absolute tolerance up to which the residuals have to be converged for the algorithm to end.
- relative_tolerance (float) – The amount the residual of the states has to be reduced compared to
the residual of the initial guess. The reduction factor must be between
0.0 and 1.0.
- maximum_number_of_restarts (int) – The maximum number of restarts in the Davidson algorithm. Must be
a positive integer.
- initialization_method (
BasisSetInitialization) – The method used to obtain the initial states for the Generalized Davidson algorithm, see Initialization methods. Default:
Returns: The absolute tolerance up to which the residuals have to be converged for the algorithm to end. Return type: float
Returns: The method used to obtain the initial states for the residual minimizer. Return type:
Returns: The maximum number of restarts in the Davidson algorithm. Return type: int
Returns: The amount the residual of the states has to be reduced compared to the residual of the initial guess. Return type: float
Define a density matrix method that uses the default
algorithm_parameters = AlgorithmParameters( density_matrix_method=GeneralizedDavidsonSolver())
A more robust eigensolver can be defined by tightening the tolerances and increasing the
density_matrix_method = GeneralizedDavidsonSolver( relative_tolerance=0.001, absolute_tolerance=1.0e-7, maximum_number_of_restarts=4) algorithm_parameters = AlgorithmParameters( density_matrix_method=density_matrix_method)
A different initial guess for the states can be chosen by setting the
density_matrix_method = GeneralizedDavidsonSolver( initialization_method=RandomBlochWaveInitialization, ) algorithm_parameters = AlgorithmParameters( density_matrix_method=density_matrix_method)
One can increase the stability of the algorithm by lowering the
relative_factor, which determines
how much the residual of the current guess for the eigenstates has to be reduced in this SCF step.
One can also use the
absolute_tolerance keyword, which determines how small the norm of the
residuals of the wave functions need to be.
At the same time one should increase the
maximum_number_of_restarts, which determines how many
restarts are allowed. When a restart is performed, a new generalized Davidson optimization is started with
the current best guess for the eigenstates as starting vectors.
|[Dav75]||Ernest R. Davidson. The iterative calculation of a few of the lowest eigenvalues and corresponding eigenvectors of large real-symmetric matrices. Journal of Computational Physics, 17(1):87 – 94, 1975. doi:http://dx.doi.org/10.1016/0021-9991(75)90065-0.|
|[MS86]||Ronald B. Morgan and David S. Scott. Generalizations of davidson’s method for computing eigenvalues of sparse symmetric matrices. SIAM Journal on Scientific and Statistical Computing, 7(3):817–825, 1986. doi:10.1137/0907054.|