Section Linear Response::Solver
Method for solving linear equations, which occur for Sternheimer linear response and OEP. The solvers vary in speed, reliability (ability to converge), and domain of applicability. QMR solvers are most reliable.
Biconjugate gradients stabilized. Slower than cg, but more reliable.
Conjugate gradients. Fast but unreliable. Hermitian matrices only
(no eta in Sternheimer).
Multigrid solver, currently only Gauss-Jacobi (experimental).
Slow, but fairly reliable. General matrices.
Quasi-minimal residual solver, for (complex) symmetric matrices. [Real symmetric
is equivalent to Hermitian.] Slightly slower than bicgstab but more reliable.
For Sternheimer, must be real wavefunctions, but can have eta.
Quasi-minimal residual solver, using the symmetrized form $A^\dagger A x = A^\dagger y$ instead of
$A x = y$. Reliable but very slow. General matrices.
Quasi-minimal residual solver, for Hermitian matrices, using the
symmetric algorithm with conjugated dot product (experimental). Slightly slower than bicgstab
but more reliable. Can always be used in Sternheimer.
Quasi-minimal residual solver, for general matrices, using the
most general form of the algorithm. Slow and unreliable.
Sum over states: the Sternheimer equation is solved by using
the explicit solution in terms of the ground-state
wavefunctions. You need unoccupied states to use this method.
Unlike the other methods, may not give the correct answer.
This is the "Induced Dimension Reduction", IDR(s) (for s=4). IDR(s) is a robust and efficient short recurrence
Krylov subspace method for solving large nonsymmetric systems of linear equations. It is described in
[Peter Sonneveld and Martin B. van Gijzen, SIAM J. Sci. Comput. 31, 1035 (2008)]. We have adapted the code
released by M. B. van Gizjen [http://ta.twi.tudelft.nl/nw/users/gijzen/IDR.html].
call parse_variable(namespace, "LinearSolver", defsolver, fsolver)