|
subroutine, public | arnoldi_methods::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 | arnoldi_methods::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_methods::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 | arnoldi_methods::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 | arnoldi_methods::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 | arnoldi_methods::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 | arnoldi_methods::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.
|
|