Implementation of the ARPACK shift-invert solver
In applying shift-invert we made the transformation C=inv[B]∗A and solved the standard eigenvalue problem CX=νX 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 νj from C to the eigenvalues ωj from the original system. This uses the relation ωj=σ+1νj
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 |