SIRIUS 7.5.0
Electronic structure library and applications
Public Member Functions | Private Attributes | List of all members
sirius::la::Eigensolver_scalapack Class Reference

Inherits sirius::la::Eigensolver.

Public Member Functions

template<typename T , typename = std::enable_if_t<!std::is_scalar<T>::value>>
int solve_ (ftn_int matrix_size__, dmatrix< T > &A__, real_type< T > *eval__, dmatrix< T > &Z__)
 Solve a standard eigen-value problem for all eigen-pairs. More...
 
int solve (ftn_int matrix_size__, dmatrix< std::complex< double > > &A__, double *eval__, dmatrix< std::complex< double > > &Z__) override
 wrapper for solving a standard eigen-value problem for all eigen-pairs. More...
 
int solve (ftn_int matrix_size__, dmatrix< std::complex< float > > &A__, float *eval__, dmatrix< std::complex< float > > &Z__) override
 Solve a standard eigen-value problem for all eigen-pairs. More...
 
template<typename T , typename = std::enable_if_t<std::is_scalar<T>::value>>
int solve_ (ftn_int matrix_size__, dmatrix< T > &A__, T *eval__, dmatrix< T > &Z__)
 
int solve (ftn_int matrix_size__, dmatrix< double > &A__, double *eval__, dmatrix< double > &Z__) override
 Solve a standard eigen-value problem for all eigen-pairs. More...
 
int solve (ftn_int matrix_size__, dmatrix< float > &A__, float *eval__, dmatrix< float > &Z__) override
 Solve a standard eigen-value problem for all eigen-pairs. More...
 
template<typename T , typename = std::enable_if_t<std::is_scalar<T>::value>>
int solve_ (ftn_int matrix_size__, ftn_int nev__, dmatrix< T > &A__, T *eval__, dmatrix< T > &Z__)
 Solve a standard eigen-value problem for N lowest eigen-pairs. More...
 
int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< double > &A__, double *eval__, dmatrix< double > &Z__) override
 Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs. More...
 
int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< float > &A__, float *eval__, dmatrix< float > &Z__) override
 Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs. More...
 
template<typename T , typename = std::enable_if_t<!std::is_scalar<T>::value>>
int solve_ (ftn_int matrix_size__, ftn_int nev__, dmatrix< T > &A__, real_type< T > *eval__, dmatrix< T > &Z__)
 Solve a standard eigen-value problem for N lowest eigen-pairs. More...
 
int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< std::complex< double > > &A__, double *eval__, dmatrix< std::complex< double > > &Z__) override
 Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs. More...
 
int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< std::complex< float > > &A__, float *eval__, dmatrix< std::complex< float > > &Z__) override
 Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs. More...
 
template<typename T , typename = std::enable_if_t<std::is_scalar<T>::value>>
int solve_ (ftn_int matrix_size__, ftn_int nev__, dmatrix< T > &A__, dmatrix< T > &B__, T *eval__, dmatrix< T > &Z__)
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< double > &A__, dmatrix< double > &B__, double *eval__, dmatrix< double > &Z__) override
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< float > &A__, dmatrix< float > &B__, float *eval__, dmatrix< float > &Z__) override
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
template<typename T , typename = std::enable_if_t<!std::is_scalar<T>::value>>
int solve_ (ftn_int matrix_size__, ftn_int nev__, dmatrix< T > &A__, dmatrix< T > &B__, real_type< T > *eval__, dmatrix< T > &Z__)
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< std::complex< double > > &A__, dmatrix< std::complex< double > > &B__, double *eval__, dmatrix< std::complex< double > > &Z__) override
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< std::complex< float > > &A__, dmatrix< std::complex< float > > &B__, float *eval__, dmatrix< std::complex< float > > &Z__) override
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
- Public Member Functions inherited from sirius::la::Eigensolver
 Eigensolver (ev_solver_t type__, bool is_parallel__, sddk::memory_t host_memory_t__, sddk::memory_t data_memory_t__)
 Constructor. More...
 
virtual ~Eigensolver ()
 Destructor. More...
 
