public::invert_trm_complex!< old, deprecated interface to invert double-precision complex triangular matrix DO NOT USE
public::elpa_cholesky_real_double!< Cholesky factorization of a double-precision real matrix
public::cholesky_real!< old, deprecated interface to do Cholesky factorization of a double-precision real matrix DO NOT USE
public::elpa_cholesky_complex_double!< Cholesky factorization of a double-precision complex matrix
public::cholesky_complex!< old, deprecated interface to do Cholesky factorization of a double-precision complex matrix DO NOT USE
public::elpa_solve_tridi_double!< Solve a double-precision tridiagonal eigensystem with divide and conquer method
...
...
@@ -155,10 +147,6 @@ module elpa1
logical,public::elpa_print_times=.false.!< Set elpa_print_times to .true. for explicit timing outputs
interfacesolve_evp_real_1stage
moduleprocedureelpa_solve_evp_real_1stage_double
endinterface
!> \brief elpa_solve_evp_real_1stage_double: Fortran function to solve the real eigenvalue problem with 1-stage solver. This is called by "elpa_solve_evp_real"
!>
! Parameters
...
...
@@ -200,46 +188,6 @@ module elpa1
moduleprocedureelpa_solve_evp_real_1stage_double
endinterface
!> \brief solve_evp_complex_1stage: old, deprecated Fortran function to solve the complex eigenvalue problem with 1-stage solver. will be deleted at some point. Better use "solve_evp_complex_1stage" or "elpa_solve_evp_complex"
!>
!> \details
!> The interface and variable definition is the same as in "elpa_solve_evp_complex_1stage_double"
! Parameters
!
!> \param na Order of matrix a
!>
!> \param nev Number of eigenvalues needed.
!> The smallest nev eigenvalues/eigenvectors are calculated.
!>
!> \param a(lda,matrixCols) Distributed matrix for which eigenvalues are to be computed.
!> Distribution is like in Scalapack.
!> The full matrix must be set (not only one half like in scalapack).
!> Destroyed on exit (upper and lower half).
!>
!> \param lda Leading dimension of a
!>
!> \param ev(na) On output: eigenvalues of a, every processor gets the complete set
!>
!> \param q(ldq,matrixCols) On output: Eigenvectors of a
!> Distribution is like in Scalapack.
!> Must be always dimensioned to the full size (corresponding to (na,na))
!> even if only a part of the eigenvalues is needed.
!>
!> \param ldq Leading dimension of q
!>
!> \param nblk blocksize of cyclic distribution, must be the same in both directions!
!>
!> \param matrixCols distributed number of matrix columns
!>
!> \param mpi_comm_rows MPI-Communicator for rows
!> \param mpi_comm_cols MPI-Communicator for columns
!> \brief solve_evp_complex_1stage_double: Fortran function to solve the complex eigenvalue problem with 1-stage solver. This is called by "elpa_solve_evp_complex"
!> \param a(lda,matrixCols) Distributed matrix which should be inverted
!> Distribution is like in Scalapack.
!> Only upper triangle needs to be set.
!> The lower triangle is not referenced.
!> \param lda Leading dimension of a
!> \param nblk blocksize of cyclic distribution, must be the same in both directions!
!> \param matrixCols local columns of matrix a
!> \param mpi_comm_rows MPI communicator for rows
!> \param mpi_comm_cols MPI communicator for columns
!> \param wantDebug logical, more debug information on failure
!> \result succes logical, reports success or failure
interfaceinvert_trm_complex
moduleprocedureelpa_invert_trm_complex_double
endinterface
!> \brief mult_at_b_real: Performs C : = A**T * B for double matrices
!> this is the old, deprecated interface for the newer elpa_mult_at_b_real
!> where A is a square matrix (na,na) which is optionally upper or lower triangular
!> B is a (na,ncb) matrix
!> C is a (na,ncb) matrix where optionally only the upper or lower
!> triangle may be computed
!> \details
!> \param uplo_a 'U' if A is upper triangular
!> 'L' if A is lower triangular
!> anything else if A is a full matrix
!> Please note: This pertains to the original A (as set in the calling program)
!> whereas the transpose of A is used for calculations
!> If uplo_a is 'U' or 'L', the other triangle is not used at all,
!> i.e. it may contain arbitrary numbers
!> \param uplo_c 'U' if only the upper diagonal part of C is needed
!> 'L' if only the upper diagonal part of C is needed
!> anything else if the full matrix C is needed
!> Please note: Even when uplo_c is 'U' or 'L', the other triangle may be
!> written to a certain extent, i.e. one shouldn't rely on the content there!
!> \param na Number of rows/columns of A, number of rows of B and C
!> \param ncb Number of columns of B and C
!> \param a matrix a
!> \param lda leading dimension of matrix a
!> \param b matrix b
!> \param ldb leading dimension of matrix b
!> \param nblk blocksize of cyclic distribution, must be the same in both directions!
!> \param mpi_comm_rows MPI communicator for rows
!> \param mpi_comm_cols MPI communicator for columns
!> \param c matrix c
!> \param ldc leading dimension of matrix c
interfacemult_at_b_real
moduleprocedureelpa_mult_at_b_real_double
endinterface
!> \brief Old, deprecated interface mult_ah_b_complex: Performs C : = A**H * B for double-precision matrices
!> where A is a square matrix (na,na) which is optionally upper or lower triangular
!> B is a (na,ncb) matrix
!> C is a (na,ncb) matrix where optionally only the upper or lower
!> triangle may be computed
!> \details
!>
!> \param uplo_a 'U' if A is upper triangular
!> 'L' if A is lower triangular
!> anything else if A is a full matrix
!> Please note: This pertains to the original A (as set in the calling program)
!> whereas the transpose of A is used for calculations
!> If uplo_a is 'U' or 'L', the other triangle is not used at all,
!> i.e. it may contain arbitrary numbers
!> \param uplo_c 'U' if only the upper diagonal part of C is needed
!> 'L' if only the upper diagonal part of C is needed
!> anything else if the full matrix C is needed
!> Please note: Even when uplo_c is 'U' or 'L', the other triangle may be
!> written to a certain extent, i.e. one shouldn't rely on the content there!
!> \param na Number of rows/columns of A, number of rows of B and C
!> \param ncb Number of columns of B and C
!> \param a matrix a
!> \param lda leading dimension of matrix a
!> \param b matrix b
!> \param ldb leading dimension of matrix b
!> \param nblk blocksize of cyclic distribution, must be the same in both directions!
!> \param mpi_comm_rows MPI communicator for rows
!> \param mpi_comm_cols MPI communicator for columns
!> \param c matrix c
!> \param ldc leading dimension of matrix c
interfacemult_ah_b_complex
moduleprocedureelpa_mult_ah_b_complex_double
endinterface
!> \brief solve_tridi: Old, deprecated interface to solve a double-precision tridiagonal eigensystem for a double-precision matrix with divide and conquer method
!> \details
!>
!> \param na Matrix dimension
!> \param nev number of eigenvalues/vectors to be computed
!> \param d array d(na) on input diagonal elements of tridiagonal matrix, on
!> output the eigenvalues in ascending order
!> \param e array e(na) on input subdiagonal elements of matrix, on exit destroyed
!> \param q on exit : matrix q(ldq,matrixCols) contains the eigenvectors
!> \param ldq leading dimension of matrix q
!> \param nblk blocksize of cyclic distribution, must be the same in both directions!
!> \param matrixCols columns of matrix q
!> \param mpi_comm_rows MPI communicator for rows
!> \param mpi_comm_cols MPI communicator for columns
!> \param wantDebug logical, give more debug information if .true.
!> \result success logical, .true. on success, else .false.
interfacesolve_tridi
moduleprocedureelpa_solve_tridi_double
endinterface
contains
!> \brief cholesky_real_double: Cholesky factorization of a double-precision real symmetric matrix
!> \details
!>
!> \param na Order of matrix
!> \param a(lda,matrixCols) Distributed matrix which should be factorized.
!> Distribution is like in Scalapack.
!> Only upper triangle needs to be set.
!> On return, the upper triangle contains the Cholesky factor
!> and the lower triangle is set to 0.
!> \param lda Leading dimension of a
!> \param nblk blocksize of cyclic distribution, must be the same in both directions!
!> \param matrixCols local columns of matrix a
!> \param mpi_comm_rows MPI communicator for rows
!> \param mpi_comm_cols MPI communicator for columns
!> \param wantDebug logical, more debug information on failure
!> \param succes logical, reports success or failure
!> \brief elpa_solve_evp_real_2stage_double: Fortran function to solve the real double-precision eigenvalue problem with a 2 stage approach. This is called by "elpa_solve_evp_real_double"
!> \brief elpa_solve_evp_complex_2stage_double: Fortran function to solve the complex double-precision eigenvalue problem with a 2 stage approach. This is called by "elpa_solve_evp_complex_double"