Version 1.3.0
14th August 2013 User documentation
 Recent Changes

Code Download
 Single
 Double
MI15: Unsymmetric system: flexible GMRES
This routine uses the â€˜Flexible Generalized Minimal Residualâ€™ method with restarts every \(m\) iterations, FGMRES(\(m\)), to solve the \(n \times n\) unsymmetric linear system \(\mathbf{Ax} = \mathbf{b}\), optionally using preconditioning. FGMRES(\(m\)) generalises the preconditioned GMRES(\(m\)) allowing the possibility of using a different right preconditioner \(\mathbf{P} _R ^{(i)}\) at each step in solving the preconditioned system
\[\label{mi15.eqn} \mathbf{\bar{A}}\mathbf{x} = \mathbf{\bar{b}}\]
where \(\mathbf{\bar{A}} = \mathbf{P} _L \mathbf{A}\) and \(\mathbf{\bar{b}} = \mathbf{P} _L \mathbf{b}\) and \(\mathbf{P} _L\) is a left preconditioner. Reverse communication is used for preconditioning operations and matrixvector products of the form \(\mathbf{Az}\).
If \(\mathbf{P} _R ^{(i)}\) does not change at each step \(i\), in exact arithmetic the algorithm computes the same solution as GMRES(\(m\)) applied to ([mi15.eqn]). FGMRES(\(m\)) needs more memory than GMRES(\(m\)) and, in particular, stores an additional \(n \times n\) real matrix. However, in floating point arithmetic, FGMRES(\(m\)) is numerically more stable than the GMRES(\(m\)) method.
If Gaussian elimination with static pivoting option has been used to compute an approximate \(\mathbf{LU}\) factorization of \(\mathbf{A}\), FGMRES(\(m\)) can be used to recover full backward error stability. In this case the left preconditioner should be chosen to be the identity and the right preconditioner should be chosen to be \(\mathbf{P} _R ^{(i)}\) = \(\mathbf{P} _R\) = \((\mathbf{LU}) ^{1}\).