EigenvalueSoLversforPetaflop-Applications(ELPA)  2016.05.003
Data Types | Functions/Subroutines
elpa1_auxiliary Module Reference

Data Types

interface  cholesky_complex
 old, deprecated interface cholesky_complex: Cholesky factorization of a complex hermitian matrix More...
 
interface  cholesky_real
 old, deprecated interface cholesky_real: Cholesky factorization of a real symmetric matrix More...
 
interface  invert_trm_complex
 old, deprecated interface invert_trm_complex: Inverts a complex upper triangular matrix More...
 
interface  invert_trm_real
 Old, deprecated interface invert_trm_real: Inverts a upper triangular matrix. More...
 
interface  mult_ah_b_complex
 Old, deprecated interface mult_ah_b_complex: Performs C : = A**H * B 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. More...
 
interface  mult_at_b_real
 mult_at_b_real: Performs C : = A**T * B 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 More...
 

Functions/Subroutines

logical function, public elpa_cholesky_real (na, a, lda, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, wantDebug)
 elpa_cholesky_real: Cholesky factorization of a real symmetric matrix More...
 
logical function, public elpa_invert_trm_real (na, a, lda, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, wantDebug)
 elpa_invert_trm_real: Inverts a upper triangular matrix More...
 
logical function, public elpa_cholesky_complex (na, a, lda, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, wantDebug)
 elpa_cholesky_complex: Cholesky factorization of a complex hermitian matrix More...
 
logical function, public elpa_invert_trm_complex (na, a, lda, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, wantDebug)
 elpa_invert_trm_complex: Inverts a complex upper triangular matrix More...
 
logical function, public elpa_mult_at_b_real (uplo_a, uplo_c, na, ncb, a, lda, b, ldb, nblk, mpi_comm_rows, mpi_comm_cols, c, ldc)
 elpa_mult_at_b_real: Performs C : = A**T * B 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 More...
 
logical function, public elpa_mult_ah_b_complex (uplo_a, uplo_c, na, ncb, a, lda, b, ldb, nblk, mpi_comm_rows, mpi_comm_cols, c, ldc)
 elpa_mult_ah_b_complex: Performs C : = A**H * B 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 More...
 
logical function, public elpa_solve_tridi (na, nev, d, e, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, wantDebug)
 elpa_solve_tridi: Solve tridiagonal eigensystem with divide and conquer method More...
 

Function/Subroutine Documentation

logical function, public elpa1_auxiliary::elpa_cholesky_complex ( integer(kind=ik)  na,
complex(kind=ck), dimension(lda,matrixcols)  a,
integer(kind=ik)  lda,
integer(kind=ik)  nblk,
integer(kind=ik)  matrixCols,
integer(kind=ik)  mpi_comm_rows,
integer(kind=ik)  mpi_comm_cols,
logical, intent(in)  wantDebug 
)

elpa_cholesky_complex: Cholesky factorization of a complex hermitian matrix

Parameters
naOrder of matrix
a(lda,matrixCols)Distributed matrix which should be factorized. Distribution is like in Scalapack. Only upper triangle is needs to be set. On return, the upper triangle contains the Cholesky factor and the lower triangle is set to 0.
ldaLeading dimension of a
matrixColslocal columns of matrix a
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
wantDebuglogical, more debug information on failure
Returns
succes logical, reports success or failure
logical function, public elpa1_auxiliary::elpa_cholesky_real ( integer(kind=ik)  na,
real(kind=rk), dimension(lda,matrixcols)  a,
integer(kind=ik)  lda,
integer(kind=ik)  nblk,
integer(kind=ik)  matrixCols,
integer(kind=ik)  mpi_comm_rows,
integer(kind=ik)  mpi_comm_cols,
logical, intent(in)  wantDebug 
)

elpa_cholesky_real: Cholesky factorization of a real symmetric matrix

Parameters
naOrder of matrix
a(lda,matrixCols)Distributed matrix which should be factorized. Distribution is like in Scalapack. Only upper triangle is needs to be set. On return, the upper triangle contains the Cholesky factor and the lower triangle is set to 0.
ldaLeading dimension of a
matrixColslocal columns of matrix a
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
wantDebuglogical, more debug information on failure
Returns
succes logical, reports success or failure
logical function, public elpa1_auxiliary::elpa_invert_trm_complex ( integer(kind=ik)  na,
complex(kind=ck), dimension(lda,matrixcols)  a,
integer(kind=ik)  lda,
integer(kind=ik)  nblk,
integer(kind=ik)  matrixCols,
integer(kind=ik)  mpi_comm_rows,
integer(kind=ik)  mpi_comm_cols,
logical, intent(in)  wantDebug 
)