virtual int solve (ftn_int matrix_size__, dmatrix< double > &A__, double *eval__, dmatrix< double > &Z__)
 Solve a standard eigen-value problem for all eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, dmatrix< std::complex< double > > &A__, double *eval__, dmatrix< std::complex< double > > &Z__)
 Solve a standard eigen-value problem for all eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, dmatrix< float > &A__, float *eval__, dmatrix< float > &Z__)
 Solve a standard eigen-value problem for all eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, dmatrix< std::complex< float > > &A__, float *eval__, dmatrix< std::complex< float > > &Z__)
 Solve a standard eigen-value problem for all eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< double > &A__, double *eval__, dmatrix< double > &Z__)
 Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< std::complex< double > > &A__, double *eval__, dmatrix< std::complex< double > > &Z__)
 Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< float > &A__, float *eval__, dmatrix< float > &Z__)
 Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< std::complex< float > > &A__, float *eval__, dmatrix< std::complex< float > > &Z__)
 Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, dmatrix< double > &A__, dmatrix< double > &B__, double *eval__, dmatrix< double > &Z__)
 Solve a generalized eigen-value problem for all eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, dmatrix< std::complex< double > > &A__, dmatrix< std::complex< double > > &B__, double *eval__, dmatrix< std::complex< double > > &Z__)
 Solve a generalized eigen-value problem for all eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, dmatrix< float > &A__, dmatrix< float > &B__, float *eval__, dmatrix< float > &Z__)
 Solve a generalized eigen-value problem for all eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, dmatrix< std::complex< float > > &A__, dmatrix< std::complex< float > > &B__, float *eval__, dmatrix< std::complex< float > > &Z__)
 Solve a generalized eigen-value problem for all eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< double > &A__, dmatrix< double > &B__, double *eval__, dmatrix< double > &Z__)
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< std::complex< double > > &A__, dmatrix< std::complex< double > > &B__, double *eval__, dmatrix< std::complex< double > > &Z__)
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< float > &A__, dmatrix< float > &B__, float *eval__, dmatrix< float > &Z__)
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
virtual int solve (ftn_int matrix_size__, ftn_int nev__, dmatrix< std::complex< float > > &A__, dmatrix< std::complex< float > > &B__, float *eval__, dmatrix< std::complex< float > > &Z__)
 Solve a generalized eigen-value problem for N lowest eigen-pairs. More...
 
bool is_parallel () const
 Parallel or sequential solver. More...
 
sddk::memory_t host_memory_t () const
 Type of host memory, required by the solver. More...
 
sddk::memory_t data_memory_t () const
 Type of input memory for the solver. More...
 
ev_solver_t type () const
 Type of eigen-solver. More...
 

Private Attributes

double const ortfac_ {1e-6}
 
double const abstol_ {1e-12}
 

Additional Inherited Members

- Protected Attributes inherited from sirius::la::Eigensolver
ev_solver_t ev_solver_type_
 Type of the eigen-value solver. More...
 
const std::string error_msg_not_implemented = "solver is not implemented"
 Common error message. More...
 
bool is_parallel_ {false}
 True if solver is MPI parallel. More...
 
sddk::memory_t host_memory_t_ {sddk::memory_t::none}
 Type of host memory needed for the solver. More...
 
sddk::memory_t data_memory_t_ {sddk::memory_t::none}
 Type of input data memory. More...
 

Detailed Description

Definition at line 493 of file eigenproblem.hpp.

Constructor & Destructor Documentation

◆ Eigensolver_scalapack()

sirius::la::Eigensolver_scalapack::Eigensolver_scalapack ( )
inline

Definition at line 500 of file eigenproblem.hpp.

Member Function Documentation

◆ solve_() [1/6]

template<typename T , typename = std::enable_if_t<!std::is_scalar<T>::value>>
int sirius::la::Eigensolver_scalapack::solve_ ( ftn_int  matrix_size__,
dmatrix< T > &  A__,
real_type< T > *  eval__,
dmatrix< T > &  Z__ 
)
inline

Solve a standard eigen-value problem for all eigen-pairs.

Definition at line 507 of file eigenproblem.hpp.

◆ solve() [1/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
dmatrix< std::complex< double > > &  A__,
double *  eval__,
dmatrix< std::complex< double > > &  Z__ 
)
inlineoverridevirtual

wrapper for solving a standard eigen-value problem for all eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 568 of file eigenproblem.hpp.

◆ solve() [2/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
dmatrix< std::complex< float > > &  A__,
float *  eval__,
dmatrix< std::complex< float > > &  Z__ 
)
inlineoverridevirtual

Solve a standard eigen-value problem for all eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 574 of file eigenproblem.hpp.

◆ solve_() [2/6]

template<typename T , typename = std::enable_if_t<std::is_scalar<T>::value>>
int sirius::la::Eigensolver_scalapack::solve_ ( ftn_int  matrix_size__,
dmatrix< T > &  A__,
T *  eval__,
dmatrix< T > &  Z__ 
)
inline

Definition at line 581 of file eigenproblem.hpp.

◆ solve() [3/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
dmatrix< double > &  A__,
double *  eval__,
dmatrix< double > &  Z__ 
)
inlineoverridevirtual

Solve a standard eigen-value problem for all eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 633 of file eigenproblem.hpp.

