Skip to content

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.


  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 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.

Methods:

  • __call__

    Solves the polynomial eigenvalue problem through linearization.

__call__ #

__call__(a_xx: tuple[NDArray, ...]) -> tuple[NDArray, NDArray]

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.