IterativeDiagonalizationSolver¶
- class IterativeDiagonalizationSolver(bands_around_fermi_level=None, target_fermi_level=None, subspace_dimension_factor=None, interior_eigenvalue_strategy=None, max_iterations=None)¶
Constructor for the iterative subspace diagonalizaton solver. This solver uses a Krylov-Schur algorithm as implemented in SLEPc and it allows to calculate interior eigenvalues around a target value.
- Parameters:
bands_around_fermi_level (Positive int) – The number of bands around the Fermi level per principal spin channel. Default:
12
target_fermi_level (PhysicalQuantity of type energy | list of 2 PhysicalQuantity of type energy. Default:
None
) – The energy around which the eigenvalues are searched. Typically, you want to use the corresponding intrinsic bulk Fermi level. A user-specified target fermi level can allow in certain cases to avoid an expensive update on the configuration. For Polarized calculations, a value per spin channel can be specified. Default: The fermi level from the updated configuration.subspace_dimension_factor (float) – The subspace dimension used for the iterative solver, as a multiple of bands_around_fermi_level. A subspace larger than bands_around_fermi_level can be required to find degenerate eigenvalues or increase convergence for the lowest eigenvalues. It must be at least
1
. Default:4.0
interior_eigenvalue_strategy (
HarmonicExtraction
|ShiftAndInvert
) – Flag to select the strategy used for targeting interior eigenvalues.ShiftAndInvert
instructs the solver to perform a shift-and-invert spectral transformation to enhance convergence of Eigenvalues closest to the target Fermi level.HarmonicExtraction
is an extraction technique which allows to avoid an explicit shift-and-invert operation, hence being significantly more efficient. Default:ShiftAndInvert
max_iterations (int) – The max number of iterations of the iterative diagonalization solver. It must be greater than 0. Default:
1000
- bandsAroundFermiLevel()¶
- Returns:
Specified number of bands that was determined around the Fermi level.
- Return type:
Non-negative int
- interiorEigenvalueStrategy()¶
- Returns:
The interior eigenvalue strategy.
- Return type:
HarmonicExtraction
|ShiftAndInvert
- maxIterations()¶
- Returns:
The max number of iterations.
- Return type:
Positive int
- subspaceDimensionFactor()¶
- Returns:
The subspace dimension factor.
- Return type:
float
- targetFermiLevel()¶
- Returns:
The target/requested Fermi level in absolute energy.
- Return type:
PhysicalQuantity
of type energy
- uniqueString()¶
Return a unique string representing the state of the object.
Note
When dealing with larger systems using an orthogonal basis set, setting interior_eigenvalue_strategy
to HarmonicExtraction
might be a significantly faster and less memory-demanding option. However, HarmonicExtraction
can be
less robust compared to ShiftAndInvert
.