#include "../general/sanity.F90"
#include "../general/precision_kinds.F90"
|
subroutine | trans_ev_cpu_MATH_DATATYPE_PRECISION (obj, na, nqc, a_mat, lda, tau, q_mat, ldq, nblk, matrixcols, mpi_comm_rows, mpi_comm_cols, success) |
| Transforms the eigenvectors of a tridiagonal matrix back to the eigenvectors of the original matrix (like Scalapack Routine PDORMTR)
|
|
◆ trans_ev_cpu_MATH_DATATYPE_PRECISION()
subroutine trans_ev_cpu_MATH_DATATYPE_PRECISION |
( |
class(elpa_abstract_impl_t), intent(inout) | obj, |
|
|
integer(kind=ik), intent(in) | na, |
|
|
integer(kind=ik), intent(in) | nqc, |
|
|
dimension(lda,matrixcols), intent(inout) | a_mat, |
|
|
integer(kind=ik), intent(in) | lda, |
|
|
dimension(na), intent(in) | tau, |
|
|
dimension(ldq,matrixcols), intent(inout) | q_mat, |
|
|
integer(kind=ik), intent(in) | ldq, |
|
|
integer(kind=ik), intent(in) | nblk, |
|
|
integer(kind=ik), intent(in) | matrixcols, |
|
|
integer(kind=ik), intent(in) | mpi_comm_rows, |
|
|
integer(kind=ik), intent(in) | mpi_comm_cols, |
|
|
logical | success ) |
Transforms the eigenvectors of a tridiagonal matrix back to the eigenvectors of the original matrix (like Scalapack Routine PDORMTR)
- Parameters
-
na | Order of matrix a_mat, number of rows of matrix q_mat |
nqc | Number of columns of matrix q_mat |
a_mat(lda,matrixCols) | Matrix containing the Householder vectors (i.e. matrix a after tridiag_real) Distribution is like in Scalapack. |
lda | Leading dimension of a_mat |
tau(na) | Factors of the Householder vectors |
q_mat | On input: Eigenvectors of tridiagonal matrix On output: Transformed eigenvectors Distribution is like in Scalapack. |
ldq | Leading dimension of q_mat |
nblk | blocksize of cyclic distribution, must be the same in both directions! |
matrixCols | local columns of matrix a_mat and q_mat |
mpi_comm_rows | MPI-Communicator for rows |
mpi_comm_cols | MPI-Communicator for columns |
useGPU | If true, GPU version of the subroutine will be used |