SCGS
The SCGS node () is an attribute that handles the SCGS (symmetrically coupled Gauss–Seidel) solver, which is useful as a preconditioner for solving the Navier–Stokes equations and similar fluid-flow problems. See The SCGS Solver for more information.
The Settings window includes the following sections:
Main
Settings When Used with Any Attribute Node
From the Sweep type list, choose SSOR (the default), SOR, or SORU. This setting decides in which order the blocks are looped through. SOR means lexical order (or forward), the order they are stored, while SORU means the opposite (backward) order. SSOR means SOR followed by SORU. The sweep type also decides if SOR, SORU, or SSOR is used in the secondary iteration (called SSOR update when the algorithms are described).
Settings When Not Used with Coarse Solver
If a Coarse Solver is not used, enter the Number of iterations to specify a fixed number of iterations to perform when this attribute node is being used as a preconditioner (default: 2) or smoother (default: 1).
Settings When Used with Coarse Solver
Use the Termination technique list to select how to terminate the solver. Select:
Fixed number of iterations (the default) to perform a fixed number of iterations each time the Coarse Solver is used.
Use tolerance to terminate the Coarse Solver when a tolerance is fulfilled.
Iterations or tolerance to terminate when the estimated tolerance is smaller than a specified tolerance or after a specified number of iterations, whichever comes first.
Further options that apply to the selection (as indicated at each bullet) made in the Termination technique list are:
Number of iterations (available when Termination technique is set to Fixed number of iterations or Iterations or tolerance). Use this field to specify the fixed number of iterations to perform (default: 10).
Relative tolerance (available when Termination technique is set to Use tolerance or Iterations or tolerance). Use this field to specify the termination tolerance (default: 0.1).
Maximum number of iterations (only available when Termination technique is set to Use tolerance). Use this field to enter a maximum number of iterations that the solver is allowed to take (default: 500). When this number of iterations has been performed without reaching the tolerance specified in the Relative tolerance field, the solver automatically stops with an error message.
General Settings
Use the Relaxation factor field to specify a scalar relaxation factor ω. The allowed values of this factor are between 0 and 2 (default: 0.8). See About the Relaxation Factor for more information.
Use the Block solver list to specify how to solve the Vanka block linear systems by selecting one of these options:
Direct, stored factorization (the default) to store the factorization. If two SCGS smoothers are used as presmoother and postsmoother of a Multigrid solver, with similar enough settings, they share the same stored factorization, which means that they only use half the memory.
Direct to use a direct solver. The direct solver is slower than the default option to store the factorization, but it uses less memory.
Iterative, GMRES to use the iterative method GMRES. When Iterative, GMRES has been selected from the Block solver list, the following options become available:
-
Use the Tolerance field to specify the termination tolerance of GMRES (default: 0.02).
-
Use the Number of iterations before restart field to specify how many iterations the solver should take between each restart (default: 100).
The Iterative, GMRES option in the Block solver list can be useful if you use the FGMRES method as a linear system solver because it can handle preconditioners that are not stationary. The GMRES option can also be useful if you use the SCGS algorithm as a smoother to a multigrid solver because GMRES can in some cases be faster than the direct solver if set to a high tolerance, although this advantage is less pronounced with SCGS than Vanka due to the smaller block size used by SCGS.
From the Method list, select one of the following methods:
Mesh element lines and vertices (the default), where anisotropic mesh elements are grouped together in SCGS blocks. The DOFs corresponding to nonanisotropic mesh elements are solved using vertex-based SCGS blocks, which use less memory than element blocks. A separate Vertex relaxation factor is the relaxation factor for the vertices part of the smoother when you choose Mesh element lines and vertices.
Mesh elements, where each mesh element corresponds to one SCGS block.
Mesh element lines, where anisotropic mesh elements are grouped together in SCGS blocks along the direction of anisotropy, which gives better results for boundary layer meshes. Nonanisotropic mesh elements correspond to one SCGS block.
Select the Vanka check box and then use the Variables list to specify variables to include in a Vanka block approach. With this option, you can choose the Use approximate factorization check box to reduce the memory consumption and use an approximate smoother suitable for saddle-point problems such as Stokes flow (Ref. 14). Use the Use Schur complement approximation for block with size larger than field (default value: 150) to specify a size so that the solver can continue to use stored LU factorizations as long as the blocks are not above that size.
Select the Blocked version check box (selected by default) to use a version of the SCGS method that is optimized for parallel computations.
The Apply filter to lines check box is selected by default. You can then specify the following options:
The Aggressive check box is selected by default. By clearing this check box you get a slightly more expensive smoother that is more robust. If you are experiencing convergence issues it may help to disable this option.
The Filter individual elements check box is selected by default and controls if the filtering is applied to individual elements or if the lines are first created and the algorithm then filter lines that cover eliminated DOFs that have already been used.
Select the Apply filter to AMG levels only check box to ensure that the filter is applied to AMG only.
From the Apply filter to elements list, choose Prioritize unique start elements (the default) to control if the start element is filtered. You can also choose Prioritize unique lines to filter the entire line, which might be less efficient, or choose None to use the algorithm used prior to version 6.0.
Select the Reuse data check box (selected by default) to reuse the data in the blocks that define the SCGS method. SCGS is a mesh-based method, so formally this performance enhancement is possible as soon as the mesh is the same. If you have selected that check box, these additional check boxes are available:
The Reuse sparsity pattern check box is selected by default to store the sparsity patterns of the assembled matrices and try to reuse them for successive assembly processes within the same solution process. In many cases, the sparsity pattern of the system matrices does not change from one nonlinear iteration or time step to the others. Reusing the sparsity pattern from the previous iteration or step can then improve the solution performance at the cost of a usually small amount of memory.
The Reuse mesh data check box is also selected by default to control if the mesh data should be kept and reused. Clear this check box to regenerate the mesh data when needed, which saves memory but is slower.
Secondary
Use the Number of secondary iterations field to specify the number of SSOR iterations (default: 1) to perform for degrees of freedom not involved in the SCGS blocks.
Use the Relaxation factor field to specify a scalar relaxation factor for the iterations specified in the Number of secondary iterations field (default: 1). The allowed values of this factor are between 0 and 2 (default: 0.5). See About the Relaxation Factor for more information.