(git:b77b4be)
Loading...
Searching...
No Matches
arnoldi_methods Module Reference

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.
 

Detailed Description

methods for arnoldi iteration

History
2014.09 created [Florian Schiffmann] 2023.12 Removed support for single-precision [Ole Schuett] 2024.12 Removed support for complex input matrices [Ole Schuett]
Author
Florian Schiffmann

Function/Subroutine Documentation

◆ arnoldi_iram()

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.

Parameters
arnoldi_env...

Definition at line 55 of file arnoldi_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_evals()

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.

Parameters
arnoldi_env...

Definition at line 152 of file arnoldi_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ arnoldi_init()

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.

Parameters
matrixpointer to the matrices as described in main interface
vectorswork vectors for the matrix vector multiplications
arnoldi_envall data concerning the subspace

Definition at line 197 of file arnoldi_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gev_arnoldi_init()

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.

Parameters
matrixpointer to the matrices as described in main interface
matrix_arnoldi...
vectorswork vectors for the matrix vector multiplications
arnoldi_envall data concerning the subspace

Definition at line 288 of file arnoldi_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_subspace()

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.

Parameters
matrix...
vectors...
arnoldi_env...

Definition at line 384 of file arnoldi_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gev_build_subspace()

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

Parameters
matrix...
vectors...
arnoldi_env...

Definition at line 474 of file arnoldi_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gev_update_data()

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.

Parameters
matrix...
matrix_arnoldi...
vectors...
arnoldi_env...

Definition at line 584 of file arnoldi_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function: