Scroll to navigation

elpa_eigenvectors(3) Library Functions Manual elpa_eigenvectors(3)

NAME

elpa_eigenvectors - computes all eigenvalues and (part of) the eigenvectors for a real symmetric or complex hermitian eigenproblem: A*Q = λ*Q

There are also variations of this routine that can accept not only host but also device pointers as input/output. Names of these routines explicitly contain the corresponding datatypes: elpa_eigenvectors_double, elpa_eigenvectors_float, elpa_eigenvectors_double_complex, elpa_eigenvectors_float_complex.

SYNOPSIS

FORTRAN INTERFACE

use elpa
class(elpa_t), pointer :: elpa_handle

call elpa_handle%eigenvectors (a, ev, q, error)

With the definitions of the input and output variables:

An instance of the ELPA object.
The local part of matrix A for which the eigenvalues and (part of) eigenvectors should be computed. The dimensions of matrix a must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype of the matrix can be one of "real(kind=c_double)", "real(kind=c_float)", "complex(kind=c_double)", or "complex(kind=c_float)". The global matrix has to be symmetric or hermitian, this is not checked by the routine.
The global array where the eigenvalues λ will be stored in ascending order. The datatype_real of ev can be either "real(kind=c_double)" or "real(kind=c_float)", depending of the datatype of the matrix. Note that complex hermitian matrices also have real eigenvalues.
The storage space for the computed eigenvectors Q. The number of requested eigenvectors must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype of the matrix can be one of "real(kind=c_double)", "real(kind=c_float)", "complex(kind=c_double)", or "complex(kind=c_float)".
The return error code of the function. Should be "ELPA_OK". The error code can be queried with the function elpa_strerr(3).

C/C++ INTERFACE

#include <elpa/elpa.h>
elpa_t elpa_handle;

void elpa_eigenvectors(elpa_t elpa_handle, datatype *a, datatype_real *ev, datatype *q, int *error);

With the definitions of the input and output variables:

The handle to the ELPA object
The local part of matrix A for which the eigenvalues and (part of) eigenvectors should be computed. The dimensions of the matrix must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype can be one of "double", "float", "double complex"/"std::complex<double>", "float complex"/"std::complex<float>" for C/C++. The global matrix has to be symmetric or hermitian, this is not checked by the routine.
The global array where the eigenvalues λ will be stored in ascending order. The datatype_real can be either "double" or "float", depending of the datatype of the matrix. Note that the eigenvalues of complex hermitian matrices are also real.
The storage space for the computed eigenvectors Q. The number of requested eigenvectors must be set BEFORE with the methods elpa_set(3) and elpa_setup(3). The datatype can be one of "double", "float", "double complex"/"std::complex<double>", "float complex"/"std::complex<float>" for C/C++.
The error code of the function. Should be "ELPA_OK". The error codes can be queried with elpa_strerr(3)

DESCRIPTION

Computes the eigenvalues and (part of) the eigenvector spectrum of a real symmetric or complex hermitian matrix. The functions elpa_init(3), elpa_allocate(3), elpa_set(3), and elpa_setup(3) must be called BEFORE elpa_eigenvectors can be called. In particular, the number of eigenvectors to be computed, "nev", must be set with elpa_set(3).

SEE ALSO

elpa2_print_kernels(1) elpa_init(3) elpa_allocate(3) elpa_set(3) elpa_setup(3) elpa_strerr(3) elpa_eigenvalues(3) elpa_skew_eigenvalues(3) elpa_skew_eigenvectors(3) elpa_cholesky(3) elpa_invert_triangular(3) elpa_solve_tridiagonal(3) elpa_hermitian_multiply(3) elpa_uninit(3) elpa_deallocate(3)

Thu Nov 28 2024 ELPA