Implementation of the ARPACK shift-invert solver
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
Type | Intent | Optional | 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 |