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,
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 jdqr 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.
Implicit preconditioning in CG does not lead to additional memory requirements and jdqr uses implicit preconditioning whenever CG is selected as linear solver.
Implicit precondioning in MINRES and in SYMMLQ does not
reduce the PSs. Moreover, it requires storage of one additional
n-vector. However, with implicit preconditioning,
there is no need specify the factors L
and L' of the preconditioner M ().
Therefore, jdqr uses implicit preconditioning
also if MINRES or SYMMLQ is selected as linear solver.
The methods CG, MINRES and SYMMLQ require a positive definite preconditioner.
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 jdqr.
There may be a slight deviation in the count of PSs and MVs if jdqr detects more than one eigenpair at the same iteration step.