Obc
Options for open-boundary conditions (OBCs).
The OBC solvers compute the surface Green's functions of the contacts. The retarded surface Green's function satisfies the following recursion relation:
where \(\mathbf{m}_{0}\) is the contact Hamiltonian, \(\mathbf{m}_{-1}\) is the coupling from the device to the contact, and \(\mathbf{m}_{+1}\) is the coupling from the contact to the device. In the NEGF framework, the system matrix \(\mathbf{m}\) includes scattering self-energies.
More information on the boundary conditions can be found in the user guide section on open boundary conditions.
algorithm#
The algorithm to use when solving the OBC recursion relation.
-
"sancho-rubio": Uses the Sancho-Rubio iterative scheme1 to compute the surface Green's functions. This method achieves exponential convergence compared to the linear convergence of fixed-point iterations. -
"spectral": Uses the specifiednevp_solverto compute eigenpairs of the polynomial contact eigenvalue problem and uses them to construct the surface Green's functions. This is generally more efficient method when combined with a contour integral NEVP solver ("beyn"), but can require more parameter tuning.
nevp_solver#
The NEVP solver to use for the spectral OBC algorithm.
The contact eigenvalue problem is a polynomial eigenvalue problem of the form:
where \(b\) is the number of block_sections, and
\(\hat{\mathbf{m}}_{n}\) are potentially reduced coupling matrices.
From selected eigenvalues \(\lambda = e^{i k}\) and eigenvectors \(\mathbf{v}\), the surface Green's functions can be constructed.
-
"beyn": Uses the Beyn's contour integral method2 to solve the NEVP and find the eigenpairs within a specified contour in the complex plane. Also see ther_o,r_i,m_0, andnum_quad_pointsparameters for configuration of the contour integral method. -
"full": Uses a full dense eigensolver to solve for all eigenvalues, linearizing the original polynomial problem. This results in a doubled problem size which is also not reduced by block sectioning or exploiting periodicity.
Note
Only used if algorithm is set to "spectral".
block_sections#
The number of unit cell blocks along transport direction.
Note
This is automatically determined in QTBM calculations. Thus it only has an effect in NEGF calculations.
In NEGF calculations, one needs to define block-sizes that lead to a block-tridiagonal tiling of the system matrix. These transport blocks are sometimes constructed from multiple unit cells.
With the block_sections parameter, one can
specify how many unit cells are merged into a single transport
block. This is then used when nevp_solver is set
to "beyn" to reduce the size of the contact NEVP.
For example, if the transport cell is constructed from two unit
cells along the transport direction, setting block_sections = 2
will halve the size of the NEVP. The contact transport blocks need
to be sorted accordingly.
min_decay#
The minimum rate by which a mode must decay to be considered evanescent.
The decay rate is computed as \(\|\mathrm{Im}(k)\|\) where \(k\) is the complex wavevector of the mode.
This is used to classify the modes obtained from the spectral OBC solver into propagating modes and evanescent modes. Modes with decay rates below this threshold are considered propagating.
max_decay#
The maximum rate a mode can decay while still being considered relevant for the surface Green's functions.
The decay rate is computed as \(\|\mathrm{Im}(k)\|\) where \(k\) is the complex wavevector of the mode.
Very rapidly decaying modes do not contribute to the surface Green's functions and can be neglected. These modes should be filtered out as including them can lead to numerical instabilities.
If max_decay is not set, it is computed from the outer contour
radius as 1.5 * log(r_o).
num_ref_iterations#
The number of fixed-point iterations used to refine the surface Green's functions.
This is needed to improve the accuracy of the surface Green's functions, especially if not enough eigenpairs are considered.
Note
Only used if algorithm is set to "spectral".
min_propagation#
The minimum group velocity propagation/decay ratio for a mode to be considered.
This ratio is determined by dividing the real part of the group velocity by the imaginary part of the group velocity:
residual_tolerance#
The tolerance on the residual of an eigenpair.
The eigenpair residuals are computed as by inserting the eigenvalues and eigenvectors back into the polynomial eigenvalue problem.
Modes exceeding this tolerance are considered spurious and are discarded.
Note
Only used if algorithm is set to "spectral".
residual_normalization#
Whether to consider relative residuals instead of absolute residuals when filtering eigenpairs.
This is useful to avoid that large eigenvalues will have larger absolute residuals than small eigenvalues.
warning_threshold#
The threshold for issuing a warning about the surface Green's functions recursion residual.
This residual is computed as
Note
This parameter is only used if the
formalism = "wf". Otherwise, the
memoizer is responsible for residual checking and issuing
warnings.
eta_decay#
Small value to separate very slowly decaying modes from perfectly propagating ones.
Modes that are very close to the unit circle could get misclassified
via the min_decay and
min_propagation conditions, i.e., when their
decay rate is smaller than min_decay but their
propagation/decay ratio is not pronounced enough. Modes with decay
rates smaller than this value are considered as perfectly
propagating modes, even if the propagation/decay ratio is not above
the min_propagation threshold.
max_iterations#
The maximum number of iterations for the Sancho-Rubio method.
A warning is issued if the method does not converge within this number of iterations.
convergence_tol#
The convergence tolerance for the Sancho-Rubio method.
This is the Frobenius norm of the update matrices alpha and beta
in the Sancho-Rubio method. Note that the norm is taken over the
entire energy batch.
r_o#
The outer radius of the contour in the complex plane for the
contour nevp methods ("beyn").
This parameter should not be too large to avoid having too many eigenpairs inside the contour. It should also not be too small to avoid missing important eigenpairs. If an eigenpair is very close to the contour, it can lead to numerical instabilities.
r_i#
The inner radius of the contour in the complex plane for the contour methods.
This must be less than one to capture propagating modes, but should not be too small to avoid including too many decaying modes.
m_0#
The subspace guess in the contour methods.
The guess has to be larger than the expected number of eigenvalues inside the contour. If too small, the method will fail. If too large, the method will be less efficient.
num_quad_points#
The number of quadrature points for the contour integrals.
memoizer#
Options for memoizing the surface Green's functions.
-
M. P. Lopez Sancho, et al., 1985 J. Phys. F: Met. Phys. 15 851, https://doi.org/10.1088/0305-4608/15/4/009 ↩
-
W.-J. Beyn, An integral method for solving nonlinear eigenvalue problems, Linear Algebra and its Applications, 2012, https://doi.org/10.1016/j.laa.2011.03.030. ↩