Given a partial Krylov decomposition
this subroutine implements the Krylov-Schur restarting strategy proposed by Stewart [1].
References
call krylov_schur(n, X, H, select_eigs)
n
: Number of selected eigenvalues moved to the upper left-block of the
Schur matrix. It is an intent(out)
argument.
X
: On entry, array of abstract_vector
computed using the Arnoldi process.
On exit, the first n
columns form an orthonormal basis for the eigenspace
associated with eigenvalues moved to the upper left-block of the Schur matrix.
It is an intent(inout)
argument.
H
: On entry, real
of complex
upper Hessenberg matrix computed using the
Arnoldi process. On exit, the leading block contains the
block of the re-ordered Schur matrix containing the selected
eigenvalues. It is an intent(inout)
argument.
select_eigs
: Procedure to select which eigenvalues to move in the upper-left
block. It is an intent(inout)
argument.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(out) | :: | n |
Number eigenvalues that have been moved to the upper
left block of the Schur factorization of |
||
class(abstract_vector_rsp), | intent(inout) | :: | X(:) |
Krylov basis. |
||
real(kind=sp), | intent(inout) | :: | H(:,:) |
Upper Hessenberg matrix. |
||
procedure(eigvals_select_sp) | :: | select_eigs |
Procedure to select the eigenvalues to move in the upper left-block. |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(out) | :: | n |
Number eigenvalues that have been moved to the upper
left block of the Schur factorization of |
||
class(abstract_vector_rdp), | intent(inout) | :: | X(:) |
Krylov basis. |
||
real(kind=dp), | intent(inout) | :: | H(:,:) |
Upper Hessenberg matrix. |
||
procedure(eigvals_select_dp) | :: | select_eigs |
Procedure to select the eigenvalues to move in the upper left-block. |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(out) | :: | n |
Number eigenvalues that have been moved to the upper
left block of the Schur factorization of |
||
class(abstract_vector_csp), | intent(inout) | :: | X(:) |
Krylov basis. |
||
complex(kind=sp), | intent(inout) | :: | H(:,:) |
Upper Hessenberg matrix. |
||
procedure(eigvals_select_sp) | :: | select_eigs |
Procedure to select the eigenvalues to move in the upper left-block. |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(out) | :: | n |
Number eigenvalues that have been moved to the upper
left block of the Schur factorization of |
||
class(abstract_vector_cdp), | intent(inout) | :: | X(:) |
Krylov basis. |
||
complex(kind=dp), | intent(inout) | :: | H(:,:) |
Upper Hessenberg matrix. |
||
procedure(eigvals_select_dp) | :: | select_eigs |
Procedure to select the eigenvalues to move in the upper left-block. |