Skip to content

qttools.nevp#

source package qttools.nevp

Classes

  • Beyn Beyn's integral method for solving NEVP.1

  • NEVP Abstract base class for the non-linear eigenvalue solvers.

  • Full An NEVP solver based on linearization.

source class Beyn(r_o: float, r_i: float, m_0: int, num_quad_points: int, num_threads_contour: int = 1024, eig_compute_location: str = 'numpy', project_compute_location: str = 'numpy', use_qr: bool = False, contour_batch_size: int | None = None, use_pinned_memory: bool = True)

Bases : NEVP

Beyn's integral method for solving NEVP.1

This is implemented along the lines of what is described in 2.

Initializes the Beyn NEVP solver.

Parameters

  • r_o : float The outer radius of the annulus for the contour integration.

  • r_i : float The inner radius of the annulus for the contour integration.

  • m_0 : int Guess for the number of eigenvalues that lie in the subspace.

  • num_quad_points : int The number of quadrature points to use for the contour integration.

  • num_threads_contour : int, optional The number of cuda threads to use for the contour integration kernel. Only relevant for GPU computations.

  • eig_compute_location : str, optional The location where to compute the eigenvalues and eigenvectors. Can be either "numpy" or "cupy" or "nvmath".

  • project_compute_location : str, optional The location where to compute the singular value or qr decomposition for the projector. Can be either "numpy" or "cupy".

  • use_qr : bool, optional Whether to use QR decomposition for the projector instead of SVD. Default is False.

  • contour_batch_size : int, optional The batch size for the contour integration kernel. If None, the batch size is set to num_quad_points.

  • use_pinned_memory : bool, optional Whether to use pinnend memory if cupy is used. Default is True.

source class NEVP()

Bases : ABC

Abstract base class for the non-linear eigenvalue solvers.

source class Full(eig_compute_location: str = 'numpy', use_pinned_memory: bool = True, reduce: bool = False, a_xx_sparsity: tuple[sparse.csc_matrix, ...] | None = None)

Bases : NEVP

An NEVP solver based on linearization.

Implemented along the lines of what is described in 1.

Initializes the Full NEVP solver.

Parameters

  • eig_compute_location : str, optional The location where to compute the eigenvalues and eigenvectors. Can be either "numpy" or "cupy" or "nvmath".

  • use_pinned_memory : bool, optional Whether to use pinnend memory if cupy is used. Default is True.

  • reduce : bool, optional Whether to reduce the problem size by eliminating columns that are zero in the first and last coefficient blocks. These columns correspond to eigenvalues that are infinity or zero.

  • a_xx_sparsity : tuple[sparse.csc_matrix, ...] or None, optional The sparsity patterns of the coefficient blocks of the NEVP. If reduce is True, this can be provided at instantiation to identify the zero columns and perform the reduction. If reduce is True and a_xx is not provided, the zero columns will be identified at runtime, which may introduce some overhead.


  1. S. Brück, Ab-initio Quantum Transport Simulations for Nanoelectronic Devices, ETH Zurich, 2017. 

  2. S. Brück, Ab-initio Quantum Transport Simulations for Nanoelectronic Devices, ETH Zurich, 2017.