ArnoldiMethodTransformations.ArnoldiMethodTransformationsModule
module ArnoldiMethodTransformations

Provides convenience wrapper for interfacing with the package ArnoldiMethod.

Implements the shift-and-invert transformation detailed here.

The main functions are partialschur(A,[B],σ; kwargs...) and partialeigen(A,σ; kwargs...)

The constants USOLVER, PSOLVER, and MSOLVER are exported.

ArnoldiMethodTransformations.ShiftAndInvertType
struct ShiftAndInvert

Container for arrays in ArnoldiMethod.partialschur


function ShiftAndInvert(A, [B]; σ=0, diag_inv_B=false, lupack=USOLVER) -> si

create a LinearMap object to feed to ArnoldiMethod.partialschur which transforms Ax=λBx into (A-σB)⁻¹Bx=x/(λ-σ).

Set diag_inv_B=true if B is both diagonal and invertible, so that it is easy to compute B⁻¹. In this case instead return a linear map (B⁻¹A-σI)⁻¹, which has same evals as above.

A and B must both be sparse or both dense. A, B, σ need not have common element type.

Keyword lupack determines what linear algebra library to use. Options are PSOLVER, MSOLVER, USOLVER (the default). For all solvers besides UMFPACK, the appropriate library must be loaded at the top level. –––––

function ::ShiftAndInvert(y,x)

A\B*x = y

ArnoldiMethod.partialeigenMethod
partialeigen(decomp, σ) -> λ, v

Transforms a partial Schur decomposition into an eigendecomposition, outputting evals `λ` and evecs `v`.
It undoes the shift-and-invert of the eigenvalues by `σ`.
ArnoldiMethod.partialschurFunction
partialschur(A, [B], σ; [diag_inv_B=false, lupack=USOLVER, kwargs...]) -> decomp, history

Partial Schur decomposition of A, with shift σ and mass matrix B, solving Av=σBv

Keyword diag_inv_B defaults to true if B is both diagonal and invertible. This enables a simplified shift-and-invert scheme.

Keyword lupack determines what linear algebra library to use. Options are PSOLVER, MSOLVER, USOLVER (the default). For all solvers besides UMFPACK, the appropriate library must be loaded at the top level.

For other keywords, see ArnoldiMethod.partialschur

see also: partialeigen in ArnoldiMethod