![]() |
(git:d18deda)
|
used for collecting some of the diagonalization schemes available for cp_fm_type. cp_fm_power also moved here as it is very related More...
Functions/Subroutines | |
subroutine, public | diag_init (diag_lib, fallback_applied, elpa_kernel, elpa_neigvec_min_input, elpa_qr, elpa_print, elpa_qr_unsafe, dlaf_neigvec_min_input, eps_check_diag_input) |
Setup the diagonalization library to be used. | |
subroutine, public | diag_finalize () |
Finalize the diagonalization library. | |
subroutine, public | choose_eigv_solver (matrix, eigenvectors, eigenvalues, info) |
Choose the Eigensolver depending on which library is available ELPA seems to be unstable for small systems. | |
subroutine, public | cp_fm_syevd (matrix, eigenvectors, eigenvalues, info) |
Computes all eigenvalues and vectors of a real symmetric matrix significantly faster than syevx, scales also much better. Needs workspace to allocate all the eigenvectors. | |
subroutine, public | cp_fm_syevx (matrix, eigenvectors, eigenvalues, neig, work_syevx) |
compute eigenvalues and optionally eigenvectors of a real symmetric matrix using scalapack. If eigenvectors are required this routine will replicate a full matrix on each CPU... if more than a handful of vectors are needed, use cp_fm_syevd instead | |
subroutine, public | cp_fm_svd (matrix_a, matrix_eigvl, matrix_eigvr_t, eigval, info) |
decomposes a quadratic matrix into its singular value decomposition | |
subroutine, public | cp_fm_power (matrix, work, exponent, threshold, n_dependent, verbose, eigvals) |
... | |
subroutine, public | cp_fm_block_jacobi (matrix, eigenvectors, eigval, thresh, start_sec_block) |
... | |
subroutine, public | cp_fm_geeig (amatrix, bmatrix, eigenvectors, eigenvalues, work) |
General Eigenvalue Problem AX = BXE Single option version: Cholesky decomposition of B. | |
subroutine, public | cp_fm_geeig_canon (amatrix, bmatrix, eigenvectors, eigenvalues, work, epseig) |
General Eigenvalue Problem AX = BXE Use canonical diagonalization : U*s**(-1/2) | |
Variables | |
real(kind=dp), parameter, public | eps_check_diag_default = 5.0E-14_dp |
integer, save, public | diag_type = 0 |
integer, parameter, public | fm_diag_type_scalapack = 101 |
integer, parameter, public | fm_diag_type_elpa = 102 |
integer, parameter, public | fm_diag_type_cusolver = 103 |
integer, parameter, public | fm_diag_type_dlaf = 104 |
integer, parameter, public | fm_diag_type_default = FM_DIAG_TYPE_SCALAPACK |
used for collecting some of the diagonalization schemes available for cp_fm_type. cp_fm_power also moved here as it is very related
subroutine, public cp_fm_diag::diag_init | ( | character(len=*), intent(in) | diag_lib, |
logical, intent(out) | fallback_applied, | ||
integer, intent(in) | elpa_kernel, | ||
integer, intent(in) | elpa_neigvec_min_input, | ||
logical, intent(in) | elpa_qr, | ||
logical, intent(in) | elpa_print, | ||
logical, intent(in) | elpa_qr_unsafe, | ||
integer, intent(in) | dlaf_neigvec_min_input, | ||
real(kind=dp), intent(in) | eps_check_diag_input | ||
) |
Setup the diagonalization library to be used.
diag_lib | diag_library flag from GLOBAL section in input |
fallback_applied | .TRUE. if support for the requested library was not compiled-in and fallback to ScaLAPACK was applied, .FALSE. otherwise. |
elpa_kernel | integer that determines which ELPA kernel to use for diagonalization |
elpa_neigvec_min_input | ... |
elpa_qr | logical that determines if ELPA should try to use QR to accelerate the diagonalization procedure of suitably sized matrices |
elpa_print | logical that determines if information about the ELPA diagonalization should be printed |
elpa_qr_unsafe | logical that enables potentially unsafe ELPA options |
dlaf_neigvec_min_input | ... |
eps_check_diag_input | ... |
Definition at line 150 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::diag_finalize |
Finalize the diagonalization library.
Definition at line 208 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::choose_eigv_solver | ( | type(cp_fm_type), intent(in) | matrix, |
type(cp_fm_type), intent(in) | eigenvectors, | ||
real(kind=dp), dimension(:), intent(out) | eigenvalues, | ||
integer, intent(out), optional | info | ||
) |
Choose the Eigensolver depending on which library is available ELPA seems to be unstable for small systems.
matrix | ... |
eigenvectors | ... |
eigenvalues | ... |
info | ... |
Definition at line 228 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::cp_fm_syevd | ( | type(cp_fm_type), intent(in) | matrix, |
type(cp_fm_type), intent(in) | eigenvectors, | ||
real(kind=dp), dimension(:), intent(out) | eigenvalues, | ||
integer, intent(out), optional | info | ||
) |
Computes all eigenvalues and vectors of a real symmetric matrix significantly faster than syevx, scales also much better. Needs workspace to allocate all the eigenvectors.
matrix | ... |
eigenvectors | ... |
eigenvalues | ... |
info | ... |
Definition at line 433 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::cp_fm_syevx | ( | type(cp_fm_type), intent(in) | matrix, |
type(cp_fm_type), intent(in), optional | eigenvectors, | ||
real(kind=dp), dimension(:), intent(out) | eigenvalues, | ||
integer, intent(in), optional | neig, | ||
real(kind=dp), intent(in), optional | work_syevx | ||
) |
compute eigenvalues and optionally eigenvectors of a real symmetric matrix using scalapack. If eigenvectors are required this routine will replicate a full matrix on each CPU... if more than a handful of vectors are needed, use cp_fm_syevd instead
matrix | ... |
eigenvectors | ... |
eigenvalues | ... |
neig | ... |
work_syevx | ... |
Definition at line 677 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::cp_fm_svd | ( | type(cp_fm_type), intent(in) | matrix_a, |
type(cp_fm_type), intent(inout) | matrix_eigvl, | ||
type(cp_fm_type), intent(inout) | matrix_eigvr_t, | ||
real(kind=dp), dimension(:), intent(inout), pointer | eigval, | ||
integer, intent(out), optional | info | ||
) |
decomposes a quadratic matrix into its singular value decomposition
matrix_a | ... |
matrix_eigvl | ... |
matrix_eigvr_t | ... |
eigval | ... |
info | ... |
Definition at line 915 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::cp_fm_power | ( | type(cp_fm_type), intent(in) | matrix, |
type(cp_fm_type), intent(in) | work, | ||
real(kind=dp), intent(in) | exponent, | ||
real(kind=dp), intent(in) | threshold, | ||
integer, intent(out) | n_dependent, | ||
logical, intent(in), optional | verbose, | ||
real(kind=dp), dimension(2), intent(out), optional | eigvals | ||
) |
...
matrix | ... |
work | ... |
exponent | ... |
threshold | ... |
n_dependent | ... |
verbose | ... |
eigvals | ... |
Definition at line 1037 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::cp_fm_block_jacobi | ( | type(cp_fm_type), intent(in) | matrix, |
type(cp_fm_type), intent(in) | eigenvectors, | ||
real(kind=dp), dimension(:), intent(in) | eigval, | ||
real(kind=dp), intent(in) | thresh, | ||
integer, intent(in) | start_sec_block | ||
) |
...
matrix | ... |
eigenvectors | ... |
eigval | ... |
thresh | ... |
start_sec_block | ... |
Definition at line 1203 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::cp_fm_geeig | ( | type(cp_fm_type), intent(in) | amatrix, |
type(cp_fm_type), intent(in) | bmatrix, | ||
type(cp_fm_type), intent(in) | eigenvectors, | ||
real(kind=dp), dimension(:) | eigenvalues, | ||
type(cp_fm_type), intent(in) | work | ||
) |
General Eigenvalue Problem AX = BXE Single option version: Cholesky decomposition of B.
amatrix | ... |
bmatrix | ... |
eigenvectors | ... |
eigenvalues | ... |
work | ... |
Definition at line 1403 of file cp_fm_diag.F.
subroutine, public cp_fm_diag::cp_fm_geeig_canon | ( | type(cp_fm_type), intent(in) | amatrix, |
type(cp_fm_type), intent(in) | bmatrix, | ||
type(cp_fm_type), intent(in) | eigenvectors, | ||
real(kind=dp), dimension(:), intent(out) | eigenvalues, | ||
type(cp_fm_type), intent(in) | work, | ||
real(kind=dp), intent(in) | epseig | ||
) |
General Eigenvalue Problem AX = BXE Use canonical diagonalization : U*s**(-1/2)
amatrix | ... |
bmatrix | ... |
eigenvectors | ... |
eigenvalues | ... |
work | ... |
epseig | ... |
Definition at line 1456 of file cp_fm_diag.F.
real(kind=dp), parameter, public cp_fm_diag::eps_check_diag_default = 5.0E-14_dp |
Definition at line 86 of file cp_fm_diag.F.
integer, save, public cp_fm_diag::diag_type = 0 |
Definition at line 90 of file cp_fm_diag.F.
integer, parameter, public cp_fm_diag::fm_diag_type_scalapack = 101 |
Definition at line 104 of file cp_fm_diag.F.
integer, parameter, public cp_fm_diag::fm_diag_type_elpa = 102 |
Definition at line 104 of file cp_fm_diag.F.
integer, parameter, public cp_fm_diag::fm_diag_type_cusolver = 103 |
Definition at line 104 of file cp_fm_diag.F.
integer, parameter, public cp_fm_diag::fm_diag_type_dlaf = 104 |
Definition at line 104 of file cp_fm_diag.F.
integer, parameter, public cp_fm_diag::fm_diag_type_default = FM_DIAG_TYPE_SCALAPACK |
Definition at line 115 of file cp_fm_diag.F.