◆ solve() [4/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
dmatrix< float > &  A__,
float *  eval__,
dmatrix< float > &  Z__ 
)
inlineoverridevirtual

Solve a standard eigen-value problem for all eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 639 of file eigenproblem.hpp.

◆ solve_() [3/6]

template<typename T , typename = std::enable_if_t<std::is_scalar<T>::value>>
int sirius::la::Eigensolver_scalapack::solve_ ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< T > &  A__,
T *  eval__,
dmatrix< T > &  Z__ 
)
inline

Solve a standard eigen-value problem for N lowest eigen-pairs.

Definition at line 647 of file eigenproblem.hpp.

◆ solve() [5/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< double > &  A__,
double *  eval__,
dmatrix< double > &  Z__ 
)
inlineoverridevirtual

Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 755 of file eigenproblem.hpp.

◆ solve() [6/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< float > &  A__,
float *  eval__,
dmatrix< float > &  Z__ 
)
inlineoverridevirtual

Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 761 of file eigenproblem.hpp.

◆ solve_() [4/6]

template<typename T , typename = std::enable_if_t<!std::is_scalar<T>::value>>
int sirius::la::Eigensolver_scalapack::solve_ ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< T > &  A__,
real_type< T > *  eval__,
dmatrix< T > &  Z__ 
)
inline

Solve a standard eigen-value problem for N lowest eigen-pairs.

Definition at line 769 of file eigenproblem.hpp.

◆ solve() [7/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< std::complex< double > > &  A__,
double *  eval__,
dmatrix< std::complex< double > > &  Z__ 
)
inlineoverridevirtual

Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 885 of file eigenproblem.hpp.

◆ solve() [8/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< std::complex< float > > &  A__,
float *  eval__,
dmatrix< std::complex< float > > &  Z__ 
)
inlineoverridevirtual

Solve a standard eigen-value problem of a sub-matrix for N lowest eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 891 of file eigenproblem.hpp.

◆ solve_() [5/6]

template<typename T , typename = std::enable_if_t<std::is_scalar<T>::value>>
int sirius::la::Eigensolver_scalapack::solve_ ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< T > &  A__,
dmatrix< T > &  B__,
T *  eval__,
dmatrix< T > &  Z__ 
)
inline

Solve a generalized eigen-value problem for N lowest eigen-pairs.

Definition at line 899 of file eigenproblem.hpp.

◆ solve() [9/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< double > &  A__,
dmatrix< double > &  B__,
double *  eval__,
dmatrix< double > &  Z__ 
)
inlineoverridevirtual

Solve a generalized eigen-value problem for N lowest eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 1009 of file eigenproblem.hpp.

◆ solve() [10/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< float > &  A__,
dmatrix< float > &  B__,
float *  eval__,
dmatrix< float > &  Z__ 
)
inlineoverridevirtual

Solve a generalized eigen-value problem for N lowest eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 1015 of file eigenproblem.hpp.

◆ solve_() [6/6]

template<typename T , typename = std::enable_if_t<!std::is_scalar<T>::value>>
int sirius::la::Eigensolver_scalapack::solve_ ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< T > &  A__,
dmatrix< T > &  B__,
real_type< T > *  eval__,
dmatrix< T > &  Z__ 
)
inline

Solve a generalized eigen-value problem for N lowest eigen-pairs.

Definition at line 1023 of file eigenproblem.hpp.

◆ solve() [11/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< std::complex< double > > &  A__,
dmatrix< std::complex< double > > &  B__,
double *  eval__,
dmatrix< std::complex< double > > &  Z__ 
)
inlineoverridevirtual

Solve a generalized eigen-value problem for N lowest eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 1153 of file eigenproblem.hpp.

◆ solve() [12/12]

int sirius::la::Eigensolver_scalapack::solve ( ftn_int  matrix_size__,
ftn_int  nev__,
dmatrix< std::complex< float > > &  A__,
dmatrix< std::complex< float > > &  B__,
float *  eval__,
dmatrix< std::complex< float > > &  Z__ 
)
inlineoverridevirtual

Solve a generalized eigen-value problem for N lowest eigen-pairs.

Reimplemented from sirius::la::Eigensolver.

Definition at line 1160 of file eigenproblem.hpp.

Member Data Documentation

◆ ortfac_

double const sirius::la::Eigensolver_scalapack::ortfac_ {1e-6}
private

Definition at line 496 of file eigenproblem.hpp.

◆ abstol_

double const sirius::la::Eigensolver_scalapack::abstol_ {1e-12}
private

Definition at line 497 of file eigenproblem.hpp.


The documentation for this class was generated from the following file: