The way the preconditioner is used can be specified in the Options.
Options.Type
The preconditioner can be used as explicit left preconditioner ('left'), as explicit right preconditioner ('right'), or implicitly ('impl').
In this subsection,
an MV (matrix vector multiplication) is an operation by A
together with an operation by B,
a PS (preconditioner solve) is a solution of
the system
, where
is the preconditioner
(i.e., the computation of M
v),
If explicit preconditioning is used, then there is an additional PS needed each time the correction equation is solved. The total number of PSs that jdqz will take is equal to the total number of MVs plus the number of Jacobi-Davidson steps (the number of outer iterations).
With implicit preconditioning the number of PSs reduces to the
number of MVs plus the number of detected eigenvalues. However, implicit
preconditioning requires more memory. For BiCGstab(ell), 2ell
additional n-vectors have to be stored. If GMRES is requested as
linear solver, then FGMRES is used, requiring storage of an
additional
n-vectors. Here
is the maximum number of steps
that GMRES needs to achieve the required residual reduction.
By storing the preconditioned vectors of the search subspace the number of PSs can be reduced even further. Then the number of PSs will be equal to the number of MVs. However, this strategy has not been implemented in jdqz.
There may be a slight deviation in the count of PSs and MVs if jdqz detects more than one eigenpair at the same iteration step.