The Iterative Solvers
The following section provides more detailed information about the Iterative solver types: GMRES, FGMRES, Conjugate Gradients, and BiCGStab.
It also discusses the Convergence Criteria for Iterative Solvers and Selecting a Preconditioner for an Iterative Linear System Solver.
Linear in the COMSOL Multiphysics Programming Reference Manual.
Iterative Solver Types
The following information also applies to the Krylov Preconditioner attribute.
GMRES Iterative Solver
This linear system solver uses the restarted GMRES (generalized minimum residual) method (see Ref. 8 and Ref. 9). 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.
FGMRES Iterative Solver
This solver uses the restarted FGMRES (flexible generalized minimum residual) method (Ref. 11). 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.
Conjugate Gradients Iterative Solver
This solver uses the conjugate gradients iterative method (Ref. 8, Ref. 12, and Ref. 13). 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.
BiCGStab Iterative Solver
This solver uses the biconjugate gradient stabilized iterative method (Ref. 8 and Ref. 14) 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.
The convergence behavior of BiCGStab is often more irregular than that of GMRES. Intermediate residuals can even be orders of magnitude larger than the initial residual, which can affect the numerical accuracy as well as the rate of convergence. If the algorithm detects poor accuracy in the residual or the risk of stagnation, it restarts the iterations with the current solution as the initial guess.
In contrast to GMRES and conjugate gradients, BiCGStab uses two matrix-vector multiplications each iteration. This also requires two preconditioning steps in each iteration. Also, when using the left-preconditioned BiCGStab, an additional preconditioning step is required each iteration. That is, left-preconditioned BiCGStab requires a total of three preconditioning steps in each iteration.
Convergence Criteria for Iterative Solvers
When you use an iterative solver, COMSOL Multiphysics estimates the error of the solution while solving. Once the error estimate is small enough, as determined by the convergence criterion
(19-16)
the software terminates the computations and returns a solution. When you use a direct solver, COMSOL Multiphysics can optionally make a check to determine if the above convergence criterion is fulfilled after the solution step. If the error criterion is not met, the solution process is stopped and an error message is given.
The definitions of M for the various solvers are:
For MUMPS, PARDISO, and SPOOLES, M = LU, where L and U are the LU factors computed by the solver.
For the remaining iterative solvers, M is the identity matrix.
The convergence criterion in Equation 19-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 M1A. If ρ is greater than the condition number for the matrix M1A, the convergence criterion implies that the relative error is less than tol: |x − A1b| < tol ·|A1b|.
Selecting a Preconditioner for an Iterative Linear System Solver
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:
Multigrid — Geometric multigrid
Multigrid — Algebraic multigrid and smoothed aggregation AMG
Jacobi (diagonal scaling)
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 Incomplete LU preconditioner, which is the default preconditioner, works in a more general context than the others, but it might be impractical because of its time and memory requirements; when they work, the multigrid preconditioners are always preferable. The SOR and Jacobi diagonal-scaling preconditioners use less time and memory but only ensure convergence of the iterative solver for positive definite problems. Problems with zeros on the diagonal are efficiently preconditioned with the Vanka preconditioner. To precondition electromagnetic problems that use vector elements for a PDE containing the curl-curl operator, use the SOR Vector preconditioner.
For details about the individual preconditioners, follow the links in the table above.
Preconditioner Selection Guidelines
The physics interface selects a default preconditioner that is usually appropriate for the problem type, at least for single physics interface models. If the default does not perform well, select another one using the following guidelines:
The Incomplete LU preconditioner and sometimes the multigrid preconditioners require some tuning to get fast convergence without running out of memory (see the sections about these preconditioners).
About the Relaxation Factor
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.
Hybrid Preconditioners
For all preconditioners, you can combine the effect of multiple preconditioners, either as a preconditioner or as smoothers, coarse solvers, or domain solvers. Such hybrid preconditioners can be useful in several cases. For instance, if you need to solve a combined multiphysics problem, you can apply the appropriate smoother to each physics interface and use the combined effect in a multigrid solver, or if the physics interface requires different types of multigrid hierarchies, you can use one multigrid hierarchy for each physics interface as a preconditioner.
You activate hybrid preconditioners in the Hybridization section, which is available in all preconditioner node’s Settings windows.
Hybridization
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.