Sparse Approximate Inverse (SAI)
The Sparse Approximate Inverse (SAI) node () is an attribute that handles the sparse approximate inverse (SAI or SPAI) preconditioner, pre- and postsmoother, and coarse solver. The SAI preconditioner is an explicit preconditioner that approximates the inverse of the system matrix and not the system matrix itself (which, for example, ILU and SOR do). The advantage of the SAI approach is that the preconditioner can be applied in terms of matrix-vector multiplications, which can be processed efficiently and in parallel. The construction can be costly, but it can be run in parallel providing good parallel scalability even for higher core counts. The SAI preconditioning efficiency is sometimes not as good as the one of ILU or SOR (in terms of reductions of the solver iteration count); however, the SAI preconditioner can be more problem-aware and can be fitted well to specific problems such as anisotropic grids and operators. The SAI preconditioner is useful in the context of BEM methods, for example. See The Sparse Approximate Inverse (SAI) Preconditioner for more information.
You can add an Sparse Approximate Inverse (SAI) node as a subnode to the following nodes in a solver sequence: Iterative, Iterative> Krylov Preconditioner, Multigrid>Presmoother and Multigrid>Postsmoother, and Domain Decomposition (Schwarz)>Coarse Solver and (for both Schwarz and Schur domain decomposition) Domain Decomposition>Domain Solver.
The Settings window includes the following section:
General
From the Preconditioning list, select Automatic (the default), Left, or Right. You can select a preconditioning from the left or right for a nonsymmetric matrix, for example, where a preconditioner from the right might not work well for left preconditioning and vice versa.
From the Sparsity pattern based on list, select Matrix (the system matrix and the default setting), or select Power of matrix to base the sparsity pattern on the power of the system matrix, which you specify as a positive integer in the Order of power field (default: 2).
In the Maximum column size factor field, you can specify a maximum columns size factor (default: 5), to limit the maximum number of nonzero elements of each column in the SAI preconditioner matrix. This limitation can be important for BEM models with conditions at infinity.
From the Preconditioner symmetry list, choose Automatic (the default) to make the COMSOL Multiphysics software automatically determine and make use of symmetries in the preconditioner. Alternatively, you can enforce the symmetry characteristics of the preconditioner by choosing Nonsymmetric, Symmetric, or Hermitian.
Enter a fill ratio between 1 (the default) and 100 in the Fill ratio field (or use the slider underneath). The fill ratio determines how much a column is allowed to grow outside of the nonfill elements in the matrix pattern.
Specify the number of iterations for the SAI preconditioner in the Number of iterations field (default: 2).
Specify a scalar Relaxation factor. The allowed values of this factor are between 0 and 2 (default: 1). Enter a Relaxation factor to specify a scalar relaxation factor ω. The allowed values of this factor are between 0 and 2. The default is 1. See About the Relaxation Factor for more information.
The Blocked version check box is selected by default. The SAI preconditioner then searches for repeated sparsity patterns with respect to the columns during the setup phase. For the same pattern only, a single LSQ system is set up and solved for multiple right-hand sides instead of multiple distinct LSQs, thereby significantly reducing the setup overhead.