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.