![]() |
(git:b77b4be)
|
methods for arnoldi iteration More...
Functions/Subroutines | |
subroutine, public | arnoldi_iram (arnoldi_env) |
Alogorithm for the implicit restarts in the arnoldi method this is an early implementation which scales subspace size^4 by replacing the lapack calls with direct math the QR and gemms can be made linear and a N^2 sacling will be acchieved however this already sets the framework but should be used with care. Currently all based on lapack. | |
subroutine, public | compute_evals (arnoldi_env) |
Call the correct eigensolver, in the arnoldi method only the right eigenvectors are used. Lefts are created here but dumped immediately This is only the serial version. | |
subroutine, public | arnoldi_init (matrix, vectors, arnoldi_env) |
Interface for the initialization of the arnoldi subspace creation currently it can only setup a random vector but can be improved to various types of restarts easily. | |
subroutine, public | gev_arnoldi_init (matrix, matrix_arnoldi, vectors, arnoldi_env) |
Computes the initial guess for the solution of the generalized eigenvalue using the arnoldi method. | |
subroutine, public | build_subspace (matrix, vectors, arnoldi_env) |
Here we create the Krylov subspace and fill the Hessenberg matrix convergence check is only performed on subspace convergence Gram Schidt is used to orthonogonalize. If this is numericall not sufficient a Daniel, Gragg, Kaufman and Steward correction is performed. | |
subroutine, public | gev_build_subspace (matrix, vectors, arnoldi_env) |
builds the basis rothogonal wrt. the metric. The structure looks similar to normal arnoldi but norms, vectors and matrix_vector products are very differently defined. Therefore it is cleaner to put it in a separate subroutine to avoid confusion | |
subroutine, public | gev_update_data (matrix, matrix_arnoldi, vectors, arnoldi_env) |
Updates all data after an inner loop of the generalized ev arnoldi. Updates rho and C=A-rho*B accordingly. As an update scheme is used for he ev, the output ev has to be replaced with the updated one. Furthermore a convergence check is performed. The mv product could be skiiped by making clever use of the precomputed data, However, it is most likely not worth the effort. | |
methods for arnoldi iteration
subroutine, public arnoldi_methods::arnoldi_iram | ( | type(arnoldi_env_type) | arnoldi_env | ) |
Alogorithm for the implicit restarts in the arnoldi method this is an early implementation which scales subspace size^4 by replacing the lapack calls with direct math the QR and gemms can be made linear and a N^2 sacling will be acchieved however this already sets the framework but should be used with care. Currently all based on lapack.
arnoldi_env | ... |
Definition at line 55 of file arnoldi_methods.F.
subroutine, public arnoldi_methods::compute_evals | ( | type(arnoldi_env_type) | arnoldi_env | ) |
Call the correct eigensolver, in the arnoldi method only the right eigenvectors are used. Lefts are created here but dumped immediately This is only the serial version.
arnoldi_env | ... |
Definition at line 152 of file arnoldi_methods.F.
subroutine, public arnoldi_methods::arnoldi_init | ( | type(dbcsr_p_type), dimension(:) | matrix, |
type(m_x_v_vectors_type) | vectors, | ||
type(arnoldi_env_type) | arnoldi_env | ||
) |
Interface for the initialization of the arnoldi subspace creation currently it can only setup a random vector but can be improved to various types of restarts easily.
matrix | pointer to the matrices as described in main interface |
vectors | work vectors for the matrix vector multiplications |
arnoldi_env | all data concerning the subspace |
Definition at line 197 of file arnoldi_methods.F.
subroutine, public arnoldi_methods::gev_arnoldi_init | ( | type(dbcsr_p_type), dimension(:) | matrix, |
type(dbcsr_p_type), dimension(:) | matrix_arnoldi, | ||
type(m_x_v_vectors_type) | vectors, | ||
type(arnoldi_env_type) | arnoldi_env | ||
) |
Computes the initial guess for the solution of the generalized eigenvalue using the arnoldi method.
matrix | pointer to the matrices as described in main interface |
matrix_arnoldi | ... |
vectors | work vectors for the matrix vector multiplications |
arnoldi_env | all data concerning the subspace |
Definition at line 288 of file arnoldi_methods.F.
subroutine, public arnoldi_methods::build_subspace | ( | type(dbcsr_p_type), dimension(:) | matrix, |
type(m_x_v_vectors_type), target | vectors, | ||
type(arnoldi_env_type) | arnoldi_env | ||
) |
Here we create the Krylov subspace and fill the Hessenberg matrix convergence check is only performed on subspace convergence Gram Schidt is used to orthonogonalize. If this is numericall not sufficient a Daniel, Gragg, Kaufman and Steward correction is performed.
matrix | ... |
vectors | ... |
arnoldi_env | ... |
Definition at line 384 of file arnoldi_methods.F.
subroutine, public arnoldi_methods::gev_build_subspace | ( | type(dbcsr_p_type), dimension(:) | matrix, |
type(m_x_v_vectors_type) | vectors, | ||
type(arnoldi_env_type) | arnoldi_env | ||
) |
builds the basis rothogonal wrt. the metric. The structure looks similar to normal arnoldi but norms, vectors and matrix_vector products are very differently defined. Therefore it is cleaner to put it in a separate subroutine to avoid confusion
matrix | ... |
vectors | ... |
arnoldi_env | ... |
Definition at line 474 of file arnoldi_methods.F.
subroutine, public arnoldi_methods::gev_update_data | ( | type(dbcsr_p_type), dimension(:) | matrix, |
type(dbcsr_p_type), dimension(:) | matrix_arnoldi, | ||
type(m_x_v_vectors_type) | vectors, | ||
type(arnoldi_env_type) | arnoldi_env | ||
) |
Updates all data after an inner loop of the generalized ev arnoldi. Updates rho and C=A-rho*B accordingly. As an update scheme is used for he ev, the output ev has to be replaced with the updated one. Furthermore a convergence check is performed. The mv product could be skiiped by making clever use of the precomputed data, However, it is most likely not worth the effort.
matrix | ... |
matrix_arnoldi | ... |
vectors | ... |
arnoldi_env | ... |
Definition at line 584 of file arnoldi_methods.F.