solve_arpack_shift_invert Module Procedure

module procedure solve_arpack_shift_invert module subroutine solve_arpack_shift_invert(arpack_cfg, matrix_A, matrix_B, settings, omega, vr)

Implementation of the ARPACK shift-invert solver

Note

In applying shift-invert we made the transformation and solved the standard eigenvalue problem instead since B isn't always Hermitian (e.g. if we include Hall). According to the ARPACK documentation, section 3.2.2, this implies that we must manually transform the eigenvalues from to the eigenvalues from the original system. This uses the relation

Arguments

Type IntentOptional Attributes Name
type(arpack_t), intent(in) :: arpack_cfg

arpack configuration

type(matrix_t), intent(in) :: matrix_A

matrix A

type(matrix_t), intent(in) :: matrix_B

matrix B

type(settings_t), intent(in) :: settings

settings object

complex(kind=dp), intent(out) :: omega(:)

array with eigenvalues

complex(kind=dp), intent(out) :: vr(:,:)

array with right eigenvectors