qttools.boundary_conditions.obc.spectral#
source module qttools.boundary_conditions.obc.spectral
Classes
-
Spectral — Spectral open-boundary condition solver.
source class Spectral(nevp: NEVP, block_sections: int = 1, min_decay: float = 0.001, max_decay: float = 6.9, num_ref_iterations: int = 2, min_propagation: float = 0.01, residual_tolerance: float = 0.001, residual_normalization: bool = True, warning_threshold: float = 0.1, eta_decay: float = 1e-14)
Bases : OBCSolver
Spectral open-boundary condition solver.
This technique of obtaining the surface Green's function is based on the solution of a non-linear eigenvalue problem (NEVP), defined via the system-matrix blocks in the semi-infinite contacts.
Those eigenvalues corresponding to reflected modes are filtered out, so that only the ones that correspond to modes that propagate into the leads or those that decay away from the system are retained.
The surface Green's function is then calculated from these filtered eigenvalues and eigenvectors.
Initializes the spectral OBC solver.
Parameters
-
nevp : NEVP — The non-linear eigenvalue problem solver to use.
-
block_sections : int, optional — The number of sections to split the periodic matrix layer into.
-
min_decay : float, optional — The decay threshold after which modes are considered to be evanescent.
-
max_decay : float, optional — The maximum decay to consider for evanescent modes. The default is 6.9 which corresponds to 1000 in the eigenvalues.
-
num_ref_iterations : int, optional — The number of refinement iterations to perform on the surface Green's function.
-
min_propagation : float, optional — The minimum ratio between the real and imaginary part of the group velocity of a mode. This ratio is used to determine how clearly a mode propagates.
-
residual_tolerance : float, optional — The tolerance for the residual of the NEVP.
-
residual_normalization : bool — If the residual should be normalized by the eigenvalue.
-
warning_threshold : float, optional — The threshold for the relative recursion error above which a warning is issued. This is only used if
return_injectedis True. Otherwise, the intend is that the memoizer wrapper handles the warning. -
eta_decay : float, optional — Small value to separate very slow decaying modes from non-decaying ones.
-
S. Brück, et al., Efficient algorithms for large-scale quantum transport calculations, The Journal of Chemical Physics, 2017. ↩