elpa_invert_trm_complex: Inverts a complex upper triangular matrix

Parameters
naOrder of matrix
a(lda,matrixCols)Distributed matrix which should be inverted Distribution is like in Scalapack. Only upper triangle is needs to be set. The lower triangle is not referenced.
ldaLeading dimension of a
matrixColslocal columns of matrix a
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
wantDebuglogical, more debug information on failure
Returns
succes logical, reports success or failure
logical function, public elpa1_auxiliary::elpa_invert_trm_real ( integer(kind=ik)  na,
real(kind=rk), dimension(lda,matrixcols)  a,
integer(kind=ik)  lda,
integer(kind=ik)  nblk,
integer(kind=ik)  matrixCols,
integer(kind=ik)  mpi_comm_rows,
integer(kind=ik)  mpi_comm_cols,
logical, intent(in)  wantDebug 
)

elpa_invert_trm_real: Inverts a upper triangular matrix

Parameters
naOrder of matrix
a(lda,matrixCols)Distributed matrix which should be inverted Distribution is like in Scalapack. Only upper triangle is needs to be set. The lower triangle is not referenced.
ldaLeading dimension of a
matrixColslocal columns of matrix a
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
wantDebuglogical, more debug information on failure
Returns
succes logical, reports success or failure
logical function, public elpa1_auxiliary::elpa_mult_ah_b_complex ( character*1  uplo_a,
character*1  uplo_c,
integer(kind=ik)  na,
integer(kind=ik)  ncb,
complex(kind=ck), dimension(lda,*)  a,
integer(kind=ik)  lda,
complex(kind=ck), dimension(ldb,*)  b,
integer(kind=ik)  ldb,
integer(kind=ik)  nblk,
integer(kind=ik)  mpi_comm_rows,
integer(kind=ik)  mpi_comm_cols,
complex(kind=ck), dimension(ldc,*)  c,
integer(kind=ik)  ldc 
)

elpa_mult_ah_b_complex: Performs C : = A**H * B 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

Parameters
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
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!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a
ldaleading dimension of matrix a
bmatrix b
ldbleading dimension of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c
ldcleading dimension of matrix c
Returns
success logical reports success or failure
logical function, public elpa1_auxiliary::elpa_mult_at_b_real ( character*1  uplo_a,
character*1  uplo_c,
integer(kind=ik)  na,
integer(kind=ik)  ncb,
real(kind=rk), dimension(lda,*)  a,
integer(kind=ik)  lda,
real(kind=rk), dimension(ldb,*)  b,
integer(kind=ik)  ldb,
integer(kind=ik)  nblk,
integer(kind=ik)  mpi_comm_rows,
integer(kind=ik)  mpi_comm_cols,
real(kind=rk), dimension(ldc,*)  c,
integer(kind=ik)  ldc 
)

elpa_mult_at_b_real: Performs C : = A**T * B 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

Parameters
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
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!
naNumber of rows/columns of A, number of rows of B and C
ncbNumber of columns of B and C
amatrix a
ldaleading dimension of matrix a
bmatrix b
ldbleading dimension of matrix b
nblkblocksize of cyclic distribution, must be the same in both directions!
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
cmatrix c
ldcleading dimension of matrix c
Returns
success logical reports success or failure
logical function, public elpa1_auxiliary::elpa_solve_tridi ( integer(kind=ik)  na,
integer(kind=ik)  nev,
real(kind=rk), dimension(na)  d,
real(kind=rk), dimension(na)  e,
real(kind=rk), dimension(ldq,matrixcols)  q,
integer(kind=ik)  ldq,
integer(kind=ik)  nblk,
integer(kind=ik)  matrixCols,
integer(kind=ik)  mpi_comm_rows,
integer(kind=ik)  mpi_comm_cols,
logical, intent(in)  wantDebug 
)

elpa_solve_tridi: Solve tridiagonal eigensystem with divide and conquer method

Parameters
naMatrix dimension
nevnumber of eigenvalues/vectors to be computed
darray d(na) on input diagonal elements of tridiagonal matrix, on output the eigenvalues in ascending order
earray e(na) on input subdiagonal elements of matrix, on exit destroyed
qon exit : matrix q(ldq,matrixCols) contains the eigenvectors
ldqleading dimension of matrix q
nblkblocksize of cyclic distribution, must be the same in both directions!
matrixColscolumns of matrix q
mpi_comm_rowsMPI communicator for rows
mpi_comm_colsMPI communicator for columns
wantDebuglogical, give more debug information if .true.
Returns
success logical, .true. on success, else .false.