This linear system solver uses the restarted GMRES (generalized minimum residual) method (see Ref. 9 and
Ref. 10). This is an iterative method for general linear systems of the form
Ax = b. For fast convergence it is important to use an appropriate
preconditioner.
This solver uses the restarted FGMRES (flexible generalized minimum residual) method (Ref. 12). The solver is a variant of the GMRES solver that can handle a wider class of preconditioners in a robust way. You can, for example, use any iterative solver as preconditioner for FGMRES. The downside with the method is that it uses twice as much memory as GMRES for the same number of iterations before restart. FGMRES uses right preconditioning and therefore has the same convergence criterion as right-preconditioned GMRES. If FGMRES is used together with a constant preconditioner such as the Incomplete LU preconditioner, then the FGMRES solver is identical to the right preconditioned GMRES solver.
This solver uses the conjugate gradients iterative method (Ref. 9,
Ref. 13, and
Ref. 14). It is an iterative method for linear systems of the form
Ax = b where the matrix
A is positive definite and (Hermitian) symmetric. Sometimes the solver also works when the matrix is not positive definite, especially if it is close to positive definite. This solver uses less memory and is often faster than the GMRES solver, but it applies to a restricted set of models.
For fast convergence it is important to use an appropriate preconditioner, which should be positive definite and (Hermitian) symmetric.
This solver uses the biconjugate gradient stabilized iterative method (
Ref. 9 and
Ref. 15) for solving general linear systems of the form
Ax = b. The required memory and the computational time for one iteration with BiCGStab is constant; that is, the time and memory requirements do not increase with the number of iterations as they do for GMRES. BiCGStab uses approximately the same amount of memory as GMRES uses for two iterations. Therefore, BiCGStab typically uses less memory than GMRES.
This solver uses the transpose-free quasi-minimal residual iterative method (
Ref. 27 and
Ref. 28) for solving general linear systems of the form
Ax = b. The required memory and the computational time for one iteration with TFQMR is constant; that is, the time and memory requirements do not increase with the number of iterations as they do for GMRES. TFQMR uses approximately the same amount of memory as GMRES uses for two iterations. Therefore, TFQMR typically uses less memory than GMRES.
The definitions of M for the various solvers are:
The convergence criterion in Equation 20-9 states that the iterations terminate when the relative (preconditioned) residual times the factor
ρ is less than a tolerance
tol. For solvers where
M is equal to the identity matrix, the iterations can sometimes terminate too early with an incorrect solution if the system matrix
A is ill-conditioned. For solvers where
M is not equal to the identity matrix, the iterations can sometimes terminate too early if
M is a poor preconditioner. If the iterations terminate too early due to an ill-conditioned system matrix or a poor preconditioner, increase the factor
ρ to a number of the order of the condition number for the matrix
M−1A. If
ρ is greater than the condition number for the matrix
M−1A, the convergence criterion implies that the relative error is less than
tol:
|x − A−1b| < tol ·|A−1b|.
When using an Iterative linear system solver, you must select a preconditioner. The choice of preconditioner affects the number of iterations and the solver’s eventual convergence. Preconditioning can consume more time and memory than the actual iterative solver itself. To choose a preconditioner, right-click the
Iterative node and choose one of the following preconditioners from the context menu:
Each preconditioner has its own settings; to adjust them, select the preconditioner node to open its Settings window. If you want to solve a model without a preconditioner, disable all preconditioner nodes. Normally, only one preconditioner can be active, and if you have more than one preconditioner node, an active preconditioner node becomes disabled if you enable another preconditioner. You can use multiple preconditioners in a hybrid preconditioner approach; see
Hybrid Preconditioners. It is also possible to run the iterative solver without a preconditioner by not adding any preconditioner or disabling all of them.
The relaxation factor ω to some extent controls the stability and convergence properties of a numerical solver by shifting its eigenvalue spectrum. The optimal value for the relaxation factor can improve convergence significantly — for example, for SOR when used as a solver. However, the optimal choice is typically a subtle task with arbitrary complexity. For preconditioners and smoothers, a sophisticated choice of the relaxation factor is less important. A value
ω <
1 (under-relaxation) diminishes the impact of the smoother or preconditioner by limiting the possible modification in the variable update. There is a tradeoff between stability (a small value of
ω) and quick advancement in the iterative process (
ω close to 1). Some smoothers for multigrid require
ω <
1, but the typical default value is 1. Over-relaxation — that is, 1
<
ω <
2 — might have some benefits in special situations.
You activate hybrid preconditioners in the Hybridization section, which is available in all preconditioner node’s
Settings windows.
Select the type of preconditioner from the Use as list: Select
Single preconditioner (the default) to use the preconditioner as a single preconditioner for the solver. Select
Multi preconditioner to make it possible to create a sequence of preconditioners. The hybrid preconditioner sequence is defined by all enabled preconditioner steps for the solver. For each preconditioner you can select the variables to apply the preconditioner to from the
Preconditioner variables list. For models where some dependent variables represent vector fields, you can also select individual components from the
Preconditioner components list. Select
All (the default), or select
Manual to choose from all solution components in the
Preconditioner selection list. The selection in the
Preconditioner selection list overrides the selection in the
Preconditioner variables list.