The different Multigrid solvers types — geometric multigrid (GMG) and algebraic multigrid (AMG) solvers— are discussed in this section as well as the multigrid algorithm.
The geometric multigrid solver uses a hierarchy of multigrid levels where each level corresponds to a mesh and a choice of shape functions. It can then accelerate the convergence of the iterative solver by solving the finite element problem on a series of meshes rather than a single one. The geometric multigrid algorithm starts with an initial physics-controlled mesh or user-defined mesh and then builds a series of coarser meshes. Each additional mesh is approximately twice as coarse as the previous one. The total number of meshes depends on the size of the model: geometric multigrid meshes are automatically built by the solver until the coarsest mesh leads to a low enough number of degrees of freedom to be solved with a direct solver. In addition to coarsening the mesh, it is possible to construct a new “coarser” level by lowering the order of the shape functions. The number of degrees of freedom decreases when you go to a coarser multigrid level. The meshes for the different levels can be constructed manually or automatically. The automatic options use a coarsening algorithm to the fine mesh, which leads to meshes that are not aligned to each other. There is also an option to generate the finer meshes from the coarsest mesh by successive mesh refinements, which leads to aligned (nested) meshes. The manual option can be useful when you have a quadrilateral, hexahedral, or prism mesh, or when you for some other reason want to control details in the meshes.
If you want to use the geometric multigrid solver with several meshes, the meshing sequences must be added before setting up the solver settings. It can, for example, be useful when the multigrid solver fails. Then, rather than letting the mesher automatically build coarser meshes from the initial mesh, you can manually build the meshes that failed using user-defined meshing sequences and select these meshes within the Multigrid node’s solver settings. The number of meshes is determined by the value in the
Number of multigrid levels field. If the solver returns a
Problem setting up multigrid message, then to visualize the multigrid meshes and see how many of them failed, select the
Keep generated multigrid levels check box in the settings for the
Multigrid node. After recomputing, the multigrid level are added as
Multigrid Level subnodes under a
Stationary study step node, for example (if you have selected the
Multigrid Level check box in the
Show More Options dialog box). The corresponding coarser meshes will appear in the
Model Builder as additional
Mesh nodes. Possibly, the coarsest mesh fails because it is too coarse to discretize the geometry.
Another approach is to build all multigrid levels manually. To do so, build the meshes using user-defined meshing sequences. See The Mesh Node for more information about adding meshes. Each subsequent mesh should be approximately twice as coarse as the previous one. Set the initial mesh as
Mesh 1 in a
Stationary study step, for example and set the additional meshes as
Multigrid Level subnodes to the study step node, assigning the coarser meshes to each multigrid level. Also, in the solver settings for the
Multigrid node, select
Manual from the
Hierarchy generation method list.
The algebraic multigrid (AMG) solvers or preconditioners perform one or several cycles of the algebraic multigrid method. This is similar to the geometric multigrid algorithm, the difference being that it constructs the multigrid levels directly from the finest-level system matrix A0. That is, it constructs the prolongations
Pi from
A0 without using auxiliary meshes. It constructs the coarse level matrices
Ai from
A0 with the Galerkin projection method. The advantage is that you need not bother about the coarse multigrid levels. The AMG solver includes a parallel coarsening method, which can reduce the memory consumption and computation time per iteration.
To describe the multigrid algorithm, assume that you have N + 1 multigrid levels numbered from
0 to
N, where
0 is the finest level (the level for which you seek the solution). To solve the linear system
A0x = b (corresponding to level
0), the algorithm must reform the system matrices
A1, …,
AN for the coarse multigrid levels. It must also compute the
prolongation matrices Pi that map a solution
x vector on level
i to the corresponding solution vector
Pi x on the next finer level
i − 1.
The cycle just described is called the V-cycle. The recursive call in step 4 (when N > 1)
is a also a V-cycle. For the W-cycle and the F-cycle, steps 1–6 above are the same but with the twist that the recursive call in step 4 is substituted with two multigrid calls for the coarser levels. For the W-cycle these two calls are recursive calls (W-cycle calls). For the F-cycle the first call is a W-cycle and the second a V-cycle.
For only two multigrid levels (N = 1)
these cycles are the same because the algorithm uses the coarse solver in step 4. Also the amount of work on the finest level is the same for the different cycles. Normally the V-cycle is sufficient, but the W-cycle and the F-cycle can be useful for more difficult problems.
When using multigrid as a preconditioner for the conjugate gradients method for a symmetric matrix A, the preconditioning matrix
M should also be symmetric. This requirement is fulfilled if the matrices
M associated with the presmoother and the postsmoother are transposes of each other. For instance, this is the case if the presmoother is SOR and the postsmoother is SORU, and if the same number of smoothing steps is used. This combination with two smoothing steps is the default.
the obtained linear problem is indefinite for large frequencies ω. For these problems, a simple iteration amplifies smooth eigenmodes if the mesh is too coarse and makes these methods unsuitable as smoothers. To determine when to use a simple iteration, apply the
Nyquist criterion: