full#
Includes our NEVP solver based on linearization.
Classes:
-
Full–An NEVP solver based on linearization.
Full
#
Full(eig_compute_location: str = 'numpy', use_pinned_memory: bool = True, reduce: bool = False, a_xx_sparsity: tuple[csc_matrix, ...] | None = None)
Bases: NEVP
An NEVP solver based on linearization.
Implemented along the lines of what is described in 1.
-
S. Brück, Ab-initio Quantum Transport Simulations for Nanoelectronic Devices, ETH Zurich, 2017. ↩
Parameters:
-
eig_compute_location(str, default:'numpy') –The location where to compute the eigenvalues and eigenvectors. Can be either "numpy" or "cupy" or "nvmath".
-
use_pinned_memory(bool, default:True) –Whether to use pinned memory if cupy is used. Default is
True. -
reduce(bool, default:False) –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[csc_matrix, ...] or None, default:None) –The sparsity patterns of the coefficient blocks of the NEVP. If
reduceisTrue, this can be provided at instantiation to identify the zero columns and perform the reduction. IfreduceisTrueanda_xxis not provided, the zero columns will be identified at runtime, which may introduce some overhead.
Methods:
-
__call__–Solves the polynomial eigenvalue problem through linearization.
__call__
#
Solves the polynomial eigenvalue problem through linearization.
This method solves the non-linear eigenvalue problem defined by
the coefficient blocks a_xx from lowest to highest order.
Parameters:
-
a_xx(tuple[NDArray, ...]) –The coefficient blocks of the non-linear eigenvalue problem from lowest to highest order.
Returns:
-
ws(NDArray) –The eigenvalues.
-
vs(NDArray) –The right eigenvectors.