18#ifndef linearAlgebraOperations_h 
   19#define linearAlgebraOperations_h 
   33#ifndef DOXYGEN_SHOULD_SKIP_THIS 
   37    dgemv_(
const char         *TRANS,
 
   38           const unsigned int *M,
 
   39           const unsigned int *N,
 
   42           const unsigned int *
LDA,
 
   44           const unsigned int *INCX,
 
   47           const unsigned int *INCY);
 
   50    sgemv_(
const char         *TRANS,
 
   51           const unsigned int *M,
 
   52           const unsigned int *N,
 
   55           const unsigned int *
LDA,
 
   57           const unsigned int *INCX,
 
   60           const unsigned int *INCY);
 
   63    zgemv_(
const char                 *TRANS,
 
   64           const unsigned int         *M,
 
   65           const unsigned int         *N,
 
   66           const std::complex<double> *alpha,
 
   67           const std::complex<double> *A,
 
   68           const unsigned int         *
LDA,
 
   69           const std::complex<double> *X,
 
   70           const unsigned int         *INCX,
 
   71           const std::complex<double> *beta,
 
   72           std::complex<double>       *C,
 
   73           const unsigned int         *INCY);
 
   76    cgemv_(
const char                *TRANS,
 
   77           const unsigned int        *M,
 
   78           const unsigned int        *N,
 
   79           const std::complex<float> *alpha,
 
   80           const std::complex<float> *A,
 
   81           const unsigned int        *
LDA,
 
   82           const std::complex<float> *X,
 
   83           const unsigned int        *INCX,
 
   84           const std::complex<float> *beta,
 
   85           std::complex<float>       *C,
 
   86           const unsigned int        *INCY);
 
   88    dsymv_(
const char         *UPLO,
 
   89           const unsigned int *N,
 
   92           const unsigned int *
LDA,
 
   94           const unsigned int *INCX,
 
   97           const unsigned int *INCY);
 
  108    dsysv_(
const char *UPLO,
 
  120    dscal_(
const unsigned int *n,
 
  123           const unsigned int *inc);
 
  125    sscal_(
const unsigned int *n,
 
  128           const unsigned int *inc);
 
  130    zscal_(
const unsigned int         *n,
 
  131           const std::complex<double> *alpha,
 
  132           std::complex<double>       *x,
 
  133           const unsigned int         *inc);
 
  135    zdscal_(
const unsigned int   *n,
 
  137            std::complex<double> *x,
 
  138            const unsigned int   *inc);
 
  140    daxpy_(
const unsigned int *n,
 
  143           const unsigned int *incx,
 
  145           const unsigned int *incy);
 
  147    saxpy_(
const unsigned int *n,
 
  150           const unsigned int *incx,
 
  152           const unsigned int *incy);
 
  154    dgemm_(
const char         *transA,
 
  156           const unsigned int *m,
 
  157           const unsigned int *n,
 
  158           const unsigned int *k,
 
  161           const unsigned int *lda,
 
  163           const unsigned int *ldb,
 
  166           const unsigned int *ldc);
 
  168    sgemm_(
const char         *transA,
 
  170           const unsigned int *m,
 
  171           const unsigned int *n,
 
  172           const unsigned int *k,
 
  175           const unsigned int *lda,
 
  177           const unsigned int *ldb,
 
  180           const unsigned int *ldc);
 
  182    dsyevd_(
const char         *jobz,
 
  184            const unsigned int *n,
 
  186            const unsigned int *lda,
 
  189            const unsigned int *lwork,
 
  191            const unsigned int *liwork,
 
  194    dsygvx_(
const int    *itype,
 
  207            const double *abstol,
 
  218    dsyevx_(
const char   *jobz,
 
  228            const double *abstol,
 
  239    dlamch_(
const char *cmach);
 
  241    dsyevr_(
const char         *jobz,
 
  244            const unsigned int *n,
 
  246            const unsigned int *lda,
 
  249            const unsigned int *il,
 
  250            const unsigned int *iu,
 
  251            const double       *abstol,
 
  252            const unsigned int *m,
 
  255            const unsigned int *ldz,
 
  256            unsigned int       *isuppz,
 
  263    dsyrk_(
const char         *uplo,
 
  265           const unsigned int *n,
 
  266           const unsigned int *k,
 
  269           const unsigned int *lda,
 
  272           const unsigned int *ldc);
 
  274    dsyr_(
const char         *uplo,
 
  275          const unsigned int *n,
 
  278          const unsigned int *incx,
 
  280          const unsigned int *lda);
 
  282    dsyr2_(
const char         *uplo,
 
  283           const unsigned int *n,
 
  286           const unsigned int *incx,
 
  288           const unsigned int *incy,
 
  290           const unsigned int *lda);
 
  292    dcopy_(
const unsigned int *n,
 
  294           const unsigned int *incx,
 
  296           const unsigned int *incy);
 
  298    scopy_(
const unsigned int *n,
 
  300           const unsigned int *incx,
 
  302           const unsigned int *incy);
 
  304    zgemm_(
const char                 *transA,
 
  306           const unsigned int         *m,
 
  307           const unsigned int         *n,
 
  308           const unsigned int         *k,
 
  309           const std::complex<double> *alpha,
 
  310           const std::complex<double> *A,
 
  311           const unsigned int         *lda,
 
  312           const std::complex<double> *B,
 
  313           const unsigned int         *ldb,
 
  314           const std::complex<double> *beta,
 
  315           std::complex<double>       *C,
 
  316           const unsigned int         *ldc);
 
  318    cgemm_(
const char                *transA,
 
  320           const unsigned int        *m,
 
  321           const unsigned int        *n,
 
  322           const unsigned int        *k,
 
  323           const std::complex<float> *alpha,
 
  324           const std::complex<float> *A,
 
  325           const unsigned int        *lda,
 
  326           const std::complex<float> *B,
 
  327           const unsigned int        *ldb,
 
  328           const std::complex<float> *beta,
 
  329           std::complex<float>       *C,
 
  330           const unsigned int        *ldc);
 
  332    zheevd_(
const char           *jobz,
 
  334            const unsigned int   *n,
 
  335            std::complex<double> *A,
 
  336            const unsigned int   *lda,
 
  338            std::complex<double> *work,
 
  339            const unsigned int   *lwork,
 
  341            const unsigned int   *lrwork,
 
  343            const unsigned int   *liwork,
 
  346    zheevr_(
const char           *jobz,
 
  349            const unsigned int   *n,
 
  350            std::complex<double> *A,
 
  351            const unsigned int   *lda,
 
  354            const unsigned int   *il,
 
  355            const unsigned int   *iu,
 
  356            const double         *abstol,
 
  357            const unsigned int   *m,
 
  359            std::complex<double> *Z,
 
  360            const unsigned int   *ldz,
 
  361            unsigned int         *isuppz,
 
  362            std::complex<double> *work,
 
  370    zherk_(
const char                 *uplo,
 
  372           const unsigned int         *n,
 
  373           const unsigned int         *k,
 
  375           const std::complex<double> *A,
 
  376           const unsigned int         *lda,
 
  378           std::complex<double>       *C,
 
  379           const unsigned int         *ldc);
 
  381    zcopy_(
const unsigned int         *n,
 
  382           const std::complex<double> *x,
 
  383           const unsigned int         *incx,
 
  384           std::complex<double>       *y,
 
  385           const unsigned int         *incy);
 
  388    ccopy_(
const unsigned int        *n,
 
  389           const std::complex<float> *x,
 
  390           const unsigned int        *incx,
 
  391           std::complex<float>       *y,
 
  392           const unsigned int        *incy);
 
  395    zdotc_(
const unsigned int         *N,
 
  396           const std::complex<double> *X,
 
  397           const unsigned int         *INCX,
 
  398           const std::complex<double> *Y,
 
  399           const unsigned int         *INCY);
 
  401    cdotc_(
const unsigned int        *N,
 
  402           const std::complex<float> *X,
 
  403           const unsigned int        *INCX,
 
  404           const std::complex<float> *Y,
 
  405           const unsigned int        *INCY);
 
  407    ddot_(
const unsigned int *N,
 
  409          const unsigned int *INCX,
 
  411          const unsigned int *INCY);
 
  413    sdot_(
const unsigned int *N,
 
  415          const unsigned int *INCX,
 
  417          const unsigned int *INCY);
 
  419    dnrm2_(
const unsigned int *n, 
const double *x, 
const unsigned int *incx);
 
  422    dznrm2_(
const unsigned int         *n,
 
  423            const std::complex<double> *x,
 
  424            const unsigned int         *incx);
 
  426    zaxpy_(
const unsigned int         *n,
 
  427           const std::complex<double> *alpha,
 
  428           const std::complex<double> *x,
 
  429           const unsigned int         *incx,
 
  430           std::complex<double>       *y,
 
  431           const unsigned int         *incy);
 
  433    caxpy_(
const unsigned int        *n,
 
  434           const std::complex<float> *alpha,
 
  435           const std::complex<float> *x,
 
  436           const unsigned int        *incx,
 
  437           std::complex<float>       *y,
 
  438           const unsigned int        *incy);
 
  440    dpotrf_(
const char         *uplo,
 
  441            const unsigned int *n,
 
  443            const unsigned int *lda,
 
  446    dpotri_(
const char         *uplo,
 
  447            const unsigned int *n,
 
  449            const unsigned int *lda,
 
  453    zpotrf_(
const char           *uplo,
 
  454            const unsigned int   *n,
 
  455            std::complex<double> *a,
 
  456            const unsigned int   *lda,
 
  459    dtrtri_(
const char         *uplo,
 
  461            const unsigned int *n,
 
  463            const unsigned int *lda,
 
  466    ztrtri_(
const char           *uplo,
 
  468            const unsigned int   *n,
 
  469            std::complex<double> *a,
 
  470            const unsigned int   *lda,
 
  475    dgetrf_(
int *M, 
int *N, 
double *A, 
int *lda, 
int *IPIV, 
int *INFO);
 
  490            std::complex<double> *A,
 
  498            std::complex<double> *A,
 
  501            std::complex<double> *WORK,
 
  532    template <
typename T, dftfe::utils::MemorySpace memorySpace>
 
  533    std::pair<double, double>
 
  557    template <
typename T, dftfe::utils::MemorySpace memorySpace>
 
  582    template <
typename T1, 
typename T2, dftfe::utils::MemorySpace memorySpace>
 
  592      std::vector<double>                                 eigenvalues,
 
  597      const bool                                          approxOverlapMatrix);
 
 
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:36
Definition BLASWrapper.h:35
An class template to encapsulate a MultiVector. A MultiVector is a collection of  vectors belonging t...
Definition MultiVector.h:127
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:43
void dgesv_(int *N, int *NRHS, double *A, int *LDA, int *IPIV, double *B, int *LDB, int *INFO)
Contains linear algebra functions used in the implementation of an eigen solver.
Definition linearAlgebraOperations.h:513
void inverse(double *A, dftfe::Int N)
Compute inverse of serial matrix using LAPACK LU factorization.
void chebyshevFilter(operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Y, const dftfe::uInt m, const double a, const double b, const double a0)
Apply Chebyshev filter to a given subspace.
void reformulatedChebyshevFilter(const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T1, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T1, memorySpace > &Y, dftfe::linearAlgebra::MultiVector< T2, memorySpace > &Residual, dftfe::linearAlgebra::MultiVector< T2, memorySpace > &ResidualNew, std::vector< double > eigenvalues, const dftfe::uInt m, const double a, const double b, const double a0, const bool approxOverlapMatrix)
Apply Residual based Chebyshev filter to a given subspace.
std::pair< double, double > generalisedLanczosLowerUpperBoundEigenSpectrum(const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Y, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Z, dftfe::linearAlgebra::MultiVector< T, memorySpace > &tempVec, const dftParameters &dftParams)
Calculates an estimate of lower and upper bounds of a matrix using k-step Generalised Lanczos method....
Definition pseudoPotentialToDftfeConverter.cc:34
@ Residual
Definition hubbardClass.h:59
std::uint32_t uInt
Definition TypeConfig.h:10
@ LDA
Definition ExcSSDFunctionalBaseClass.h:35
std::int32_t Int
Definition TypeConfig.h:11